蚁群算法路径优化算法.docx

上传人:啊飒飒 文档编号:11553277 上传时间:2021-08-23 格式:DOCX 页数:3 大小:131.60KB
返回 下载 相关 举报
蚁群算法路径优化算法.docx_第1页
第1页 / 共3页
蚁群算法路径优化算法.docx_第2页
第2页 / 共3页
蚁群算法路径优化算法.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《蚁群算法路径优化算法.docx》由会员分享,可在线阅读,更多相关《蚁群算法路径优化算法.docx(3页珍藏版)》请在三一文库上搜索。

1、其中, 表示在t时刻蚂蚁k由元素(城市)i转移到元素(城市)j的状态转移概率。 allowedk = C tabuk表示蚂蚁k下一步允许选择的城市。为启发式因子,表示轨迹的相对重要性,反映了蚂蚁在运动过程中所积累的信息在蚂蚁运动时所起的作用,其值越大,则该蚂蚁越倾向于选择其他蚂蚁 经过的路径,蚂蚁之间的协作性越强。为期望启发式因子,表示能见度的相对重要性,反映了蚂蚁在运动过程中启发信息在蚂蚁选择路径中的受重 视程度,其值越大,则该状态转移概率越接近于贪心规则;ij(t) 为启发函数,表达式为 。式中,dij 表示相邻两个城市之间的距离。 (6)修改禁忌表指针,即选择好之后将蚂蚁移动到新的元素(

2、城市),并把该元素(城市)移动到该蚂蚁个体的禁忌表中。 (7) 若集合C中元素(城市)未遍历完,即km,则跳转到第(4)步,否则执行第(8)步。 (8) 根据公式更新每条路径上的信息量: ij(t + n) = (1 ) * ij(t) + ij(t), (9) 若满足结束条件,即如果循环次数 ,则循环结束并输出程序计算结果,否则清空禁忌表并跳转到第(2)步。蚁群算法的matlab源程序1. 蚁群算法主程序:main.m%function bestroute,routelength=Ant Clcclear tic % 读入城市间距离矩阵数据文件 CooCity = load( CooCity

3、.txt ) ;% 城市网络图坐标数据文件,txt形式给出 NC=length(CooCity); % 城市个数 for i=1:NC % 计算各城市间的距离 for j=1:NC distance(i,j)=sqrt(CooCity(i,2)-CooCity(j,2)2+(CooCity(i,3)-CooCity(j,3)2); end end MAXIT=10;%最大循环次数 Citystart=; % 起点城市编号 tau=ones(NC,NC); % 初始时刻各边上的信息痕迹为1 rho=0.5; % 挥发系数 alpha=1; % 残留信息相对重要度 beta=5; % 预见值的相对

4、重要度 Q=10; % 蚁环常数 NumAnt=20; % 蚂蚁数量 routelength=inf; % 用来记录当前找到的最优路径长度 for n=1:MAXIT for k=1:NumAnt %考查第K只蚂蚁 deltatau=zeros(NC,NC); % 第K只蚂蚁移动前各边上的信息增量为零 %routek,lengthk=path(distance,tau,alpha,beta,); % 不靠率起始点 routek,lengthk=path(distance,tau,alpha,beta,Citystart); % 指定起始点 if lengthkroutelength %找到一条

5、更好的路径 :routelength=lengthk; :bestroute=routek;end for i=1:NC-1 % 第K只蚂蚁在路径上释放的信息量deltatau(routek(i),routek(i+1)=deltatau(routek(i),routek(i+1)+Q/lengthk;%信息素更新end%deltatau(routek(NC),1)=deltatau(routek(NC),1)+Q/lengthk;%endlength_n(n)=routelength;%记录路径收敛tau=(1-rho).*tau;%信息素挥发end%costtime=toc;subplot

6、(1,2,1),plot(CooCity(bestroute,2),CooCity(bestroute,3),-*)subplot(1,2,2),plot(1:MAXIT,length_n,-*)routelength,costtime2. 蚁群算法寻找路径程序:path.m%某只蚂蚁找到的某条路径routek,lengthkfunctionroutek,lengthk=path(distance,tau,alpha,beta,Citystart)m,n=size(distance);ifisempty(Citystart)%如果不确定起点p=fix(m*rand)+1;%随机方式初始化起点,

7、均匀概率elsep=Citystart;%外部给定确定起点endlengthk=0;%初始路径长度设为0routek=p;%蚂蚁路径点序列,即该蚂蚁已经过的城市集合,路径初始起点fori=1:m-1np=routek(end);%蚂蚁路径城市序号,依次经过的城市编号np_sum=0;%路由长度初始为0forj=1:m ifinroute(j,routek)%判断城市节点j是否属于tabuk,即是否已经过 continue; else%j为还未经过的点 ada=1/distance(np,j);%预见度 np_sum=np_sum+tau(np,j)alpha*adabeta;%路由表:信息痕迹

8、、预见度endendcp=zeros(1,m);%转移概率,基于路径长度及路由表for j=1:m if inroute(j,routek) continue; else ada=1/distance(np,j); % 预见度 cp(j)=tau(np,j)alpha*adabeta/np_sum; % np到j的转移概率 end end NextCity=nextcitychoose2(cp); % 根据转移概率确定下一个城市, % 直观地,取转移概率最大值方向方法,决策结果稳定且收敛快 routek=routek,NextCity; % 更新路径 lengthk=lengthk+distance(np,NextCity); % 更新路径长度 end蚁群算法仿真结果: 其中左边是蚂蚁行走的最短路径,右边是最短路径的值的收敛情况。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1