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) 是非负变量)。