如何设置 Pyomo 求解器超时



如何设置 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选项传递给我的求解器。在我的求解器cplex,代码将是这样的:

solver = SolverFactory('cplex')
solver.options['timelimit'] = 5
results = solver.solve(model, tee=True)

有关 pyomo 和 cplex 文档的更多信息。

我在 Pyomo 中取得了以下成功。对于不同的求解器,时间限制选项的名称是不同的:

    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是以秒为单位的整数时间限制。

相关内容

  • 没有找到相关文章

最新更新