pulpで,y1+y2を最小化したいです。ここで,y1,y2は以下の式です。
y1 = c1 * x1 + d1
y2 = c2 * x2 + d2 (A<= x2 <=B)
y2 = 0 (x2=0)
プログラム上でyA<= x2 <=B または y2=0,x2=0といった拘束条件をつけたいです。
現在以下のように実装していますが,エラーが出ます。
プログラム抜粋
problem = LpProblem("sample",LpMinimize)
c1 ,c2 = 100,50#係数
inf = 10e9#上限
x1 = LpVariable("x1",0,inf,"LpContinuous")
x2 = LpVariable("x2",A,B,"LpContinuous")
z2 = LpVariable("use_x2","LpBinary")
y1 = x1 *c1 + d1
y2 = (x2 *c2 +d2)*z2
problem += y1 + y2 >=Y
problem += x2 >=A
problem += x2 <=B
エラー文は以下です
Non-constant expressions cannot be multiplied
pulpは線形の問題しか解けず,変数同士の積は成約に入れられないとわかりましたが,
このような問題はどのように定義すればよいでしょうか?
定式化の方法が間違っているのでしょうか
pulpがこの計算にふさわしくないのでしょうか,その場合,適切なツールをご教授いただけると幸いです。
あなたの回答
tips
プレビュー