我正在解决 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/