智能优化算法:黏菌优化算法
摘要:黏菌优化算法(Slime mould algorithm,SMA)由 Li等于 2020 年提出,其灵感来自于黏菌的扩散和觅食行为,属于元启发算法。具有收敛速度快,寻优能力强的特点。
1.算法原理
该算法主要模拟了黏菌在觅食过程中的行为和形态变化,而未对其完整生命周期进行建模。通过权值指标模拟黏菌静脉状管的形态变化和收缩模式之间的三种相关性。
黏菌觅食过程,首先根据空气中气味接近食物,食物浓度越高,生物振荡器波越强,细胞质流动越快,黏菌静脉状管越粗。通过函数表达模拟该其逼近行为,其位置更新公式如下:
X
n
e
w
=
{
r
a
n
d
.
(
U
B
−
L
B
)
+
L
B
,
r
a
n
d
<
z
X
b
(
t
)
+
v
b
.
(
W
.
X
A
(
t
)
−
X
B
(
t
)
)
,
r
<
p
v
c
.
X
(
t
)
,
r
≥
p
(1)
X_{new}=\begin{cases} rand.(UB-LB)+LB,rand<z \\ X_b(t)+vb.(W.X_A(t)-X_B(t)),r<p\\ vc.X(t),r\geq p \end{cases}\tag{1}
Xnew=⎩⎪⎨⎪⎧rand.(UB−LB)+LB,rand<zXb(t)+vb.(W.XA(t)−XB(t)),r<pvc.X(t),r≥p(1)
p = t a n h ∣ S ( i ) − D F ∣ (2) p=tanh|S(i)-DF| \tag{2} p=tanh∣S(i)−DF∣(2)
其中
L
B
LB
LB 与
U
B
UB
UB 表示搜索范围的上下边界,
v
b
vb
vb的参数
取值范围是
[
−
a
,
a
]
[-a,a]
[−a,a],
v
c
vc
vc 从1线性减少至0.
t
t
t 表示当前迭代,
X
b
X_b
Xb表示当前发现食物气味浓度最高位置,
X
X
X 表示黏菌当前位置,
X
A
X_A
XA 和
X
B
X_B
XB表示随机选取的两个黏菌位置,
W
W
W表示黏菌重量,
S
(
i
)
S(i)
S(i)表示
X
X
X 的适应度,而
D
F
DF
DF 表示所有迭代中的最佳适应度。其中,参数
a
a
a 的函数函数表达为:
a
=
a
r
c
t
a
n
h
(
−
1
m
a
x
T
+
1
)
(3)
a = arctanh(-\frac{1}{maxT}+1)\tag{3}
a=arctanh(−maxT1+1)(3)
其中,
m
a
x
T
maxT
maxT表示最大迭代次数。而
W
W
W的表达式为:
W
(
S
m
e
l
l
I
n
d
e
x
(
i
)
)
=
{
1
+
r
.
l
o
g
(
b
F
−
S
(
i
)
b
F
−
w
F
+
1
)
,
c
o
n
d
i
t
i
o
n
1
−
r
.
l
o
g
(
b
F
−
S
(
i
)
b
F
−
w
F
+
1
)
,
o
t
h
e
r
s
(4)
W(SmellIndex(i)) = \begin{cases} 1+r.log(\frac{bF-S(i)}{bF-wF}+1),condition\\ 1-r.log(\frac{bF-S(i)}{bF-wF}+1),others \end{cases}\tag{4}
W(SmellIndex(i))={1+r.log(bF−wFbF−S(i)+1),condition1−r.log(bF−wFbF−S(i)+1),others(4)
s m e l l I n d e x = s o r t ( S ) (5) smellIndex =sort(S)\tag{5} smellIndex=sort(S)(5)
其中 c o n d i t i o n condition condition表示 S ( i ) S(i) S(i)排在前一半的种群, r r r表示[0,1]区间内的随机值, b F bF bF表示在当前迭代过程中获得的最优适应度, w F wF wF,表示当前迭代过程中得到的最差适应度值, s m e l l I n d e x smellIndex smellIndex表示适应度序列(最小值问题中为递增序列)
公式(1)表示的黏菌逼近食物行为,搜索黏菌个体位置 X 可以根据目前获得的 X B X_B XB最佳位置进行更新,同时 v b vb vb 、 v c vc vc 和 W W W参数的微调可以改变黏菌位置。黏菌搜索个体在三维空间中的位置变化,可通过 r a n d rand rand函数使个体形成任意角度的搜索向量,此概念同样可扩展至更高维空间.
算法流程:
Step1.初始化种群,设定相应参数。
Step2.计算适应度值,并且排序。
Step3.利用式(1),更新种群位置。
Step4.计算适应度值,并且更新全家最优位置,当前最优位置。
Step5.是否达到结束条件,如果达到则输出最优结果,否则重复执行步骤2-5.
2.实验结果
3.参考文献
[1] Li S, Chen H, Wang M, et al. Slime mould algorithm: A newmethod for stochastic optimization[J]. Future Generation Computer Systems. 2020, 111(1): 300-323.
[1]高铖铖,陈锡程,张瑞,宋秋月,易东,伍亚舟.三种新型智能算法在疫情预警模型中的应用——基于百度搜索指数的COVID-19疫情预警[J/OL].计算机工程与应用:1-11[2021-02-05].http://kns.cnki.net/kcms/detail/11.2127.tp.20210204.1030.002.html.
4.Matlab代码
改进算法matlab代码
名称 | 说明或者参考文献 |
---|---|
精英反向与二次插值改进的黏菌算法(ISMA) | [1]郭雨鑫,刘升,张磊,黄倩.精英反向与二次插值改进的黏菌算法[J/OL].计算机应用研究:1-7[2021-11-10].https://doi.org/10.19734/j.issn.1001-3695.2021.02.0175. |
混沌精英黏菌算法(CESMA) | [1]肖亚宁,孙雪,李三平,姚金言.基于混沌精英黏菌算法的无刷直流电机转速控制[J].科学技术与工程,2021,21(28):12130-12138. |
5.python代码
上述代码见个人资料介绍