提问者:小点点

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


我之前完成了一个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个答案

匿名用户

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

print(value(instance.obj))

匿名用户

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

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