我試圖在Python的PuLP中構造If-Then-Else-If ...條件。If-Then-ElseIf-Then在混合整數線性規劃
我看過MIP中的If-Then
和If-Then-Else
。 但是,我想了解如何將選擇進一步傳播到下一組約束以及如何處理2個以上的決策分支。
爲了解釋,考慮在image shown here所示的條件限制:
x和y是我的決定變量。 基本上,這個讀作:
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
我知道如何使用 「大M」 技術,簡單的if-then-else的情況。因此,例如,如果問題是:
Problem:
if (x = 1) then (A < 0) else (B < 0)
Solution:
problem += A < M1*(1-x)
problem += B < M2*x
我不明白的是,如何改變這種爲:
- 如果有超過2個分支,所以它不再與乘法x和(1-x)。
- 如果後續分支低於原始決策,則更多決策都取決於上面的值。