先新建一個主程序M文件ACATSP.m
代碼如下:
function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)
%%=========================================================================
%% 主要符號說明
%% C n個城市的坐標,n×2的矩陣
%% m 螞蟻個數%% Alpha 表征信息素重要程度的參數
%% Beta 表征啟發式因子重要程度的參數%% Rho 信息素蒸發系數
%% Q 表示蟻群算法MATLAB程序信息素增加強度系數
%% R_best 各代最佳路線
%% L_best 各代最佳路線的長度
%% 蟻群算法MATLAB程序第一步:變量初始化
n=size(C,1);%n表示問題的規模(城市個數)
D=zeros(n,n);%D表示完全圖的賦權鄰接矩陣
for i=1:n
for j=1:n
if i~=jD(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;
else
D(i,j)=eps;
% i = j 時不計算,應該為0,但后面的啟發因子要取倒數,用eps(浮點相對精度)表示
?
%% 蟻群算法MATLAB程序第二步:將m只螞蟻放到n個城市上
?
%% 蟻群算法MATLAB程序第三步:m只螞蟻按概率函數選擇下一座城市,完成各自的周游
?
%% 下面計算蟻群算法MATLAB程序待選城市的概率分布
?
%% 蟻群算法MATLAB程序第四步:記錄本次迭代最佳路線
?
%% 蟻群算法MATLAB程序第五步:更新信息素
?
%% 蟻群算法MATLAB程序第七步:輸出結果
?
建立一個子程序DrawRoute.m
代碼如下
?
需要輸入的參數數據有: C: n個城市的坐標,n×2的矩陣NC_max: 蟻群算法MATLAB程序最大迭代次數M: 螞蟻個數Alpha: 表征信息素重要程度的參數Beta:表征啟發式因子重要程度的參數
Rho: 信息素蒸發系數Q:表示蟻群算法MATLAB程序信息素增加強度系數運行時打開ACATSP.m 點擊運行或輸入ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)
一個運行實例:
m=31;Alpha=1;Beta=5;Rho=0.1;NC_max=200;Q=100;
?
? ? ? ? ? ??
? ? ? ? ? ?
評論