Contenido principal

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 rutas 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

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

    ejemplo

    planner = plannerAStar(___,Name=Value) establece propiedades utilizando 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 un objeto navGraph. Si utiliza un objeto digraph, primero debe convertirlo en un objeto navGraph. El planificador utiliza los pesos de los enlaces (o bordes) del objeto navGraph para calcular el costo de la ruta.

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

    La función de costo 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 estados. La función debe devolver un vector columna de costos heurísticos de N, H. Si N es el mismo para ambas entradas, entonces H contiene los costos por pares entre los estados. De lo contrario, una matriz debe tener una sola fila y H contiene el costo 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

    Interruptor de modo de desempate, especificado como 0 (false) o 1 (true) lógico. Cuando habilita la propiedad TieBreaker, el planificador de rutas A* elige entre múltiples rutas de la misma longitud ajustando el valor del costo 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, vínculos 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);

    Crea una copia profunda del objeto plannerAStar.

    planner2 = copy(planner)
    planner2 = 
      plannerAStar with properties:
    
        HeuristicCostFcn: @nav.algs.distanceManhattan
              TieBreaker: 0
                   Graph: [1×1 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

    expandir todo

    Historial de versiones

    Introducido en R2023a

    Consulte también

    Objetos

    Funciones