蚁群算法最短路径matlab程序

蚁群算法最短路径matlab程序

ID:41036924

大小:74.50 KB

页数:6页

时间:2019-08-14

蚁群算法最短路径matlab程序_第1页
蚁群算法最短路径matlab程序_第2页
蚁群算法最短路径matlab程序_第3页
蚁群算法最短路径matlab程序_第4页
蚁群算法最短路径matlab程序_第5页
资源描述:

《蚁群算法最短路径matlab程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、蚁群算法最短路径通用Matlab程序下面的程序是蚁群算法在最短路中的应用,稍加扩展即可应用于机器人路径规划function[ROUTES,PL,Tau]=ACASP(G,Tau,K,M,S,E,Alpha,Beta,Rho,Q)%%---------------------------------------------------------------% ACASP.m% 蚁群算法动态寻路算法% ChengAihua,PLAInformationEngineeringUniversity,ZhengZhou,China% Email:aihuacheng@gmail.com% Al

2、lrightsreserved%%---------------------------------------------------------------% 输入参数列表% G       地形图为01矩阵,如果为1表示障碍物% Tau     初始信息素矩阵(认为前面的觅食活动中有残留的信息素)% K       迭代次数(指蚂蚁出动多少波)% M       蚂蚁个数(每一波蚂蚁有多少个)% S       起始点(最短路径的起始点)% E       终止点(最短路径的目的点)% Alpha   表征信息素重要程度的参数% Beta    表征启发式因子重要程度的参数% R

3、ho     信息素蒸发系数% Q       信息素增加强度系数%% 输出参数列表% ROUTES  每一代的每一只蚂蚁的爬行路线% PL      每一代的每一只蚂蚁的爬行路线长度% Tau     输出动态修正过的信息素%%--------------------变量初始化----------------------------------%loadD=G2D(G);N=size(D,1);%N表示问题的规模(象素个数)MM=size(G,1);a=1;%小方格象素的边长Ex=a*(mod(E,MM)-0.5);%终止点横坐标ifEx==-0.5   Ex=MM-0.5;endE

4、y=a*(MM+0.5-ceil(E/MM));%终止点纵坐标Eta=zeros(1,N);%启发式信息,取为至目标点的直线距离的倒数%下面构造启发式信息矩阵fori=1:N    ifix==-0.5       ix=MM-0.5;   end   iy=a*(MM+0.5-ceil(i/MM));      ifi~=E       Eta(1,i)=1/((ix-Ex)^2+(iy-Ey)^2)^0.5;   else       Eta(1,i)=100;   endendROUTES=cell(K,M);%用细胞结构存储每一代的每一只蚂蚁的爬行路线PL=zeros(K,M)

5、;%用矩阵存储每一代的每一只蚂蚁的爬行路线长度%%-----------启动K轮蚂蚁觅食活动,每轮派出M只蚂蚁--------------------fork=1:K   disp(k);   form=1:M%%    第一步:状态初始化       W=S;%当前节点初始化为起始点       Path=S;%爬行路线初始化       PLkm=0;%爬行路线长度初始化       TABUkm=ones(1,N);%禁忌表初始化       TABUkm(S)=0;%已经在初始点了,因此要排除       DD=D;%邻接矩阵初始化%%    第二步:下一步可以前往的节点   

6、    DW=DD(W,:);       DW1=find(DW       forj=1:length(DW1)           ifTABUkm(DW1(j))==0               DW(j)=inf;           end       end       LJD=find(DW       Len_LJD=length(LJD);%可选节点的个数%%    觅食停止条件:蚂蚁未遇到食物或者陷入死胡同       whileW~=E&&Len_LJD>=1%%        第三步:转轮赌法选择下一步怎么走           PP=zeros(1,Len

7、_LJD);           fori=1:Len_LJD               PP(i)=(Tau(W,LJD(i))^Alpha)*(Eta(LJD(i))^Beta);           end           PP=PP/(sum(PP));%建立概率分布           Pcum=cumsum(PP);           Select=find(Pcum>=rand);%%        第四步:状态更新和记录

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。