首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当参数化Pyomo优化时出现错误

当参数化Pyomo优化时出现错误
EN

Stack Overflow用户
提问于 2022-01-08 13:08:38
回答 1查看 140关注 0票数 0

我试图使用Pyomo和标准的Pythonmultiprocessing库并行地优化多个线性规划问题。当切换到使用多个处理时,我总是遇到错误:ValueError: Cannot load a SolverResults object with bad status: error

这个问题也有类似的报道,他们的问题似乎是解决者(n.b )。他们使用cbc,而我使用cplex)超时,不能优雅地退出。不过,这似乎不是我的错误的问题。一种猜测是,cplex解决程序试图写入一个临时文件,然后被并行优化覆盖。

任何帮助修复此错误将不胜感激!下面的代码应该复制错误。

代码语言:javascript
复制
import time  
import multiprocessing  
import pyomo.environ as pyo  
from pyomo.opt import SolverFactory  
  
def run_model(n_runs=50):  
    for _ in range(n_runs):  
        opt = SolverFactory(solver_name, executable=solver_executable)  
  
        model = pyo.ConcreteModel()  
        model.x = pyo.Var([1,2], domain=pyo.NonNegativeReals)  
        model.OBJ = pyo.Objective(expr = 2*model.x[1] + 3*model.x[2])  
        model.Constraint1 = pyo.Constraint(expr = 3*model.x[1] + 4*model.x[2] >= 1)  
  
        opt.solve(model)  
        time.sleep(0.1)  
  
    return  
  
  
solver_name = 'cplex'  
solver_executable = 'C:/Program Files/IBM/ILOG/CPLEX_Studio201/cplex/bin/x64_win64/cplex'  
  
  
if __name__ == '__main__':  
  
    process_list = []  
  
    for _ in range(10):  
        p = multiprocessing.Process(target=run_model)  
        p.start()  
        process_list.append(p)  
  
    for process in process_list:  
        process.join()
代码语言:javascript
复制
Process Process-8:
Traceback (most recent call last):
  File "C:\Users\User\anaconda3\envs\env\lib\multiprocessing\process.py", line 315, in _bootstrap
    self.run()
  File "C:\Users\User\anaconda3\envs\env\lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\User\Desktop\library_dir\scripts\multiprocessing_test.py", line 15, in run_model
    opt.solve(model)
  File "C:\Users\User\anaconda3\envs\env\lib\site-packages\pyomo\opt\base\solvers.py", line 626, in solve
    _model.solutions.load_from(
  File "C:\Users\User\anaconda3\envs\env\lib\site-packages\pyomo\core\base\PyomoModel.py", line 224, in load_from
    raise ValueError("Cannot load a SolverResults object "
ValueError: Cannot load a SolverResults object with bad status: error
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-09 10:51:31

解决整个问题的方法(但不是这个特定的错误)是使用来自glpk这里解决器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70632609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档