Dijkstra是常用的全局路径规划算法

Posted 杨治中

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dijkstra是常用的全局路径规划算法相关的知识,希望对你有一定的参考价值。

参考博客链接:https://www.cnblogs.com/kex1n/p/4178782.html

Dijkstra是常用的全局路径规划算法,其本质上是一个最短路径寻优算法。算法的详细介绍参考上述链接。

本文与参考博文相比,主要有如下两个不同:

1、开发语言换成了matlab,代码部分稍作改动就可以实时运行在控制器上;

2、求取了从起点开始到达每一个顶点的最短路径所经历的顶点。

matlab代码:包含测试数据

 
%参考链接https://www.cnblogs.com/kex1n/p/4178782.html
DefultMaxValue=1e3;
NodesMap=[0 1 12 DefultMaxValue DefultMaxValue DefultMaxValue;
DefultMaxValue 0 9 3 DefultMaxValue DefultMaxValue;
DefultMaxValue DefultMaxValue 0 DefultMaxValue 5 DefultMaxValue;
DefultMaxValue DefultMaxValue 4 0 13 15;
DefultMaxValue DefultMaxValue DefultMaxValue DefultMaxValue 0 4;
DefultMaxValue DefultMaxValue DefultMaxValue DefultMaxValue DefultMaxValue 0];

% NodesMap=[0 6 3 DefultMaxValue DefultMaxValue DefultMaxValue;
% 6 0 2 5 DefultMaxValue DefultMaxValue;
% 3 2 0 3 4 DefultMaxValue;
% DefultMaxValue 5 3 0 2 3;
% DefultMaxValue DefultMaxValue 4 2 0 5;
% DefultMaxValue DefultMaxValue DefultMaxValue 3 5 0];

Distance=NodesMap(1,:);

%book结果初始化
SearchedFlag=zeros(1,length(Distance));
SearchedFlag(1)=1;

FootsResults=zeros(size(NodesMap));
FootsResults(:,1)=1;

Preview=zeros(1,length(Distance));
Preview(1)=1;

for i=2:length(SearchedFlag)
i
MinID=1;
MinValue=DefultMaxValue;
Distance
SearchedFlag
for j=1:length(SearchedFlag)
if SearchedFlag(j)==0 && Distance(j)<MinValue
MinID=j;
MinValue=Distance(j);
end
end
MinID
SearchedFlag(MinID)=1;

Preview
if i>2
FootsResults(i,i-1)=Preview(MinID);
for j=1:(i-1)
Temp=FootsResults(j,:);
FindFlag=0;
for k=1:length(SearchedFlag)
if Temp(k)==0
if Temp(k-1)==Preview(MinID)
FindFlag=1;
break;
end
end
end
if FindFlag==1
break;
end
end
Temp
FootsResults(i,:)=Temp;
FootsResults(i,k)=MinID;
else
FootsResults(i,i)=MinID;
end

FootsResults

for j=1:length(SearchedFlag)
if NodesMap(MinID,j)<DefultMaxValue && SearchedFlag(j)==0
if Distance(j)>(Distance(MinID)+NodesMap(MinID,j))
Distance(j)=Distance(MinID)+NodesMap(MinID,j);
% FootsResults(i,j)=MinID;
Preview(j)=MinID;
end
end
end

end
% Preview
Distance

  

测试算例1 2所用数据都在代码中,大家可自行运行程序,查看结果。

以上是关于Dijkstra是常用的全局路径规划算法的主要内容,如果未能解决你的问题,请参考以下文章

Dijkstra是常用的全局路径规划算法

路径规划基于matlab Dijkstra算法多机器人路径规划含Matlab源码 1883期

路径规划基于matlab Dijkstra算法机器人编队路径规划含Matlab源码 1884期

利用dijkstra算法规划线路

疏散路径的常用典型算法总结

自动驾驶路径规划技术-A*启发式搜索算法