【发布时间】:2016-12-07 04:02:29
【问题描述】:
我正在尝试在 Python 的 PuLP 中构建 If-Then-Else-If... 条件。
我在 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
我知道如何在简单的 if-then-else 情况下使用“Big M”技术。例如,如果问题是:
Problem:
if (x = 1) then (A < 0) else (B < 0)
Solution:
problem += A < M1*(1-x)
problem += B < M2*x
我不明白的是,如何将其更改为:
- 如果有超过 2 个分支,则不再是 x 和 (1-x) 的乘法。
- 如果在原始决策下方有后续分支,则有更多决策都依赖于上面的值。
【问题讨论】:
标签: python constraints linear-programming pulp