plan
Trouver le chemin le plus court entre deux états dans le graphique
Depuis R2023a
Description
Exemples
Planifier le chemin le plus court entre deux états dans un graphique à l'aide du planificateur de chemin A-Star
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
planner
— Un* planificateur de chemin
Objet plannerAStar
Un* planificateur de chemin, spécifié comme un objet plannerAStar
.
start
— État de départ du chemin
entier positif | chaîne scalaire | vecteur de caractère | vecteur numérique
É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
goal
— État objectif du chemin
entier positif | chaîne scalaire | vecteur de caractère | vecteur numérique
É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
path
— Chemin le plus court entre les États
matrice numérique
Chemin le plus court entre les états, renvoyé sous forme de matrice numérique.
Types de données : double
solutionInfo
— Informations sur les solutions
structure
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
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- 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)