1

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

命令行如何调用摘要标志

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

翻译为例如SolverFactory在 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)
4

2 回答 2

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

于 2017-04-06T15:38:42.853 回答
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')
于 2019-01-29T16:34:08.870 回答