【问题标题】:Pyomo: Implicitly replacing the Component attributePyomo:隐式替换 Component 属性
【发布时间】: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


    【解决方案1】:

    天哪。我终于找到了错误。

    应该是 'print(value(instance.profit))' 而不是 'print(value(model.profit))'

    我犯了多么愚蠢的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 2018-05-06
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      相关资源
      最近更新 更多