【路径规划】基于遗传算法求解栅格路径规划及避障matlab代码

本文探讨了智能机器人路径规划中的挑战,着重介绍了如何利用遗传算法解决路径最短问题。通过栅格地图建模和启发式方法,论文详细描述了算法流程,包括初始种群生成、适应度函数设置和遗传操作,如轮赌盘选择、重合点交叉和自适应变异。静态环境下的MATLAB仿真验证了算法的有效性。
摘要由CSDN通过智能技术生成

1 简介

目前,随着智能机器人技术的发展,人们对移动机器人的导航,动态避障,路径规划等方面提出了更高的要求。移动机器人运动环境的多变性和复杂性,决定了移动机器人路径规划问题是机器人领域一个研究重点。路径规划作为移动机器人研究中的一个重要研究内容,它是移动机器人按照某一性能指标(如距离、时间、能量等)寻找一条从起始状态到目标状态无碰撞的最优或次最优路径,使之尽可能的平滑和安全。遗传算法是建立在自然选择和群体遗传学基础上的随机、迭代和进化过程,是路径规划研究领域中的一种十分有效地算法。本论文在结合目前多种路径规划方法优缺点的基础上,选择遗传算法来解决移动机器人的路径规划问题。 论文在阐述移动机器人的研究状况和发展趋势的基础上,分析了目前移动机器人的路径规划方法,重点研究了基于遗传算法的移动机器人路径规划方法。主要内容有:首先,采用栅格建立地图的方法建立机器人的地图模型,并用序列号法进行编码以及用间断无障碍路径结合启发式方法产生遗传算法的初始种群;其次,选取路径最短设定适应度函数;最后,进行遗传操作,包含有:用轮赌盘方法进行选择、用重合点交叉法进行交叉、以一个较小的概率进行变异和交叉概率和变异概率的自适应调整方法等内容。论文是在静态环境下,对移动机器人进行的全局路径规划,利用MATLAB仿真对移动机器人路径规划进行模拟,从而验证了这种仿生的智能算法的有效性。

2 部分代码

% 基于遗传算法的栅格法机器人路径规划
clc;
clear all
close all;
kaishi = 0;   % 起始序号
jieshu =399;   % 终止序号
zhongqun = 100;     % 种群数量
diedaicishu = 1000; % 最大进化代数
jiaochaP = 0.5;     % 交叉概率
bainyiP = 0.5;     % 变异概率
z = 1;
zuixin_pop = {}; % 元包类型路径
% 输入数据,即栅格地图
p = randperm(20); 
G= [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0;
 
0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0;
  0 1 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0;
  0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0;
  0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0;
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;      
0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0;
        0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0;
    0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 0;
    0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0;
  0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0;
  0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0;
  0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0;
  0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0;
      0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0;
  0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0;  
  0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0;    

  0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];%G
% for i=1:length(p)
%     G(i,:)=G1(p(i),:);
% end
[y, x] = size(G);
% 起点所在列(从左到右编号1.2.3...)
kaishi_x = mod(kaishi, x) + 1;
% 起点所在行(从上到下编号行1.2.3...)
kaishi_y = fix(kaishi / x) + 1;
% 终点所在列、行
jieshu_x = mod(jieshu, x) + 1;
jieshu_y = fix(jieshu / x) + 1;
end
% 画每次迭代平均路径长度和最优路径长度图
figure(1)
plot(1:diedaicishu, mean_path_value, 'r')
hold on;
title('优化曲线图');
xlabel('迭代次数');
ylabel('路径长度');
plot(1:diedaicishu, min_path_value, 'b')
legend('平均路径长度', '最优路径长度');
min_path_value(1, end)
% 在地图上画路径
[~, min_index] = max(fit_value);
min_path = zuixin_pop{min_index, 1};
figure(2)
hold on;
title(['遗传算法机器人运动轨迹']);
xlabel('坐标x');
ylabel('坐标y');
DrawMap(G);
[~, min_path_num] = size(min_path);
for i = 1:min_path_num
  % 路径点所在列(从左到右编号1.2.3...)
  x_min_path(1, i) = mod(min_path(1, i), x) + 1;
  % 路径点所在行(从上到下编号行1.2.3...)
  y_min_path(1, i) = fix(min_path(1, i) / x) + 1;
end
hold on;
plot(x_min_path, y_min_path, 'r')

3 仿真结果

​4 参考文献

[1]崔建军. (2010). 基于遗传算法的移动机器人路径规划研究. (Doctoral dissertation, 西安科技大学).

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值