2016-07-06 13 views
0

pythonのパルプ内に制約を追加する方法はありますか?5を超えるすべての変数を数え、その数を10と言うよりも大きくする必要がありますか?私は現在、次のコードを持っていますが、関数を一度呼び出すだけです。条件付き制約Pythonのパルプモジュールの線形プログラム

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より大きい値を有するという考えを満たす。

答えて

1

これは線形ではない。

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

(注:私はx(i)は非負の変数であると仮定)、追加のバイナリ変数y(i)でこれを行う方法があります。