77范文网 - 专业文章范例文档资料分享平台

Floyd最短路径算法(4)

来源:网络收集 时间:2019-01-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

0 0 0 0 0 0 0 0 0 0 76.912 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76.923 76.926 0 0 0 0 0 0 0 0 76.921 0 0 0 0 0 0 ];

%%第一步:变量初始化

n=size(C,1);%n表示问题的规模(城市个数) gplot(D , C);%画无向图 hold on XX=C';

plot(XX(1 , , XX(2 , , 'k+', 'markersize' , 5) %画十字架 for i=1:n

text(C(i,1)+5,C(i,2),int2str(i)); %加标号 end

for i=1:n for j=1:n

if D(i,j)==0 D(i,j)=inf; end end end

Eta=1./D;%Eta为启发因子,这里设为距离的倒数 Tau=ones(n,n);%Tau为信息素矩阵

Tabu=zeros(m,n);%存储并记录路径的生成 NC=1;%迭代计数器

R_best=zeros(NC_max,n);%各代最佳路线

L_best=inf.*ones(NC_max,1);%各代最佳路线的长度 lastmin=inf; %上代最小路径

thesameNum=0; %终止算法条件之一

while NC<=NC_max%停止条件之一:达到最大迭代次数 %%第二步:将m只蚂蚁放到n个城市上

Randpos=ones(1,m)*s;

Tabu(:,1)=(Randpos(1,1:m))';

%%第三步:m只蚂蚁按概率函数选择相通的下一座城市,直到到达目的地 for i=1:m

%按概率原则选取下一个城市

%只有当达到最后的节点等于终点时候才结束 j=2;

to_visit=s;

while to_visit~=e

visited=Tabu(i,1j-1));%已访问的城市

% 得到矩阵中最后一个不为0的数 ,即蚂蚁爬到的最后节点 col=size(visited,2);

lastvisited=visited(end);

J=[];%待访问的城市,随机分布

=J;%待访问城市的选择概率分布 Jc=1;

JJ=randperm(n);%随机分布 for k=1:n

flag=bHaveNum(visited,JJ(k)); if flag~=1

if D(lastvisited,JJ(k))~=inf J(Jc)=JJ(k); Jc=Jc+1; end end end

if length(J) ==0 break; end

%下面计算待选城市的概率分布 for k=1:length(J)

P(k)=(Tau(lastvisited,J(k))^Alpha)*(Eta(lastvisited,J(k))^Beta); end

=P/(sum(P)); cum=cumsum(P);

Select=find(Pcum>=rand); kk=randperm(length(Select)); to_visit=J(Select(kk(1))); Tabu(i,j)=to_visit; j=j+1;

end end

%%第四步:记录本次迭代最佳路线 L=zeros(m,1); for i=1:m

R=Tabu(i,; F=thelastNum(R); if R(F)==e

for j=1n-1) if R(j+1)~=0

L(i)=L(i)+D(R(j),R(j+1)); end

end else

L(i)=inf; end end

if lastmin~=min(L) thesameNum=0; else

thesameNum=thesameNum+1; end

if (thesameNum >0.2*NC_max) break; end

L_best(NC)=min(L);

pos=find(L==L_best(NC));

R_best(NC,=Tabu(pos(1),; NC=NC+1;

%%第五步:更新信息素 Delta_Tau=zeros(n,n); for i=1:m

for j=1n-1)

if Tabu(i,j+1)~=0

Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i); end end end

Tau=(1-Rho).*Tau+Delta_Tau;

%%第六步:禁忌表清零 Tabu=zeros(m,n); end

%%第七步:输出结果

Pos=find(L_best==min(L_best)); Shortest_Route=R_best(Pos(1),:); Shortest_Length=L_best(Pos(1));

F=thelastNum(Shortest_Route);

Shortest_Route=Shortest_Route(1:F);

plot(XX(1 , Shortest_Route') , XX(2 , Shortest_Route') , 'g' , 'linewidth' , 1) %画结果路径

hold off

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Floyd最短路径算法(4)在线全文阅读。

Floyd最短路径算法(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/411746.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: