蚁群算法在旅行商问题中的应用(多目标优化模型)蚁群算法在旅行商问题中的应用摘要本文将对蚁群算法的仿真学原理进行概要介绍和对蚁群算法产生、发展、优化进行介绍以及阐述蚁群算法的几点重要基本规则,并对蚁群算法的优缺点进行讨论。
蚁群算法是受自然界中蚁群搜索食物行为启发而提出的一种智能多目标优化算法,通过介绍蚁群觅食过程中基于信息素的最短路径的搜索策略,给出基于MATLAB的蚁群算法在旅行商问题中的应用。
关键字:蚁群算法;旅行商问题;仿真;多目标优化一、问题重述旅行商问题(TSP)是一个经典的组合优化问题。
TSP可以描述为:一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地。
应如何选择行进路线,以使总的行程最短。
从图论的角度来看,该问题实质是在一个带权完全无向图中,找一个权值最小的Hamilton 回路。
由于该问题的可行解是所有顶点的全排列,随着顶点数的增加,会产生组合爆炸,它是一个N P完全问题。
随着问题规模的增大,人们对复杂事物和复杂系统建立数学模型并进行求解的能力是有限的,目标函数和约束条件往往不能以明确的函数关系表达,或因函数带有随机参、变量,导致基于数学模型的优化方法在应用于实际生产时,有其局限性甚至不适用。
基于仿真的优化(Simulation Based Optimization,SBO)方法正是在这样的背景下发展起来的。
本文将使用一种近似算法或启发式算法—蚁族算法。
1、蚁群算法的提出蚁群算法(Ant Colony Optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。
它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。
2、蚁群算法的仿生学原理蚁群算法最初是通过对蚂蚁群落的观察,受蚁群行为特征启发而得出的。
蚂蚁是一种群居昆虫,在觅食、清理巢穴征启发而得出的。
蚂蚁是一种群居昆虫,在觅食、等活动中,彼此依赖、相互协作共同完成特定的任务。
等活动中,彼此依赖、相互协作共同完成特定的任务。
就个体来讲,单个蚂蚁的智力和体力是极其有限的,体来讲,单个蚂蚁的智力和体力是极其有限的,服务于整个群落的生存与发展;就群体来讲,蚁群在行为上的分工协作、群落的生存与发展;就群体来讲,蚁群在行为上的分工协作、在完成任务过程中所体现的自组织特征等反应出蚁群具有较高的智能和自我管理能力,具有很高层次组织性,高的智能和自我管理能力,具有很高层次组织性,这使得蚁群能够完成一些复杂的任务。
群能够完成一些复杂的任务。
蚁群的行为是整体协作,相互分工,蚁群的行为是整体协作,相互分工,以一个整体去解决一些对单个蚂蚁看上去是不可能完成的任务。
些对单个蚂蚁看上去是不可能完成的任务。
就目前来讲,蚁群至少有三个方面的行为特征对算法研究有很好的启发意义,分别是觅食行为、任务分配、死蚁堆积阁。
蚁群的觅食行为指蚂蚁从巢穴出发寻找食物并且将食物搬回巢穴的行为.当蚂蚁出外寻找食物时,会在自己走过的路径上释放一种称为信息家的物质,径上释放一种称为信息家的物质,后续的蚂蚁一般更愿意走那些信息素强度更高的路径。
这样,那些信息素强度更高的路径。
这样,较短路径上单位时间内通过的蚂蚁数目较多,留下的信息素也较多(浓度更高) 通过的蚂蚁数目较多,留下的信息素也较多(浓度更高),对蚂蚁产生了更强的吸引,使得更多的蚂蚁走较短的路径。
妈蚁产生了更强的吸引,使得更多的蚂蚁走较短的路径。
这就形成了一个正反馈机制,就形成了一个正反馈机制,使得最终所有的蚂蚁都走蚁穴到食物源的最短路径. 食物源的最短路径.3、蚁群算法实现的重要规则(1)范围蚂蚁观察到的范围是一个方格世界,蚂蚁有一个参数为速度半径(一般是3),那么它能观察到的范围就是3*3个方格世界,并且能移动的距离也在这个范围之内。
(2)环境蚂蚁所在的环境是一个虚拟的世界,其中有障碍物,有别的蚂蚁,还有信息素,信息素有两种,一种是找到食物的蚂蚁洒下的食物信息素,一种是找到窝的蚂蚁洒下的窝的信息素。
每个蚂蚁都仅仅能感知它范围内的环境信息。
环境以一定的速率让信息素消失。
(3)觅食规则在每只蚂蚁能感知的范围内寻找是否有食物,如果有就直接过去。
否则看是否有信息素,并且比较在能感知的范围内哪一点的信息素最多,这样,它就朝信息素多的地方走,并且每只蚂蚁都会以小概率犯错误,从而并不是往信息素最多的点移动。
蚂蚁找窝的规则和上面一样,只不过它对窝的信息素做出反应,而对食物信息素没反应。
(4)移动规则每只蚂蚁都朝向信息素最多的方向移,并且,当周围没有信息素指引的时候,蚂蚁会按照自己原来运动的方向惯性的运动下去,并且,在运动的方向有一个随机的小的扰动。
为了防止蚂蚁原地转圈,它会记住最近刚走过了哪些点,如果发现要走的下一点已经在最近走过了,它就会尽量避开。
(5)避障规则:如果蚂蚁要移动的方向有障碍物挡住,它会随机的选择另一个方向,并且有信息素指引的话,它会按照觅食的规则行为。
(6)播撒信息素规则:每只蚂蚁在刚找到食物或者窝的时候撒发的信息素最多,并随着它走远的距离,播撒的信息素越来越少。
根据这几条规则,蚂蚁之间并没有直接的关系,但是每只蚂蚁都和环境发生交互,而通过信息素这个纽带,实际上把各个蚂蚁之间关联起来了。
比如,当一只蚂蚁找到了食物,它并没有直接告诉其它蚂蚁这儿有食物,而是向环境播撒信息素,当其它的蚂蚁经过它附近的时候,就会感觉到信息素的存在,进而根据信息素的指引找到了食物。
二、问题分析旅行商问题的各个城市间的距离可以用代价矩阵来表示,就是邻接矩阵表示法。
如果E j i ∉),(,则∞=ij c 。
先说明旅行商问题具有最优解结构。
设s s s s p ,,.....,,21是从s 出发的一条路径长度最短的简单回路,假设从s 到下一个城市1s 已经求出,则问题转化为求1s 到S 的最短路径,显然s s s s p ,,.....,,21一定构成一条从1s 到S 的最短路径,如果不然,设s r r r s q ,,.....,,,211是一条从1s 到S 的最短路径且经过n-1个城市,则s r r r s s q ,,.....,,,,211将是从S 出发的路径长度最短的简单回路且比s s s s s p ,,.....,,,21要短,从而导致矛盾。
所以,旅行商问题一定满足最优性原理。
四、符号说明五、模型的建立与求解1.旅行商模型:),(E V G =为一个带权图,},2,1{n V =为顶点集,},,),({{j i V j i j i e E ij ≠∈==为边集。
),,(j i V j i d ij ≠∈为顶点i 到顶点j 的距离, 其中0≥ij d 且∞≠ij d ,同时),,(V j i d d ji ij ∈=则经典TSP 的数学模型为:)1(min ∑≠=j i ijij xx d F)2(0`,1..⎪⎩⎪⎨⎧=不在最优路径上,边在最优路径上边ij ij ij e e x st )3(,1j i ∑≠∈=Vi x ij)4(,1j i ∑≠∈=V j x ij )5(,,∑∈sj i G s s 的子图是 其中s 是图s 的顶点数。
(1)为ctsp 的目标函数,求经过所有顶点的回路的最小距离。
(2)-(4)限定回路上每个顶点仅有一条入边和一条出边。
( 5 ) 限定在回路中不出现子回路。
模型实质上是在一个带权图中求一条H a m i l t o n 回路。
若对所有i ,j,k ∈V , 不等式ik jk ij d d d ≥+均成立, 则称该问题是满足三角不等式的。
2.蚂蚁算法求解TSP 问题的具体过程如下:(1)首先初始化,设迭代次数为NC 。
初始化NC=0,各),(j i τ初始化;10-=nn nL τ(2)将m 个蚂蚁置于n 个顶点上;(3)构造解。
每个蚂蚁按照状态变化规则逐步地构造一个解,即生成一条线路。
蚂蚁任务是访问所有的城市后回到起点,生成一条回路。
设蚂蚁k 当前所在的顶点为i ,那么,蚂蚁k 由点i 向点j 移动要遵循(1)式的状态变化规则而不断迁移,按不同概率来选择下一点。
[])1(00)()()()(max arg ⎪⎪⎩⎪⎪⎨⎧∈=>≤n Exloitatio q q J n Exloitatio q q ij ij allowed k j βαητ (1)式中,k k tabu n alowed --=}1,1,0{ 表示蚂蚁k 当前能选择的城市集合,k tabu 为禁忌表,它记录蚂蚁k 已路过的城市,用来说明人工蚂蚁的记忆性 ;式中ij τ相当于真实蚂蚁沿途散播的信息素,是一个正实数,与图G 中弧(i ,j )关联,其值在运行时不断改变,用于表示蚂蚁从点i 向点j 移动的动力;ij η用于评价蚂蚁从点i 向点j 移动的启发函数,其值通常用距离的倒数来求得,即1),(-=j i ij c c d η。
βα,体现了信息素和启发信息对蚂蚁决策的影响。
α取值为1;参数0>β描述启发函数的重要性;参数)10(00≤≤q q 决定利用和开发的相对重 要性,利用(Exploitation )是指走最好的路,开发(Exploration )是指按浓度高概率高的原则选路V ,这样可以保证选择路径的多样性;q 是在[0,1] 取的随机数,当0q q ≤时,按(1)式选最好的路,否则按(2)式的概率进行选路:⎪⎪⎩⎪⎪⎨⎧∈=∑∈otherwiseallowed j if t t p k allowedk ik ik ij ij k ij 0)())(()()()(βαβαητητ (4)局部更新信息素值。
应用局部信息素更新规则来改变信息素值。
在构造解时,蚂蚁k 对其走过的每条弧用:0)1(ρττρτ+-=old ij new ij局部信息素更新规则来改变弧上关联的信息素值,其中10<<ρ是信息素挥发参数。
(5)若所有的m 个蚂蚁都构造完解,则转(6) ;否则转(3) ;(6)全局更新信息素值。
应用全局信息素更新规则来改变信息素值。
当所有m 个蚂蚁生成了m 个解,其中有一条最短路径是本代最优解,将属于这条路线上的所有弧相关联的信息素值按下式更新:)()()1()1(t t t gb ij ij ij τρτρτ∆+-=+⎩⎨⎧∈=∆otherwise T j i arc if t L t gb gb gb ij 0),()(/1)(τ其中10<<ρ是挥发参数;)(t L gb 是目前得到的全局最优解的路线长度。
全局信息素更新的目的是在最短路线上注入额外的信息素,即只有属于最短路线的弧上的信息素才能得到加强,这是一个正反馈的过程,也是一个强化学习的过程。