Pyomo解决方案不可行

时间:2020-09-03 05:58:00

标签: python pyomo ipopt

我正在研究Pyomo中的优化问题,并得到了一个不能满足所有约束的解决方案。

结果,我在Pyomo中使用了log_infeasible_constraints模型,但似乎并没有给我违反的约束。

具体来说,请考虑以下仅包含两个约束和一个目标函数的简单模型:

from pyomo.environ import *
from pyomo.opt import SolverFactory
from pyomo.util.infeasible import log_infeasible_constraints


model = AbstractModel()
model.N = Param( within=PositiveIntegers )
model.I= RangeSet( model.N )
model.x = Var(model.I,within=NonNegativeReals)

def lower_x(m):
    return sum(m.x[i] for i in m.I) >= 3

def upper_x(m):
    return sum(m.x[i] for i in m.I) <= 6

def obj(m):
    return sum(m.x[i]**2 for i in m.I)


model.value = Objective(rule=obj, sense=minimize)

model.c_lower = Constraint(rule=lower_x)
model.c_upper = Constraint(rule=upper_x)


data = {    None:{
    'N':    {None:  3}
}}


real_model = model.create_instance(data)


log_infeasible_constraints(real_model)

很明显,最佳解决方案没有违反任何约束。但是最后一行的结果是:

INFO: CONSTR c_upper: 2.9999999712526666 </= 6.0

这让我很困惑。 log_infeasible_constraints(real_model)不应该仅返回违反的约束吗?有人可以帮忙吗?预先感谢。

0 个答案:

没有答案