我是Pyomo的新手,所以这可能是个愚蠢的问题。我正在尝试构建一个4区UC / ED模型,每个区域都有许多发生器。所以我按照以下方式设置模型:
model.Zone1Generators = Set()
model.Zone2Generators = Set()
model.Zone3Generators = Set()
model.Zone4Generators = Set()
model.Generators = model.Zone1Generators | model.Zone2Generators | model.Zone3Generators | model.Zone4Generators
当我运行模型时,我收到以下错误消息:
错误:为约束Local1生成表达式时规则失败: RuntimeError:无法迭代抽象Set' Zone1Generators'在构建(初始化)之前。
相关约束公布如下:
def WECC1(i):
if i > 0:
seg1 = sum(model.mwh_1[j,i] for j in model.Zone1Generators)
seg2 = sum(model.mwh_2[j,i] for j in model.Zone1Generators)
seg3 = sum(model.mwh_3[j,i] for j in model.Zone1Generators)
renew = model.hydro[model.zones[0],i] + model.solar[model.zones[0],i]\
+ model.wind[model.zones[0],i] + model.pumpstorage[model.zones[0],i]
return seg1 + seg2 + seg3 + renew >= 0.25*model.HorizonDemand[model.zones[0],i]
else:
return Constraint.Skip
model.Local1= Constraint(rule=WECC1)
我认为这可能是因为我没有传递所有模型信息。所以我将约束从def WECC1(i)
更改为WECC1(model,i)
。这给了我一条新的错误消息:
错误:运行模型时出现意外异常: WECC1()只需要2个参数(给定1个)
非常感谢任何帮助。
答案 0 :(得分:0)
您需要为约束提供索引集以声明索引约束
model.Local1 = Constraint(model.Generators, rule=WECC1)