仿真的多目标优化(蚁群算法在旅行商问题中的应用)_第1页
仿真的多目标优化(蚁群算法在旅行商问题中的应用)_第2页
仿真的多目标优化(蚁群算法在旅行商问题中的应用)_第3页
仿真的多目标优化(蚁群算法在旅行商问题中的应用)_第4页
仿真的多目标优化(蚁群算法在旅行商问题中的应用)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、蚁群算法在旅行商问题中的应用(多目标优化模型)蚁群算法在旅行商问题中的应用摘要本文将对蚁群算法的仿真学原理进行概要介绍和对蚁群算法产生、发展、优化进行介绍以及阐述蚁群算法的几点重要基本规则,并对蚁群算法的优缺点进行讨论。蚁群算法是受自然界中蚁群搜索食物行为启发而提出的一种智能多目标优化算法,通过介绍蚁群觅食过程中基于信息素的最短路径的搜索策略,给出基于MATLAB的蚁群算法在旅行商问题中的应用。关键字:蚁群算法;旅行商问题;仿真;多目标优化一、 问题重述旅行商问题(TSP)是一个经典的组合优化问题。TSP可以描述为:一个商品推销员要去若干个城市推销商品, 该推销员从一个城市出发, 需要经过所有

2、城市后,回到出发地。应如何选择行进路线, 以使总的行程最短。从图论的角度来看, 该问题实质是在一个带权完全无向图中, 找一个权值最小的Hamilton回路。由于该问题的可行解是所有顶点的全排列, 随着顶点数的增加, 会产生组合爆炸, 它是一个N P完全问题。 随着问题规模的增大,人们对复杂事物和复杂系统建立数学模型并进行求解的能力是有限的,目标函数和约束条件往往不能以明确的函数关系表达,或因函数带有随机参、变量,导致基于数学模型的优化方法在应用于实际生产时,有其局限性甚至不适用。基于仿真的优化(Simulation Based Optimization,SBO)方法正是在这样的背景下发展起来的

3、。本文将使用一种近似算法或启发式算法蚁族算法。1、蚁群算法的提出蚁群算法(Ant Colony Optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。 2、蚁群算法的仿生学原理蚁群算法最初是通过对蚂蚁群落的观察,受蚁群行为特 征启发而得出的。蚂蚁是一种群居昆虫,在觅食、清理巢穴 征启发而得出的。蚂蚁是一种群居昆虫,在觅食、 等活动中,彼此依赖、相互协作共同完成特定的任务。 等活动中,彼此依赖、相互协作共同完成特定的任务。就个 体来讲,单个蚂蚁的智

4、力和体力是极其有限的, 体来讲,单个蚂蚁的智力和体力是极其有限的,服务于整个 群落的生存与发展;就群体来讲,蚁群在行为上的分工协作、 群落的生存与发展;就群体来讲,蚁群在行为上的分工协作、 在完成任务过程中所体现的自组织特征等反应出蚁群具有较 高的智能和自我管理能力,具有很高层次组织性, 高的智能和自我管理能力,具有很高层次组织性,这使得蚁 群能够完成一些复杂的任务。 群能够完成一些复杂的任务。蚁群的行为是整体协作,相互分工,蚁群的行为是整体协作,相互分工,以一个整体去解决一 些对单个蚂蚁看上去是不可能完成的任务。 些对单个蚂蚁看上去是不可能完成的任务。就目前来讲,蚁群至少有三个方面的行为特征

5、对算法研究有很好的启发意义,分别是觅食行为、任务分配、死蚁堆积阁。蚁群的觅食行为指蚂蚁从巢穴出发寻找食物并且将食物搬回巢穴的行为.当蚂蚁出外寻找食物时,会在自己走过的路 径上释放一种称为信息家的物质,径上释放一种称为信息家的物质,后续的蚂蚁一般更愿意走 那些信息素强度更高的路径。这样,那些信息素强度更高的路径。这样,较短路径上单位时间内通过的蚂蚁数目较多,留下的信息素也较多(浓度更高) 通过的蚂蚁数目较多,留下的信息素也较多(浓度更高),对蚂蚁产生了更强的吸引,使得更多的蚂蚁走较短的路径。 妈蚁产生了更强的吸引,使得更多的蚂蚁走较短的路径。这 就形成了一个正反馈机制, 就形成了一个正反馈机制,

6、使得最终所有的蚂蚁都走蚁穴到 食物源的最短路径. 食物源的最短路径. 3、蚁群算法实现的重要规则(1)范围蚂蚁观察到的范围是一个方格世界,蚂蚁有一个参数为速度半径(一般是3),那么它能观察到的范围就是3*3个方格世界,并且能移动的距离也在这个范围之内。(2)环境蚂蚁所在的环境是一个虚拟的世界,其中有障碍物,有别的蚂蚁,还有信息素,信息素有两种,一种是找到食物的蚂蚁洒下的食物信息素,一种是找到窝的蚂蚁洒下的窝的信息素。每个蚂蚁都仅仅能感知它范围内的环境信息。环境以一定的速率让信息素消失。(3)觅食规则在每只蚂蚁能感知的范围内寻找是否有食物,如果有就直接过去。否则看是否有信息素,并且比较在能感知的

7、范围内哪一点的信息素最多,这样,它就朝信息素多的地方走,并且每只蚂蚁都会以小概率犯错误,从而并不是往信息素最多的点移动。蚂蚁找窝的规则和上面一样,只不过它对窝的信息素做出反应,而对食物信息素没反应。(4)移动规则每只蚂蚁都朝向信息素最多的方向移,并且,当周围没有信息素指引的时候,蚂蚁会按照自己原来运动的方向惯性的运动下去,并且,在运动的方向有一个随机的小的扰动。为了防止蚂蚁原地转圈,它会记住最近刚走过了哪些点,如果发现要走的下一点已经在最近走过了,它就会尽量避开。(5)避障规则:如果蚂蚁要移动的方向有障碍物挡住,它会随机的选择另一个方向,并且有信息素指引的话,它会按照觅食的规则行为。(6)播撒

8、信息素规则:每只蚂蚁在刚找到食物或者窝的时候撒发的信息素最多,并随着它走远的距离,播撒的信息素越来越少。根据这几条规则,蚂蚁之间并没有直接的关系,但是每只蚂蚁都和环境发生交互,而通过信息素这个纽带,实际上把各个蚂蚁之间关联起来了。比如,当一只蚂蚁找到了食物,它并没有直接告诉其它蚂蚁这儿有食物,而是向环境播撒信息素,当其它的蚂蚁经过它附近的时候,就会感觉到信息素的存在,进而根据信息素的指引找到了食物。二、问题分析旅行商问题的各个城市间的距离可以用代价矩阵来表示,就是邻接矩阵表示法。如果,则。先说明旅行商问题具有最优解结构。设是从s出发的一条路径长度最短的简单回路,假设从s到下一个城市已经求出,则

9、问题转化为求到S的最短路径,显然一定构成一条从到S的最短路径,如果不然,设是一条从到S的最短路径且经过n-1个城市,则将是从S出发的路径长度最短的简单回路且比要短,从而导致矛盾。所以,旅行商问题一定满足最优性原理。四、符号说明序号符号12345678910C:NC_max:m:Alpha:Beta:Rho:Q:R_best:L_best:n个城市的坐标,n2的矩阵最大迭代次数各班人数各专业所分配的名额数蚂蚁个数表征信息素重要程度的参数表征启发式因子重要程度的参数信息素蒸发系数信息素增加强度系数各代最佳路线各代最佳路线的长度五、模型的建立与求解1.旅行商模型:为一个带权图,为顶点集,为边集。为顶

10、点i到顶点j 的距离, 其中且,同时则经典TSP的数学模型为: 其中是图s 的顶点数。(1)为ctsp的目标函数,求经过所有顶点的回路的最小距离。(2)-(4)限定回路上每个顶点仅有一条入边和一条出边。( 5 ) 限定在回路中不出现子回路。模型实质上是在一个带权图中求一条H a m i l t o n回路。若对所有i,j,k V, 不等式均成立, 则称该问题是满足三角不等式的。2.蚂蚁算法求解TSP 问题的具体过程如下:(1)首先初始化,设迭代次数为NC。初始化NC=0,各初始化; (2)将m 个蚂蚁置于n 个顶点上;(3)构造解。每个蚂蚁按照状态变化规则逐步地构造一个解,即生成一条线路。蚂蚁

11、任务是访问所有的城市后回到起点,生成一条回路。设蚂蚁k当前所在的顶点为i,那么,蚂蚁k 由点i 向点j 移动要遵循(1)式的状态变化规则而不断迁移,按不同概率来选择下一点。(1)式中,表示蚂蚁k 当前能选择的城市集合,为禁忌表,它记录蚂蚁k已路过的城市,用来说明人工蚂蚁的记忆性 ;式中相当于真实蚂蚁沿途散播的信息素,是一个正实数,与图G中弧(i,j)关联,其值在运行时不断改变,用于表示蚂蚁从点i向点j移动的动力;用于评价蚂蚁从点i 向点j 移动的启发函数,其值通常用距离的倒数来求得,即。体现了信息素和启发信息对蚂蚁决策的影响。取值为1;参数描述启发函数的重要性;参数决定利用和开发的相对重要性,

12、利用(Exploitation)是指走最好的路,开发(Exploration)是指按浓度高概率高的原则选路V,这样可以保证选择路径的多样性;q 是在0,1 取的随机数,当时,按(1)式选最好的路,否则按(2)式的概率进行选路:(4)局部更新信息素值。应用局部信息素更新规则来改变信息素值。在构造解时,蚂蚁k 对其走过的每条弧用:局部信息素更新规则来改变弧上关联的信息素值,其中是信息素挥发参数。(5)若所有的m个蚂蚁都构造完解,则转(6) ;否则转(3) ;(6)全局更新信息素值。应用全局信息素更新规则来改变信息素值。当所有m 个蚂蚁生成了m 个解,其中有一条最短路径是本代最优解,将属于这条路线上

13、的所有弧相关联的信息素值按下式更新:其中是挥发参数;是目前得到的全局最优解的路线长度。全局信息素更新的目的是在最短路线上注入额外的信息素,即只有属于最短路线的弧上的信息素才能得到加强,这是一个正反馈的过程,也是一个强化学习的过程。在图中各弧上,伴随着信息素的挥发,全局最短路线上各弧的信息素值得到增加;(7)终止。若终止条件满足,则结束;否则NC=NC+1,转(2)进行下一代进化。终止条件可指定进化的代数,也可限定运行时间,或设定最短路长的下限。例:一个商品推销员要去若干个城市推销商品, 该推销员从一个城市出发, 需要经过所有城市后,回到出发地。应如何选择行进路线, 以使总的行程最短。城市坐标城

14、市坐标123456789行值304639177 712 488 326 238 196 312 列植312315244399535556229104790城市坐标101112131415161718行值386 107 562 788 381 332 715 918 161 列植570970756491676695678179370城市坐标192021222324252627行值780 676 329 263 429 507 394439935列植212578838931908367643201240城市坐标28293031行值140545778370列植550357826975应用上面的步鄹可

15、以解出最短路径出来,相应的程序见附件,结果为:最短路径图每次循环最短路径长度和平均路径长度图得出:15-14-25-10-6-28-18-3-7-1-26-8-19-17-27-13-4-2-29-24-5-20-16 22-11-21-9的和最短路径线路 六、模型评价蚁群算法(ACA) 不仅利用了正反馈原理, 在一定程度上可以加快进化过程, 而且是一种本质并行的算法, 个体之间不断进行信息交流和传递, 有利于发现较好解.单个个体容易收敛于局部最优, 但多个个体通过合作, 很快收敛于解空间的某一子集, 有利于对解空间的进一步探索, 从而不易陷入局部最优。但是ACA也具有速度慢、易陷入局部最优等

16、缺点。蚁群中多个个体的运动是随机的, 当群体规模较大时, 要找出一条较好的路径需要较长的搜索时间。七、参考文献1 陈文兰,戴树贵.旅行商问题算法研究综述.滁州学院学报,2006年,第8卷:1-62 尹晓峰,刘春煌,张睢皎. 基于MATLAB的混合型蚁群算法求解车辆路径问题铁道部科学研究院电子所,2005年,第14卷:32-423 薛定宇,陈阳泉.高等应用数学问题的MATLAB求解.北京:清华大学出版社,2011,197-2094 司守奎.数学建模算法.大连:海军航空工程学院出版社,2007,395-411八、附件蚁群算法求解旅行商问题的matlab程序:clear;clc;%初始化蚁群m=31

17、;%蚁群中蚂蚁的数量,当m接近或等于城市个数n时,本算法可以在最少的迭代次数内找到最优解C=304 312;639 315;177 244;712 399;488 535;326 556;238 229;196 104;312 790;386 570;107 970;562 756;788 491;381 676;332 695;715 678;918 179;161 370;780 212;676 578;329 838;263 931;429 908;507 367;394 643;439 201;935 240;140 550;545 357;778 826;370 975;%城市的坐标

18、矩阵Nc_max=200;%最大循环次数,即算法迭代的次数,亦即蚂蚁出动的拨数(每拨蚂蚁的数量当然都是m)alpha=1;%蚂蚁在运动过程中所积累信息(即信息素)在蚂蚁选择路径时的相对重要程度,alpha过大时,算法迭代到一定代数后将出现停滞现象beta=5;%启发式因子在蚂蚁选择路径时的相对重要程度rho=0.5;%0rho1,表示路径上信息素的衰减系数(亦称挥发系数、蒸发系数),1-rho表示信息素的持久性系数Q=100;%蚂蚁释放的信息素量,对本算法的性能影响不大%变量初始化n=size(C,1);%表示TSP问题的规模,亦即城市的数量D=ones(n,n);%表示城市完全地图的赋权邻接

19、矩阵,记录城市之间的距离for i=1:nfor j=1:nif ijD(i,j)=sqrt(C(i,1)-C(j,1)2+(C(i,2)-C(j,2)2);endD(j,i)=D(i,j);endendeta=1./D;%启发式因子,这里设为城市之间距离的倒数pheromone=ones(n,n);%信息素矩阵,这里假设任何两个城市之间路径上的初始信息素都为1tabu_list=zeros(m,n);%禁忌表,记录蚂蚁已经走过的城市,蚂蚁在本次循环中不能再经过这些城市。当本次循环结束后,禁忌表被用来计算蚂蚁当前所建立的解决方案,即经过的路径和路径的长度Nc=0;%循环次数计数器routh_b

20、est=zeros(Nc_max,n);%各次循环的最短路径length_best=ones(Nc_max,1);%各次循环最短路径的长度length_average=ones(Nc_max,1);%各次循环所有路径的平均长度while Ncq0for k=1:length(city_remained)probability(k)=(pheromone(city_visited(end),city_remained(k)alpha*(eta(city_visited(end),city_remained(k)beta;position=find(probability=max(probabil

21、ity);to_visit=city_remained(position(1);endelsefor k=1:length(city_remained)probability(k)=(pheromone(city_visited(end),city_remained(k)alpha*(eta(city_visited(end),city_remained(k)beta;endprobability=probability/sum(probability);pcum=cumsum(probability);select=find(pcum=rand);to_visit=city_remained

22、(select(1);endtabu_list(i,j)=to_visit;%*endendif Nc0tabu_list(1,:)=routh_best(Nc,:);%将上一代的最优路径(最优解)保留下来,保证上一代中的最适应个体的信息不会丢失end%记录本次循环的最佳路线total_length=zeros(m,1);%m只蚂蚁在本次循环中分别所走过的路径长度for i=1:mr=tabu_list(i,:);%取出第i只蚂蚁在本次循环中所走的路径for j=1:(n-1)total_length(i)=total_length(i)+D(r(j),r(j+1);%第i只蚂蚁本次循环中从起

23、点城市到终点城市所走过的路径长度endtotal_length(i)=total_length(i)+D(r(1),r(n);%最终得到第i只蚂蚁在本次循环中所走过的路径长度endlength_best(Nc+1)=min(total_length);%把m只蚂蚁在本次循环中所走路径长度的最小值作为本次循环中最短路径的长度position=find(total_length=length_best(Nc+1);%找到最短路径的位置,即最短路径是第几只蚂蚁或哪几只蚂蚁走出来的routh_best(Nc+1,:)=tabu_list(position(1),:);%把第一个走出最短路径的蚂蚁在本次

24、循环中所走的路径作为本次循环中的最优路径length_average(Nc+1)=mean(total_length);%计算本次循环中m只蚂蚁所走路径的平均长度Nc=Nc+1%更新信息素delta_pheromone=zeros(n,n);for i=1:mfor j=1:(n-1)delta_pheromone(tabu_list(i,j),tabu_list(i,j+1)=delta_pheromone(tabu_list(i,j),tabu_list(i,j+1)+Q/total_length(i);%total_length(i)为第i只蚂蚁在本次循环中所走过的路径长度(蚁周系统区别于蚁密系统和蚁量系统的地方)enddelta_pheromone(tabu_list(i,n),tabu_list(i,1)=delta_pheromone(tabu_list(i,n),tabu_list(i,1)+Q/total_length(i);%至此把第i只蚂蚁在本次循环中在所有路径上释放的信息素已经累加上去end%至此把m只蚂蚁在本次循环中在所有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论