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

Syntaxe Officielle
proc cas;
optNetwork.path /
direction="DIRECTED" | "UNDIRECTED"
links={name="table-name"}
source="string" | double
sink="string" | double
outPaths={name="table-name"}
outPathsNodes={name="table-name"}
;
run;

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.

1DATA mycas.LinkSetIn;
2 LENGTH from $1 to $1;
3 INPUT from to weight;
4 DATALINES;
5A B 1
6A C 2
7B C 1
8C D 3
9;
10RUN;

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.

1PROC 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"};
9RUN;
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.

1PROC 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};
12RUN;
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.