蚁群算法matlab程序代码.doc

蚁群算法matlab程序代码.doc

ID:55916669

大小:27.50 KB

页数:8页

时间:2020-06-14

蚁群算法matlab程序代码.doc_第1页
蚁群算法matlab程序代码.doc_第2页
蚁群算法matlab程序代码.doc_第3页
蚁群算法matlab程序代码.doc_第4页
蚁群算法matlab程序代码.doc_第5页
资源描述:

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

1、先新建一个主程序M文件ACATSP.m代码如下:function[R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)%%=========================================================================%% 主要符号说明%% Cn个城市的坐标,n×2的矩阵%% NC_max 蚁群算法MATLAB程序最大迭代次数%% m蚂蚁个数%% Alpha表征信息素重要程度的参数%% Beta表征启

2、发式因子重要程度的参数%% Rho信息素蒸发系数%% Q 表示蚁群算法MATLAB程序信息素增加强度系数%% R_best各代最佳路线%% L_best各代最佳路线的长度%%=========================================================================%% 蚁群算法MATLAB程序第一步:变量初始化n=size(C,1);%n表示问题的规模(城市个数)D=zeros(n,n);%D表示完全图的赋权邻接矩阵fori=1:nforj=1:nifi~=jD(i,j)=((C(i,1)-C(j,1))^2+(C

3、(i,2)-C(j,2))^2)^0.5;elseD(i,j)=eps;                                         %i=j时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示endD(j,i)=D(i,j);                                       %对称矩阵endendEta=1./D;                                           %Eta为启发因子,这里设为距离的倒数Tau=ones(n,n);                  

4、               %Tau为信息素矩阵Tabu=zeros(m,n);                              %存储并记录路径的生成NC=1;                                                %迭代计数器,记录迭代次数R_best=zeros(NC_max,n);                 %各代最佳路线L_best=inf.*ones(NC_max,1);            %各代最佳路线的长度L_ave=zeros(NC_max,1);                  %各代路

5、线的平均长度whileNC<=NC_max                           %停止条件之一:达到最大迭代次数,停止%% 蚁群算法MATLAB程序第二步:将m只蚂蚁放到n个城市上Randpos=[];                                       %随即存取fori=1:(ceil(m/n))Randpos=[Randpos,randperm(n)];endTabu(:,1)=(Randpos(1,1:m))';             %此句不太理解?%% 蚁群算法MATLAB程序第三步:m只蚂蚁按概率函数选择下一座城市

6、,完成各自的周游forj=2:n                                              %所在城市不计算fori=1:m    visited=Tabu(i,1:(j-1));                         %记录已访问的城市,避免重复访问J=zeros(1,(n-j+1));                               %待访问的城市P=J;                                                      %待访问城市的选择概率分布Jc=1;fork=1:n

7、iflength(find(visited==k))==0                 %开始时置0J(Jc)=k;Jc=Jc+1;                                                  %访问的城市个数自加1endend%%下面计算蚁群算法MATLAB程序待选城市的概率分布fork=1:length(J)P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);endP=P/(sum(P));%%按概率原则选取下一个

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

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

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