Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

plan

Trouver le chemin le plus court entre deux états dans le graphique

Depuis R2023a

    Description

    exemple

    path = plan(planner,start,goal) trouve le chemin le plus court path entre un start et goal dans le graphique en utilisant le spécifié Un* planificateur de chemin planner.

    [path,solutionInfo] = plan(___) renvoie les informations de solution de la planification de chemin solutionInfo.

    Exemples

    réduire tout

    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)

    Figure contains an axes object. The axes object contains an object of type graphplot.

    Arguments d'entrée

    réduire tout

    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.

    • Entier positif — Spécifiez l’ID d’état de l’état de départ. L'ID d'état est l'index de l'état dans l'objet navGraph dans la propriété Graph de planner.

    • Chaîne scalaire ou vecteur de caractères — Spécifiez le nom de l'état.

    • Vecteur numérique — Spécifiez les coordonnées de l'état.

    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.

    • Entier positif — Spécifiez l’ID d’état de l’état de départ. L'ID d'état est l'index de l'état dans l'objet navGraph dans la propriété Graph de planner.

    • Chaîne scalaire ou vecteur de caractères — Spécifiez le nom de l'état.

    • Vecteur numérique — Spécifiez les coordonnées de l'état.

    Exemple : 5

    Exemple : "Hughenden"

    Exemple : [208.622393818849 7691.91766093269]

    Types de données : single | double | char | string

    Arguments de sortie

    réduire tout

    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 :

    ChampDescription
    IsPathFound

    Indique si un chemin a été trouvé. Renvoie true si un chemin a été trouvé. Sinon, renvoie false.

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

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

    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

    |