【问题标题】:conditional constraint in optimization优化中的条件约束
【发布时间】:2016-06-11 14:08:38
【问题描述】:

有没有人知道如何在这种情况下在混合整数编程中编写条件约束:

if a == 0 then b = 1
else b = 0
-M <= a <= M
b={0,1}

请注意,M 可以是任何连续数。 谢谢。

问候,

【问题讨论】:

    标签: if-statement optimization constraints conditional linear-programming


    【解决方案1】:

    我会这样处理。首先使用变量拆分方式,引入两个非负变量aplus, amin

    0 <= aplus <= d*M
    0 <= amin <= (1-d)*M
    a = aplus-amin
    d in {0,1}
    

    现在我们可以这样做了:

    0.001*(1-b) <= aplus + amin <= M*(1-b)
    

    在许多情况下,我们可以简化这一点,但这需要了解模型的其余部分。

    【讨论】:

    • 成功了!只是对最后一个方程的一个小修正: 0.001*(1-b)
    • 我认为我的版本是正确的。如果b=10&lt;=aplus+amin&lt;=0 ==&gt; aplus+amin=0。如果b=0 那么0.01 &lt;= aplus+amin &lt;= M
    猜你喜欢
    • 1970-01-01
    • 2012-12-08
    • 2011-07-23
    • 2017-11-13
    • 2014-07-13
    • 1970-01-01
    • 2020-01-17
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多