正在看数学建模的算法,这里讲蚁群算法拿出来做了个全国省会级城市旅游路线最短问题(TSP),使用matlab实现。
蚁群算法思想
(1)根据具体问题设置多只蚂蚁,分头并行搜索。
(2)每只蚂蚁完成一次周游后,在行进的路上释放信息素,信息素量与解的质量成正比。
(3)蚂蚁路径的选择根据信息素强度大小(初始信息素量设为相等),同时考虑两点之间的距离,采用随机的局部搜索策略。这使得距离较短的边,其上的信息素量较大,后来的蚂蚁选择该边的概率也较大。
(4)每只蚂蚁只能走合法路线(经过每个城市1次且仅1次),为此设置禁忌表来控制。
(5)所有蚂蚁都搜索完一次就是迭代一次,每迭代一次就对所有的边做一次信息素更新,原来的蚂蚁死掉,新的蚂蚁进行新一轮搜索。
(6)更新信息素包括原有信息素的蒸发和经过的路径上信息素的增加。
(7)达到预定的迭代步数,或出现停滞现象(所有蚂蚁都选择同样的路径,解不再变化),则算法结束,以当前最优解作为问题的最优解。
调用函数:
function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length] = ACATSP(path,NC_max,m,Alpha,Beta,Rho,Q)
matlab程序
程序主体来源互联网。数据集为国内主要城市的经纬度,及地名,以
经度,纬度,地名
的格式存入path所指向的txt文件,该txt文件与该matlab程序放在同一目录。
function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length] = ACATSP(path,NC_max,m,Alpha,Beta,Rho,Q)
%%-------------------------------------------------------------------------
%% 主要符号说明
%% C n个城市的坐标,n×2的矩阵
%% NC_max 最大迭代次数
%% m 蚂蚁个数
%% Alpha 表征信息素重要程度的参数
%% Beta 表征启发式因子重要程度的参数
%% Rho 信息素蒸发系数
%% Q 信息素增加强度系数
%% R_best 各代最佳路线
%% L_best 各代最佳路线的长度
%%=========================================================================
%% 第一步:变量初始化
%% 从文件读入数据
[x y z] = textread(path,'%f,%f,%s');
C = [x,y] ;
nam