【问题标题】:cplex: Setting the EPGAP not zero but upper bound and lower bound are the samecplex:设置EPGAP不为零但上限和下限相同
【发布时间】:2017-12-02 15:19:58
【问题描述】:

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

【问题讨论】:

  • 现在我需要记录EpGap不为零时的上限和下限。我认为他们不应该是一样的。但是当我将 EpGap 设置为不为零时,上限和下限是相同的。为什么?

标签: cplex


【解决方案1】:

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

当值|bestbound-bestinteger|/(1e-10+|bestinteger|)下降 低于这个参数的值,混合整数优化为 停了下来。例如,指示 CPLEX 停止 找到了一个可行的整数解,证明在 5% 以内 最优,将相对 MIP 间隙容差设置为 0.05。

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

【讨论】:

  • 感谢您对 EpGap 的解释。现在,当我将 EpGap 设置为不为零时,我需要记录上限和下限。我认为他们不应该是一样的。但是当我将 EpGap 设置为不为零时,上限和下限是相同的。为什么?
【解决方案2】:

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

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

除了在一些非常特殊的情况下,将 EpGap 设置为零几乎总是一个的想法。

您可能有一个基于精确和特定数据的结构良好的小数学问题,在这种情况下它可以正常工作。例如,我正在考虑数学或理论物理学中的抽象问题。

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

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

还有许多现实世界的问题很大,有数千或数百万个变量。在这种情况下,要求 CPLEX 证明 MIP 差距为零的最优性可能需要几天或几年的时间。

【讨论】:

  • 现在我需要记录EpGap不为零时的上限和下限。我认为他们不应该是一样的。但是当我将 EpGap 设置为不为零时,上限和下限是相同的。为什么?
  • 对于任何给定的问题实例(或任何特定的求解器,或许多不同场景中的任何一个),您可能得到相同的上限和下限,并且具有即使您不要求求解器找到经过验证的最佳解决方案,差距也为零。通常,当最佳解决方案目标值与最佳界限之间的差距小于容差时,求解器(例如 CPLEX、Gurobi、Xpress)将停止。零肯定小于任何正公差。您可能很幸运,求解器找到了最佳解决方案并“偶然”证明了它是最佳的
猜你喜欢
  • 1970-01-01
  • 2019-03-02
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 2013-06-26
  • 2019-07-06
  • 1970-01-01
相关资源
最近更新 更多