SolverFactory.solve 摘要选项

SolverFactory.solve summary option

Pyomo 求解器调用可以通过命令行使用或从 Python 脚本实现。

带摘要标志的命令行如何调用

pyomo solve model.py input.dat --solver=glpk --summary

翻译成例如SolverFactory class 在 Python 脚本中的用法?

具体来说,在下面的例子中,如何指定摘要选项呢?它是 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)

--summary 选项特定于 pyomo 命令。它不是求解器选项。我相信它真正做的就是执行行

pyomo.environ.display(instance)

解决后,您可以轻松地将其添加到脚本中。查询解决方案的一种更直接的方法是通过 "evaluating" 访问模型变量或 objective 的值。例如,

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 属性,你可以直接访问它(如果你想提供热启动则更新)。

默认情况下,--summary 命令选项以 json 格式将 'result' 文件存储到模型目录中。

您可以通过在代码中添加以下内容来获得相同的结果:

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