2017-03-09 1 views
0

Je veux créer un ensemble d'indexation de tuples, je veux dire si je fais: LINEAS_DOWNSTREAM_BARRA[1] Je veux voir [(1,3),(1,2),(1,4)].PYOMO: Ensemble d'indexation de tuples

Mon code est:

m=ConcreteModel() 
m.BARRAS = Set() 
m.LINEAS_DOWNSTREAM_BARRA = Set(dimen = 2) 

m.LINEAS_DOWNSTREAM_BARRA = Set(m.BARRAS, initialize=lambda m, i: 
set(tuple(z) for z in m.LINEAS if (i == z[0]))) 

Et le problème est:

ValueError: The value=(1, 2) is a tuple for set=LINEAS_DOWNSTREAM_BARRA, which has dimen=1

Merci !!

Répondre

1

Vous devez déclarer Set m.LINEAS_DOWNSTREAM_BARRA sur une seule ligne. En outre, assurez-vous que votre fonction lambda renvoie une liste de tuples

m.LINEAS_DOWNSTREAM_BARRA = Set(m.BARRAS, dimen=2, initialize=your_lambda_fcn)