如何为Pyomo solve()方法设置超时时间? 更具体地说,告诉pyomo,在x秒后返回当前找到的最佳解决方案。
我通过 Pyomo 文档找到了答案,觉得分享一下可能会有帮助。
设置 Pyomo 的 solve()
方法的超时时间:
solver.solve(model, timelimit=5)
然而,如果求解器未被终止,这将会抛出 pyutilib.common._exceptions.ApplicationError: "Solver (%s) did not exit normally" % self.name )
的异常。我真正想要做的是将 timelimit
选项传递给我的求解器。对于求解器来说,代码应该像这样:
solver = SolverFactory('cplex')
solver.options['timelimit'] = 5
results = solver.solve(model, tee=True)
self.solver = pyomo.opt.SolverFactory(SOLVER_NAME)
if 'cplex' in SOLVER_NAME:
self.solver.options['timelimit'] = TIME_LIMIT
elif 'glpk' in SOLVER_NAME:
self.solver.options['tmlim'] = TIME_LIMIT
elif 'gurobi' in SOLVER_NAME:
self.solver.options['TimeLimit'] = TIME_LIMIT
elif 'xpress' in SOLVER_NAME:
self.solver.options['soltimelimit'] = TIME_LIMIT
# Use the below instead for XPRESS versions before 9.0
# self.solver.options['maxtime'] = TIME_LIMIT
其中TIME_LIMIT
是以秒为单位的整数时间限制。