处理大m约束

处理大m约束

大m约束是优化问题的不稳定性的常规来源。它们之所以这样命名,是因为它们通常涉及很大的系数< span > < / span >美元美元< span > < / span >它被选择为大于连续变量或表达式可能采用的任何合理值。这里有一个简单的例子:

< span > < /美元跨度> \开始{数组}{rcl} x \ leq&10 ^ 6 y上的\ \ x \ geq&0 \ \ y \ \{0,1 \} \结束美元{数组}< span > < / span >
Big-M约束通常用于将二进制的、开关决定的含义传播到连续变量。例如,一个大m可能用于强制一个条件,即只有在你支付与打开边缘相关的固定费用时,一个边缘才能允许流动,或者一个设施只有在你建造它时才能生产产品。manbetx官网手机登入在我们的示例中,请注意 < span > < / span > y = 0.0000099999美元美元< span > < / span >满足默认的完整性公差(IntFeasTol< span > < / span > 10美元^ {5}< span > < / span >美元),它允许< span > < /美元跨度> x < span > < / span >美元取…的值< span > < / span > 9.999美元美元< span > < / span >.换句话说,< span > < /美元跨度> x < span > < / span >美元可以取正值而不产生昂贵的固定费用吗< span > < / span > y < span >美元< / span >,这颠覆了只允许非零值的意图< span > < /美元跨度> x < span > < / span >美元当二进制变量< span > < / span > y < span >美元< / span >值为1。控件可以减少此行为的影响IntFeasTol参数,但您不能完全避免它。

然而,如果建模者有额外的信息< span > < /美元跨度> x < span > < / span >美元变量永远不会大于< span > < / span > 10 ^ 3美元美元< span > < / span >,那么你可以将先前的约束重新表述为:

< span > < /美元跨度> \开始{数组}{rcl} x \ leq&10 ^ 3 y \ \ x和y & \ \组0 \ \ & \{0,1 \}\结束美元{数组}< span > < / span >
现在, < span > < / span > y = 0.0000099999美元美元< span > < / span >只允许< span > < / span > x美元\ leq 0.01 < span > < / span >

对于任何一个rescale变量都不可能的情况< span > < /美元跨度> x < span > < / span >美元或收紧其界限,SOS约束或指示符约束(形式)<span>$</span>y = 0 \右tarrow x = 0<span>$</span>)可能产生更精确的解决方案,但往往以额外的处理时间为代价。