21世纪,人类社会已经全面迅速迈入以人工智能为引擎的智能时代。在科学研究、工程设计、经济管理、国防建设、社会生活等领域都面临着大量需要优化求解的复杂问题。
对于这些日益复杂化的优化问题建立精确的数学模型往往比较困难,因而使得基于精确模型的传统优化算法陷入了极大的困境。然而,人们从自然界的多种生物、昆虫、动物、植物等的生存、繁衍过程以及自然现象、水循环、生态平衡等过程中,发现了其中蕴含着大量的信息处理的优化机制和机理。于是人们从模拟这些优化机制、优化机理出发,提出了数以百计的不依赖被优化问题数学模型的优化算法,它们被称为元启发式算法、仿生计算、自然计算、智能计算等。这些优化算法中有些算法在一定程度上模拟了人的智能;有些算法模拟自然界中某些动物、植物生存行为的适应性、灵性、“智慧性”,因此可以统称为智能优化算法。
以遗传算法为开端的智能优化算法为解决缺乏精确数学模型的复杂优化问题开辟了新途径,尤其是以模拟蚁群觅食行为的蚁群优化算法和模拟鸟类飞行觅食行为的粒子群优化算法为代表的群智能优化算法的提出,极大地推动了智能优化算法开发的速度、深度和广度。随着人工智能技术的快速进步,必将催生智能优化技术和智能优化算法的进一步发展,为解决复杂系统的优化问题提供更广阔的途径及强有力的工具。
本文以群智能优化算法为主题,例举数个极具代表性的相关算法。其中包括了模拟自然界微生物、群居昆虫、动物群体觅食、繁殖行为,以及动物群体的捕猎策略等对问题求解的优化算法。
同时也会简单说明一下目前群智能优化算法的研究状况,看看群智能优化算法是怎么从动物身上获取经验的,又是怎么从一个蚁群逐渐发展壮大成一个动物园。
蚁群优化(Ant Colony Optimization,ACO)算法是 1991 年由意大利 M.Dorigo 博士等提出的一种群智能优化算法,它模拟蚁群能从蚁巢到食物源找到一条最短路径的觅食行为,并成功用于求解组合优化的 TSP 问题。后来,一些研究者把它改进应用于连续优化问题。
2008年,Dorigo等又提出了一种求解连续空间优化问题的扩展蚁群优化(Extension of Ant Colony Optimization,ACOr)算法,通过引入解存储器作为信息素模型,使用了连续概率分布取代 ACO 算法中离散概率分布,将基本蚁群算法的离散概率选择方式连续化,从而将其拓展到求解连续空间优化问题。
蚂蚁的觅食行为实质上是一种通过简单个体的自组织行为所体现出来的一种群体行为,具有以下两个重要特征。
ACO符号定义如下:
Note | Meaning | postscript |
---|---|---|
m | 蚂蚁数目 | |
b i ( t ) b_i(t) bi(t) | t t t 时刻位于城市 i i i 的蚂蚁个数 | m = ∑ i = 1 n b i ( t ) m= \sum_{i=1}^{n}b_i(t) m=∑i=1nbi(t) |
d i j d_{ij} dij | 城市 i i i 和 j j j 的距离 | |
η i j \eta_{ij} ηij | 路径 ( i , j ) (i,j) (i,j)的能见度,反映由城市 i i i 转移到 j j j 的启发程度 | η i , j = 1 d i , j \eta_{i,j}=\frac{1}{d_{i,j}} ηi,j=di,j1 |
τ i j \tau_{ij} τij | 路径 ( i , j ) (i,j) (i,j)间的信息素强度 | |
△ i j \triangle ij △ij | 蚂蚁 k k k 在 ( i , j ) (i,j) (i,j)路径上单位长度留下的信息素量 | |
p i j k p^k_{ij} pijk | 蚂蚁 k k k 从 i → j i\rightarrow j i→j 转移的概率, j j j 是尚未访问的城市 |
蚂蚁的动作规定:
受信息素启发选择路径采用随机比例规则,在
t
t
t 时刻,蚂蚁
k
k
k 在城市
i
i
i ,选择城市
j
j
j 的转移概率
p
i
j
k
(
t
)
p^k_{ij}(t)
pijk(t)为:
p
i
j
k
(
t
)
=
{
τ
i
j
α
(
t
)
⋅
η
i
j
β
(
t
)
∑
s
∈
a
l
l
o
w
e
d
k
τ
i
s
α
(
t
)
⋅
η
i
s
β
(
t
)
j
∈
a
l
l
o
w
e
d
k
0
o
t
h
e
r
w
i
s
e
p^k_{ij}(t) =
经过 n 时刻,蚂蚁完成一次循环,各路径上信息素调整为:
♣
τ
i
j
(
t
+
1
)
=
ρ
⋅
τ
i
j
(
t
)
+
△
τ
i
j
(
t
,
t
+
1
)
△
τ
i
j
(
t
,
t
+
1
)
=
∑
k
=
1
m
△
τ
i
j
k
(
t
,
t
+
1
)
\clubsuit \quad \tau_{ij}(t+1)=\rho \cdot \tau_{ij}(t)+\triangle \tau_{ij}(t,t+1) \\ \triangle \tau_{ij}(t,t+1)=\sum_{k=1}^{m} \triangle \tau_{ij}^k(t,t+1)
♣τij(t+1)=ρ⋅τij(t)+△τij(t,t+1)△τij(t,t+1)=k=1∑m△τijk(t,t+1)
△
τ
i
j
k
(
t
,
t
+
1
)
\triangle \tau_{ij}^k(t,t+1)
△τijk(t,t+1) 是第
k
k
k 只蚂蚁在
(
t
,
t
+
1
)
(t,t+1)
(t,t+1) 时刻留在路径
(
i
,
j
)
(i,j)
(i,j) 上的信息素量
△
τ
i
j
(
t
,
t
+
1
)
\triangle \tau_{ij}(t,t+1)
△τij(t,t+1) 为本次循环路径
(
i
,
j
)
(i,j)
(i,j) 的信息素量的增量
ρ
\rho
ρ 为路径上信息素的挥发系数 (通常取
ρ
<
1
\rho<1
ρ<1 )。
根据 △ τ i j , △ τ i j k \triangle \tau_{ij},\triangle \tau_{ij}^k △τij,△τijk 及 p i j k ( t ) p^k_{ij}(t) pijk(t) 的表达形式的不同,Dorigo 定义了以下3种不同的蚂蚁系统模型。
系统名称 | 表达方式 |
---|---|
蚁密系统 (Ant Density System) |
△
τ
i
j
k
(
t
,
t
+
1
)
=
{
Q
第
k
只蚂蚁在
(
t
,
t
+
1
)
间经过路径
(
i
,
j
)
0
o
t
h
e
r
w
i
s
e
\triangle \tau_{ij}^k(t,t+1) = |
蚁量系统 (Ant Quantity System) |
△
τ
i
j
k
(
t
,
t
+
1
)
=
{
Q
d
i
j
第
k
只蚂蚁在
(
t
,
t
+
1
)
间经过路径
(
i
,
j
)
0
o
t
h
e
r
w
i
s
e
\triangle \tau_{ij}^k(t,t+1) = |
蚁周系统 (Ant Cycle System) |
△
τ
i
j
k
(
t
,
t
+
n
)
=
{
Q
L
k
蚂蚁
k
经过
n
步路径
(
i
,
j
)
0
o
t
h
e
r
w
i
s
e
\triangle \tau_{ij}^k(t,t+n) = |
粒子群优化(Particle Swarm Optimization,PSO)算法是在1995 年由美国社会心理学家 Kennedy 和电气工程师 Eberhart 共同提出的,又称为粒群算法、微粒群算法。
最初PSO算法模拟鸟群捕食的群体智能行为,它是以研究连续变量最优化问题为背景提出的。虽然PSO算法是针对连续优化问题而提出的,但通过二进制编码可以得到离散变量的PSO形式。因此,它也可以用于离散系统的组合优化问题求解,如用于求解 TSP 问题等。PSO还可以用于求解多目标优化、带约束优化、多峰函数优化、聚类、调度与规划、控制器参数优化等问题。
PSO 利用生物学家 Heppner 的生物群体模型,模拟鸟类觅食等群体智能行为的进化算法。鸟类在飞行过程中是相互影响的,当一只鸟飞离鸟群而飞向栖息地时,将影响其他鸟也飞向栖息地。鸟类寻找栖息地的过程与对一个特定问题寻找解的过程相似。鸟的个体要与周围同类比较,模仿优秀个体的行为,因此可利用其解决优化问题,而人类的决策过程使用了两种重要的知识:一类是自己的经验;二是他人的经验。这样有助于提高决策的科学性。
PSO 设每个优化问题的解是搜索空间中的一只鸟,把鸟视为空间中的一个没有重量和体积的理想化“质点”,称为“粒子”或“微粒”,每个粒子都有一个由被优化函数所决定的适应度值,还有一个速度决定它们的飞行方向和距离。然后粒子通过追随当前的最优粒子在解空间中搜索最优解。
在 n n n 维搜索空间中,PSO的变量如下表所示
Note | Meaning |
---|---|
X i = ( x i 1 , x i 2 , . . . , x i n ) X_i=(x_{i1},x_{i2},...,x_{in}) Xi=(xi1,xi2,...,xin) | 粒子群的当前位置 |
V i = ( v i 1 , v i 2 , . . . , v i n ) V_i=(v_{i1},v_{i2},...,v_{in}) Vi=(vi1,vi2,...,vin) | 粒子群的当前飞行速度 |
P i = ( p i 1 , p i 2 , . . . , p i n ) P_i=(p_{i1},p_{i2},...,p_{in}) Pi=(pi1,pi2,...,pin) | 粒子群所经历的最好位置 |
C 1 , C 2 C_1,C_2 C1,C2 | 加速度常数 |
r 1 j , r 2 j r_{1j},r_{2j} r1j,r2j | 两个相互独立的随机数 |
P g ( t ) P_g(t) Pg(t) | 全局最好粒子的位置 |
对于最小化问题,若
f
(
X
)
f(X)
f(X) 为最小化的目标函数,则微粒
i
i
i 的当前最好位置由下式确定
P
i
(
t
+
1
)
=
{
P
i
(
t
)
f
(
X
i
(
t
+
1
)
)
≥
f
(
P
i
(
t
)
)
X
i
(
t
+
1
)
f
(
X
i
(
t
+
1
)
)
<
f
(
P
i
(
t
)
)
P_i(t+1) =
萤火虫群优化(Glowworm Swarm Optimization,GSO)算法是 2005 年由印度学者 Krishnanand 和 Ghose 在研究改进蚁群算法求解连续型最优化问题时提出的,并将其成功用于机器人群体协作。
该算法思想来源于萤火虫求偶行为中荧光素越高,吸引力越强的生物习性。他们对萤火虫群优化算法的动态决策做了改进,提出将萤火虫群优化算法用于多个移动信号源的追踪、多极值函数优化,并对该算法的收敛性理论做了研究。
萤火虫通过闪光吸引异性求偶和猎取食物。萤火虫发的光越亮越绚丽,越能吸引同伴行为或食物。此外,闪烁也可以作为一个保护预警机制。有节奏的闪光,闪烁的速率与时间成为了吸引异性的信号。
设有 D D D 维目标搜索空间,GSO变量如下
Note | Meaning |
---|---|
l i ( t ) l_i(t) li(t) | t t t 代第 i i i 只萤火虫携带的荧光素值 |
x i ( t ) x_i(t) xi(t) | t t t 代第 i i i 只萤火虫的位置 |
J ( x ) J(x) J(x) | 计算当前位置的荧光素值函数 |
N i ( t ) N_i(t) Ni(t) | 第 i i i 只萤火虫的邻域集合 |
n t n_t nt | 控制邻域范围内邻居萤火虫个数的参数 |
r
d
i
(
0
<
r
d
i
<
r
s
)
r_d^i(0 | 第 i i i 只萤火虫的决策域, r s r_s rs为最大感知半径 |
ρ \rho ρ | 控制荧光素值的参数 |
γ \gamma γ | 荧光素更新率 |
s s s | 移动步长 |
GSO 算法每一次迭代都由两个阶段组成:第一阶段是荧光素更新阶段;第二阶段是萤火虫的运动阶段。其具体算法包括萤火虫的初始分布、荧光素更新、路径选择、位置更新和决策域更新。
荧光素更新:
l
i
(
t
)
=
(
1
−
ρ
)
l
i
(
t
−
1
)
+
γ
J
(
x
i
(
t
)
)
l_i(t)=(1-\rho)l_i(t-1)+\gamma J(x_i(t))
li(t)=(1−ρ)li(t−1)+γJ(xi(t))
每个个体在其动态决策域半径
r
d
i
r_d^i
rdi 之内,选择荧光素值比自己高的个体组成其邻域集
N
i
(
t
)
=
j
:
d
i
j
(
t
)
<
d
d
i
(
t
)
;
l
i
(
t
)
<
l
j
(
t
)
N_i(t)={j:d_{ij}(t)
决策域更新:
r
d
i
(
t
+
1
)
=
min
{
r
s
,
max
{
0
,
r
d
i
(
t
)
+
β
(
n
t
−
∣
N
i
(
t
)
∣
)
}
}
r_d^i(t+1)=\min \{ r_s,\max\{ 0,r_d^i(t)+\beta(n_t-|N_i(t)|)\}\}
rdi(t+1)=min{rs,max{0,rdi(t)+β(nt−∣Ni(t)∣)}}
萤火虫群优化算法的实现步骤如下:
模拟动物群体(或个体)的觅食、繁殖、猎等行为的群智能优化算法在智能优化算法中占有很大篇幅。这不仅因为自然界的动物种类繁多,而且还因为各类动物的习性、生存行为各异有的生存在地下巢穴中,有的在地上爬,有的在空中飞,有的在水中游;有小到人眼无法看见的病毒,也有重达几吨的庞然大物等。
人们通过观察不同的动物,设计了非常多的群智能优化算法,截至目前,大约有数百种从动物身上汲取经验思想的算法,更多有趣的算法思想也在不断涌现。本文篇幅有限,加之作者对文献的搜集精力有限,这里罗列了数篇相关的群智能算法链接,有兴趣的小伙伴可以下载看看。