首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

蚁群算法简述及实现

2022-12-03 来源:华拓网
蚁群算法简述及实现

1 蚁群算法的原理分析

蚁群算法是受自然界中真实蚁群算法的集体觅食行为的启发而发展起来的一种基于群体的模拟进化算法,属于随机搜索算法,所以它更恰当的名字应该叫“人工蚁群算法”,我们一般简称为蚁群算法。M.Dorigo等人充分的利用了蚁群搜索食物的过程与著名的TSP问题的相似性,通过人工模拟蚁群搜索食物的行为来求解TSP问题。

蚂蚁这种社会性动物,虽然个体行为及其简单,但是由这些简单个体所组成的群体却表现出及其复杂的行为特征。这是因为蚂蚁在寻找食物时,能在其经过的路径上释放一种叫做信息素的物质,使得一定范围内的其他蚂蚁能够感觉到这种物质,且倾向于朝着该物质强度高的方向移动。蚁群的集体行为表现为一种正反馈现象,蚁群这种选择路径的行为过程称之为自催化行为。由于其原理是一种正反馈机制,因此也可以把蚁群的行为理解成所谓的增强型学习系统(Reinforcement Learning System)。

引用M.Dorigo所举的例子来说明蚁群发现最短路径的原理和机制,见图1所示。假设D和H之间、B和H之间以及B和D之间(通过C)的距离为1,C位于D和B的中央(见图1 (a))。现在我们考虑在等间隔等离散世界时间点(t=0,1,2……)的蚁群系统情况。假设每单位时间有30只蚂蚁从A到B,另三十只蚂蚁从E到D,其行走速度都为1(一个单位时间所走距离为1),在行走时,一只蚂蚁可在时刻t留下浓度为1的信息素。为简单起见,设信息素在时间区间(t+1,t+2)的中点(t+1.5)时刻瞬时完全挥发。在t=0时刻无任何信息素,但分别有30只蚂蚁在B、30只蚂蚁在D等待出发。它们选择走哪一条路径是完全随机的,因此在两个节点上蚁群可各自一分为二,走两个方向。但在t=1时刻,从A到B的30只蚂蚁在通向H的路径上(见图1 (b))发现一条浓度为15的信息素,这是由15只从B走向H的先行蚂蚁留下来的;而在通向C的路径上它们可以发现一条浓度为30的信息素路径,这是由15只走向BC的路径的蚂蚁所留下的气息与15只从D经C到达B留下的气息之和(图1 (c))。这时,选择路径的概率就有了偏差,向C走的蚂蚁数将是向H走的蚂蚁数的2倍。对于从E到D来的蚂蚁也是如此。

(a) (b) (c)

图1 蚁群路径搜索实例

这个过程一直会持续到所有的蚂蚁最终都选择了最短的路径为止。

这样,我们就可以理解蚁群算法的基本思想:如果在给定点,一只蚂蚁要在不同的路径中选择,那么,那些被先行蚂蚁大量选择的路径(也就是信息素留存较浓的路径)被选中的概率就更大,较多的信息素意味着较短的路径,也就意味着较好的问题回答。

2人工蚁群算法描述

蚁群算法可以看作为一种基于解空间参数化概率分布模型(Parameterized Probabilistic Model)的搜索算法框架 (Model-based search algorithms)。在蚁群算法中,解空间参数化概率,模型的参数就是信息素,因而这种参数化概率分布模型就是信息素模型。在基于模型的搜索算法框架中,可行解通过在一个解空间参数化概率分布模型上的搜索产生,此模型的参数用以前产生的解来更新,使得在新模型上的搜索能够集中在高质量的解搜索空间内。这种方法的有效性建立在高质量的解总是包含好的解构成元素的假设前提下。通过学习这种解构成元素对解的质量的影响有助于找到一种机制,并通过解构成元素的最佳组合来构造出高质量的解。一般来说,一个记忆模型的搜索算法通常使用以下两步迭代来解决优化问题:

1)可行解通过在解空间参数化概率分布模型上的搜索产生。

2)用搜索产生的解来更新参数化概率模型,即更新解空间参数化概率分布的参数,使得在新模型上的参数搜索能够集中在高质量的解搜索空间内。

在蚁群算法中,基于信息素的解空间参数化概率模型(信息素模型)以解构造图的形式给出。在解构造图上,定义了一种作为随机搜索机制的人工蚁群,蚂蚁通过一种分布在解构造图上被称为信息素的局部信息的指引,在解构造图上移动,从而逐步的构造出问题的可行。信息素与解构造图上的节点或弧相关联,作为解空间参数化概率分布模型的参数。

由于TSP问题可以直接的映射为解构造图(城市为节点,城市间的路径为弧,信息素分布在弧上),加之TSP问题也是个NP难题,所以,蚁群算法的大部分应用都集中在TSP问题上。一般而言,用于求解TSP问题、生产调度问题等优化问题的蚁群算法都遵循下面的统一算法框架。

算法1:求解组合优化问题的蚁群算法

设置参数,初始化信息素踪迹 While(不满足条件时)do for蚁群中的每只蚂蚁

for每个解构造步(直到构造出完整的可行解)

1)蚂蚁按照信息素及启发式信息的指引构造一步问题的解; 2)进行信息素局部更新。(可选) endfor endfor

1)以某些已获得的解为起点进行邻域(局部)搜索;(可选) 2)根据某些已获得的解的质量进行全局信息素更新。 endwhile end

在算法1中,蚂蚁逐步的构造问题的可行解,在一步解的构造过程中,蚂蚁以概率方式选择信息素强且启发式因子高的弧到达下一个节点,直到不能继续移动为止。此时蚂蚁所走过的路径对应求解问题的一个可行解。局部信息素更新针对蚂蚁当前走过的一步路径上的信息素进行,全局信息素更新是在所有蚂蚁找到可行解之后,根据发现解的质量或当前算法找到的最好解对路径上的信息素进行更新。

3 蚁群算法与其他搜索算法比较

3.1 蚁群算法与进化算法比较

近年来,遗传算法(GA)、进化规划(Evolutionary Planning)、进化策略(Evolutionary Strategies)在理论和应用上发展迅速、效果显著并逐渐走向了融合,形成了一种新颖的模拟进

化的计算理论,统称为进化计算(Evolutionary Computation)。因此我们可以用进化计算作为代表与蚁群算法进行比较,从另一个角度来认识蚁群算法,加深对蚁群算法的理解。

蚁群算法与进化计算的相似之处有两点:首先,两种算法均采用群体表示问题的解;其次,新群体通过包含在群体中与问题相关的知识来生成。两者的主要区别在于进化计算中所有问题的的知识都包含在当前群体中,而蚁群算法中代表过去所学的知识保存在信息素的踪迹中。

3.2 蚁群算法与模拟退火算法比较

从模拟退火算法的搜索策略可以看出蚁群算法和模拟退火算法(SA)从本质上来讲是一致的。

SA对某个“固体的”一个微观状态i计算其能量Ei的过程与蚂蚁的一次“周游”一样,都是对解空间的一次采样;“退火”与“分泌信息素”都是利用积累信息来增强对子空间的搜索;而“Metropolis准则”和“随机状态转移规则”类似,都是使算法能够跳出局部最优,在一定范围内接受恶化解,搜索新的子空间。

因此,SA已经非常成熟的收敛性研究对分析设置蚂蚁规模参数和信息素分布策略对最终解质量的影响有很大的借鉴意义。对于SA的收敛性分析一般分两种情况,齐次Markov链和非齐次Markov链。齐次Markov链的分析结果告诉我们,在任意温度t,SA都达到平衡分布的情况下,当t→0时,SA将收敛于全局最优。也就是说,在任意温度t,SA都要遍历整个解空间。那么,如果我们保留sA采样后的当前全局最优解,则即使在任何温度t,SA都会收敛于全局最优。换句话说,对于蚁群算法,如果蚂蚁数量(规模)足够多,能够保证对解空间的遍历,那么即使不用信息素,也能保证全局收敛。不过这种方法显然就是一种盲目随机搜索,没有任何实际的应用价值。

对于非其次Markov链的SA,即在某个固定温度t,采样次数有限,而t将无限趋近于0的情况下,结论告诉我们当控制参数序列满足一定条件时,SA才收敛于整体最优解集。其更直接的表述方式是:控制参数t的衰减量与在温度t下的采样数之间存在一种均衡:t的衰减量越大,则在温度艺下的采样数就必须越多;反之,若t的衰减量缓慢,则在每个温度下SA只需进行少量采样。

那么。从蚁群算法的角度可以看到:因为蚂蚁的规模实际上影响的只是信息素更新的频率,所以当规模设置较大时,每次更新信息素时,可以以较快的速度拉大不同状态上的信息素差距;当规模较小时,每次只对信息素进行少量更新,以免算法早熟。

由此可见,对蚁群算法的参数设置可以直接利用SA中对“冷却进度表”的研究成果。 此外,既然两者在本质上一致,那么SA的一些改进和变异可以直接用在蚁群算法上以改进其性能。

3.3 蚁群算法与神经网络比较

由许多并发、局部交互的单元(人工蚂蚁)组成的蚁群,可以看成是一种“连接”系统。“连接”系统最具代表性的例子是神经网络(Neural Network,简称NN)。从结构上看,蚁群算法与通常的神经网络具有类似的并行机制。蚂蚁访问过的每一个状态i对应于神经网络中的神经元i,与问题相关的状态i的邻域结构与神经元i中的突触连接相对应。蚂蚁本身可以看成是通过神经网络的并发输入信号,以修改突触与神经元之间的连接强度。信号经过随机转换函数的局部反传,使用的突触越多,两个神经元之间的连接越强。蚁群算法中的学习规则可以解释为一种后天性的规则,即质量较好的解包含连接信号的强度高于质量较差的解。

4 基本蚁群算法及其实现

4.1 引言

蚁群在觅食过程中总能找到蚁巢和食物源之间的最短路径。受蚂蚁的这种行为启发,意

大利学者M.Dorigo、V.Maniezzo以及A.Colorni首先提出了一种新型的随机搜索模拟进化算法—蚂蚁系统(Ant System,简称As)。AS算法是第一个蚁群算法的模型,被称为基本蚁群算法。AS算法首先被用来求解TSP问题,并取得了巨大成功。实验结果显示AS算法具有很强的发现较好解的能力,但同时也存在一些缺点,如收敛速度较慢、易出现停滞现象等等。针对AS算法的不足之处,许多学者对其进行了深入的研究,提出了一些改进的蚁群算法,如带精英策略的蚂蚁系统(Ant System With elitist strategy,简称ASelitist、蚁群系统(Ant Colorni System,简称ACS)、基于优化排序的蚂蚁系统(Rank-Based Version of Ant System,简称ASrank)、最大-最小蚂蚁系统(Max-Min Ant System,简称MMAS)以及最优-最差蚂蚁系统(Best-Worst Ant System,简称BWAS)等等。

4.2 蚂蚁系统的模型描述

为了说明蚂蚁系统的模型,首先引入TSP问题。

一般地来说,旅行商问题(Traveling Salesman Problem,简称TSP问题)可以描述如下: 设C={cl,c2,…,cn}为n个城市的集合,L= {Lij|ci、cj∈C }是c中元素两两连接的集合,G=(C,L)是一个图,已知各城市之间的距离,TSP问题的求解目的是从G中找出长度最短的Hamiltonian圈,即找出对C={cl,c2,…,cn}中n个城市访问且只访问一次的最短的一条封闭曲线。TSP问题分为对称型和非对称型。在对称型TSP问题中,有dij=dji,∀ci,cj∈C{1,2,…,n},dij是lij的长度;在非对称型TSP问题中,至少存在一对ci,cj∈C,使dij≠dji。

为了模拟实际蚂蚁的行为,我们首先引入如下记号: m—蚁群中蚂蚁的数量;

bi(t)—t时刻位于城市i的蚂蚁数,m=∑𝑛𝑖=1𝑏𝑖(𝑡); dij—两城市i和j之间的距离;

ηij—边(i,j)的能见度,反映由城市i转移到城市j的启发程度,这个量在蚂蚁的运行中不改变;

𝜏ij(t)—t时刻边(i,j)上的信息素量; Δ𝜏ij—本次迭代中边ij上的信息素增量; 𝑘𝑃𝑖𝑗(t)—在t时刻蚂蚁k从城市i转移到城市j的概率;

每只蚂蚁都具有以下特性:

(1)完成一次循环后,蚂蚁在其访问过的每条边上留下相应的信息素;

(2)蚂蚁依据概率选择下一个将要访问的城市,这个概率是两城市间距离及连接两个城市的边上信息量的函数;

(3)为了满足问题的约束条件,在完成一次循环之前,不允许蚂蚁选择己经访问过的城市,该过程由蚂蚁的禁忌表来控制。设tabuk为蚂蚁k的禁忌表,则蚂蚁在经过城市i以后,就将城市i加入到自己的禁忌表tabuk、中,表示下次不能再选择城市i。用tabuk(s)表示禁忌表中第s个元素,也即蚂蚁走过的第s个城市。

于是AS算法可以表述如下:在算法的初始时刻,将m只蚂蚁随机的放到n座城市,同时,将每只蚂蚁的禁忌表的第一个元素设置为当前它所在的城市。初始时刻,各条路径上的信息素量相等,设𝜏ij(0)=C(C为一较小的常数)。然后每只蚂蚁按照各条路径上的信息素量和启发式信息(两城市间的距离)独立的选择下一座城市,蚂蚁系统所用的状态转移规则称为随机

𝑘

比例规则。在t时刻,蚂蚁k在城市i选择城市j的转移概率𝑃𝑖𝑗(t)为:

,𝑗∈𝑎𝑙𝑙𝑜𝑤𝑒𝑑𝑘𝛽𝛼𝑘(𝑡)𝜂𝑖𝑠(𝑡)(𝑡)={∑𝑠∈𝑎𝑙𝑙𝑜𝑤𝑒𝑑𝑘𝜏𝑖𝑠𝑃𝑖𝑗 (4.1)

0,𝑜𝑡h𝑒𝑟𝑤𝑖𝑠𝑒

其中,allowedk ={1,2,…,n}—tabuk表示蚂蚁下一步允许选择的城市。列表tabuk记录了蚂蚁k当前走过的城市。当所有n座城市都加入到tabuk中时,蚂蚁k便完成了一次周游,此时蚂蚁k

𝛼()𝜏𝑖𝑗𝑡𝜂𝑖𝑗(𝑡)𝛽

所走过的路径便是TSP问题的一个可行解。式(4.1)中的ηij通常取城市i和城市j之间距离的倒数。α和β分别表示信息素和启发式因子的相对重要程度。当所有蚂蚁完成一次周游以后,各路径上的信息素根据下式更新。

𝜏𝑖𝑗(𝑡+𝑛)=𝜌∙𝜏𝑖𝑗(𝑡)+∆𝜏𝑖𝑗 (4.2)

𝑘

∆𝜏𝑖𝑗=∑𝑚𝑘=1∆𝜏𝑖𝑗 (4.3) 其中𝜌 (0< 𝜌 关于∆𝜏𝑖𝑗的计算方法,M.Dorigo曾给出三种不同的实现方法,分别对应三种不同的蚂蚁系统模型ant-cycle system、ant-density system以及ant- quantity system。它们的区别在于表达式𝑘∆𝜏𝑖𝑗的不同。

在ant-cycle system模型中:

𝑄

𝑘

∆𝜏𝑖𝑗={𝐿𝑘

,若蚂蚁𝑘在本次循环中经过边𝑖𝑗

0,𝑜𝑡h𝑒𝑟𝑤𝑖𝑠𝑒

(4.4)

在ant-density system模型中:

𝑄

𝑘∆𝜏𝑖𝑗

={

𝑑𝑖𝑗

,若蚂蚁𝑘在本次循环中经过边𝑖𝑗

0,𝑜𝑡h𝑒𝑟𝑤𝑖𝑠𝑒

(4.5)

在ant- quantity system模型中:

𝑘∆𝜏𝑖𝑗={

𝑄,若蚂蚁𝑘在本次循环中经过边𝑖𝑗

0,𝑜𝑡h𝑒𝑟𝑤𝑖𝑠𝑒

(4.6)

上面公式中,Q为一正常数,表示蚂蚁循环一周或者一个过程在经过的路径上所释放的信

息素总量。Lk表示第k只蚂蚁在本次循环中所经过的路径的长度。

以上三种模型的区别在于:第一种模型利用的是蚁群的整体信息,即走完一个循环以后才进行残留信息量的全局调整;而后两种模型中蚂蚁每走一步(即从时间t到t+1)都要更新残留的信息量,而不是等到所有的蚂蚁完成对所有的城市访问以后。

4.3 蚂蚁系统模型的实现

从上面的蚂蚁系统模型来看,其寻找最优解的过程实际上是一个有限的递推过程,因而也适合在计算机上实现。AS算法的实现可用以下的伪代码来描述: 算法2:AS算法

1.初始化

设t=0; {t为计时器}

Nc=0; { Nc 为迭代次数计算器}

𝜏ij(t)=C;{ 𝜏ij(t)为每条路径(i,j)设的信息素量的初值}

Δ𝜏ij=0;{信息素增量的初值设为0}

ηij由某种启发式算法确定;{在TSP中,ηij =1/dij} tabuk=Φ;{在初始阶段,禁忌表为空} 将m只蚂蚁随机地置于n个节点上;

设置s=1;{s为禁忌表索引,将各蚂蚁的初始城市置于当前禁忌表中} for k=1 to n do

for k=1 to bi(t) do tabuk(s)=i;

2.重复直至禁忌表满为止{这一步要重复(n-1)次}

设置s=s+1;

for i=1 to n do

for k=1 to bi(t) do

𝑘

(𝑡)选择城市j; 以概率𝑃𝑖𝑗

将蚂蚁k移动到城市j;

将刚刚选择到的城市j加入到禁忌表中

𝑘

在ant-cycle system模型中:按照(4.4)式计算∆𝜏𝑖𝑗

𝑘

在ant- density system模型中:按照(4.5)式计算∆𝜏𝑖𝑗

𝑘

在ant- quantity system模型中:按照(4.6)式计算∆𝜏𝑖𝑗 3.记录到目前为止的最短路径

if Nc则清空所有禁忌表; 设置s=1;

for i=1 to n do

for k=1 to bi(t) do

tabuk(s)=1 ;{一次循环后蚂蚁又重新回到初始位置} 设t=t+1

对于每一条路径(i,j),设置Δ𝜏ij=0; 返回步骤2 否则

输出最短路径 算法停止

因篇幅问题不能全部显示,请点此查看更多更全内容