【问题标题】:How to access objective function value in pyomo?如何在pyomo中访问目标函数值?
【发布时间】:2020-07-01 01:05:10
【问题描述】:

我正在尝试从我的 pyomo 模型中输出目标值。我确实访问了变量值,但我无法访问目标函数值。我的代码是:

   instance = model.create_instance(data)

opt = SolverFactory('cplex')
results = opt.solve(instance)
instance.solutions.store_to(results)
results.write()
# instance.display()

# output the solution
var_val = []
for v in instance.component_data_objects(Var):
    var_val.append(int(v.value))

obj_val = value(instance.obj)

最后一行给出了错误信息:

    obj_val = value(instance.obj)
NameError: name 'value' is not defined

但我可以清楚地看到result.write()的价值:

 Message: None
  Objective:
    obj:
      Value: 104728.80233047833
  Variable:
    x[0,1]:
      Value: 1569
    x[1,0]:
      Value: 1569
    x[1,1]:
      Value: 206
    x[2,2]:
      Value: 230
    x[2,3]:
      Value: 213
    x[3,2]:
      Value: 213

【问题讨论】:

    标签: pyomo


    【解决方案1】:

    你是如何导入 Pyomo 的?如果您使用from pyomo.environ import *,则将包含价值函数。如果您要单独导入您正在使用的每个东西,那么您只需要确保导入 value 函数:from pyomo.environ import value

    【讨论】:

    • 非常感谢!我忘记从“pyomo.environ”导入“值”,因为我试图使整个模型文件成为用户定义的函数,需要显式声明所有导入的项目。顺便说一句,如果我想从 pyomo.environ 导入函数文件中的所有内容,显然我不能使用*,除了显式导入我正在使用的所有内容之外,还有其他导入方式吗?
    • 您可以执行以下操作:import pyomo.environ as pe,然后将 pe. 预先附加到您从 pyomo.environ 使用的所有内容中,即 pe.Constraintpe.value
    猜你喜欢
    • 2021-12-25
    • 2017-02-15
    • 2020-02-06
    • 1970-01-01
    • 2021-05-27
    • 2021-08-27
    • 2022-07-23
    • 2021-08-04
    • 2022-01-21
    相关资源
    最近更新 更多