资源简介
功能比较齐全的蚁群算法工具箱,包含测试数据,自我介绍文件,对源数据进行处理的程序,对数据处理后可以使用蚁群算法进行TSP问题的研究,最后绘制路径图,本工具箱使用matlab代码编写。是你研究蚁群算法不可多得的助手。

代码片段和文件信息
function [Route_BestLength_BestLength_AverageShortest_RouteShortest_LengthTime]=ACMTSP(CityLoop_MaxAnt_CountAlphaBetaVolatileQ)
%%根据城市的坐标运行,使用蚁群算法求解最优化问题,并最后绘制运行结果的图形。
%%使用说明:[Route_BestLength_BestLength_AverageShortest_RouteShortest_Length]=ACMTSP(CityLoop_MaxAnt_CountAlphaBetaVolatileQ)
%% 主要符号说明
%%City_Count:城市的个数.
%% City:City_Count个城市的坐标,City_Count×2的矩阵.
%% Loop_Max:最大循环次数,即迭代的次数
%% Ant_Count:蚂蚁个数
%% Alpha:表征信息素重要程度的参数
%% Beta:表征启发因子(期望)重要程度的参数
%% Volatile:信息素挥发系数
%% Q:信息素强度的系数,一般是一个常量
%% Route_Best:代表最佳路线
%% Length_Best:代最佳路线的长度
%%Length_Average:代表平均路径长度
%%Shortest_Route:表示找到的最短的路径,其中包含城市节点序列
%%Shortest_Length:表示最短路径的长度
%%Time:程序运行时间,不包括绘图时间.
%%=========================================================================
%第一步:变量初始化
City_Count=size(City1);%City_Count表示问题的规模(城市个数)
D=zeros(City_CountCity_Count);%D表示完全图的赋权邻接矩阵
for i=1:City_Count
for j=1:City_Count
if i~=j
D(ij)=((City(i1)-City(j1))^2+(City(i2)-City(j2))^2)^0.5;
else
D(ij)=eps; %i=j时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示
end
D(ji)=D(ij); %对称矩阵
end
end
%D表示城市之间的距离,D(i,j)表示第i个城市距离第j个城市之间的距离.
%D这个矩阵应该是对称的。
Expectation=1./D;%Eta为启发因子,这里设为距离的倒数
T_Pheromone=ones(City_CountCity_Count); %T_Pheromone为信息素矩阵
T_Ant_Passed=zeros(Ant_CountCity_Count); %存储并记录每个蚂蚁经过的路径
NC=1; %迭代计数器,记录迭代次数
Route_Best=zeros(Loop_MaxCity_Count);%每代找到的最佳路线
Length_Best=inf.*ones(Loop_Max1); %每代最佳路线的长度
Length_Average=zeros(Loop_Max1); %每代路线的平均长度
tic
while NC<=Loop_Max %停止条件之一:达到最大迭代次数,停止
%%第二步:将m只蚂蚁放到n个城市上
Rand_Position=[]; %随即存取
for i=1:(ceil(Ant_Count/City_Count))
Rand_Position=[Rand_Positionrandperm(City_Count)];
end
T_Ant_Passed(:1)=(Rand_Position(11:Ant_Count))‘; %将蚂蚁放在城市上,并记录蚂蚁访问过的城市的编号
%%第三步:m只蚂蚁按概率函数选择下一座城市,完成各自的周游
for j=2:City_Count %所在城市不计算
for i=1:Ant_Count
visited=T_Ant_Passed(i1:(j-1)); %记录已访问的城市,避免重复访问
No_Visited_City=zeros(1(City_Count-j+1)); %待访问的城市
P=No_Visited_City; %待访问城市的选择概率分布
No_V_C_Count=1;
for k=1:City_Count
if isempty(find(visited==k 1)) %开始时置0
No_Visited_City(No_V_C_Count)=k;
No_V_C_Count=No_V_C_Count+1; %访问的城市个数自加1
end
end
%下面计算待选城市的概率分布
for k=1:length(No_Visited_City)
P(k)=(T_Pheromone(visited(end)No_Visited_City(k))^Alpha)*(Expectation(visited(end)No_Visited_City(k))^Beta);
end
P=P/(sum(P));
%按概率原则选取下一个城市
Pcum=cumsum(P); %cumsum,元素累加即求和
Select=find(Pcum>=rand); %若计算的概率大于原来的就选择这条路线
%-------------------------
%Select=find(P>=rand); %若计算的概率大于原来的就选择这条路线
%while(isempty(Select))
% Select=find(P>=r
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6728 2010-11-25 01:05 ACS_Niu\ACMTSP.m
文件 4981 2010-11-25 01:04 ACS_Niu\ACM_TSP_Dist.m
文件 504 2010-11-25 00:32 ACS_Niu\GetMatrixByLowerDiag.m
文件 631 2010-11-25 00:53 ACS_Niu\MatrixR17.mat
文件 832 2010-11-25 00:53 ACS_Niu\MatrixR21.mat
文件 319 2010-11-25 00:54 ACS_Niu\St70.mat
目录 0 2010-11-25 01:08 ACS_Niu
----------- --------- ---------- ----- ----
13995 7
相关资源
- 用蚁群算法求解TSP问题的matlab程序
- 蚁群算法论文+源代码
- 针对栅格路径规划的蚁群算法MATLAB
- 蚁群算法实现三维路径规划Matlab源码
- matlab蚁群算法.zip
- 论文研究-基于改进蚁群算法的车辆路
- 基于蚁群算法和神经网络匹配算法的
- matlab蚁群算法各种经典蚁群算法for
- 基于栅格地图的蚁群算法路径规划
- 基于蚁群算法和神经网络匹配算法的
- 基于蚁群算法和神经网络匹配算法的
- 多种蚁群算法在机器人路径规划中的
- 机器人避障航路规划蚁群算法MATLAB仿
- 蚁群算法进行二维路径规划.zip
- 蚁群算法MATLAB代码287131
- 蚁群算法路径规划避障MATLAB源程序
- 蚁群算法无人机路径规划
- 粒子群 模拟退火 蚁群算法MATLAB实现
- 基本蚁群聚类算法及其改进算法带M
- 基于蚁群算法和神经网络匹配算法的
- 运用matlab编程实现蚁群算法的低压电
- 蚁群算法算法的路径规划MATLAB实现
- 利用蚁群算法对PID参数自整定程序源
- 蚁群算法最短路径matlab程序
- 蚁群算法求最短路径1
- 蚁群算法最短路径万能matlab源代码
- MATLAB蚁群算法ACA最短路径-注释完整
- 路径规划蚁群算法
- 蚁群算法粗糙集matlab代码
- 基于Matlab解决TSP问题的蚁群算法
评论
共有 条评论