求解最小费用流问题的蚁群算法matlab程序.doc

求解最小费用流问题的蚁群算法matlab程序.doc

ID:56803947

大小:18.50 KB

页数:4页

时间:2020-07-12

求解最小费用流问题的蚁群算法matlab程序.doc_第1页
求解最小费用流问题的蚁群算法matlab程序.doc_第2页
求解最小费用流问题的蚁群算法matlab程序.doc_第3页
求解最小费用流问题的蚁群算法matlab程序.doc_第4页
资源描述:

《求解最小费用流问题的蚁群算法matlab程序.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、以下是解放军信息工程大学一个老师编的matlab程序,请尊重原作者劳动,引用时请注明出处。我经过修改增加了注释,已经运行过,无误,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最大迭代次数%%m蚂蚁个数%%Alp

2、ha表征信息素重要程度的参数%%Beta表征启发式因子重要程度的参数%%Rho信息素蒸发系数%%Q信息素增加强度系数%%R_best各代最佳路线%%L_best各代最佳路线的长度%%========================================================================= %%第一步:变量初始化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(i,2)-C

3、(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);     %Tau为信息素矩阵Tabu=zeros(m,n);   %存储并记录路径的生成NC=1;               %迭代计数器,记录迭代次数R_best=zeros(NC_max,n);       %各代最佳路线L_best=inf.*o

4、nes(NC_max,1);   %各代最佳路线的长度L_ave=zeros(NC_max,1);        %各代路线的平均长度 whileNC<=NC_max        %停止条件之一:达到最大迭代次数,停止%%第二步:将m只蚂蚁放到n个城市上Randpos=[];   %随即存取fori=1:(ceil(m/n))Randpos=[Randpos,randperm(n)];endTabu(:,1)=(Randpos(1,1:m))';    %此句不太理解? %%第三步:m只蚂蚁按概率函数选择下一座城市,完成各自的周游forj=2:n     %所在城市

5、不计算fori=1:m    visited=Tabu(i,1:(j-1));%记录已访问的城市,避免重复访问J=zeros(1,(n-j+1));       %待访问的城市P=J;                      %待访问城市的选择概率分布Jc=1;fork=1:niflength(find(visited==k))==0   %开始时置0J(Jc)=k;Jc=Jc+1;                         %访问的城市个数自加1endend%下面计算待选城市的概率分布fork=1:length(J)P(k)=(Tau(visited(end

6、),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);endP=P/(sum(P));%按概率原则选取下一个城市Pcum=cumsum(P);     %cumsum,元素累加即求和Select=find(Pcum>=rand);%若计算的概率大于原来的就选择这条路线to_visit=J(Select(1));Tabu(i,j)=to_visit;endendifNC>=2Tabu(1,:)=R_best(NC-1,:);end %%第四步:记录本次迭代最佳路线L=zeros(m,1);     %开始距离为0,m*1的列向量for

7、i=1:mR=Tabu(i,:);forj=1:(n-1)L(i)=L(i)+D(R(j),R(j+1));    %原距离加上第j个城市到第j+1个城市的距离endL(i)=L(i)+D(R(1),R(n));      %一轮下来后走过的距离endL_best(NC)=min(L);           %最佳距离取最小pos=find(L==L_best(NC));R_best(NC,:)=Tabu(pos(1),:);%此轮迭代后的最佳路线L_ave(NC)=mean(L);           %此轮迭代后的平均距离NC=NC+1     

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

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

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