私はPythonのPuLPでIf-Then-Else-If ...条件を設定しようとしています。If-Then-ElseIf-Then混合整数のリニアプログラミング
私はとIf-Then-Else
をMIPで見ました。 しかし、私は選択肢を次の制約のセットにさらに伝播させる方法と、2つ以上の決定ブランチを処理する方法を理解しようとしています。
image shown hereに示す条件制約を検討し、説明すること:
xとyは私の決定変数です。私はシンプルされたif-then-else状況のため、 "ビッグM" 技術を使用する方法を知って
if x=0: C2>0
elif x=1: C10>0
elif x=2: C3>0
if x=0 and y=0:
C4>0;
C8>0;
C10>0
elif x=0 and y=1:
C5>0;
C8>0;
C10>0
elif x=2 and y=0:
C6>0;
C9>0;
C10>0
elif x=2 and y=1:
C7>0;
C9>0;
C10>0
:として は基本的に、これは読み込みます。問題だったのであれば、たとえば、:2つの以上の支店があるなら、それはともはや乗算ませんので、
- :
Problem: if (x = 1) then (A < 0) else (B < 0) Solution: problem += A < M1*(1-x) problem += B < M2*x
私は理解していないことで、どのようにこれを変更するにはxおよび(1-x)を含む。
- 元の決定の下に後続の分岐があり、すべてが上の値に依存するより多くの決定がある場合。彼らは代わりに、{0,1,2}でのバイナリになるよう
が
x
変数を再定式:FIRST: