预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于遗传算法的机器人路径规划MATLAB源码算法的思路如下:取各障碍物顶点连线的中点为路径点相互连接各路径点将机器人移动的起点和终点限制在各路径点上利用Dijkstra算法来求网络图的最短路径找到从起点P1到终点Pn的最短路径由于上述算法使用了连接线中点的条件不是整个规划空间的最优路径然后利用遗传算法对找到的最短路径各个路径点Pi(i=12…n)调整让各路径点在相应障碍物端点连线上滑动利用Pi=Pi1+ti×(Pi2-Pi1)(ti∈[01]i=12…n)即可确定相应的Pi即为新的路径点连接此路径点为最优路径。function[L1XY1L2XY2]=JQRLJGH(XXYY)%%基于Dijkstra和遗传算法的机器人路径规划演示程序%GreenSim团队原创作品转载请注明%GreenSim团队长期从事算法设计、代写程序等业务%欢迎访问GreenSim——算法仿真团队→http://blog.sina.com.cn/greensim%输入参数在函数体内部定义%输出参数为%L1由Dijkstra算法得出的最短路径长度%XY1由Dijkstra算法得出的最短路径经过节点的坐标%L2由遗传算法得出的最短路径长度%XY2由遗传算法得出的最短路径经过节点的坐标%程序输出的图片有%Fig1环境地图(包括:边界、障碍物、障碍物顶点之间的连线、Dijkstra的网络图结构)%Fig2由Dijkstra算法得到的最短路径%Fig3由遗传算法得到的最短路径%Fig4遗传算法的收敛曲线(迄今为止找到的最优解、种群平均适应值)%%画Fig1figure(1);PlotGraph;title('地形图及网络拓扑结构')PD=inf*ones(2626);fori=1:26forj=1:26ifD(ij)==1x1=XY(i5);y1=XY(i6);x2=XY(j5);y2=XY(j6);dist=((x1-x2)^2+(y1-y2)^2)^0.5;PD(ij)=dist;endendend%%调用最短路算法求最短路s=1;%出发点t=26;%目标点[LR]=ZuiDuanLu(PDst);L1=L(end);XY1=XY(R5:6);%%绘制由最短路算法得到的最短路径figure(2);PlotGraph;holdonfori=1:(length(R)-1)x1=XY1(i1);y1=XY1(i2);x2=XY1(i+11);y2=XY1(i+12);plot([x1x2][y1y2]'k');holdonendtitle('由Dijkstra算法得到的初始路径')%%使用遗传算法进一步寻找最短路%第一步:变量初始化M=50;%进化代数设置N=20;%种群规模设置Pm=0.3;%变异概率设置LC1=zeros(1M);LC2=zeros(1M);Yp=L1;%第二步:随机产生初始种群X1=XY(R1);Y1=XY(R2);X2=XY(R3);Y2=XY(R4);fori=1:Nfarm{i}=rand(1aaa);end%以下是进化迭代过程counter=0;%设置迭代计数器whilecounter<M%停止条件为达到最大迭代次数%%第三步:交叉%交叉采用双亲双子单点交叉newfarm=cell(12*N);%用于存储子代的细胞结构Ser=randperm(N);%两两随机配对的配对表A=farm{Ser(1)};%取出父代AB=farm{Ser(2)};%取出父代BP0=unidrnd(aaa-1);%随机选择交叉点a=[A(:1:P0)B(:(P0+1):end)];%产生子代ab=[B(:1:P0)A(:(P0+1):end)];%产生子代bnewfarm{2*N-1}=a;%加入子代种群newfarm{2*N}=b;fori=1:(N-1)A=farm{Ser(i)};B=farm{Ser(i+1)};newfarm{2*i}=b;endFARM=[farmnewfarm];%新旧种群合并%%第四步:选择复制SER=randperm(2*N);FITNESS=zeros(12*