【问题标题】:How to interface Pyomo with GLPK?如何将 Pyomo 与 GLPK 接口?
【发布时间】:2017-05-30 11:53:56
【问题描述】:
opt = SolverFactory("glpk")
opt.options["mipgap"] = 0.05
opt.options["FeasibilityTol"] = 1e-05
solver_manager = SolverManagerFactory("serial")
# results = solver_manager.solve(instance, opt=opt, tee=True,timelimit=None, mipgap=0.1)

results = solver_manager.solve(model, opt=opt, tee=True, timelimit=None)

# sends results to stdout
# results.write()

def pyomo_save_results(options=None, instance=None, results=None):
    OUTPUT = open(r'Results_generic_hub.txt', 'w')
    print(results, file=OUTPUT)
    OUTPUT.close()

它会产生以下错误。 GLPK 与 GLPSOL 一起安装——帮助从任何目录工作。这是 GLPK 模块的问题吗?还是模型本身?环境: - Conda,Mac OS Yosemite。


File "<ipython-input-7-ba156f9322b2>", line 7, in <module>
results = solver_manager.solve(model, opt=opt, tee=True,timelimit=None)

File "/anaconda/lib/python3.6/site-
packages/pyomo/opt/parallel/async_solver.py", line 34, in solve
return self.execute(*args, **kwds)

File "/anaconda/lib/python3.6/site-
packages/pyomo/opt/parallel/manager.py", line 107, in execute
ah = self.queue(*args, **kwds)

File "/anaconda/lib/python3.6/site-
packages/pyomo/opt/parallel/manager.py", line 122, in queue
return self._perform_queue(ah, *args, **kwds)

File "/anaconda/lib/python3.6/site-
packages/pyomo/opt/parallel/local.py", line 59, in _perform_queue
results = opt.solve(*args, **kwds)

File "/anaconda/lib/python3.6/site-packages/pyomo/opt/base/solvers.py", line 582, in solve
self._presolve(*args, **kwds)

File "/anaconda/lib/python3.6/site-packages/pyomo/opt/solver/shellcmd.py", line 196, in _presolve
OptSolver._presolve(self, *args, **kwds)

File "/anaconda/lib/python3.6/site-packages/pyomo/opt/base/solvers.py", line 661, in _presolve
**kwds)

File "/anaconda/lib/python3.6/site-packages/pyomo/opt/base/solvers.py", line 729, in _convert_problem
**kwds)

File "/anaconda/lib/python3.6/site-packages/pyomo/opt/base/convert.py", line 110, in convert_problem
problem_files, symbol_map = converter.apply(*tmp, **tmpkw)

File "/anaconda/lib/python3.6/site-packages/pyomo/solvers/plugins/converter/model.py", line 86, in apply
io_options=io_options)

File "/anaconda/lib/python3.6/site-packages/pyomo/core/base/block.py", line 1646, in write
io_options)

File "/anaconda/lib/python3.6/site-packages/pyomo/repn/plugins/cpxlp.py", line 163, in __call__
include_all_variable_bounds=include_all_variable_bounds)

File "/anaconda/lib/python3.6/site-packages/pyomo/repn/plugins/cpxlp.py", line 575, in _print_model_LP
" cannot write legal LP file" % str(model.name))

ValueError: ERROR: No objectives defined for input model 'unknown';  cannot write legal LP file

【问题讨论】:

    标签: python python-3.x glpk pyomo


    【解决方案1】:

    您看到的错误:

    "ERROR: No objectives defined for input model 'unknown';  cannot write legal LP file"
    

    表示 Pyomo 在您的模型上找不到活动的目标组件(您从未在模型中添加过一个,或者目标组件都已停用)。无论哪种方式,有效的 LP 文件(这是 Pyomo 与 GLPK 的接口)都需要一个目标。通过添加一个目标来修复你的模型应该可以解决这个错误。

    【讨论】:

      【解决方案2】:

      在脚本末尾试试这个代码:

      > instance  = model.create() instance.pprint() opt =
      > SolverFactory("glpk") results = opt.solve(instance)
      > print(results)
      

      `

      【讨论】:

        猜你喜欢
        • 2017-03-04
        • 1970-01-01
        • 2014-01-08
        • 1970-01-01
        • 2019-11-15
        • 1970-01-01
        • 1970-01-01
        • 2022-07-14
        • 1970-01-01
        相关资源
        最近更新 更多