Как связать Pyomo с GLPK?

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

person Soumyadip Ghosh    schedule 30.05.2017    source источник


Ответы (2)


Вы видите ошибку:

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

указывает, что Pyomo не может найти активный компонент цели в вашей модели (либо вы никогда не добавляли его в модель, либо все компоненты цели были деактивированы). В любом случае, действительные файлы LP (именно так Pyomo взаимодействует с GLPK) требуют цели. Исправление модели путем добавления цели должно устранить эту ошибку.

person jsiirola    schedule 02.06.2017

Попробуйте этот код в конце скрипта:

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

`

person Aziz B.Ammar    schedule 10.04.2019