使用MIP在ILOG CPLEX Optimizer java API中启动

时间:2013-03-18 09:11:07

标签: java mathematical-optimization cplex integer-programming

我找不到在CPLEX java API中有效使用MIP启动的方法。

我有一个线性问题,我需要通过更改一个约束或更改目标来多次解决,所以我认为从解决方案开始(使用MIP启动)可能是加速计算的好方法。

所以为了做到这一点,在我第一次解决问题之后,我将所有变量保存在IloNumVar数组中,并使用cplex.addMIPStart将其传递给我的其他cplex对象。

问题是它没有加速它使它变慢的任何东西,并给我这个消息:

警告:未找到1个MIP的解决方案。

所以也许我不应该让MIP启动所有变量,但我怎么知道给它的变量?

我也尝试改变MIP启动工作,但似乎没有任何区别......

为什么不进行更快的计算?有没有更好的方法来解决许多只有一些差异的问题?

1 个答案:

答案 0 :(得分:2)

此消息通常意味着您没有为模型中的足够决策变量指定值,或者您给cplex的值不可行。您可以通过对变量使用IloNumVar.setBounds然后尝试解决模型来检查可行性。如果出现这种情况不可行,那么您可以编写iis文件。    CPLEX尝试,但无法使用您的mipstart,因此运行速度较慢。良好的MIP启动可以显着缩短解决方案时间,特别是如果cplex很难找到第一个可行的解决方案并且您的MIP启动具有接近最优的目标函数值,但在许多情况下,它不会产生任何区别。热启动MIP比热启动LP更难。