智能优化算法:磷虾群算法-附代码
摘要:磷虾群算法(Krill Herd Algorithm,KHA)是 Gandomi 等于2012年提出的一种新型优化算法 。KHA算法具有良好的局部和全局优化性能,可以有效平衡全局搜索和局部开发,避免陷入局部极值。
1.算法原理
KHA 算法是对自然界磷虾群觅食活动的模拟。磷虾群中的每一个磷虾在觅食中都会受到食物和周围磷虾的综合影响,磷虾个体在这种综合作用下向着食物移动。在 KHA 算法中,每个磷虾个体代表解空间(假设为 n 维)内的一个潜在的解,磷虾食物即为算法寻优所需要找到的全局最优解;算法在食物信息和周围磷虾信息的综合引导下,在 n维的解空间内进行迭代并进行磷虾位置更新直至最终输出最优解。
KHA 算法认为,每个磷虾个体
i
i
i 的位置移动由3部分构成,其第
k
k
k 次移动
X
i
(
k
)
X_i(k)
Xi(k)可用如下形式表示:
X
i
(
k
)
=
N
i
(
k
)
+
F
i
(
k
)
+
D
i
(
k
)
(1)
X_i(k)=N_i(k)+F_i(k)+D_i(k)\tag{1}
Xi(k)=Ni(k)+Fi(k)+Di(k)(1)
其中,
N
i
(
k
)
N_i(k)
Ni(k)表示
i
i
i受到其他磷虾个体引导所做出的移动,即引导移动;
F
i
(
k
)
F_i(k)
Fi(k)表示
i
i
i受到食物引导所做出的移动,也即觅食移动;
D
i
(
k
)
D_i(k)
Di(k)表示
i
i
i 的物理随机扩散。
1.1 引导移动
引导移动由目标指引、局部影响以及引导惯性3部分构成,对于磷虾
i
i
i ,其第
k
k
k次引导移动
N
i
(
k
)
N_i(k)
Ni(k)可定义为:
N
i
(
k
)
=
N
m
a
x
a
i
(
k
)
+
w
n
N
i
(
k
−
1
)
(2)
N_i(k)=N_{max}a_i(k)+w_nN_i(k-1)\tag{2}
Ni(k)=Nmaxai(k)+wnNi(k−1)(2)
其中,
N
m
a
x
N_{max}
Nmax为最大引导速度,
N
i
(
k
−
1
)
N_i(k-1)
Ni(k−1)为上一次的引导移动,
w
n
∈
[
0
,
1
]
w_n\in [0,1]
wn∈[0,1]为前后两次引导移动的惯性权重,
a
i
(
k
)
a_i(k)
ai(k)可称之为引导移动源,定义为:
a
i
(
k
)
=
a
i
l
o
c
a
l
(
k
)
+
a
i
t
a
r
g
e
t
(
k
)
(3)
a_i(k)=a_i^{local}(k)+a_i^{target}(k)\tag{3}
ai(k)=ailocal(k)+aitarget(k)(3)
其中前一部分表示由
i
i
i的邻居磷虾产生的局部影响,后一部分表示当前群体中最优磷虾所产生的目标方向的指引。
1.2 觅食移动
觅食移动由食物指引及觅食经验两部分构成,对于磷虾
i
i
i ,其第
k
k
k次觅食移动
F
i
(
k
)
F_i(k)
Fi(k)定义为:
F
i
(
k
)
=
v
f
β
i
(
k
)
+
w
f
F
i
(
k
−
1
)
(4)
F_i(k)=v_f\beta_i(k)+w_fF_i(k-1)\tag{4}
Fi(k)=vfβi(k)+wfFi(k−1)(4)
其中,
v
f
v_f
vf为觅食速度,
F
i
(
k
−
1
)
F_i(k-1)
Fi(k−1)为上一次的觅食移动,
w
f
∈
[
0
,
1
]
w_f \in [0,1]
wf∈[0,1]为前后两次觅食移动的惯性权重,
β
i
(
k
)
\beta_i(k)
βi(k)可称为觅食移动源,可定义为:
β
i
(
k
)
=
β
i
f
o
o
d
(
k
)
+
β
i
b
e
s
t
(
k
)
(5)
\beta_i(k)=\beta_i^{food}(k)+\beta_i^{best}(k)\tag{5}
βi(k)=βifood(k)+βibest(k)(5)
其中前一部分表示食物对
i
i
i的吸引力,后一部分表示从迭代开始到当前时刻里个体
i
i
i所获取的最优适应度对
i
i
i 的吸引力。
1.3 随机扩散
在 KHA 算法中,磷虾群个体的扩散被看作是一个随机过程,可以按照下面的式子给出:
D
i
(
k
)
=
D
m
a
x
δ
i
(
k
)
(6)
D_i(k)=D_{max}\delta_i(k) \tag{6}
Di(k)=Dmaxδi(k)(6)
其中,最大扩散速度用
D
m
a
x
D_{max}
Dmax 表示,
δ
i
(
k
)
\delta_i(k)
δi(k)表示当前的随机方向向量,其每项都是一个位于[-1,1]区间的随机数。
在 KHA 算法中,随着迭代次数的增加,引导移动和觅食移动的影响逐渐减小,磷虾群逐渐移动至最优解,因而磷虾位置越优,其对应的随机扩散也应该逐渐减小。因此在式(6 )中添加一项使得随机扩散部分按迭代线性递减的部分,即
D
i
(
k
)
=
D
m
a
x
(
1
−
k
/
K
)
δ
i
(
k
)
(7)
D_i(k)=D_{max}(1-k/K)\delta_i(k) \tag{7}
Di(k)=Dmax(1−k/K)δi(k)(7)
其中
K
K
K 为最大迭代次数。
算法步骤:
- 种群初始化。
- 计算适应度值
- 3种移动公式更新磷虾位置
- 是否满足终止条件
- 如果满足则输出结果,否则重复2,3,4.
2.算法结果
3.参考文献
[1] Amir Hossein Gandomi, Amir Hossein Alavi. Krill herd: A new bio-inspired optimization algorithm. 2012, 17(12):4831-4845.
[2]牛培峰,陈科,马云鹏,赵庆冲,李国强.基于磷虾群算法的汽轮机热耗率建模应用[J].动力工程学报,2016,36(10):781-787.
4.Matlab代码
个人资料介绍