java - 在 ILOG CPLEX Optimizer java API 中开始使用 MIP

标签 java mathematical-optimization cplex integer-programming

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

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

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

问题是它不会加速任何东西,反而会变慢并给我这个消息:

警告:从 1 个 MIP 开始未找到解决方案。

所以也许我不应该给 MIP 启动所有变量,但我如何知道要给它哪些变量?

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

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

最佳答案

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

关于java - 在 ILOG CPLEX Optimizer java API 中开始使用 MIP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15473076/

相关文章:

Java:多个线程通过同步方法同时访问变量递减静态变量

java - LibGDX - isKeyPressed() 不只计算一个

algorithm - 将旅行商表示为线性表达式

python - 使用 scipy.optimize 最小化多元可微函数

c++ - 有效识别给定角度 Angle 在哪个轴四分之一处

java - 如何在maven eclipse项目中使用cplex.jar?

python - 使用 CPLEX Python API 编写自定义变量选择方法

java - 没有 JCE 的 Java 中的 S/MIME

java - 在循环中将 TreeMap 添加到 ArrayList

javascript - 优化具有数千个点的图表的网络流量