文档视界 最新最全的文档下载
当前位置:文档视界 › 蚁群算法 matlab程序(已运行) - lyp2003ok的专栏 - CSDN博客

蚁群算法 matlab程序(已运行) - lyp2003ok的专栏 - CSDN博客


lyp2003ok的专栏

登录注册





搜索


空间博客好友相册留言

?蚁群算法 matlab程序(已运行)收藏

以下是解放军信息工程大学一个老师编的matlab程序,请尊重原作者劳动,引用时请注明出处。


我经过修改增加了注释,已经运行过,无误,


function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)


%%-------------------------------------------------------------------------


%%主要符号说明


%% C n个城市的坐标,n×2的矩阵


%% NC_max最大迭代次数


%% m蚂蚁个数


%% Alpha表征信息素重要程度的参数


%% Beta表征启发式因子重要程度的参数


%% Rho信息素蒸发系数


%% Q信息素增加强度系数


%% R_best各代最佳路线


%% L_best各代最佳路线的长度


%%=========================================================================




%%第一步:变量初始化


n=size(C,1);%n表示问题的规模(城市个数)


D=zeros(n,n);%D表示完全图的赋权邻接矩阵


for i=1:n


for j=1:n


if i~=j


D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;


else


D(i,j)=eps; %i=j时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示


end


D(j,i)=D(i,j); %对称矩阵


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); %各代最佳路线的长度


L_ave=zeros(NC_max,1); %各代路线的平均长度




while NC<=NC_max %停止条件之一:达到最大迭代次数,停止


%%第二步:将m只蚂蚁放到n个城市上


Randpos=[]; %随即存取


for i=1:(ceil(m/n))


Randpos=[Randpos,randperm(n)];


end


Tabu(:,1)=(Randpos(1,1:m))'; %此句不太理解?




%%第三步:m只蚂蚁按概率函数选择下一座城市,完成各自的周游


for j=2:n %所在城市不计算


for i=1:m


visited=Tabu(i,1:(j-1));%记录已访问的城市,避免重复访问


J=zeros(1,(n-j+1)); %待访问的城市


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


Jc=1;


for k=1:n


if length(find(visited==k))==0 %开始时置0


J(Jc)=k;


Jc=Jc+1; %访问的城市个数自加1


end


end


%下面计算待选城市的概率分布


for k=1:length(J)


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


end


P=P/(sum(P));


%按概率原则选取下一

个城市


Pcum=cumsum(P); %cumsum,元素累加即求和


Select=find(Pcum>=rand);%若计算的概率大于原来的就选择这条路线


to_visit=J(Select(1));


Tabu(i,j)=to_visit;


end


end


if NC>=2


Tabu(1,:)=R_best(NC-1,:);


end




%%第四步:记录本次迭代最佳路线


L=zeros(m,1); %开始距离为0,m*1的列向量


for i=1:m


R=Tabu(i,:);


for j=1:(n-1)


L(i)=L(i)+D(R(j),R(j+1)); %原距离加上第j个城市到第j+1个城市的距离


end


L(i)=L(i)+D(R(1),R(n)); %一轮下来后走过的距离


end


L_best(NC)=min(L); %最佳距离取最小


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


R_best(NC,:)=Tabu(pos(1),:); %此轮迭代后的最佳路线


L_ave(NC)=mean(L); %此轮迭代后的平均距离


NC=NC+1 %迭代继续






%%第五步:更新信息素


Delta_Tau=zeros(n,n); %开始时信息素为n*n的0矩阵


for i=1:m


for j=1:(n-1)


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


%此次循环在路径(i,j)上的信息素增量


end


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


%此次循环在整个路径上的信息素增量


end


Tau=(1-Rho).*Tau+Delta_Tau;%考虑信息素挥发,更新后的信息素


%%第六步:禁忌表清零


Tabu=zeros(m,n); %%直到最大迭代次数


end


%%第七步:输出结果


Pos=find(L_best==min(L_best));%找到最佳路径(非0为真)


Shortest_Route=R_best(Pos(1),:) %最大迭代次数后最佳路径


Shortest_Length=L_best(Pos(1))%最大迭代次数后最短距离


subplot(1,2,1) %绘制第一个子图形


DrawRoute(C,Shortest_Route) %画路线图的子函数


subplot(1,2,2) %绘制第二个子图形


plot(L_best)


hold on %保持图形


plot(L_ave,'r')


title('平均距离和最短距离') %标题


function DrawRoute(C,R)


%%=========================================================================


%% DrawRoute.m


%%画路线图的子函数


%%-------------------------------------------------------------------------


%% C Coordinate节点坐标,由一个N×2的矩阵存储


%% R Route路线


%%=========================================================================




N=length(R);


scatter(C(:,1),C(:,2));


hold on


plot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)],'g')


hold on


for ii=2:N


plot([C(R(ii-1),1),C(R(ii),1)],[C(R(ii-1),2),C(R(ii),2)],'g')


hold on


end


title('旅行商问题优化结果')




发表于 @2009年01月04日 20:15:00|评论(2)|编辑|收藏


一篇:?蚁群算法 C语言程序(已运行)?|?旧一篇:?牛顿迭代法 matlab程序
zatman?发表于03/04/2009 10:08:11 举报
怒赞一个
tengdong?发表于03/04/2009 11:37:47 举报
超赞。
以下程序我的理解
%%第二步:将m只蚂蚁放到n个城市上
Randpos=[]; %随即存取
for i=1:(ceil(m/n)) %求取放蚂蚁的次数
Randpos=[Randpos,randperm(n)]; %Randpos为一行向量
end
Tabu(:,1)=(Randpos(1,1:m))'; % 求取每只蚂蚁的禁忌表
给lyp2003ok的留言只有注册用户才能发表评论!登录注册


姓 名:
校验码:

提交留言
订阅我的博客




文章分类


收藏


更多文章见我的百度空间
存档

2009年01月(6)

软件项目交易

seo-增加baidu,google收录量
¥1千-3千(0人竞标)我竞标
书局采购系统
¥3千-5千(2人竞标)我竞标
.net开发的OA项目
¥3千-5千(1人竞标)我竞标
我想修改个软件,费用详谈!


¥100-500(1人竞标)我竞标
虚拟串口程序优化
¥1千-3千(0人竞标)我竞标
Outlook插件
¥100-500(0人竞标)我竞标
垂直搜索引擎
¥100-500(0人竞标)我竞标
港式五张外挂
¥100-500(0人竞标)我竞标
设计Discuz论坛的模板
¥3千-5千(3人竞标)我竞标

与网站通讯的手机jar程序
¥500-1千(2人竞标)我竞标
人事档案管理系统
¥500-1千(16人竞标)我竞标
单机版棋牌类游戏外包
¥500-1千(8人竞标)我竞标
图书管理系统
¥500-1千(14人竞标)我竞标
广告创意征集
¥3千-5千(1人竞标)我竞标
招聘一个调试高手,月薪8万左右详细看项目描述
¥3千-5千(0人竞标)我竞标
web界面美化
¥500-1千(4人竞标)我竞标
flex基于web的开放式试题库管理
¥100-500(4人竞标)我竞标
网上项目申报审批管理系统
¥100-500(6人竞标)我竞标
音乐,电子书,视频,美图简化播放器
¥100-500(4人竞标)我竞标
整合网银的API接口
¥100-500(2人竞标)我竞标
电子商务
¥500-1千(0人竞标)我竞标
求购mtk中间件或虚拟机源码
¥500-1千(1人竞标)我竞标
五四项目--财产申报网站
¥500-1千(8人竞标)我竞标
股票行情写库程序
¥1千-3千(5人竞标)我竞标
MP3音频数据复制限制
¥500-1千(2人竞标)我竞标
招聘一个调试高手,熟悉逆向工程,
¥500-1千(2人竞标)我竞标
flash动画开发
¥500-1千(2人竞标)我竞标
企业管理系统
¥500-1千(18人竞标)我竞标
3D引擎FLASH交互虚拟社区
¥500-1千(6人竞标)我竞标
旅游网站需求3G手机客户端开发
¥500-1千(3人竞标)我竞标
Javascript让任务管理器不能关闭进程
¥500-1千(6人竞标)我竞标
PHP+MYSQL
¥1千-3千(5人竞标)我竞标
seo-增加baidu,google收录量
¥1千-3千(0

人竞标)我竞标
书局采购系统
¥3千-5千(2人竞标)我竞标
.net开发的OA项目
¥3千-5千(1人竞标)我竞标
我想修改个软件,费用详谈!


¥100-500(1人竞标)我竞标
虚拟串口程序优化
¥1千-3千(0人竞标)我竞标
Outlook插件
¥100-500(0人竞标)我竞标
垂直搜索引擎
¥100-500(0人竞标)我竞标
港式五张外挂
¥100-500(0人竞标)我竞标
设计Discuz论坛的模板
¥3千-5千(3人竞标)我竞标

与网站通讯的手机jar程序
¥500-1千(2人竞标)我竞标
人事档案管理系统
¥500-1千(16人竞标)我竞标
单机版棋牌类游戏外包
¥500-1千(8人竞标)我竞标
图书管理系统
¥500-1千(14人竞标)我竞标
广告创意征集
¥3千-5千(1人竞标)我竞标
招聘一个调试高手,月薪8万左右详细看项目描述
¥3千-5千(0人竞标)我竞标
web界面美化
¥500-1千(4人竞标)我竞标
flex基于web的开放式试题库管理
¥100-500(4人竞标)我竞标
网上项目申报审批管理系统
¥100-500(6人竞标)我竞标
音乐,电子书,视频,美图简化播放器
¥100-500(4人竞标)我竞标
整合网银的API接口
¥100-500(2人竞标)我竞标
电子商务
¥500-1千(0人竞标)我竞标
求购mtk中间件或虚拟机源码
¥500-1千(1人竞标)我竞标
五四项目--财产申报网站
¥500-1千(8人竞标)我竞标
股票行情写库程序
¥1千-3千(5人竞标)我竞标
MP3音频数据复制限制
¥500-1千(2人竞标)我竞标
招聘一个调试高手,熟悉逆向工程,
¥500-1千(2人竞标)我竞标
flash动画开发
¥500-1千(2人竞标)我竞标
企业管理系统
¥500-1千(18人竞标)我竞标
3D引擎FLASH交互虚拟社区
¥500-1千(6人竞标)我竞标
旅游网站需求3G手机客户端开发
¥500-1千(3人竞标)我竞标
Javascript让任务管理器不能关闭进程
¥500-1千(6人竞标)我竞标
PHP+MYSQL
¥1千-3千(5人竞标)我竞标

Csdn Blog version 3.1a
Copyright ? lyp2003ok


系统消息

IBM Rational 敏捷开发研讨会
欢迎光临IBM Rational 敏捷开发研讨会!届时您将进一步了解目前业界流行的敏捷开发方法,以及IBM与之相关的最佳实践.同时,您还能深入认识IBM Rational基于Jazz技术的核心产品IBM Rational Team Concert, 以及其如何通过协作真正实现软件创新的最佳实践!此次研讨会专门为软件开发人员、团队主管、软件与项目经理而设计。我们期待您的光临!
5月21日 珠海 5月26日 哈尔滨
点击下载报名表

相关文档
相关文档 最新文档