2017-06-14 5 views
0

Je suis nouveau à Pyomo, donc cela peut être une question idiote à poser. J'essaie de construire un modèle UC/ED à 4 zones avec de nombreux générateurs dans chaque zone. Je me suis donc le modèle dans la manière suivante:Pyomo ne peut pas itérer par-dessus l'erreur de l'ensemble et de l'indice de contrainte

model.Zone1Generators = Set() 

model.Zone2Generators = Set() 

model.Zone3Generators = Set() 

model.Zone4Generators = Set() 


model.Generators = model.Zone1Generators | model.Zone2Generators | model.Zone3Generators | model.Zone4Generators 

Quand je lance le modèle, je reçu le message d'erreur suivant:

ERROR: Rule failed when generating expression for constraint Local1: RuntimeError: Cannot iterate over abstract Set 'Zone1Generators' before it has been constructed (initialized).

La contrainte liée est affichée ci-dessous:

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) 

Je pense qu'il peut être causé par le fait que je n'ai pas passé toutes les informations du modèle. J'ai donc changé la contrainte de def WECC1(i) à WECC1(model,i). Cela me donne un nouveau message d'erreur:

ERROR: Unexpected exception while running model: WECC1() takes exactly 2 arguments (1 given)

Toute aide serait très appréciée.

Répondre

0

Vous devez fournir l'indexation mis à la contrainte afin de déclarer une contrainte indexée

model.Local1 = Constraint(model.Generators, rule=WECC1) 
+0

Merci beaucoup! –