1

5 を超えるすべての変数をカウントし、そのカウントを 10 よりも大きくする必要がある Python のパルプ内に制約を追加する方法はありますか? 現在、次のコードがありますが、関数は 1 回しか呼び出されません。

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 より大きい。

4

1 に答える 1

2

これは線形ではありません。追加のバイナリ変数を使用してこれを行う方法がありますy(i)

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

(注:x(i)非負の変数であると想定しました)。

于 2016-07-06T17:13:55.170 に答える