Pyomo求解器调用可以通过命令行使用或从Python脚本实现。
命令行如何使用摘要标志
进行调用pyomo solve model.py input.dat --solver=glpk --summary
翻译为例如在Python脚本中使用SolverFactory
类?
具体来说,在以下示例中,如何指定摘要选项?它是SolverFactory.solve
的(未记录的?)参数吗?
from pyomo.opt import SolverFactory
import pyomo.environ
from model import model
opt = SolverFactory('glpk')
instance = model.create_instance('input.dat')
results = opt.solve(instance)
答案 0 :(得分:2)
--summary选项特定于pyomo
命令。它不是解算器选项。我相信所有它真正做的就是执行
pyomo.environ.display(instance)
解决后,您可以轻松添加到您的脚本中。查询解决方案的更直接方法是通过“评估”它们来访问模型变量或目标的值。如,
instance.some_objective()
instance.some_variable()
instance.some_indexed_variable[0]()
或
pyomo.environ.value(instance.some_objective)
pyomo.environ.value(instance.some_variable)
pyomo.environ.value(instance.some_indexed_variable)
我更喜欢前者,但如果您访问不可变的索引Param对象的值,则后者更合适。另请注意,变量具有可以直接访问的.value
属性(如果要提供热启动,则更新)。
答案 1 :(得分:0)
默认情况下,--summary
命令选项将json格式的“结果”文件存储到模型目录中。
您可以通过在代码中添加以下内容来达到相同的结果:
results = opt.solve(instance, load_solutions=True)
results.write(filename='results.json', format='json')
或:
results = opt.solve(instance)
instance.solutions.store_to(results)
results.write(filename='results.json', format='json')