簡體   English   中英

如何設置 Pyomo 求解器超時?

[英]How to set Pyomo solver timeout?

如何設置 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)

有關pyomocplex 文檔的更多信息。

我在 PYOMO 中取得了以下成功。 cplex 和 glpk 的時間限制選項的名稱不同。

    self.solver = pyomo.opt.SolverFactory(SOLVER_NAME)
    if SOLVER_NAME == 'cplex':
        self.solver.options['timelimit'] = TIME_LIMIT
    elif SOLVER_NAME == 'glpk':         
        self.solver.options['tmlim'] = TIME_LIMIT
    elif SOLVER_NAME == 'gurobi':           
        self.solver.options['TimeLimit'] = TIME_LIMIT

其中 TIME_LIMIT 是以秒為單位的整數時間限制。

調用pyomo grom comand行時,我無法執行此操作。 例如“ pyomo解決ReferenceModel_v2.py Instancia_Chica_fin_de_semana.dat --solver = gurobi --save-results = file.txt --logfile = log.txt --solver-options mipgap = 0.0
--solver-options TimeLimit = 1.0 --solver-optionsthreads = 8“,這不遵守一秒的時間限制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM