function [val,y]=ant(city,mant,MAXIT,NC,tao,rho,alpha,beta)
Q=100;
iter=0; % 记录迭代次数
for i=1:NC % 计算各城市间的距离
for j=1:NC
distance(i,j)=sqrt((city(i,2)-city(j,2))^2+(city(i,3)-city(j,3))^2);
end
end
bestroute=zeros(1,31); % 用来记录最优路径
routelength=inf; % 用来记录当前找到的最优路径长度
for ite=1:MAXIT
for ka=1:mant %考查第K只蚂蚁
deltatao=zeros(31,31); % 第K只蚂蚁移动前各边上的信息增量为零
[routek,lengthk]=travel(distance,tao,alpha,beta);
if lengthk<routelength % 找到一条更好的路径
routelength=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(31),1)=deltatao(routek(31),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;
end
y=bestroute;
val=routelength;