公差和生病的条件反射——一个警告

如前所述在几个地方在这一节中,有限精度算法限制了Gurobi计算精度的解决方案。这个限制是通过数值管理公差在大多数情况下;我们对待一个解决方案是满足约束,如果违反小于相应的公差。选择默认的公差是足够大,这样数值错误不是一个问题对于大多数模型,但足够小,计算的结果是有意义的。

不幸的是,一些患有严重的模型生病的条件,这可以极大地复杂化寻找一个解决方案。这可以展示自己在几个方面。生病的调节可以严重损害性能,它可以导致大于公差约束违反的解决方案。

生病的调节是一个测量的误差,可以解决方程的线性系统的结果。如前所述,线性和混合整数规划是建立在线性的解决,所以在解决线性系统错误直接导致错误LP和MIP的解决方案。严重的问题时出现的错误在解决线性系统与所需的公差。如果你想解决线性规划问题的默认可行性的宽容< span > < / span > 1美元e-6 < span > < / span >美元,例如,如果你的线性系统解决了产生错误,也差不多< span > < / span > 1美元e-6 < span > < / span >美元,那你没有办法知道你当前的解决方案是否真正可行。这可能导致振荡,因为您的解决方案可行和不可行之间反射只不过由于数值误差,从而使它很难实现进步对一个最优的解决方案。

当解决线性和二次规划问题,我们建议您检查最后的原始和双重约束违反。对偶理论指出,如果你的解决方案是原始可行,对偶可行的,和互补的,然后你有一个最优的解决方案。互补是由单纯形法自动执行的,所以实现原始和对偶可行性(公差)确保解决方案是最优(公差)。

当解决一个MIP模型(包括任何模型,该模型包含了离散的或非凸特性,如非凸目标,一般约束、半连续变量,等等),遗憾的是没有简单的方法可以检查结果的最优性。当我们努力工作来识别和管理调节不良的负面影响,我们不能提供一个数学证明是真正最优返回的解决方案。

数值问题的更多信息,请参考Gurobi数值问题的指导方针本手册的部分。