我正在Pyomo解决这个问题。我所做的是这样的:
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的最小值。 有人能帮我吗? 非常感谢你的帮助强>
天哪。我终于发现了错误
它应该是“print(value(instance.profice))”而不是“print(value(model.profice))”
我犯了一个多么愚蠢的错误
相关问题 更多 >
编程相关推荐