Pyomo:隐式替换组件属性

2024-06-03 03:46:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Pyomo解决这个问题。我所做的是这样的:

enter image description here

model = AbstractModel()
model.Tom=Param(initialize=20100)
model.Peter=Var(domain=NonNegativeReals)
model.Gary =Var(domain=NonNegativeReals)
model.Nina=Var(domain=NonNegativeReals)
model.Samir=Var(domain=NonNegativeReals)
model.Linda=Var(domain=NonNegativeReals)
model.Bob=Var(domain=NonNegativeReals)
model.Y=Var(within=Binary)
model.M=Param(initialize=1000)

model.Cons_Peter = Constraint(expr=model.Peter-5000 >= model.Tom)
model.Cons_Nina = Constraint(expr=model.Nina-5000 >= model.Tom)
model.Cons_Samir = Constraint(expr=model.Samir-5000 >= model.Tom)

def Cons_Gary(model):
    return (model.Tom+model.Peter) <= model.Gary
model.Cons_Gary = Constraint(rule=Cons_Gary)

def Sum_1(model):
    return (model.Nina+model.Samir)>=2*(model.Tom+model.Peter)
model.Sum_1=Constraint(rule=Sum_1)

model.Cons_Bob1 = Constraint(expr=model.Bob+model.Y*model.M>= model.Peter)
model.Cons_Bob2 = Constraint(expr=model.Bob+(1-model.Y)*model.M>= model.Samir)

def Sum_2(model):
    return model.Bob+model.Peter>=60245
model.Sum_2=Constraint(rule=Sum_2)

model.Cons_Linda=Constraint(expr=model.Linda<= model.Tom+model.Bob)

def obj_salary(model):
     return model.Tom+model.Linda+model.Gary+model.Bob+model.Nina+model.Samir+model.Peter
model.salary= Objective(rule=obj_salary, sense=minimize)

The error is WARNING: Implicitly replacing the Component attribute Tom (type=<class 'pyomo.core.base.param.SimpleParam'>) on block unknown with a new Component (type=<class 'pyomo.core.base.param.SimpleParam'>). This is usually indicative of a modelling error. To avoid this warning, use block.del_component() and block.add_component().

我不知道为什么它不能正常运行以获得model.salary的最小值。 有人能帮我吗? 非常感谢你的帮助


Tags: modelvardomainpeterbobsumtomexpr
1条回答
网友
1楼 · 发布于 2024-06-03 03:46:59

天哪。我终于发现了错误

它应该是“print(value(instance.profice))”而不是“print(value(model.profice))”

我犯了一个多么愚蠢的错误

相关问题 更多 >