【发布时间】:2020-10-16 13:15:59
【问题描述】:
我正在尝试在 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)
错误是警告:隐式替换组件属性 Tom (类型=) 在未知块上使用新的 组件(类型=
)。这是 通常表示建模错误。为避免此警告,请使用 block.del_component() 和 block.add_component()。
不知道为什么不能正常运行得到model.salary的最小值。 任何人都可以帮我吗? 非常感谢您的帮助!
【问题讨论】:
标签: python optimization pyomo