混合整数编程:带有包含变量的if语句的约束定义

时间:2016-09-28 11:33:11

标签: optimization linear-programming

我正在尝试使用Pyomo执行优化,但我正在努力为这样的问题定义约束:

if Variable 1 > Parameter
    Variable 2 = Variable 1 - Parameter
else skip constraint (?)

if Parameter > Variable 1
    Variable 3 = Variable 4 -(Parameter - Variable 1)
else skip constraint (?)

这会以某种方式起作用吗? 关于跳过约束:我不太确定是否有必要。

基本上,我只想表达变量和参数之间的关系。

我在这里看到类似的东西(Mixed integer programming: variable assignment per condition (if then else)),但我无法根据我的问题进行调整。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我们对模型的其余部分知之甚少,所以我的回答很可能有点矫枉过正。

x1>p => x2=x1-p可表示为:

y1=x1-p
-d*M <= y1 <= (1-d)*M
y1-d*M <= x2 <= y1+d*M
d in {0,1}

这里M是一个大常数(我们需要为这些大M找到好的值)。与其他条件类似。

在几乎所有情况下,我们都可以使用模型其余部分的更多知识来简化(大量)。所以在实践中你不会使用我的一般配方。