【问题标题】:MIP GAP couldn't be set properly无法正确设置 MIP GAP
【发布时间】:2015-06-16 05:41:41
【问题描述】:

我正在解决 IBM ILOG Cplex 中的 MIP。我已将相对 MIP GAP 和绝对 MIP 间隙设置为 0,但引擎日志中报告的间隙大于 0。同样当我按默认值(1.0E-4,1.0E-6)运行模型时,间隙在引擎日志中报告高于 1.0E-4(有时甚至 6%)。令人惊讶的是,即使是计算时间也很小(低于 1 秒)。我认为除了 mip gap 之外,可能还需要其他设置将其设置为零以获得目标函数的最佳值。另一件事是我的其他设置是默认设置。如果有人可以帮助我,我将不胜感激。

这是我的一次运行的结果(相对 MIP GAP 设置为 0,但报告的差距为 1.13%,如您所见):

        Nodes                                         Cuts/
   Node  Left     Objective  IInf  Best Integer     Best Node    ItCnt     Gap

      0     0    15619.2777    30                  15619.2777      204         
      0     0    21532.4345    31                    Cuts: 92      300         
      0     0    22240.7958    65                    Cuts: 50      389         
      0     0    22374.7172    46                    Cuts: 63      452         
      0     0    22428.5062    28                    Cuts: 31      475         
      0     0    22447.7754    48                    Cuts: 28      517         
      0     0    22486.3137    39                    Cuts: 34      542         
      0     0    22486.3137    40                    Cuts: 13      557         
      0     0    22486.3137    30                 ZeroHalf: 4      558         
      0     0    22486.3137    28                    Cuts: 15      583         
*     0+    0                        23225.6696    22486.3137      583    3.18%
      0     2    22486.3137    28    23225.6696    22486.3137      583    3.18%
Elapsed real time =   0.36 sec. (tree size =  0.01 MB, solutions = 1)
*    26    20      integral     0    22743.1173    22486.3137     1126    1.13%

GUB cover cuts applied:  2
Clique cuts applied:  23
Cover cuts applied:  9
Implied bound cuts applied:  105
Flow cuts applied:  1
Mixed integer rounding cuts applied:  30
Zero-half cuts applied:  74
Gomory fractional cuts applied:  3

Root node processing (before b&c):
  Real time             =    0.31
Parallel b&c, 4 threads:
  Real time             =    0.25
  Sync time (average)   =    0.02
  Wait time (average)   =    0.06
                          -------
Total (root+branch&cut) =    0.56 sec.

在此先感谢您的帮助。

【问题讨论】:

  • 您是否为 MIP 间隙容差尝试了一个小的非零值?默认值为 1e-6。将 MIP 间隙容差设置为零可能会产生“特殊”作用。所以我会看到将 MIP 间隙设置为不同的值(如 1e-2、1e-4、1e-6、1e-8)会发生什么
  • 是的。我尝试了默认值但差距远远超过1e-4(约5%)!
  • 在此之后日志中是否还有更多的输出行?我认为我已经看到日志的 B&B 部分的最后一行显示的差距大于运行结束时报告的差距。
  • 感谢您的合作,亲爱的蒂姆。我再次检查它。但在我的软件中,''Total (root+branch&cut) = 0.56 sec.'' 之后没有更多的行了!那我该如何解决呢?当我用元启发式算法解决我的问题时,目标函数的值低于 Cplex 报告的最佳目标函数,并且差距大于设定差距 (1e-4)。我还检查了我通过元启发式算法找到的解决方案的可行性。

标签: c++ cplex


【解决方案1】:

正如蒂姆在评论中所说,实际上显示最终解决方案(上限和下限)的是日志文件的最后一行,而不是树日志部分的最后一行。

这是一个例子:

看来问题如下:

  • CPLEX 报告最优解,默认差距为 10e-4,但报告为 1.13%
  • 您找到了一个更好的解决方案,您已经在其中检查了它是否可行

对于第一个项目符号,CPLEX 实际上并未报告差距为 1.13%。搜索时报告的差距 1.13%。

它返回一个应该遵守默认容差的解决方案的事实证明,使用您的公式,最优值不能小于报告的值。

既然您确定有更好的可行解决方案,那么您有几个选择。

  • 尝试在开始优化之前将已知解决方案注入 CPLEX。一种方法是使用goals。这可能有点复杂,所以您可能想要..
  • 打印出模型并手动评估您声称更好的解决方案相对于您输入的约束是否可行(推荐方法)。
  • 添加一个约束,即目标函数值应小于或等于解决方案的目标值并增加少量(大约 10e-3 应该没问题)。如果你的解决方案对制定是可行的,你应该得到它,否则有一个错误,解决方案是不可行的。我不喜欢这种方法,因为如果有多个最优解,你会得到有趣的结果,但通常它是有效的)。

总而言之,尝试调试模型并告诉我们。这是一个相当复杂的模型,很容易漏掉一些东西(例如,添加一个你不想添加的约束)。

如果这一切都失败了,而您仍然想知道发生了什么,您可能需要将您的模型提交给IBM's official forum。如果求解器中确实存在错误,他们会处理并通知您。

希望对你有帮助

【讨论】:

  • 谢谢你。在我的软件中,最后一行(解决方案状态)未显示。你知道有什么方法可以修复设置以显示这条线吗?还有一个理由声称差距没有正确设置。当我用元启发式算法解决我的问题时,目标函数的值低于 Cplex 报告的最佳目标函数,并且差距大于设定差距 (1e-4)。我还检查了我通过元启发式算法找到的解决方案的可行性。
  • 如果最后一行没有显示,那么它是一个实现问题(可能是一个错误)。您可以发布(或链接到)您的代码和输入文件吗?此外,如果未显示最后一行,则您无法知道 CPLEX 报告的最佳解决方案是什么,因此无法与您的元启发式算法进行比较。如果您的模型对象名为mdl,您可以尝试在调用mdl.solve() 之后添加std::cout << mdl.getObjValue() << std::endl;?这将为您提供 CPLEX 报告的客观值。如果此行没有输出,则说明有问题。你使用回调吗?
  • 我用 Cplex 而非 C++ 编写模型,而且我不懂 C++。我通过问题浏览器窗口中显示的“具有目标值的解决方案”检查了我的目标函数。这是我在 cplex 中的模型:
  • 亲爱的loannis,对不起,我是这个领域的初学者,不太了解你。我用 Cplex 而非 C++ 编写模型,而且我不懂 C++。我通过问题浏览器窗口中显示的“具有目标值的解决方案”检查了我的目标函数。这是我在 cplex 中的模型:dropbox.com/s/xj6lop40kgr7d3a/ILRP.rar?dl=0 感谢您的帮助。
  • 亲爱的loannis,感谢您的帮助。由于某些原因,我更改了算法代码的某些部分,并且再也没有遇到过这个问题。也许是因为这个。
猜你喜欢
  • 2022-11-10
  • 2012-06-05
  • 2012-05-19
  • 2015-05-29
  • 2017-01-03
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多