Python 的 Pulp 模块中的条件约束线性程序
Conditional Constraint Linear Program in Python's Pulp Module
有没有一种方法可以在 python 中的 pulp 中添加一个约束条件来计算所有大于 5 的变量并要求该计数大于假设 10?我目前有以下代码,但它只调用一次函数;
def min_qty_constraint(vars):
count = 0
for v in vars:
if v.varValue > 5 :
count += 1
print count
return -count
prob = pulp.LpProblem('problem',pulp.LpMaximize)
prob += min_qty_constraint(vars) <= 10
例如,如果我有 vars = [x1,x2,..,x20],其中 xi 是 pulp.Lpvariable 并且 x1,..,x10 = 6 那么这些变量中有 10 个大于5 从而满足至少有 10 个变量的值大于 5 的限制。
这是非线性的。有一种方法可以使用额外的二进制变量 y(i)
:
x(i) >= 5 y(i)
sum(i, y(i)) >= 10
(注意:我假设 x(i)
是非负变量)。
有没有一种方法可以在 python 中的 pulp 中添加一个约束条件来计算所有大于 5 的变量并要求该计数大于假设 10?我目前有以下代码,但它只调用一次函数;
def min_qty_constraint(vars):
count = 0
for v in vars:
if v.varValue > 5 :
count += 1
print count
return -count
prob = pulp.LpProblem('problem',pulp.LpMaximize)
prob += min_qty_constraint(vars) <= 10
例如,如果我有 vars = [x1,x2,..,x20],其中 xi 是 pulp.Lpvariable 并且 x1,..,x10 = 6 那么这些变量中有 10 个大于5 从而满足至少有 10 个变量的值大于 5 的限制。
这是非线性的。有一种方法可以使用额外的二进制变量 y(i)
:
x(i) >= 5 y(i)
sum(i, y(i)) >= 10
(注意:我假设 x(i)
是非负变量)。