处理大m约束

处理大m约束

大m约束通常是优化问题的不稳定性来源。这样命名是因为它们通常包含一个大的系数< span > < / span >美元美元< span > < / span >它要比连续变量或表达式可能取的任何合理值都大。下面是一个简单的例子:

\开始{eqnarray *} x \ leq&10 ^ 6 y上的\ \ x \ geq&0 \ \ y \ \ {0,1 \} \ {eqnarray *}结束


大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 >,那么你可以将之前的约束重新表述为:

\开始{eqnarray *} x \ leq&10 ^ 3 y \ \ x和y & \ \组0 \ \ & \ {0,1 \}\ {eqnarray *}结束


现在, < span > < / span > y = 0.0000099999美元美元< span > < / span >只考虑到< span > < / span > x美元\ leq 0.01 < span > < / span >

对于不能缩放变量的情况< span > < /美元跨度> x < span > < / span >美元或收紧其边界,SOS约束或指示约束(表单的<span>$</span>y = 0 \ righttarrow x = 0<span>$</span>)可能会产生更精确的解决方案,但通常会以额外的处理时间为代价。