风也温柔

计算机科学知识库

蚁群算法最短路径java 蚁群算法最短路径通用Matlab程序.doc

  蚁群算法最短路径通用程序(附图)下面的程序是蚁群算法在最短路中的应用蚁群算法最短路径java 蚁群算法最短路径通用Matlab程序.doc,稍加扩展即可应用于机器人路径规划[,PL,Tau]=ACASP(G,Tau,K,M,S,E,Alpha,Beta,Rho,Q)地形图为01矩阵,如果为1表示障碍物Tau初始信息素矩阵(认为前面的觅食活动中有残留的信息素)Alpha表征信息素重要程度的参数Beta表征启发式因子重要程度的参数Rho信息素蒸发系数每一代的每一只蚂蚁的爬行路线PL每一代的每一只蚂蚁的爬行路线长度Tau输出动态修正过的信息素--------------------变量初始化----------------------------------%loadD=G2D(G);N=size(D,1);%N表示问题的规模(象素个数)MM=size(G,1);a=1;%小方格象素的边长Ex=a(mod(E,MM)-0。5);%终止点横坐标Ex==-0。5Ex=MM-0。5;endEy=a(MM+0。5-ceil(E/MM));%终止点纵坐标Eta=zeros(1,N);%启发式信息,取为至目标点的直线距离的倒数%下面构造启发式信息矩阵ix==-0。

  5ix=MM-0。5;endiy=a(MM+0。5-ceil(i/MM));Eta(1,i)=1/((ix-Ex)^2+(iy-Ey)^2)^0。5;(1,i)=100;=cell(K,M);%用细胞结构存储每一代的每一只蚂蚁的爬行路线PL=zeros(K,M);%用矩阵存储每一代的每一只蚂蚁的爬行路线长度-----------启动K轮蚂蚁觅食活动,每轮派出M只蚂蚁--------------------第一步:状态初始化W=S;%当前节点初始化为起始点Path=S;%爬行路线初始化PLkm=0;%爬行路线长度初始化=ones(1,N);%禁忌表初始化(S)=0;%已经在初始点了,因此要排除DD=D;%邻接矩阵初始化第二步:下一步可以前往的节点DW=DD(W,:);DW1=find((DW1(j))==0DW(j)=inf;=find(=(LJD);%可选节点的个数觅食停止条件:蚂蚁未遇到食物或者陷入死胡同~=E&&>=1第三步:转轮赌法选择下一步怎么走PP=zeros(1,);i=1:(i)=(Tau(W,LJD(i))^Alpha)(Eta(LJD(i))^Beta);endPP=PP/(sum(PP));%建立概率分布Pcum=(PP);=find(Pcum>=rand);第四步:状态更新和记录Path=[Path,];%路径增加PLkm=PLkm+DD(W,);%路径长度增加W=;%蚂蚁移到下一个节点(kk)==0DD(W,kk)=inf;DD(kk,W)=inf;(W)=0;%已访问过的节点从禁忌表中删除(DW1(j))==0DW(j)=inf;=find(=(LJD);%可选节点的个数end第五步:记下每一代每一只蚂蚁的觅食路线和路线长度{k,m}=Path;Path(end)==EPL(k,m)=PLkm;(k,m)=inf;第六步:更新信息素=zeros(N,N);%更新量初始化PL(k,m)ROUT={k,m};TS=(ROUT)-1;%跳数PL_km=PL(k,m);s=1:TSx=ROUT(s);(x,y)=(x,y)+Q/PL_km;(y,x)=(y,x)+Q/PL_km;=(1-Rho)。

  Tau+;%信息素挥发一部分蚁群算法最短路径java蚁群算法最短路径java,新增加一部分end---------------------------绘图--------------------------------=1;%是否绘图的控制参数==1%绘收敛曲线=zeros(1,K);minPL=zeros(1,K);PLK=PL(i,:);=find(=PLK();(i)=mean();minPL(i)=min();(1)plot(minPL);();(´收敛曲线(平均路径长度和最小路径长度)´);(´迭代次数´);(´路径长度´);%绘爬行图(2)axis([0,MM,0,MM])x1=j-1;y1=MM-i;x2=j;y2=MM-i;x3=j;y3=MM-i+1;x4=j-1;y4=MM-i+1;fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0。2,0。2,0。2]);=j-1;y1=MM-i;x2=j;y2=MM-i;x3=j;y3=MM-i+1;x4=j-1;y4=MM-i+1;fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1]);T={K,M};=(ROUT);Rx=ROUT;Ry=ROUT;ii=1:(ii)=a(mod(ROUT(ii),MM)-0。

  蚁群算法c语言_蚁群算法最短路径java_蚁群算法

  5);Rx(ii)==-0。5Rx(ii)=MM-0。5;endRy(ii)=a(MM+0。5-ceil(ROUT(ii)/MM));(Rx,Ry)=1;%绘各代蚂蚁爬行图==(3)axis([0,MM,0,MM])x1=j-1;y1=MM-i;x2=j;y2=MM-i;x3=j;y3=MM-i+1;x4=j-1;y4=MM-i+1;fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0。2,0。2,0。2]);=j-1;y1=MM-i;x2=j;y2=MM-i;x3=j;y3=MM-i+1;x4=j-1;y4=MM-i+1;fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1]);=PL(k,:);=min(PLK);pos=find(PLK==); m=pos(1); ROUT={k,m}; =(ROUT); Rx=ROUT; Ry=ROUT; ii=1:(ii)=a(mod(ROUT(ii),MM)-0。5); Rx(ii)==-0。5Rx(ii)=MM-0。5; end Ry(ii)=a*(MM+0。5-ceil(ROUT(ii)/MM)); end plot(Rx,Ry) hold 将上述算法应用于机器人路径规划,优化效果如下图所示

  文章来源:https://www.docin.com/touch_new/preview_new.do?id=102233051