【路径规划】基于蚁群算法求解机器人栅格地图路径规划matlab代码 1 简介通过栅格法建立栅格地图作为机器人路径规划的工作环境,采用蚁群算法作为机器人路径搜索的规则.将所有机器人放置于初始位置.经过NC次无碰撞迭代运动找到最优路径.到达目标位置.为防止机器人在路径搜索过程中没有达到最大迭代次数时路径大小已不发生变化而陷入局部最优.可通过对各路径上的信息素进行增减来使机器人路径搜索跳出当前值继续搜索.直到迭代完毕,获得最优路径.2 部分代码%function main() G[0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 1 1 0 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 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 1 1 1 0 0 0 0 0 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 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 1 1 1 0 0 1 1 1 0 1 1 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 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0; 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0; 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0; 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0; 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0; 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0; 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0; 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0;]; MMsize(G,1); % G 地形图为01矩阵1表示障碍物 Tauones(MM*MM,MM*MM); % Tau 初始信息素矩阵 Tau8.*Tau; K200; % K 迭代次数指蚂蚁出动多少波 M80; % 蚂蚁个数 S1 ; % 最短路径的起始点 EMM*MM; % 最短路径的目的点 Alpha1; % Alpha 表征信息素重要程度的参数 Beta8; % Beta 表征启发式因子重要程度的参数 Rho0.4 ; % Rho 信息素蒸发系数 Q1; % Q 信息素增加强度系数 minklinf; mink0; minl0; DG2D(G); Nsize(D,1); %N表示问题的规模象素个数 a1; %小方格象素的边长 Exa*(mod(E,MM)-0.5); %终止点横坐标 if Ex-0.5 ExMM-0.5; end Eya*(MM0.5-ceil(E/MM));%终止点纵坐标 Etazeros(N); %启发式信息取为至目标点的直线距离的倒数 %以下启发式信息矩阵 for i1:N ixa*(mod(i,MM)-0.5); if ix-0.5 ixMM-0.5; end iya*(MM0.5-ceil(i/MM)); if i~E Eta(i)1/((ix-Ex)^2(iy-Ey)^2)^0.5; else Eta(i)100; end end figure(1) plot(minPL); hold on grid on title(收敛曲线变化趋势); xlabel(迭代次数); ylabel(最小路径长度); %绘爬行图 figure(2) axis([0,MM,0,MM]) for i1:MM for j1:MM if G(i,j)1 x1j-1;y1MM-i; x2j;y2MM-i; x3j;y3MM-i1; x4j-1;y4MM-i1; fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2]); hold on else x1j-1;y1MM-i; x2j;y2MM-i; x3j;y3MM-i1; x4j-1;y4MM-i1; fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1]); hold on end end end hold on title(机器人运动轨迹); xlabel(坐标x); ylabel(坐标y); ROUTROUTES{mink,minl}; LENROUTlength(ROUT); RxROUT; RyROUT; for ii1:LENROUT Rx(ii)a*(mod(ROUT(ii),MM)-0.5); if Rx(ii)-0.5 Rx(ii)MM-0.5; end Ry(ii)a*(MM0.5-ceil(ROUT(ii)/MM)); end plot(Rx,Ry) end plotif21;%绘各代蚂蚁爬行图 if plotif21 figure(3) axis([0,MM,0,MM]) for i1:MM for j1:MM if G(i,j)1 x1j-1;y1MM-i; x2j;y2MM-i; x3j;y3MM-i1; x4j-1;y4MM-i1; fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2]); hold on else x1j-1;y1MM-i; x2j;y2MM-i; x3j;y3MM-i1; x4j-1;y4MM-i1; fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1]); hold on end end end for k1:K PLKPL(k,:); minPLKmin(PLK); posfind(PLKminPLK); mpos(1); ROUTROUTES{k,m}; LENROUTlength(ROUT); RxROUT; RyROUT; for ii1:LENROUT Rx(ii)a*(mod(ROUT(ii),MM)-0.5); if Rx(ii)-0.5 Rx(ii)MM-0.5; end Ry(ii)a*(MM0.5-ceil(ROUT(ii)/MM)); end plot(Rx,Ry) hold on end end3 仿真结果4 参考文献[1]周东健, 张兴国, 马海波,等. 基于栅格地图-蚁群算法的机器人最优路径规划[J]. 南通大学学报:自然科学版, 2013, 12(4):91-94.部分理论引用网络文献若有侵权联系博主删除。