代码之家  ›  专栏  ›  技术社区  ›  ironcircle

Pyomo:当使用python脚本时,在解决ILP后有没有快速的方法来显示目标值?

  •  2
  • ironcircle  · 技术社区  · 8 年前

    我之前完成了一个ILP,它工作正常。

    opt = SolverFactory('glpk')
    model = AbstractModel()
    model.obj = Objective(...)
    
    # variables, constraints ...
    
    instance = model.create_instance()
    results = opt.solve(instance)
    

    因为我想得到每个变量的值,但也要得到目标函数的解,所以我试图通过类似于我对变量所做的方式来访问目标函数,但我只能得到一个表达式。

    我使用以下代码:

    print(instance.obj.value)
    

    但只有这样的警告:

    WARNING: DEPRECATED: The .value property getter on SimpleObjective is deprecated. Use the .expr property getter instead
    

    当我将代码更改为

    print(instance.obj.expr)
    

    我得到的只是一个表情。所以我想知道,除了得到所有需要的变量并自己重新计算之外,还有什么方法可以得到目标函数的值?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Bethany Nicholson    8 年前

    获取目标函数值的最佳方法是使用 value Pyomo提供的功能

    print(value(instance.obj))
    
        2
  •  1
  •   Tristan    8 年前

    必须显式调用表达式属性getter。

    obj_val = instance.obj.expr()
    print(obj_val)