资源简介
功能比较齐全的蚁群算法工具箱,包含测试数据,自我介绍文件,对源数据进行处理的程序,对数据处理后可以使用蚁群算法进行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
相关资源
- 蚁群算法的matlab源码
- 基于蚁群算法的路径规划源码
- 蚁群算法用于图像的边缘检测
- 基于matlab的蚁群算法和仿真结果图
- 基于蚁群算法的图像边缘检测算法M
- 蚁群算法的最短路径MATLAB程序
- 改进型的最大最小蚁群算法求解云计
- 蚁群算法用法
- 蚁群算法求函数最值
- 蚁群算法的特征选取 matlab实现
- 蚁群算法求函数最大值的程序
- 拉曼光谱特征峰提取的蚁群算法的M
- matlab解决旅行者问题的三种算法遗传
- MATLAB基于蚁群算法的二维路径规划算
- 连续域蚁群算法的matlab实现
- Matlab 蚁群算法
- 蚁群算法实现TSP问题
- 蚁群算法优化PID参数
- 自己写的蚁群算法实验带GUI matlab写的
- 蚁群算法最短路径通用Matlab程序
- 基于蚁群算法的图像边缘检测
- 蚁群算法解决01背包问题
- 基于Matlab的QoS组播路由问题的蚁群算
- 图像边缘检测
- 蚁群算法动态寻路算法
- text-edge-detection 蚁群算法
- CVRP 一个用蚁群算法做OCVRP的代码。不
- 基于蚁群算法的机器人路径规划(避
- matlab蚁群算法工具箱matlab蚁群算法工
- MATLAB——基于蚁群算法的三维路
评论
共有 条评论