如何在B&B执行期间暂停CPLEX并提供解决方案?

时间:2019-04-10 16:04:39

标签: cplex

我想找到一种在解决最小化MIP时向CPLEX提供解决方案的方法。这些解决方案来自我与CPLEX并行运行的启发式方法。整个方法都用Java建模,我使用IloCplex调用CPLEX。

我尝试设置CPLEX的时间限制,一旦暂停,便使用MIPStarts将新解决方案提供给CPLEX模型。但是,当我再次运行CPLEX模型时,它说我提供的解决方案即使可行,也不可行。实际上,当我完全重新启动模型时,CPLEX会接受这些解决方案,这不是我想要的,因为这样做后,对b&b树的探索将从根节点重新开始。

2 个答案:

答案 0 :(得分:2)

您可能希望在搜索过程中使用回调和注入解决方案,而不是完全停止CPLEX以提供启动。 《用户手册》的相关部分为https://www.ibm.com/support/knowledgecenter/SSSA5P_12.9.0/ilog.odms.cplex.help/CPLEX/UsrMan/topics/progr_adv/callbacks/introCallbacks.html,Java API的参考位于https://www.ibm.com/support/knowledgecenter/SSSA5P_12.9.0/ilog.odms.cplex.help/refjavacplex/html/ilog/cplex/IloCplex.Callback.html

在搜索开始时接受解决方案作为mip-start似乎是很奇怪的,但是当搜索已经开始并且CPLEX被中断时却不能接受。如果您可以使用CPLEX Interactive重现此行为,建议您在https://www.ibm.com/developerworks/community/forums/html/forum?id=11111111-0000-0000-0000-000000002059上发布问题,并附加允许重现此问题的文件。

答案 1 :(得分:1)

如果要绕过所有检查,则可以将nocheck用作MIP开始工作量级别

  

NoCheck CPLEX无需任何检查即可接受MIP启动。

https://www.ibm.com/support/knowledgecenter/en/SSSA5P_12.9.0/ilog.odms.ide.help/refjavaopl/html/ilog/opl/IloCplex.MIPStartEffort.html