何年も何年もMatlabを使用した後、私はまだPythonに非常に慣れていません。Pulp を使用して整数線形プログラムをセットアップしようとしています。
数値の配列が与えられた場合:
{P[i]:i=1...N}
私は最大化したい:
sum( x_i P_i )
制約を受ける
A x <= b
A_eq x = b_eq
および境界あり (ベクトルベースの境界)
LB <= x <= UB
しかし、パルプでは、ベクトル宣言を適切に行う方法がわかりません。私が使用していた:
RANGE = range(numpy.size(P))
x = pulp.LpVariable.dicts("x", LB_ind, UB_ind, "Integer")
ここでは、個々の境界のみを入力できます (したがって、1 つの数値のみ)。
prob = pulp.LpProblem("Test", pulp.LpMaximize)
prob += pulp.lpSum([Prices[i]*Dispatch[i] for i in RANGE])
制約については、本当にこの行を行ごとに実行する必要がありますか? 何かが足りないようです。助けていただければ幸いです。ドキュメントでは、短い例について説明しています。私の場合、変数の数は数千です。