我想找到一种在解决最小化MIP时向CPLEX提供解决方案的方法。这些解决方案来自我与CPLEX并行运行的启发式方法。整个方法都用Java建模,我使用IloCplex调用CPLEX。
我尝试设置CPLEX的时间限制,一旦暂停,便使用MIPStarts将新解决方案提供给CPLEX模型。但是,当我再次运行CPLEX模型时,它说我提供的解决方案即使可行,也不可行。实际上,当我完全重新启动模型时,CPLEX会接受这些解决方案,这不是我想要的,因为这样做后,对b&b树的探索将从根节点重新开始。
答案 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启动。