Mathematical optimization 建议ILP解算器的下限
我有一个整数线性规划问题,我尝试过的解算器(CPLEX,CBC)需要很长时间才能解决,即使他们很早就找到了最优解。他们只是花了很长时间来充分证明这一点 计算最小化问题的目标值的一个微不足道的下界很容易,但在CPLEX的输出(最佳界列)中,我可以看到它在很长很长一段时间内都不接近。它几乎可以立即找到真正好的解决方案,但它错误地认为最佳解决方案可能更好 现在我不得不承认,我真的不知道这些解算器是如何工作的,但看起来他们在浪费时间试图改善可笑的弱下界,寻找不可能乐观的解。因此,我的问题是:Mathematical optimization 建议ILP解算器的下限,mathematical-optimization,cplex,integer-programming,pyomo,coin-or-cbc,Mathematical Optimization,Cplex,Integer Programming,Pyomo,Coin Or Cbc,我有一个整数线性规划问题,我尝试过的解算器(CPLEX,CBC)需要很长时间才能解决,即使他们很早就找到了最优解。他们只是花了很长时间来充分证明这一点 计算最小化问题的目标值的一个微不足道的下界很容易,但在CPLEX的输出(最佳界列)中,我可以看到它在很长很长一段时间内都不接近。它几乎可以立即找到真正好的解决方案,但它错误地认为最佳解决方案可能更好 现在我不得不承认,我真的不知道这些解算器是如何工作的,但看起来他们在浪费时间试图改善可笑的弱下界,寻找不可能乐观的解。因此,我的问题是: 告诉解算器
我希望我能告诉解算器不要费心寻找目标值低于10的解(因为我可以用更简单的方法证明这一点),尤其是目标值为负值的解(因为在我的模型中甚至不可能)。如果你有一个好的下限,从可行解开始,您可以将其作为一个MIP开始提供给CPLEX 然后,CPLEX将尝试改进该解决方案,并忽略其分支定界算法中的任何分支,该分支定界算法的定界低于该值 有关更多详细信息,请参见此处:
(1)您始终可以添加一个约束,使所有低于先验已知边界的解都不可行。我不止一次读到,对于商业解决方案来说,这就足够了,开发人员认为这通常是适得其反的。但也许这对你有帮助(遗憾的是,我无法提供链接;也许谷歌可以在古罗比的邮件列表中找到这个问题)。(3) 根据您取得的成就,您可以调整解算器选项。古罗比选择了MIPFocus。也许你也能做到。例如,为了更好地证明边界,你做了许多切割;更快更好的解决方案的更多启发你是如何找到平凡的下界的?你刚刚放松了完整性约束并解决了(真实的)线性规划吗?@sascha在目标上添加约束没有帮助,但我会研究Gurobi和(3),谢谢。这可能正是我需要的。也请阅读。@RodrigodeAzevedo不,这只是对数据的一些操作,一个比我想解决的更简单的组合问题。但我的目标的非负性已经足够好了:下限的进展需要很长时间才能达到一个微不足道的零,之后不会花太长时间。
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 ---