tsp matlab源程序,简单蚁群算法求解TSP的源程序(原创) [matlab]

这是一个使用MATLAB7.1编写的简单蚁群算法源程序,用于解决旅行商问题(TSP)。该算法由Dorigo于1991年提出,具有鲁棒性和分布式计算特性。程序基于att48数据集,可能需要约13分钟在特定配置的机器上运行。程序未计算最后城市返回起点的距离,并在每次迭代后更新信息素矩阵。
摘要由CSDN通过智能技术生成

简单蚁群算法求解TSP的源程序(原创)

蚁群算法是新兴的仿生算法,最初是由意大利学者Dorigo M于1991年首次提出,由于具有较强的鲁棒性,优良的分布式计算机制和易于与其它方法结合等优点,成为人工智能领域的一个研究热点。本程序是实现简单的蚁群算法,TSP问题取的是att48,可从http://www.iwr.uni-heidelb erg.de/groups/comopt/software/TSPLIB95获取,程序运行时间可能会比较长,在我的这台CPU 1.6G+内存256M的机器上运行时间大概是13分钟左右。我用的语言是MATLAB 7.1。此程序仅供学习所用,如有问题请反馈。谢谢。(注:程序没有计算最后一个城市回来起点城市的距离)

function [y,val]=QACS

tic

load att48 att48;

MAXIT=300; % 最大循环次数

NC=48; % 城市个数

tao=ones(48,48);% 初始时刻各边上的信息最为1

rho=0.2; % 挥发系数

alpha=1;

beta=2;

Q=100;

mant=20; % 蚂蚁数量

iter=0; % 记录迭代次数

for i=1:NC % 计算各城市间的距离

for j=1:NC

distance(i,j)=sqrt((att48(i,2)-att48(j,2))^2+(att48(i,3)-att48(j,3))^2);

end

end

bestroute=zeros(1,48); % 用来记录最优路径

routelength=inf; % 用来记录当前找到的最优路径长度

% for i=1:mant % 确定各蚂蚁初始的位置

% end

for ite=1:MAXIT

for ka=1:mant %考查第K只蚂蚁

deltatao=zeros(48,48); % 第K只蚂蚁移动前各边上的信息增量为零

[routek,lengthk]=travel(distance,tao,alpha,beta);

if lengthkroutelength=lengthk;

bestroute=routek;

end

for i=1:NC-1 % 第K只蚂蚁在路径上释放的信息量

deltatao(routek(i),routek(i+1))=deltatao(routek(i),routek(i+1))+Q/lengthk; end

deltatao(routek(48),1)=deltatao(routek(48),1)+Q/lengthk;

end

for i=1:NC-1

for j=i+1:NC

if deltatao(i,j)==0

deltatao(i,j)=deltatao(j,i);

end

end

end

tao=(1-rho).*tao+deltatao;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值