无Else分支的IF条件约束能否转化为MIP线性约束?
如何将「若d=1则x≥1」转化为MIP线性约束?
可以转化,核心思路是引入大M参数(一个足够大的正数,需根据x的实际取值范围确定),把逻辑约束转化为线性不等式:
x ≥ 1 - M*(1 - d)
约束逻辑验证:
- 当d=1(二进制变量取1)时,式子右边为
1 - M*(1-1) = 1,约束简化为x ≥ 1,完全符合需求; - 当d=0时,式子右边为
1 - M,只要M选得足够大(比如大于x可能取到的最小整数的绝对值),x ≥ 1 - M就会自动满足,不会对x的取值产生任何限制,完美对应d=0时x无约束的情况。
关于大M的选择:
要根据问题中x的实际取值范围来定,比如已知x的最小可能值是-100,那选M=101就足够,不用选过大的数(比如1e9),避免数值计算上的不稳定问题。
内容的提问来源于stack exchange,提问作者Shuangistan
相关产品推荐
相关产品推荐

