如何使用JAVA concert将CPLEX中的时间限制和间隙终止标准结合起来



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

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

在一些情况下,我想把这两个标准结合起来,它们有以下两个阶段:

  • 阶段1:运行时间不超过1小时(无间隙限制=>求最优解)
  • 如果前1小时没有找到最优解:
  • 第二阶段:运行时间长达5小时(最多额外4小时)&间隙限制= 0.1,即无论哪个限制先达到,都将终止搜索

我可以想到两种方法来实现这个目标:

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

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

建议,其他想法?

默认情况下,高级启动开关设置为1。因此,对于阶段1,您可以简单地在初始时间限制下运行模型,并在完成时检查解决方案状态。然后,如果有必要,更改参数并再次调用阶段2的solve()(即,CPLEX将继续部分探索的MIP树)。

最新更新