1

有没有办法在 python 的纸浆中添加一个约束来计算所有高于 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 是纸浆.Lpvariable 并且 x1,..,x10 = 6 那么这些变量中有 10 个大于 5,从而满足了在至少有 10 个变量的值大于 5。

4

1 回答 1

2

这不是线性的。有一种方法可以使用额外的二进制变量y(i)

x(i) >= 5 y(i)
sum(i, y(i)) >= 10

(注意:我假设x(i)是非负变量)。

于 2016-07-06T17:13:55.170 回答