Pyomo解决方案不可行

问题描述

我正在研究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)不应该仅返回违反的约束吗?有人可以帮忙吗?预先感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)