plannerAStar
설명
plannerAStar
객체는 graph 객체로부터 A* 경로 플래너를 생성합니다. A* 알고리즘은 노드 탐색을 효율적으로 수행하기 위해 휴리스틱 함수를 사용하여 그래프에서 가장 짧은 경로를 찾습니다.
생성
설명
는 위에 열거된 구문의 입력 인수 외에 하나 이상의 이름-값 인수를 사용하여 속성을 설정합니다. HeuristicCostFcn 속성과 TieBreaker 속성을 이름-값 인수로 지정할 수 있습니다.planner
= plannerAStar(___,Name=Value
)
속성
HeuristicCostFcn
— 그래프에서의 상태와 목표 사이의 휴리스틱 비용 함수
@nav.algs.distanceManhattan
(디폴트 값) | @nav.algs.distanceEuclidean
| @nav.algs.distanceEuclideanSquared
| 사용자 지정 비용 함수 핸들
그래프에서의 상태와 목표 사이의 휴리스틱 비용으로, 미리 정의된 비용 함수 핸들 @nav.algs.distanceManhattan
, @nav.algs.distanceEuclidean
, @nav.algs.distanceEuclideanSquared
, 사용자 지정 비용 함수 핸들 중 하나로 지정됩니다.
비용 함수는 N×S 행렬인 state1
과 state2
를 받아야 합니다. 여기서 N은 상태 개수이고 S는 상태 벡터의 길이입니다. 함수는 휴리스틱 비용(H
)으로 구성된 N개 요소의 열 벡터를 반환해야 합니다. N이 두 입력값에 대해 동일한 경우 H
는 상태 간의 쌍별 비용을 포함합니다. 그렇지 않으면 하나의 행렬이 하나의 행을 가져야 하며, H
는 해당 상태와 반대 행렬의 각 상태 사이의 비용을 포함합니다. 최상의 성능을 위해서는 사용자 지정 비용 함수를 벡터화하십시오.
예: HeuristicCostFcn=@nav.algs.distanceEuclidean
예: HeuristicCostFcn=@(state1,state2)nav.algs.distanceManhattan(state1,state2,weight)
예: HeuristicCostFcn=@(state1,state2)sqrt(sum((state1-state2).^2,2))
데이터형: function_handle
TieBreaker
— 우선 순위 결정 모드 켜기/끄기
false
또는 0
(디폴트 값) | true
또는 1
우선 순위 결정 모드 켜기/끄기로, 논리형 0
(false
) 또는 1
(true
)로 지정됩니다. TieBreaker
속성을 활성화하면 A* 경로 플래너는 발견법에 근거하여 구한 비용 값을 조정하여 동일한 길이의 여러 경로 중에서 선택합니다.
예: TieBreaker=true
데이터형: logical
객체 함수
예제
A* 경로 플래너를 사용하여 그래프에서 두 상태 간의 최단 경로 계획하기
퀸즐랜드의 도로망을 불러옵니다.
load("queenslandRoutes","places","routes")
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
navGraph
객체를 생성합니다.
graphObj = navGraph(states,links,Weight=weights, ...
Name=names);
그래프 기반 A* 경로 플래너를 생성합니다.
planner = plannerAStar(graphObj);
plannerAStar
객체의 깊은 복사본을 생성합니다.
planner2 = copy(planner)
planner2 = plannerAStar with properties: HeuristicCostFcn: @nav.algs.distanceManhattan TieBreaker: 0 Graph: [1x1 navGraph]
휴리스틱 함수를 지정하면 목표에 도달하는 추정 시간이 반환됩니다.
planner.HeuristicCostFcn = @(state1,state2) ...
sum(abs(state1-state2),2)/100;
출발 도시와 목표 도시를 정의합니다.
start = "Hughenden"; goal = "Brisbane";
그래프 기반 A* 알고리즘을 사용하여 최단 경로를 찾습니다.
[pathOutput,solutionInfo] = plan(planner,start,goal);
결과를 시각화합니다.
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)
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 사항 및 제한 사항:
코드 생성 워크플로에서 HeuristicCostFcn을 사용하려면 객체를 생성할 때 이 속성을 함수 핸들로 설정해야 합니다.
DynamicMemoryAllocation="off"
는 지원되지 않습니다.
버전 내역
R2023a에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 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)