当前位置:   article > 正文

基于黏菌算法的函数寻优算法

黏菌算法

一、理论基础

1、黏菌算法

黏菌算法(Slime Mould Algorithm, SMA)是根据黏菌的规食行为得到的一种优化算法。黏菌在规食过程中发现食物时,会有振荡收缩的特性。同时,在多个食物源之间会形成粗细不一的静脉网络,并且静脉网络的粗细与食物源的质量有关。此外,黏菌在获取食物源时,仍会有一定的概率对未知区域进行搜索。
黏菌主要有三种行为:接近食物、包裹食物和获取食物。

(1)接近食物

为了将黏菌的趋近行为建模为一个数学方程,提出了以下规则来模拟黏菌的收缩模式: X ( t + 1 ) = { X b ( t ) + v b × ( W × X A ( t ) − X B ( t ) ) , r < p v c × X ( t ) ,       r ≥ p (1) X(t+1)=

\begin{dcases}X_b(t)+vb×(W×X_A(t)-X_B(t)),r<p\\vc×X(t),\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\,\,\,\,r≥p\end{dcases}
\tag{1} X(t+1)={Xb(t)+vb×(W×XA(t)XB(t)),r<pvc×X(t),rp(1)其中, v b vb vb [ − a , a ] [-a,a] [a,a]之间的随机数, v c vc vc是在 [ − 1 , 1 ] [-1,1] [1,1]之间振荡并最终趋于零的参数, t t t为当前迭代次数, X b ( t ) X_b(t) Xb(t)表示目前适应度最优的个体位置, X ( t ) X(t) X(t)表示当前黏菌个体的位置, X A ( t ) X_A(t) XA(t) X B ( t ) X_B(t) XB(t)为两个随机个体位置, W W W表示黏菌的权重系数。
控制参数 p p p、参数 v b vb vb、参数 a a a与权重系数 W W W的更新公式如下: p = tanh ⁡ ∣ S ( i ) − D F ∣ (2) p=\tanh|S(i)-DF|\tag{2} p=tanhS(i)DF(2)其中, i ∈ 1 , 2 , ⋯   , n i\in1,2,\cdots,n i1,2,,n S ( i ) S(i) S(i)表示第 i i i个黏菌个体的适应度值, D F DF DF为当前取得的最优适应度值。 v b = [ − a , a ] (3) vb=[-a,a]\tag{3} vb=[a,a](3) a = arctanh ( − ( t T ) + 1 ) (4) a=\text{arctanh}(-\left(\frac tT\right)+1)\tag{4} a=arctanh((Tt)+1)(4) 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 (5) W(SmellIndex(i))=
\begin{dcases}1+r\cdot log\left(\frac{bF-S(i)}{bF-wF}+1\right),\quad condition\\1-r\cdot log\left(\frac{bF-S(i)}{bF-wF}+1\right),\quad others\end{dcases}
\tag{5}
W(SmellIndex(i))=1+rlog(bFwFbFS(i)+1),condition1rlog(bFwFbFS(i)+1),others(5)
S m e l l I n d e x = s o r t ( S ) (6) SmellIndex=sort(S)\tag{6} SmellIndex=sort(S)(6)其中, c o n d i t i o n condition condition表示种群中适应度排在前一半个体, o t h e r s others others表示剩下的个体, r r r表示 [ 0 , 1 ] [0,1] [0,1]之间的随机数, b F bF bF表示当前迭代获取的最佳适应度值, w F wF wF表示当前迭代最差适应度值。 S m e l l I n d e x ( i ) SmellIndex(i) SmellIndex(i)为适应度值序列(求极小值问题为递增序列)。

(2)包裹食物

黏菌个体的位置更新公式如下: X ( t + 1 ) = { 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 (7) X(t+1)=

\begin{dcases}rand\cdot(UB-LB)+LB,\quad\quad \quad \quad \,rand<z\\X_b(t)+vb×(W×X_A(t)-X_B(t)),r<p\\vc×X(t),\quad \quad\quad \quad \quad\quad \quad\quad \quad \quad \,\,\,\,\,r≥p\end{dcases}
\tag{7} X(t+1)=rand(UBLB)+LB,rand<zXb(t)+vb×(W×XA(t)XB(t)),r<pvc×X(t),rp(7)其中, U B UB UB L B LB LB为上下界, r a n d rand rand为均匀分布在0到1之间的随机数, z z z为自定义参数(值为0.03)。

(3)获取食物

v b vb vb的值在 [ − a , a ] [-a,a] [a,a]之间随机振荡,并且随着迭代次数的增加逐渐接近零。 v c vc vc的值在 [ − 1 , 1 ] [-1,1] [1,1]之间振荡,最终趋于零,计算公式如下: v c = [ − b , b ] (8) vc=[-b,b]\tag{8} vc=[b,b](8) b = 1 − t / T (9) b=1-t/T\tag{9} b=1t/T(9) v b vb vb v c vc vc随迭代次数的变化情况如图1所示, v b vb vb v c vc vc之间的协同作用模拟了黏菌的选择行为。
在这里插入图片描述

图1 vb和vc的变化情况

2、SMA算法伪代码

在这里插入图片描述

图2 SMA算法伪代码

二、仿真实验与分析

将SMA算法与GWO、SCA和WOA算法进行对比,以文献[1]中30维的F1~F5为例。种群规模设置为 N = 30 N=30 N=30,最大迭代次数 T = 1000 T=1000 T=1000,每个算法独立运算30次。
结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
GWO:best: 0,worst:0,mean:0,std:0
SCA:best: 1.2074e-07,worst:0.78621,mean:0.064539,std:0.18886
WOA:best: 7.9181e-169,worst:3.2697e-149,mean:1.148e-150,std:5.9669e-150
SMA:best: 0,worst:0,mean:0,std:0
函数:F2
GWO:best: 2.0369e-315,worst:1.2641e-189,mean:4.2135e-191,std:0
SCA:best: 9.6861e-08,worst:7.9582e-05,mean:9.8167e-06,std:1.5905e-05
WOA:best: 9.0857e-114,worst:6.2747e-104,mean:4.2066e-105,std:1.3224e-104
SMA:best: 0,worst:1.4897e-193,mean:4.9658e-195,std:0
函数:F3
GWO:best: 0,worst:0,mean:0,std:0
SCA:best: 28.0204,worst:12658.1217,mean:3151.4432,std:2934.3648
WOA:best: 754.6686,worst:42890.8096,mean:22061.4708,std:11158.2669
SMA:best: 0,worst:0,mean:0,std:0
函数:F4
GWO:best: 0,worst:3.2301e-181,mean:1.0767e-182,std:0
SCA:best: 1.479,worst:45.1446,mean:17.743,std:11.2051
WOA:best: 0.50087,worst:88.8509,mean:45.5944,std:30.4244
SMA:best: 0,worst:1.0959e-180,mean:3.6529e-182,std:0
函数:F5
GWO:best: 0.002612,worst:27.6362,mean:5.7737,std:10.8871
SCA:best: 28.0899,worst:3588.5641,mean:261.7717,std:718.9743
WOA:best: 26.5473,worst:28.5326,mean:27.1689,std:0.46015
SMA:best: 0.0010161,worst:27.287,mean:5.6596,std:10.9604
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

结果表明,SMA算法具有良好的鲁棒性以及寻优精度。

三、参考文献

[1] Shimin Li, Huiling Chen, Mingjing Wang, et al. Slime mould algorithm: A new method for stochastic optimization[J]. Future Generation Computer Systems, 2020, 111: 300-323.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/454502
推荐阅读
相关标签
  

闽ICP备14008679号