?? 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 + -