2024年4月20日发(作者:)

...

2.1 蚁群算法的基本原理

蚁群优化算法是模拟蚂蚁觅食的原理,设计出的一种群集智能算法。蚂蚁在

觅食过程中能够在其经过的路径上留下一种称之为信息素的物质,并在觅食过程

中能够感知这种物质的强度,并指导自己行动方向,它们总是朝着该物质强度高

的方向移动,因此大量蚂蚁组成的集体觅食就表现为一种对信息素的正反馈现

象。某一条路径越短,路径上经过的蚂蚁越多,其信息素遗留的也就越多,信息

素的浓度也就越高,蚂蚁选择这条路径的几率也就越高,由此构成的正反馈过程,

从而逐渐的逼近最优路径,找到最优路径。

蚂蚁在觅食过程时,是以信息素作为媒介而间接进行信息交流,当蚂蚁从食

物源走到蚁穴,或者从蚁穴走到食物源时,都会在经过的路径上释放信息素,从

而形成了一条含有信息素的路径,蚂蚁可以感觉出路径上信息素浓度的大小,并

且以较高的概率选择信息素浓度较高的路径。

15cm

A

蚁穴

B

食物源

蚁穴 1

B

A

2 食物源

(a)

人工蚂蚁的搜索主要包括三种智能行为:

(b)

(1)蚂蚁的记忆行为。一只蚂蚁搜索过的路径在下次搜索时就不再被该蚂蚁选

择,因此在蚁群算法中建立禁忌表进行模拟。

(2)蚂蚁利用信息素进行相互通信。蚂蚁在所选择的路径上会释放一种信息素

的物质,当其他蚂蚁进行路径选择时,会根据路径上的信息素浓度进行选择,这

样信息素就成为蚂蚁之间进行通信的媒介。

(3)蚂蚁的集群活动。通过一只蚂蚁的运动很难达到事物源,但整个蚁群进行

搜索就完全不同。当某些路径上通过的蚂蚁越来越多时,路径上留下的信息素数

量也就越多,导致信息素强度增大,蚂蚁选择该路径的概率随之增加,从而进一

步增加该路径的信息素强度,而通过的蚂蚁比较少的路径上的信息素会随着时间

的推移而挥发,从而变得越来越少。3.3.1蚂蚁系统

蚂蚁系统是最早的蚁群算法。其搜索过程大致如下:

m

只蚂蚁随机放置于城市中,在初始时刻,各条路径上的信息素初始值相等,

设为:

ij

(0)

0

为信息素初始值,可设

0

mL

m

L

m

是由最近邻启发式方法构

造的路径长度。其次,蚂蚁

k(k1,2,

..

m)

,按照随机比例规则选择下一步要转

...

移的城市,其选择概率为:

[

ij

(t)]

[

ij

(t)]

,jallowed

k

[

is

(t)]

[

is

(t)]

k

p

ij

(t)

sallowed

k

0,否则

其中,

ij

为边

(i,j)

上的信息素,

ij

1d

ij

为从城市

i

转移到城市

j

的启发式

因子,

allowed

k

为蚂蚁

k

下一步被允许访问的城市集合。

为了不让蚂蚁选择已经访问过的城市,采用禁忌表

tabu

k

来记录蚂蚁

k

当前

所走过的城市。经过

t

时刻,所有蚂蚁都完成一次周游,计算每只蚂蚁所走过的

路径长度,并保存最短的路径长度,同时,更新各边上的信息素。首先是信息素

挥发,其次是蚂蚁在它们所经过的边上释放信息素,其公式如下:

ij

(1

)

ij

,其中

为信息素挥发系数,且

0

1

k

k

ij

ij

ij

,其中

ij

是第

k

只蚂蚁向它经过的边释放的信息素,定义

k1

m

k

1d

ij

,如果边(i,j)在路径T上

为:

(3.2)

0,否则

k

ij

根据(3.2)可知,蚂蚁构建的路径长度

d

ij

越小,则路径上各条边就会获得

更多的信息素,则在以后的迭代中就更有可能被其他的蚂蚁选择。

蚂蚁完成一次循环后,清空禁忌表,重新回到初始城市,准备下一次周游。

大量的仿真实验发现,蚂蚁系统在解决小规模TSP问题时性能尚可,能较快

的发现最优解,但随着测试问题规模的扩大,AS算法的性能下降的比较严重,

容易出现停滞现象。因此,出现了大量的针对其缺点的改进算法。

3.3.2精英蚂蚁系统

精英蚂蚁系统

[11]

是对基本AS算法的第一次改进,它首先由Dorigo等人中提

出,它的设计思想是对算法每次循环之后给予最优路径额外的信息素量。找出这

个解的蚂蚁称为精英蚂蚁。

将这条最优路径记为

T

bs

(best-so-far tour)。针对路径

T

bs

的额外强化是

通过向

T

bs

中的每一条边增加

e/L

bs

大小的信息素得到的,其中e是一个参数,它

定义了给予路径

T

bs

的权值大小,

L

bs

代表了

T

bs

的长度。这样相应的信息素的更

新公式如式(3.3):

kbs

ij

(t1)(1

)

ij

(t)

ij

(t)e

ij

(t)

(3.3)

k1

m

k

bs

其中,

ij

(t)

的定义方法跟以前的相同,

ij

(t)

的定义则如式(3.4)

..