先新建一个主程序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&TImes;2的矩阵
%% NC_max 蚁群算法MATLAB程序最大迭代次数
%% 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&TImes;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;