- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[GreenSim.C原创】TSP问题蚁群算法通用Mat lab程序(附图) (2007-03-10 09:28:51)转载
蚁群算法是当前研究非常火热的一种智能算法,下面的蚁群算法 程序专门用于求解TSP问题,此程序市GreenSim团队于2006年初完 成,最初公开发表于研学论坛,我们经过仿真检验,发现此程序的优 化效率和鲁棒性都非常好。
function
[R best, L best,L ave, Shortest Route,Shortest Length]=ACATSP (C, NC max, m, Alpha, Beta, Rho, Q)
忙二二二二二========================
%% ACATSP. m %% Ant Colony Algorithm for Traveling Salesman Problem %% ChengAihua, PLA Information Engineering
University, ZhengZhou, China
%% Email:aihuacheng^gmai1. com
%% All rights reserved
%%
%%
主耍符号说明
%%
c
n个城市的坐标,nX2的矩阵
%%
NC max
最大迭代次数
%%
m
蚂蚁个数
%%
Alpha
表征信息素重要程度的参数
%%
Beta
表征启发式因子重要程度的参数
%%
Rho
信息素蒸发系数
%%
Q
信息索增加强度系数
%%
Rbest
各代最佳路线
%%
L best
各代最佳路线的长度
%%
%%第一步:变量初始化
n二size(*, 1) ;%*表示问题的规模(城市个数) *=zeros(n, n) ;%D表示完全图的赋权邻接矩阵 for i二l:n
for j二l:n
if 1 二 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;
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) ;%各代路线的平均长度
wh订e NC=NC_max%停止条件之一:达到最大迭代次数 %%笫二步:将m只蚂蚁放到n个城市上 Randpos=[];
for i=l: (ceil(m/n))
Randpos=[Randpos, randperm(n)];
end
Tabu(:, 1)二(Randpos(1, ;
%%第三步:ni只蚂蚁按概率函数选择下一座城市,完成各自的周 游
for j二2:n
for i二l: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
J(Jc)=k;
Jc二Jc+1;
end
end
%下面计算待选城市的概率分布
for k=l:length(J)
P (k) = (Tau (visited(end), J(k))Alpha)*(Eta(visited(end), J(k)) Beta);
en*
*=*/(sum(P));
%按概率原则选取下一个城市 Pcum=cumsum(P);
Select二find (Pcum二rand); to_visit=J(Select(1));
Tabu(i, j)=to_visit;
end
end
if NC=2
Tabu(1,:)二R best(NCT,:);
end
%%第四步:记录本次迭代最佳路线
L二zeros (m, 1);
for i二l:m
R=Tabu(i,:);
for j二1: (n~l)
L(i)二 L(i)+D(R(j),R(j+l));
end
L(i)=L(i)+D(R(l),R(n));
end
L_best(NC)=min(L); pos=find (L=L_best (NC));
R best (NC, :)=Tabu (pos(l),:):
L_ave(NC)=mean(L);
NC二NC+1
%%第五步:更新信息素 Delta_Tau=zeros(n, n);
for i二l:m
fo
文档评论(0)