建议ILP求解器的下限

时间:2016-10-14 17:33:53

标签: mathematical-optimization cplex integer-programming pyomo coin-or-cbc

我有一个整数线性规划问题需要很长时间来解决我尝试过的解算器(CPLEX,CBC),即使他们在早期找到了最佳解决方案。他们只需要永远充分证明它。

很容易计算出我的最小化问题的客观值的平凡下界,但在CPLEX的输出(Best Bound专栏)中我可以看到它甚至没有接近好久不见。它几乎可以立即找到非常好的解决方案,但它错误地认为最佳解决方案可能会更好。

现在我不得不承认我并不真正知道这些求解器是如何工作的,但看起来他们正在浪费时间来改善可笑的弱下界,寻求不可思议的乐观解决方案。所以我的问题是:

  1. 可以告诉求解器目标的下限是否有助于它更快地运行?

  2. 如果是这样,哪些求解器可以接受作为附加输入提供的已知下限?

  3. 作为一个例子,我从示例运行中粘贴了前几行CPLEX的输出(持续时间更长,没有任何进一步的目标改进和最佳边界的缓慢改进):

            Nodes                                         Cuts/
       Node  Left     Objective  IInf  Best Integer    Best Bound    ItCnt     Gap
          0     0     -388.6997   178                   -388.6997        9
    *     0+    0                          297.0000     -388.6997        9  230.88%
    *     0+    0                          275.0000     -388.6997        9  241.35%
          0     2     -388.6997   178      275.0000     -387.8106        9  241.02%
    *    20+   20                          185.0000     -307.6363       80  266.29%
    *    30+   30                          135.0000     -307.6363       90  327.88%
    *    30+   30                           94.0000     -307.6363       90  427.27%
    *    60+   60                           90.0000     -307.6363      120  441.82%
    *   160+  126                           77.0000     -307.6363      272  499.53%
    *   200+   93                           12.0000     -307.4836      325     ---
        300   182     -135.2988   107       12.0000     -268.6638      466     ---
       1200   934      -50.6022    85       12.0000     -206.2938     1480     ---
       2197  1755      -96.9612    93       12.0000     -189.8013     2470     ---
       3226  2600       -2.8316    87       12.0000     -179.9669     3480     ---
       4374  3521     -156.2442   110       12.0000     -170.4183     4567     ---
       5490  4421     -128.0871    97       12.0000     -167.3696     5623     ---
       6971  5603     -147.5022   108       12.0000     -162.4180     7055     ---
       8739  6997     -103.5374   113       12.0000     -156.3532     8673     ---
    

    我希望我能告诉求解者不要费心寻找目标低于10的解决方案(因为我可以通过更简单的方法证明这一点),特别是没有负面的客观价值(因为它不是甚至可能在我的模型中。)

1 个答案:

答案 0 :(得分:1)

如果您有一个很好的下限,从可行的解决方案中,您可以将其作为MIP启动提供给CPLEX。

然后,CPLEX将尝试改进该解决方案,并忽略其分支和绑定算法中具有低于该值的任何分支。

您可以在此处查看更多详细信息: https://www.ibm.com/support/knowledgecenter/SS9UKU_12.5.0/com.ibm.cplex.zos.help/UsrMan/topics/discr_optim/mip/para/49_mipStarts.html