Я новичок в 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: невозможно выполнить итерацию по абстрактному набору «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 задан)
Любая помощь будет очень признательна.