Graphe directionnel avec noeuds et branches pondérés
Bonjour à tous;
Je cherche à réaliser un graphe qui représente les flux d'échanges entre différents points.
Je voudrais représenter à la fois l'importance relative de chaque point et l'importance des flux passant par les barreaux situés entre les points.
Spécifiquement, il faut s'imaginer des entrepôts (les noeuds, donc) répartis en Europe qui s'échangent des objets. seuls les entrepôts contigus peuvent s'échanger des flux. Il existe donc une liste de chemins possibles qui forment les barreaux entre les nœuds. En revanche tous les entrepôts envoient des objets vers tous les autres entrepôts; ce qui rend nécessaire de passer par des entrepôts intermédiaires. Le tout ressemble un peu à un réseau de neurones.
J'ai pu récupérer une macro qui calcule l'itinéraire le plus court (en passant par les entrepôts intermédiaires) pour chaque flux d'échange possible. J'ai également un tableau décrivant la quantité d'objet que chaque nœud souhaite envoyer à chaque nœud.
Mon problème est le suivant : je voudrais sommer, pour chacun des barreaux (dont le nombre est bien inférieur au nombre total de chemins possibles de point à point dans le réseau) la masse des flux qui le traversent (la direction compte). Par exemple pour le barreau qui va du point C5 au point C18, je veux additionner le flux que C5 envoie à C18 avec tous les flux que les points en amont de ALS envoient à ceux situés en aval de STU et qui passent par ce barreau.
J'imagine demander à Excel de procéder en trois étapes :
1.1) Pour tous les points du réseau (1 boucle For), régler le point de départ de la macro des chemins sur ce point (prenons C1)
1.2) Pour tous les points du réseau (deuxième boucle For), régler le point d'arrivée de la macro des chemins sur ce point (mettons C22)
2) Si le barreau pour lequel je cherche à calculer le flux fait partie du trajet trouvé par la macro des chemins, ajouter le poids du flux (dans ce cas, le flux de C1 à C22) au barreau dont je cherche à calculer le flux (pour le coup, C5->C18)
3) Sinon rien
Sauf que je n'arrive pas à écrire de macro qui stipule d'utiliser la macro des chemins. Pensez-vous qu'on puisse écrire une telle macro ? Pensez-vous qu'on puisse trouver une solution hors-macro ?
Merci infiniment à tous ceux qui auront pris la peine de lire jusque là. Quand à toi, hypothétique Prince de l'Excel qui répondra, sois assuré de ma reconnaissance préventive et absolue.
Bonne bourre
Bonjour,
je n'ai pas tout compris, mais voici l'ébauche du programme qui permet de générer les paires de points de départ et d'arrivée (point de départ < point d'arrivée), de lancer la macro et de parcourir les points du chemin résultant. Je n'ai pas compris comment faire le calcul des flux, j'ai donc laissé ce point sans solution.
Sub aargh()
Dim c(27)
With Sheets("la macro qui trouve le chemin")
For i = 1 To 26
For j = i + 1 To 27
.Range("H2") = "C" & i 'mettre les valeurs en H2 et H3
.Range("H3") = "C" & j 'lancer la macro
CheminPlusCourt 'lancer la macro
k = 4
While .Cells(k, "L") <> "" 'récupérer les résultats en colonne L
n = Split(Replace(.Cells(k, "L"), "C", ""), "->")
' n(0) début d'un chemin
' n(1) fin d'un chemin
' faire la somme des flux sur base n(0) et n(1)
k = k + 1
Wend
Next j
Next i
End With
End Sub