二维路径规划问题--蚁群算法 超详细

二维路径规划问题--蚁群算法 超详细

路径规划算法

路径规划算法是指在有障碍物的工作环境中寻找一条从起点到终点的、无碰撞地绕过所
有障碍物的运动路径。路径规划算法较多,大体上可分为全局路径规划算法和局部路径规划
算法两类。其中,全局路径规划方法包括位形空间法、广义锥方法、顶点图像法.栅格划归法﹔
局部路径规划算法主要有人工势场法等。

MAKLINK图论

MAKLINK图论可以建立二维路径规划的空间模型,MAKLINK图论通过生成大量的
MAKLINK线构造二维路径规划可行空间,MAKLINK线定义为两个障碍物之间不与障碍物
相交的顶点之间的连线,以及障碍物顶点与边界相交的连线。典型MAKLINE图形如图
所示。
在这里插入图片描述
在MAKLINK图上存在↓条自由连接线,连接线的中点依次为v,,…,u,连接所有
MAKLINK线的中点加上始点S和终点T构成用于初始路径规划的无向网络图。

dijkstra算法

dijkstra算法是典型的单源最短路径算法,用于计算非负权值图中一个节点到其他所有节
点的最短路径,其基本思想是把带权图中所有节点分为两组,第1组包括已确定最短路径的节
点,第⒉组为未确定最短路径的节点。按最短路径长度递增的顺序逐个把第⒉组的节点加人
第1组中,直到从源点出发可到达的所有节点都包含在第1组中。
dijkstra算法流程如下:
(1)初始化存放未确定最短路径的节点集合V和已确定最短路径的节点集合S,利用带
权图的邻接矩阵arcs初始化原点到其他节点最短路径长度D,如果源点到其他节点有连接
弧,对应的值为连接弧的权值﹐否则对应的值取为极大值。
(2)选择D中的最小值D[i,D[门是源点到点i的最短路径长度,把点i从集合V中取
出并放人集合S中。
(3)根据节点à修改更新数组D中源点到集合V中的节点k对应的路径长度值。
(4)重复步骤(2)与步骤(3)的操作﹐直至找出源点到所有节点的最短路径为止。

代码与结果

话不多说,看matlab代码:

% 计算路径距离
cost = ones(size(sign))*10000;
[n,m] = size(sign);
for i = 1:n
    for j = 1:m
        if sign(i,j) == 1
            cost(i,j) = sqrt(sum(position(i,:)-position(j,:)).^2);
        end
    end
end
% 路径开始点
dist = cost(1,:);               % 节点间路径长度
s = zeros(size(dist));          % 节点经过的标志
s(1) = 1;                       
dist(1) = 0;
path = zeros(size(dist));       % 依次经过的节点
path(1,:) = 1;
% 循环寻找路径点
for num = 2:n
    % 选择路径长度最小点
    mindist = 10000;
    for i = 1:length(dist)
        if s(i) == 0
            if dist(i) < mindist
                mindist = dist(i);
                u = i
  • 12
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原创小白变怪兽

帮助原创小白成为怪兽吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值