optNetwork
path
##set_optnetwork
Description
L'action permet de calculer les chemins à l'intérieur d'un graphe. C'est un peu comme le GPS de vos données : dites-lui d'où vous partez et où vous allez, et l'algorithme se charge de trouver la route à travers les nœuds et les liens (garanti sans péages).
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| direction | Indique s'il faut considérer le graphe comme orienté (DIRECTED) ou non (UNDIRECTED). Attention aux sens uniques ! |
| links | Spécifie la table d'entrée contenant les informations sur les liens du graphe (le réseau routier). |
| source | Spécifie le nœud de départ (source) pour le calcul du chemin. |
| sink | Spécifie le nœud d'arrivée (destination) pour le calcul du chemin. |
| outPaths | Table de données de sortie contenant les liens du chemin trouvé. |
| outPathsNodes | Table de données de sortie contenant les nœuds du chemin. |
| maxLength | Le nombre maximum de liens autorisés dans un chemin. Pratique pour éviter les détours inutiles. |
Préparation des données
Création d'un réseau simple
Nous allons créer une table de liens représentant un petit réseau orienté pour tester notre algorithme de recherche de chemin.
| 1 | DATA mycas.LinkSetIn; |
| 2 | LENGTH from $1 to $1; |
| 3 | INPUT from to weight; |
| 4 | DATALINES; |
| 5 | A B 1 |
| 6 | A C 2 |
| 7 | B C 1 |
| 8 | C D 3 |
| 9 | ; |
| 10 | RUN; |
Exemples d'utilisation
Recherche d'un chemin de A vers D
Cet exemple recherche un chemin entre le nœud 'A' et le nœud 'D' en utilisant la table de liens fraîchement créée.
| 1 | PROC CAS; |
| 2 | optNetwork.path / |
| 3 | direction="DIRECTED" |
| 4 | links={name="LinkSetIn"} |
| 5 | SOURCE="A" |
| 6 | sink="D" |
| 7 | outPaths={name="PathLinks"} |
| 8 | outPathsNodes={name="PathNodes"}; |
| 9 | RUN; |
Résultat Attendu :
L'action génère deux tables : %%PathLinks%% contenant les arêtes empruntées et %%PathNodes%% contenant la séquence de nœuds visités pour aller de A à D.
Recherche avancée avec limites et logs détaillés
Ici, on limite la longueur du chemin à 5 liens maximum, on ajuste le niveau de journalisation pour plus de détails sur l'exécution, et on s'assure d'écraser les tables de sortie existantes.
| 1 | PROC CAS; |
| 2 | optNetwork.path / |
| 3 | direction="DIRECTED" |
| 4 | links={name="LinkSetIn"} |
| 5 | SOURCE="A" |
| 6 | sink="D" |
| 7 | maxLength=5 |
| 8 | maxTime=60.0 |
| 9 | logLevel="MODERATE" |
| 10 | outPaths={name="PathLinks", replace=true} |
| 11 | outPathsNodes={name="PathNodes", replace=true}; |
| 12 | RUN; |
Résultat Attendu :
SAS renverra le chemin de A à D tout en respectant la contrainte de taille maximale, et affichera dans le journal des statistiques de traitement plus verbeuses.