java - 如何使用 JAVA Concert 在 CPLEX 中结合时间限制和间隙终止标准

标签 java time limit cplex termination

我正在解决 MIP 的非常大的实例,并且希望结合这两个终止标准。我知道如何单独和同时使用 timeLimit 和相对 MIP 间隙,即

cplex.setParam(IloCplex.Param.MIP.Tolerances.MIPGap, 0.1);
cplex.setParam(IloCplex.Param.TimeLimit, 3600);

对于几个例子,我想将这两个标准结合起来,两个标准有以下两个阶段:

  • 第 1 阶段:运行时间长达 1 小时(无间隙限制 => 求解最优)
  • 如果在前 1 小时内没有找到最佳解决方案:
  • 第 2 阶段:运行时间长达 5 小时(最多 4 小时)且间隙限制 = 0.1,即首先达到的任何限制都会终止搜索

我可以想到两种实现这一目标的方法:

  • 在模型中设置某些参数,以便在建议的两阶段方法中运行它
  • 使用默认值(即没有时间或间隙限制)开始优化,监控运行时间(如果 1 小时后仍在运行)=> 添加时间和间隙限制作为终止标准。

不幸的是,我不知道如何实现这些方法。

建议、其他想法?预先感谢您。

最佳答案

默认情况下,advanced start switch参数设置为 1。因此,对于第 1 阶段,您只需在初始时间限制下运行模型并检查 solution status当它完成时。然后,如有必要,更改参数并在第 2 阶段再次调用 solve()(即,CPLEX 将继续部分探索的 MIP 树)。

关于java - 如何使用 JAVA Concert 在 CPLEX 中结合时间限制和间隙终止标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40506164/

相关文章:

java - 在时间选择器中限制时间范围

python - 值错误 : time data does not match format when parsing a date

C++:获取当前时间作为 W3C UTC 时间字符串

Java Servlet : Specify postdata limit for request. 获取参数?

MYSQL - 排序依据和限制 : Different result when using variable or constant

java - 如何将参数传递给 REST 方法

java - 一对多的延迟加载不起作用

java - 仅打包依赖项中必要的类

c++ - 需要使用 linux ubuntu 从 .cpp 查找上次启动的时间?

c - 为什么显示超时?