plan
Trouver le chemin le plus court entre deux états dans le graphique
Depuis R2023a
Description
Exemples
Chargez le réseau routier du Queensland.
load("queenslandRoutes","places","routes")
Spécifiez les états, les liens et les poids pour un objet navGraph
.
states = places.utm; % UTM coordinates of cities names = places.name; % Names of cities links = [routes.start routes.end]; % Adjacent cities weights = routes.time; % Travel time between adjacent cities
Créez un objet navGraph
.
graphObj = navGraph(states,links,Weight=weights, ...
Name=names);
Créez un planificateur de chemin A* basé sur un graphique.
planner = plannerAStar(graphObj);
Créez une copie complète de l'objet plannerAStar
.
planner2 = copy(planner)
planner2 = plannerAStar with properties: HeuristicCostFcn: @nav.algs.distanceManhattan TieBreaker: 0 Graph: [1x1 navGraph]
Spécifier une fonction heuristique renvoie un temps estimé pour atteindre l'objectif.
planner.HeuristicCostFcn = @(state1,state2) ...
sum(abs(state1-state2),2)/100;
Définir les villes de départ et d'arrivée.
start = "Hughenden"; goal = "Brisbane";
Trouvez le chemin le plus court à l’aide de l’algorithme A* basé sur un graphique.
[pathOutput,solutionInfo] = plan(planner,start,goal);
Visualisez les résultats.
h = show(graphObj); set(h,XData=graphObj.States.StateVector(:,1), ... YData=graphObj.States.StateVector(:,2)) pathStateIDs = solutionInfo.PathStateIDs; highlight(h,pathStateIDs,EdgeColor="#EDB120",LineWidth=4) highlight(h,pathStateIDs(1),NodeColor="#77AC30",MarkerSize=5) highlight(h,pathStateIDs(end),NodeColor="#D95319",MarkerSize=5)
Arguments d'entrée
Un* planificateur de chemin, spécifié comme un objet plannerAStar
.
État de départ du chemin, spécifié sous la forme d'un entier positif, d'une chaîne scalaire, d'un vecteur de caractères ou d'un vecteur numérique.
Exemple : 1
Exemple : "Brisbane"
Exemple : [1095.91458671447 6947.04365801860]
Types de données : single
| double
| char
| string
État objectif du chemin, spécifié sous la forme d'un entier positif, d'une chaîne scalaire, d'un vecteur de caractères ou d'un vecteur numérique.
Exemple : 5
Exemple : "Hughenden"
Exemple : [208.622393818849 7691.91766093269]
Types de données : single
| double
| char
| string
Arguments de sortie
Chemin le plus court entre les états, renvoyé sous forme de matrice numérique.
Types de données : double
Informations sur la solution, renvoyées sous forme de structure. Les champs de la structure sont :
Champ | Description |
---|---|
IsPathFound | Indique si un chemin a été trouvé. Renvoie |
PathStateIDs | Liste des identifiants des états le long du chemin trouvé par A*. Par défaut, les ID sont les indices numériques des états dans l'objet graphique. Si vous spécifiez des noms pour les états lors de la construction de l'objet graphique, ce champ contient les noms à la place. |
PathCost | Coût total du chemin. Si aucun chemin n'est trouvé, alors le coût est |
ExploredStateIDs | Liste des identifiants des états explorés par A* lors de la recherche. Par défaut, les ID sont les indices numériques des états dans l'objet graphique. Si vous spécifiez des noms pour les états lors de la construction de l'objet graphique, ce champ contient les noms à la place. |
NumExploredStates | Nombre d'états explorés lors de la recherche. Égal à la longueur de la liste |
Types de données : struct
Capacités étendues
Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.
Historique des versions
Introduit dans R2023a
Voir aussi
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)