蚁群算法MATLAB代码

上传人:人*** 文档编号:479681799 上传时间:2022-11-29 格式:DOC 页数:2 大小:36KB
返回 下载 相关 举报
蚁群算法MATLAB代码_第1页
第1页 / 共2页
蚁群算法MATLAB代码_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《蚁群算法MATLAB代码》由会员分享,可在线阅读,更多相关《蚁群算法MATLAB代码(2页珍藏版)》请在金锄头文库上搜索。

1、function y,val=QACSticload att48 att48;MAXIT=300;% 最大循环次数NC=48;% 城市个数tao=ones(48,48);% 初始时刻各边上的信息最为 1 rho=0.2; % 挥发系数alpha=1;beta=2;Q=100;mant=20; % 蚂蚁数量iter=0;% 记录迭代次数for i=1:NC% 计算各城市间的距离for j=1:NCdista nce(i,j)=sqrt(att48(i,2)-att48(j,2)A2+(att48(i,3)-att48(j,3)A2); endend bestroute=zeros(1,48);

2、% 用来记录最优路径routelength=inf;% 用来记录当前找到的最优路径长度% for i=1:mant% 确定各蚂蚁初始的位置% endfor ite=1:MAXITfor ka=1:mant%考查第 K 只蚂蚁deltatao=zeros(48,48); % 第 K 只蚂蚁移动前各边上的信息增量为零routek,lengthk=travel(distance,tao,alpha,beta);if lengthkroutelength % 找到一条更好的路径routelength=lengthk;bestroute=routek;endfor i=1:NC-1% 第 K 只蚂蚁在路

3、径上释放的信息量deltatao(routek(i),routek(i+1)=deltatao(routek(i),routek(i+1)+Q/lengthk;end deltatao(routek(48),1)=deltatao(routek(48),1)+Q/lengthk;endfor i=1:NC-1for j=i+1:NCif deltatao(i,j)=0 deltatao(i,j)=deltatao(j,i);endendendtao=(1-rho).*tao+deltatao; end y=bestroute; val=routelength;toc function y,va

4、l=travel(distance,tao,alpha,beta) % 某只蚂蚁找到的某条路径 m,n=size(distance);p=fix(m*rand)+1;val=0; % 初始路径长度设为 0 tabuk=p; % 假设该蚂蚁都是从第 p 个城市出发的 for i=1:m-1np=tabuk(length(tabuk); % 蚂蚁当前所在的城市号 p_sum=0;for j=1:mif isin(j,tabuk) continue;elseada=1/distance(np,j);p_sum=p_sum+tao (n p,j)Aalpha*adaAbeta;endendcp=zer

5、os(1,m); % 转移概率for j=1:mif isin(j,tabuk) continue;elseada=1/distance(np,j); cp(j)=tao(np,j)Aalpha*adaAbeta/p_sum;endendNextCity=pchoice(cp); tabuk=tabuk,NextCity; val=val+distance(np,NextCity);endy=tabuk;function y=isin(x,A) % 判断数 x 是否在向量 A 中,如在返回 1 ,否则返回 0 y=0;for i=1:length(A)if A(i)=xy=1;break;end end function y=pchoice(A)a=rand; tempA=zeros(1,length(A)+1);for i=1:length(A)tempA(i+1)=tempA(i)+A(i);endfor i=2:length(tempA)if a=tempA(i)y=i-1; break;endend

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号