📄 main.m
字号:
%function [bestroute,routelength]=Ant
clc
clear
tic
% 读入城市间距离矩阵数据文件
CooCity = load( 'CooCity.txt' ) ;% 城市网络图坐标数据文件,txt形式给出
NC=length(CooCity); % 城市个数
for i=1:NC % 计算各城市间的距离
for j=1:NC
distance(i,j)=sqrt((CooCity(i,2)-CooCity(j,2))^2+(CooCity(i,3)-CooCity(j,3))^2);
end
end
% distance=xlsread('DistanceCity.xls'); % 城市间距离矩阵数据文件,excel形式给出
MAXIT=10; % 最大循环次数
Citystart=[]; % 起点城市编号
tau=ones(NC,NC); % 初始时刻各边上的信息痕迹为1
rho=0.5; % 挥发系数
alpha=1; % 残留信息相对重要度
beta=5; % 预见值的相对重要度
Q=10; % 蚁环常数
NumAnt=20; % 蚂蚁数量
%bestroute=zeros(1,48); % 用来记录最优路径
routelength=inf; % 用来记录当前找到的最优路径长度
for n=1:MAXIT
for k=1:NumAnt %考查第K只蚂蚁
deltatau=zeros(NC,NC); % 第K只蚂蚁移动前各边上的信息增量为零
%[routek,lengthk]=path(distance,tau,alpha,beta,[]); % 不靠率起始点
[routek,lengthk]=path(distance,tau,alpha,beta,Citystart); % 指定起始点
if lengthk<routelength % 找到一条更好的路径
routelength=lengthk;
bestroute=routek;
end
for i=1:NC-1 % 第K只蚂蚁在路径上释放的信息量
deltatau(routek(i),routek(i+1))=deltatau(routek(i),routek(i+1))+Q/lengthk; % 信息素更新
end
%deltatau(routek(NC),1)=deltatau(routek(NC),1)+Q/lengthk; %
end
length_n(n)=routelength; % 记录路径收敛
tau=(1-rho).*tau; % 信息素挥发
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
costtime=toc;
subplot(1,2,1),plot([CooCity(bestroute,2)],[CooCity(bestroute,3)],'-*')
subplot(1,2,2),plot([1:MAXIT],length_n,'-*')
[routelength,costtime]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -