une partie du typage de la matrice de flux a été déportée dans ihm/matrix.py
pour connaître le type de la directive :
DIRECTIVE_TYPE_DOWN DIRECTIVE_TYPE_UP
du point de vue du tableau, il repère la position du flux
for f in self.model.flux: index_zoneA = self.model.zones.index(f.zoneA) index_zoneB = self.model.zones.index(f.zoneB) if index_zoneA < index_zoneB: min_index = index_zoneA max_index = index_zoneB else: min_index = index_zoneB max_index = index_zoneA
m(z1,z2) est inclus dans f = Flux(z1,z2) if z1 < z2: m(z1,z2) = F.up_directive_list() else: m(z1,z2) = F.down_directive_list()
partir des zones devient très problématique, puisqu'il faut alors récupérer le flux correspondant au couple de zones
il convient donc de se placer du côté du contenant
for z1 in zones: for z2 in zones: # récupération du flux f1 = matrix_model.get_flux_list(z1) f2 = matrix_model.get_flux_list(z2) # f = f1& f2 # normalement c'est un singleton # ça serait mieux de récupérer quand mme un flux normal # c'est là que ça serait bien de faire des ensembles... if z1<z2: # m[z1,z2] = flux # print flux
partir des flux est plus simple
flux = matrix_model.flux for f in flux: z1 = f.zoneA z2 = f.zoneB # séparation des flux montants et descendants if z1<z2: m[z1,z2] = f.up_directives_list() m[z2,z1] = f.down_directives_list() else: m[z1,z2] = f.down_directives_list() m[z2,z1] = f.up_directives_list()
du coup, il faut travailler avec les noms de zones, plutôt que par référence sur les objets (parce que les objets créés ne sont plus les mmes.)