一.背景
20世纪90年代,意大利学者M.Dorigo,V.Maniezzo,A.Colorni等从生物进化的机制中受到启发,通过穆尼自然界蚂蚁搜索路径的行为,提出来一种新型的模拟进化算法——蚁群算法,在1991年ECAL上发表“Distributed optimization by ant colonies”,在其提出之后近五年中并没有在国际学术界引起广泛的关注。1996年,Dorigo M等在《IEEE Transaction on Systems,Man,and Cybernetics-Part B》上发表了“Ant system:optimization by a colony of cooperating agents”一文,在这篇文章中,Dorigo M不仅更加系统地阐述了蚁群算法的基本原理和数学模型,还将其与遗传算法、禁忌搜索算法、模拟退火算法、爬山法等等进行了仿真实验比较,并把单纯地解决对称TSP拓展到解决非对称TSP、指派问题(Quadratic scheduling problem,QAP)以及车间作业调度问题(job-shop scheduling problem,JSP),并且对蚁群算法中初始化参数对其性能影响做了初步的探讨,这是蚁群算法发展史上的又一篇奠定性文章。虽然研究时间不长,但是现在的研究显示出,蚁群算法在求解复杂优化问题上,尤其是离散优化问题上有一定的优势,表明它是有一种发展前景的算法。这种方法能够被用作解决大多数优化问题或者能够转化为优化求解的问题。现在起应用领域已经扩展到多目标优化、数据分类、数据聚类、模式识别、电信管理、生物系统建模,流程规划、信号处理、机器人控制、决策支持以及仿真和系统辨识等方面,群智能理论和方法为解决这类应用问题提供了新的途径。
二.蚁群算法简介
群智能理论研究领域有两种主要的算法:蚁群算法(Ant Colony Optimization, ACO)和微粒群算法(Particle Swarm Optimization, PSO)。前者是对蚂蚁群落食物采集过程的模拟,已成功应用于许多离散优化问题。微粒群算法也是起源于对简单社会系统的模拟,最初是模拟鸟群觅食的过程,但后来发现它是一种很好的优化工具。与大多数基于梯度的应用优化算法不同,群智能依靠的是概率搜索算法。这种概率搜索算法与传统梯度下降算法还是有些显著的优势,主要表现为以下方面:
- 无集中控制约束,不会因个别个体的故障影响整个问题的求解,确保了系统具备更强的鲁棒性;
- 以非直接的信息交流方式确保了系统的扩展性;
- 对问题定义的连续性无特殊要求
- 算法的实现相对较为简单
最初提出的AS有三种版本:Ant-density、Ant-quantity和Ant-cycle。在Ant-density和Ant-quantity中蚂蚁在两个位置节点间每移动一次后即更新信息素,而在Ant-cycle中当所有的蚂蚁都完成了自己的行程后才对信息素进行更新,而且每个蚂蚁所释放的信息素被表达为反映相应行程质量的函数。通过与其它各种通用的启发式算法相比,在不大于75城市的TSP中,这三种基本算法的求解能力还是比较理想的,但是当问题规模扩展时,AS的解题能力大幅度下降。
故而在其后ACO研究工作主要都集中于AS性能的改进方面中。
策略一:精英算法
这种思想是在算法的开始后即对所有已知发现的最好路径给予额外的增强,并将随后与之对应的行程记为 T g b T^{gb} Tgb(全局最优行程),当信息素更新时刻,对这些行程予以加权处理,同时将经过这些行程的蚂蚁记为“精英”,从而取得较好行程选择机会。所以这种算法可以在一定程度上获得更好的解。但是如果是选择过多的精英则算法会由于较早收敛于局部解从而导致搜索的过早停滞。
策略二:信息素增强模式
为了进一步客服AS中暴露出的问题,提出了蚁群系统(Ant Colony System,ACS)。该系统的提出是以Ant-Q算法为基础的。Ant-Q将蚂蚁算法和一种增强型学习算法Q-learning有机地结合了起来。ACS与AS之间存在三方面的主要差异:首先,ACS采用了行为选择规则;其次,只增强术语全局最优解的路径上的信息素。其中, 0 < ρ < 1 0<\rho<1 0<ρ<1是信息素挥发参数, L g b L^{gb} Lgb是从寻路开始到当前为止全局最优的路径长度。信息素更新公式如下表示:
τ i j ( t + 1 ) = ( 1 − ρ ) ⋅ τ i j ( t ) + ρ ⋅ Δ τ i j g b ( t ) \tau_{ij}(t+1)=(1-\rho)\cdot\tau_{ij}(t)+\rho\cdot\Delta\tau_{ij}^{gb}(t) τij(t+1)=(1−ρ)⋅τij(t)+ρ⋅Δτijgb(t)
其中
Δ
τ
i
j
g
b
(
t
)
=
1
L
g
b
\Delta\tau_{ij}^{gb}(t)=\frac{1}{L^{gb}}
Δτijgb(t)=Lgb1
再次,还引入了负反馈机制,每当一只蚂蚁由一个节点移动到另一个节点时,该路径上的信息素都按照如下公式被相应的消除一部分,从而实现一种信息素的局部调整,以减小已选择过的路径再次被选择的概率。
τ
i
j
=
(
1
−
ξ
)
⋅
τ
i
j
+
ξ
⋅
τ
0
\tau_{ij}=(1-\xi)\cdot\tau_{ij}+\xi\cdot\tau_{0}
τij=(1−ξ)⋅τij+ξ⋅τ0
其中 0 < ξ < 1 0<\xi<1 0<ξ<1
策略三:Rank-based Version AS
与“精英策略”相似,在此算法中总是更新更好进程上的信息素,选择的标准是其行程长度
L
1
(
t
)
≤
L
2
(
t
)
≤
.
.
.
≤
L
m
(
t
)
L^{1}(t)\leq L^{2}(t)\leq ... \leq L^{m}(t)
L1(t)≤L2(t)≤...≤Lm(t)决定的排序,且每个蚂蚁释放信息的强度通过以下公式中的排序加权处理确定,其中
w
w
w为每次迭代后放置信息素的蚂蚁总数。
τ
i
j
(
t
+
1
)
=
(
1
−
ρ
)
⋅
τ
i
j
(
t
)
+
∑
r
=
1
w
(
w
−
r
)
⋅
Δ
τ
i
j
r
(
t
)
+
w
⋅
Δ
τ
i
j
g
b
(
t
)
\tau_{ij}(t+1)=(1-\rho)\cdot\tau_{ij}(t)+\sum_{r=1}^{w}(w-r)\cdot\Delta\tau_{ij}^{r}(t)+w\cdot\Delta\tau_{ij}^{gb}(t)
τij(t+1)=(1−ρ)⋅τij(t)+∑r=1w(w−r)⋅Δτijr(t)+w⋅Δτijgb(t)
其中 Δ τ i j r ( t ) = 1 L r \Delta\tau_{ij}^{r}(t)=\frac{1}{L^{r}} Δτijr(t)=Lr1, Δ τ i j g b ( t ) = 1 L g b \Delta\tau_{ij}^{gb}(t)=\frac{1}{L^{gb}} Δτijgb(t)=Lgb1
这种算法求解TSP的能力与AS、精英策略AS、遗传算法GA和模拟退火算法进行了比较。在大型TSP问题中(最多包含132座城市),基于AS的算法都显示出了
优于GA和SA的特性。而且在Rank-based AS和精英策略AS均优于基本AS的同时,前者还获得了比精英策略AS更好的解。
三.蚁群算法与TSP问题求解
TSP问题描述如下:
一个N个城市的有向图
G
=
(
N
,
A
)
G=(N,A)
G=(N,A)
其中
N
=
{
1
,
2
,
.
.
.
,
N
}
N=\{1,2,...,N\}
N={1,2,...,N},
A
=
{
(
i
,
j
)
∣
i
,
j
∈
N
}
A=\{(i,j)|i,j\in N\}
A={(i,j)∣i,j∈N}
城市之间的距离为一个
N
×
N
N\times N
N×N的矩阵
(
d
i
j
)
n
×
n
(d_{ij})_{n\times n}
(dij)n×n
目标函数为
f
(
w
)
=
∑
l
=
1
n
d
i
l
−
1
i
l
f(w)=\sum_{l=1}^{n}d_{i_{l-1}i_{l}}
f(w)=∑l=1ndil−1il
其中
w
w
w为城市
1
,
2
,
.
.
.
,
n
1,2,...,n
1,2,...,n的一个排列
w
=
(
i
1
,
i
2
,
.
.
.
,
i
n
)
w=(i_{1},i_{2},...,i_{n})
w=(i1,i2,...,in),
i
n
+
1
=
i
1
i_{n+1}=i_{1}
in+1=i1
TSP问题的蚁群算法中,假设m只蚂蚁在图中的相邻节点间移动,从而协作异步地得到问题的解。每只蚂蚁的一步转移概率由图中的每一条边上的两类参数决定:
- 信息素值,也叫作信息素痕迹
- 可见度,即先验值
信息素的更新方式有两种方法,一种是挥发,即路径上的信息素以一定的比率进行减少,模拟自然蚁群的信息素随时间挥发的过程;二是增强,给评价“好”(由蚂蚁走过)的变增加信息素。
蚂蚁的下一步目标运动点是通过一个随机原则来实现的,也就是运用当前所在节点存储的信息,计算出下一步可以达到节点的概率,并按此概率实现一步移动,逐此往复,这样会越来越接近最优解。
蚂蚁在寻找过程中,或者找到一个解之后,会评估该解或解的一部分的优化程度,并把评价信息保存在相关连接的信息素中。
(未完待续)