cplex:设置EPGAP不为零,但上限和下限相同

时间:2017-12-01 02:33:37

标签: cplex

我知道当我设置EpGap零时,上限和下限是相同的,解决方案是最好的。但是,当我设置EpGap不为零时,为什么上限和下限也相同?

2 个答案:

答案 0 :(得分:1)

EpGap(又名“相对MIP间隙容差”)参数的文档中,我们有以下内容:

  

|bestbound-bestinteger|/(1e-10+|bestinteger|) 值下降时   低于此参数的值,混合整数优化是   停止。例如,指示CPLEX一旦停止就停止   发现一个可行的整数解被证明在5%以内   最佳,将相对MIP间隙容差设置为0.05。

只要CPLEX找到的解决方案优于间隙指定的解决方案,优化就会停止,这就是你得到的(甚至可能是最优的)。

答案 1 :(得分:1)

不要错误地认为通过将EpGap设置为零,您将始终获得更好的解决方案。将EpGap参数设置为零意味着您要求CPLEX 证明没有更好的解决方案

默认情况下会构建和设置CPLEX,以尝试在搜索过程的早期找到好的解决方案。我已经看到很多情况下它已经在几秒钟内找到了最佳解决方案,即使是结构良好的大问题,但是可能需要花费数小时来搜索B& B树的其余部分以证明没有更好的结果。解决方案并将差距缩小到(接近)零。

除了在一些非常具体的情况下,将EpGap设置为零几乎总是糟糕的想法。

根据精确和某些数据,您可能会遇到结构良好的数学问题,在这种情况下,它可以正常工作。我正在考虑数学或理论物理学中的抽象问题。

但是,大多数使用CPLEX(或任何其他类似解算器)的实际应用程序都在使用预测和测量,而这些预测和测量无法准确地确定。考虑一下混合问题(例如制造合金,食品),其中1e-6的间隙意味着溶液在每吨材料约1克的变化水平下是最佳的。或者对于运输问题,我们知道可能相隔数公里的要访问的站点之间的距离对于最接近的厘米左右是正确的。众所周知,旅行和工作时间的准确度为每天十分之一秒。基本上,考虑一下你的数字究竟意味着什么,并且不要被虚假的精确度所诱惑。在许多领域,预测误差为5%被认为是非常好的。

您可能仍希望证明解决方案接近最佳解决方案,例如即使在这种情况下也有0.1%的差距,但是在实践中试图找到一个可证明的最佳解决方案来解决零差距的问题可能毫无意义。

此外,许多现实问题都很严重,有数千或数百万个变量。在这种情况下,要求CPLEX证明零MIP差距的最优性可能需要数天或数年。