一、簡介
%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]
二、運行結果

三、備注
完整代碼或者代寫添加QQ2449341593
往期回顧>>>>>>
【優化求解】基于matlab粒子群優化灰狼演算法【含Matlab原始碼 006期】
【優化求解】基于matlab多目標灰狼優化演算法MOGWO 【含Matlab原始碼 007期】
【優化求解】基于matlab粒子群演算法的充電站最優布局【含Matlab原始碼 012期】
【優化求解】基于matlab遺傳演算法的多旅行商問題【含Matlab原始碼 016期】
【優化求解】基于matlab遺傳演算法求最短路徑【含Matlab原始碼 023期】
【優化求解】基于matlab遺傳和模擬退火的三維裝箱問題【含Matlab原始碼 031期】
【優化求解】基于matlab遺傳演算法求解車輛發車間隔優化問題【含Matlab原始碼 132期】
【優化求解】磷蝦群演算法【含matlab原始碼 133期】
【優化求解】差分進化演算法【含Matlab原始碼 134期】
【優化求解】基于matlab約束優化之懲罰函式法【含Matlab原始碼 163期】
【優化求解】基于matlab改進灰狼演算法求解重油熱解模型【含Matlab原始碼 164期】
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/253964.html
標籤:其他
下一篇:藍橋杯的矩陣鍵盤4*4練習
