【问题标题】:Pyomo assign value to constrain TypeError: Problem insertingPyomo 赋值以约束 TypeError:插入问题
【发布时间】:2019-05-09 15:03:53
【问题描述】:
model = ConcreteModel()
model.time = Set(initialize = range(24*3))
model.option = Set(initialize = range(4))
model.time_soc = Var(model.time, bounds = (0.1,0.9), domain=PositiveReals)
model.time_option = Var(model.time, model.option, domain = Binary)
model.soc_param = Param(model.option, initialize={0:0, 1:-0.025, 2:-0.05, 3:0.125})
model.soc_ini = Param(initialize = 0.5)

def cons_time_opt(model, i):
    total_choice = sum(model.time_option[i,j] for j in model.option)
    return total_choice == 1

model.opt = Constraint(model.time, rule = cons_time_opt)

model.soc_con0 = Constraint(0.5 + model.time_option[0,j]*model.soc_param[j] == model.time_soc[0] for j in model.option)

我收到以下错误:

错误:从数据构造组件“soc_con0_index”=None 失败: TypeError:将 time_soc[0] == 0.5 插入 set soc_con0_index 时出现问题

【问题讨论】:

  • 我不知道 pyomo 是什么,但这看起来像 python 语法,model.soc_con0 看起来像一个错字。需要更多代码

标签: pyomo


【解决方案1】:

我猜soc_con0 约束应该是一个索引约束,在这种情况下你会丢失一个约束规则。应该是:

def soc_con0_rule(model, j):
    return 0.5 + model.time_option[0,j]*model.soc_param[j] == model.time_soc[0]
model.soc_con0 = Constraint(model.option, rule=soc_con0_rule)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2021-03-06
    • 1970-01-01
    • 2021-09-12
    • 2017-08-24
    • 2020-09-07
    • 1970-01-01
    相关资源
    最近更新 更多