我正在尝试在Python的PuLP中构建If-Then-Else-If条件语句。我已经查看了MIP中的If-Then和If-Then-Else。但是,我想了解如何将选择向下传播到下一组约束,并处理超过2个决策分支的情况。为了说明,考虑此处所示的条件约束: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)的乘法。
- 如果在原始决策下方有后续分支,其中包含更多的决策,所有这些决策都依赖于上面的值。