type d'une directive

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

récupération des directives

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()

approche par contenu

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.)