蚁群算法matlab程序实例整理.doc

蚁群算法matlab程序实例整理.doc

ID:53080292

大小:24.00 KB

页数:3页

时间:2020-04-01

蚁群算法matlab程序实例整理.doc_第1页
蚁群算法matlab程序实例整理.doc_第2页
蚁群算法matlab程序实例整理.doc_第3页
资源描述:

《蚁群算法matlab程序实例整理.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、)^2);   endendbestroute=zeros(1,48);%用来记录最优路径routelength=inf;%用来记录当前找到的最优路径长度%fori=1:mant%确定各蚂蚁初始的位置%endforite=1:MAXIT   forka=1:mant%考查第K只蚂蚁      deltatao=zeros(48,48);%第K只蚂蚁移动前各边上的信息增量为零      [routek,lengthk]=travel(distance,tao,alpha,beta);      iflengthk

3、utelength%找到一条更好的路径         routelength=lengthk;         bestroute=routek;      end      fori=1:NC-1%第K只蚂蚁在路径上释放的信息量         deltatao(routek(i),routek(i+1))=deltatao(routek(i),routek(i+1))+Q/lengthk;      end      deltatao(routek(48),1)=deltatao(routek(48),1)+Q

4、/lengthk;   end   fori=1:NC-1      forj=i+1:NC         ifdeltatao(i,j)==0            deltatao(i,j)=deltatao(j,i); y=bestroute;        end val=routelength;     end toc  end   tao=(1-rho).*tao+deltatao;endy=bestroute;val=routelength;tocfunction[y,val]=travel(dist

5、ance,tao,alpha,beta)%某只蚂蚁找到的某条路径[m,n]=size(distance);p=fix(m*rand)+1;%fix取整函数val=0;%初始路径长度设为0tabuk=[p];%假设该蚂蚁都是从第p个城市出发的fori=1:m-1   np=tabuk(length(tabuk));%蚂蚁当前所在的城市号   p_sum=0;   forj=1:m      ifisin(j,tabuk)         continue;      else         ada=1/distanc

6、e(np,j);         p_sum=p_sum+tao(np,j)^alpha*ada^beta;      end   end   cp=zeros(1,m);%转移概率   forj=1:m      ifisin(j,tabuk)         continue;      else         ada=1/distance(np,j);         cp(j)=tao(np,j)^alpha*ada^beta/p_sum;      end   end   NextCity=pchoice

7、(cp);   tabuk=[tabuk,NextCity];   val=val+distance(np,NextCity);endy=tabuk;functiony=isin(x,A)%判断数x是否在向量A中,如在返回1,否则返回0y=0;fori=1:length(A)    ifA(i)==x      y=1;      break;   endendfunctiony=pchoice(A)a=rand;tempA=zeros(1,length(A)+1);fori=1:length(A)   tempA(

8、i+1)=tempA(i)+A(i);endfori=2:length(tempA)   ifa<=tempA(i)      y=i-1;      break;   endend

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

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

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