【问题标题】:Using MIP starts in ILOG CPLEX Optimizer java API在 ILOG CPLEX Optimizer java API 中开始使用 MIP
【发布时间】:2013-03-06 13:38:15
【问题描述】:

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

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

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

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

警告:从 1 个 MIP 启动后未找到解决方案。

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

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

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

【问题讨论】:

  • 您应该注意到您已将其交叉发布到 OR-exchange。

标签: java mathematical-optimization cplex integer-programming


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多