蚁群算法求解TSP问题.doc

蚁群算法求解TSP问题.doc

ID:57381897

大小:59.00 KB

页数:8页

时间:2020-08-14

蚁群算法求解TSP问题.doc_第1页
蚁群算法求解TSP问题.doc_第2页
蚁群算法求解TSP问题.doc_第3页
蚁群算法求解TSP问题.doc_第4页
蚁群算法求解TSP问题.doc_第5页
资源描述:

《蚁群算法求解TSP问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、广东工业大学课程作业课程题目基于ACO算法求解城市tsp学生姓名朱美霞学生学号专业班级计算机技术2015年2月15日1.AOC算法的数学模型(1)、基本参数、信息素浓度公式、择路概率设蚂蚁的数量为m,城市的数量为n,城市i与城市j之间的距离为dij,t时刻城市i与城市j之间的信息素浓度为tij(t),初始时刻,各个城市间连接路径上的信息素浓度相同,不妨记为tij(0)=t0。蚂蚁k(k=1,2,..,m)根据各城市间连接路径上的信息素浓度,决定其下一个要访问的城市,设Pijk(t)表示t时刻,蚂蚁k从城市i到城市j

2、的概率,其计算公式为如下:其中:hij(t)为启发式函数,hij(t)=1/dij,表示蚂蚁从城市i转移到城市j的期望程序;allowk(k=1,2,…,m)表示蚂蚁k待访问的城市的集合,开始时allowk为其他n-1城市,随着时间推进,其中的元素不断减少,直至为空,表示所有城市访问完,即遍历所有城市。a为信息素的重要程度因子,其值越大,转移中起的作用越大b为启发函数的重要程度因子,其值越大,表示启发函数在转移中的作用越大,即蚂蚁以较大的概率转移到距离短的城市。蚂蚁释放的信息素会随时间的推进而减少,设参数r(0

3、<1)表示信息素的挥发度,当所有蚂蚁完成一次循环后,各个城市间连接路径上的信息素浓度,需要实时更新。tij(t+1)=(1-r)tij(t)+Dtij,Dtij=其中:Dtijk表示蚂蚁k在城市i与城市j的连接路径上,释放的信息素浓度Dtij表示所有蚂蚁在城市i与城市j的连接路径上,释放的信息素浓度。(2)、Dtijk的计算方法Dtijk=其中:Q为常数,表示蚂蚁循环一次释放的信息素的总量;dij为第k只蚂蚁经过路径的长度,Length;4.相关程序1、访问每个城市一次也仅一次的最短路径,共有30个2、城市的坐标c

4、itys,这是直角坐标,根据二个城市的坐标值,可以用D=可计算出任意二个城市间的距离。citys=1304231236391315417722443712139934881535332615563238122941961004431279043865703007197025621756278814912381167613326953715167839182179406123703780221236762578402928384263293134291908350723673394264334393201293532

5、403140355025452357277828263、代码clearallclcloadcitys_data.mat%计算城市间相互距离n=size(citys,1);%城市的个数D=zeros(n,n);%n行n列的矩阵,即任意二个城市之间的距离fori=1:nforj=1:nifi~=jD(i,j)=sqrt(sum((citys(i,:)-citys(j,:)).^2));elseD(i,j)=1e-4;endendend%%初始化参数m=50;%蚂蚁数量alpha=1;%信息素重要程度因子beta=5;%

6、启发函数重要程度因子rho=0.1;%信息素挥发因子Q=1;%常系数Eta=1./D;%启发函数Tau=ones(n,n);%信息素矩阵,全1矩阵Table=zeros(m,n);%路径记录表,全0矩阵,每只蚂蚁依次走过的城市iter=1;%迭代次数初值iter_max=200;%最大迭代次数Route_best=zeros(iter_max,n);%各代最佳路径Length_best=zeros(iter_max,1);%各代最佳路径的长度Length_ave=zeros(iter_max,1);%各代路径的平均

7、长度%%迭代寻找最佳路径whileiter<=iter_max%随机产生各个蚂蚁的起点城市start=zeros(m,1);%m是蚂蚁的个数,m行1列的矩阵,记录每个蚂蚁的城市编号fori=1:mtemp=randperm(n);start(i)=temp(1);endTable(:,1)=start;%路径记录表的1列,为每个蚂蚁的起点城市%构建解空间citys_index=1:n;%逐个蚂蚁路径选择fori=1:m%逐个城市路径选择forj=2:ntabu=Table(i,1:(j-1));%已访问的城市集合(

8、禁忌表)allow_index=~ismember(citys_index,tabu);%不是tabu的城市就是要访问的城市allow=citys_index(allow_index);%待访问的城市集合P=allow;fork=1:length(allow)%计算城市间转移概率P(k)=Tau(tabu(end),allow(k))^alpha*Eta(t

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。