Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

plannerAStar

Planificador de rutas A* basado en gráficos

Desde R2023a

    Descripción

    El objeto plannerAStar crea un planificador de ruta A* a partir de un objeto gráfico. El algoritmo A* encuentra la ruta más corta en el gráfico utilizando una función heurística para guiar eficientemente su exploración de los nodos.

    Creación

    Descripción

    ejemplo

    planner = plannerAStar(graph) crea un objeto plannerAStar a partir de un objeto navGraph , graph. La entrada graph establece el valor de la propiedad Graph .

    planner = plannerAStar(___,Name=Value) establece propiedades usando uno o más argumentos de nombre-valor además del argumento de entrada en la sintaxis anterior. Puede especificar las propiedades HeuristicCostFcn y TieBreaker como argumentos de nombre-valor.

    Propiedades

    expandir todo

    Objeto gráfico del entorno de planificación, especificado como objeto navGraph . Si utiliza un objeto digraph , primero debe convertirlo en un objeto navGraph . El planificador utiliza los pesos de enlace (o borde) del objeto navGraph para calcular el coste de la ruta.

    El coste heurístico entre un estado y el objetivo en un gráfico, especificado como uno de los identificadores de función de coste predefinidos, @nav.algs.distanceManhattan, @nav.algs.distanceEuclidean o @nav.algs.distanceEuclideanSquared o un identificador de función de coste personalizado.

    La función de costes debe aceptar dos matrices N-por- S , state1 y state2, donde N es el número de estados y S es la longitud del vector de estado. La función debe devolver un vector columna de costes heurísticos de elemento N , H. Si N es el mismo para ambas entradas, entonces H contiene los costes por pares entre los estados. De lo contrario, una matriz debe tener una sola fila y H contiene el coste entre ese estado y cada estado en la matriz opuesta. Vectorice la función de costes personalizada para obtener el mejor rendimiento.

    Ejemplo: HeuristicCostFcn=@nav.algs.distanceEuclidean

    Ejemplo: HeuristicCostFcn=@(state1,state2)nav.algs.distanceManhattan(state1,state2,weight)

    Ejemplo: HeuristicCostFcn=@(state1,state2)sqrt(sum((state1-state2).^2,2))

    Tipos de datos: function_handle

    Alternancia del modo de desempate, especificado como 0 (false) o 1 (true) . Cuando habilita la propiedad TieBreaker , el planificador de ruta A* elige entre múltiples rutas de la misma longitud ajustando el valor del coste heurístico.

    Ejemplo: TieBreaker=true

    Tipos de datos: logical

    Funciones del objeto

    planEncuentra la ruta más corta entre dos estados en el gráfico
    copyCree una copia profunda del objeto del planificador de ruta A*

    Ejemplos

    contraer todo

    Cargue la red de carreteras de Queensland.

    load("queenslandRoutes","places","routes")

    Especifique estados, enlaces y pesos para un objeto 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

    Cree un objeto navGraph .

    graphObj = navGraph(states,links,Weight=weights, ...
                        Name=names);

    Cree un planificador de rutas A* basado en gráficos.

    planner = plannerAStar(graphObj);

    Cree una copia profunda del objeto plannerAStar .

    planner2 = copy(planner)
    planner2 = 
      plannerAStar with properties:
    
        HeuristicCostFcn: @nav.algs.distanceManhattan
              TieBreaker: 0
                   Graph: [1x1 navGraph]
    
    

    Especificar una función heurística devuelve un tiempo estimado para alcanzar el objetivo.

    planner.HeuristicCostFcn = @(state1,state2) ...
        sum(abs(state1-state2),2)/100;

    Definir las ciudades de inicio y destino.

    start = "Hughenden";
    goal = "Brisbane";

    Encuentre la ruta más corta utilizando el algoritmo A* basado en gráficos.

    [pathOutput,solutionInfo] = plan(planner,start,goal);

    Visualiza los resultados.

    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.

    Capacidades ampliadas

    Historial de versiones

    Introducido en R2023a

    Consulte también

    Objetos

    Funciones