【问题标题】:SolverFactory.solve summary optionSolverFactory.solve 摘要选项
【发布时间】:2017-09-01 17:16:20
【问题描述】:

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)

【问题讨论】:

    标签: pyomo


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      默认情况下,--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')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-01
        • 2014-10-17
        • 1970-01-01
        • 1970-01-01
        • 2011-10-28
        • 1970-01-01
        • 2015-07-13
        相关资源
        最近更新 更多