SolverFactory.solve摘要选项

时间:2017-04-06 15:15:14

标签: pyomo

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)

2 个答案:

答案 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')