我有一个整数线性规划问题需要很长时间来解决我尝试过的解算器(CPLEX,CBC),即使他们在早期找到了最佳解决方案。他们只需要永远充分证明它。
很容易计算出我的最小化问题的客观值的平凡下界,但在CPLEX的输出(Best Bound专栏)中我可以看到它甚至没有接近好久不见。它几乎可以立即找到非常好的解决方案,但它错误地认为最佳解决方案可能会更好。
现在我不得不承认我并不真正知道这些求解器是如何工作的,但看起来他们正在浪费时间来改善可笑的弱下界,寻求不可思议的乐观解决方案。所以我的问题是:
可以告诉求解器目标的下限是否有助于它更快地运行?
如果是这样,哪些求解器可以接受作为附加输入提供的已知下限?
作为一个例子,我从示例运行中粘贴了前几行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的解决方案(因为我可以通过更简单的方法证明这一点),特别是没有负面的客观价值(因为它不是甚至可能在我的模型中。)
答案 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