前提・実現したいこと
pythonのpulpを用いて以下の画像の例のような制約条件の作成を試みております。
ポイントとしましては、最適化変数の総和で0,1のスイッチを作成したいです。
(申し訳ないのですが、モデルは簡略化しております。)
試したことの概要
step1:zeros()関数でyの0行列を作成する
step2:事前に最適化変数xの総和を行う。
image
1sum_x=0 2for j in [0,2,3]: 3 sum_x+=pulp.value(x[1][j])
step3:総和が0になる場合と1以上になる場合でif関数を用いて場合分けをする。(yはゼロ行列のため、必要に応じて要素を1に変更する。)
image
1if sum_x>0: 2 y[1]=1 3elif sum_x==0: 4 continue
結果:しかし、実行した時点では最適化変数に値は入っておらず(実際にはNoneが入り)、適切に総和、及び場合分けがされませんでした。
(※pulpの勉強不足でした。)
他にも異なるパターンを試してみたのですが、上記と同様に最適化変数がNoneとなり(最適化変数が最適化変数として機能しておらず)、うまくいきませんでした。
ざっくりとした説明で恐れ入りますが、もし上記のpythonプログラムの作成方法を知っておりましたらご教授いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー