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

时间:2018-02-22 13:01:13

标签: python pyomo

我之前完成了一个ILP,它运行正常。

opt = SolverFactory('glpk')
model = AbstractModel()
model.obj = Objective(...)

# variables, constraints ...

instance = model.create_instance()
results = opt.solve(instance)

因为我想得到每个变量的值而且目标函数已经解决了,我尝试通过类似于我对变量所做的方式来访问Objective函数,但我能得到的只是一个表达式。

我使用以下代码:

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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

print(value(instance.obj))