基于正态过程搜索和差分进化算法的改进樽海鞘群算法

文章目录

一、理论基础

1、樽海鞘群算法

请参考这里

2、改进樽海鞘群算法

(1)算法组成

TTLSSA中一共有5类个体,分别是Ⅰ型领导者、交叉跟随者、Ⅱ型领导者、跟随者和变异者。

<1> Ⅰ型领导者

Ⅰ型领导者需要进行正态过程游走、交叉和选择操作。 X q = X l p + 0.1 ( u b − l b ) ⋅ r a n d n ( 1 , n ) (1) \boldsymbol X^q=\boldsymbol X_l^p+0.1(ub-lb)\cdot randn(1,n)\tag{1} Xq=Xlp​+0.1(ub−lb)⋅randn(1,n)(1)式(1)描述了正态过程游走行为, X l p \boldsymbol X_l^p Xlp​表示第 l l l次迭代时Ⅰ型领导者的位置, n n n是优化问题的维数, r a n d n ( 1 , n ) randn(1,n) randn(1,n)表示生成1行 n n n列、每个元素都满足标准正态分布的向量, X q \boldsymbol X^q Xq表示过渡向量。
因为I型领导者在产生过渡向量时,每一维的增量都服从正态分布,所以该过程被称为正态过程搜索。 X r ( i ) = { X p ( i ) , r a n d > C R X q ( i ) , r a n d ≤ C R (2) \boldsymbol X^r(i)=\begin{dcases}\boldsymbol X^p(i),\quad rand>CR\\\boldsymbol X^q(i),\quad rand≤CR\end{dcases}\tag{2} Xr(i)={Xp(i),rand>CRXq(i),rand≤CR​(2)式(2)描述了交叉过程。其中, X r ( i ) \boldsymbol X^r(i) Xr(i)表示Ⅰ型领导者与过渡向量交叉后第 i i i维的值; r a n d rand rand表示生成0到1之间的随机数; C R CR CR表示交叉概率,交叉概率一般小于0.5,以确保大部分信息不被置换。 X l + 1 p = { X l p , f ( X l p ) ≤ f ( X r ) X r , f ( X l p ) > f ( X r ) (3) \boldsymbol X^p_{l+1}=\begin{dcases}\boldsymbol X_l^p,\quad f(\boldsymbol X_l^p)≤f(\boldsymbol X^r)\\\boldsymbol X^r,\quad f(\boldsymbol X_l^p)>f(\boldsymbol X^r)\end{dcases}\tag{3} Xl+1p​={Xlp​,f(Xlp​)≤f(Xr)Xr,f(Xlp​)>f(Xr)​(3)式(3)描述了选择操作。 X l + 1 p \boldsymbol X_{l+1}^p Xl+1p​表示第 l + 1 l+1 l+1次迭代时Ⅰ型领导者的位置。选择操作就是在I型领导者和交叉后的变体之间做比较,保留适应度值更小的那个个体。
当某一维度陷入相同的局部最优时,差分进化算法的变异策略或交叉策略都不能产生新解,用正态过程游走取代变异操作可以增强算法后期跳出局部最优的能力。

<2> 交叉跟随者

交叉跟随者以自身和随机抽取的一个I型领导者为对象, 按式(2)和式(3)中的方法执行交叉和选择操作。由于I型领导者基于贪婪机制进化,会在某些维度到达最优位置,因此交叉跟随者可以将这些位置组合起来。

<3> Ⅱ型领导者

Ⅱ型领导者是当前最优者附近的群体, 其定义如下: X h = { X best . ∗ ( D + g a p ⋅ c 1 ⋅ A ) ,     c 3 ≤ 0.5 X best + 0.6 ⋅ g a p ⋅ c 2 ⋅ ( u b − l b ) ⋅ B , else (4) \boldsymbol X^h=\begin{dcases}\boldsymbol X_{\text{best}}.*(\boldsymbol D+gap\cdot c_1\cdot\boldsymbol A),\quad\quad\quad\quad\,\,\, c_3≤0.5\\\boldsymbol X_{\text{best}}+0.6\cdot gap\cdot c_2\cdot(ub-lb)\cdot\boldsymbol B,\quad \text{else}\end{dcases}\tag{4} Xh={Xbest​.∗(D+gap⋅c1​⋅A),c3​≤0.5Xbest​+0.6⋅gap⋅c2​⋅(ub−lb)⋅B,else​(4)其中, X h \boldsymbol X^h Xh表示某个Ⅱ型领导者的位置; X best \boldsymbol X_{\text{best}} Xbest​表示当前的最优位置; D \boldsymbol D D表示1行 n n n列的向量,其元素全是1; A \boldsymbol A A和 B \boldsymbol B B是1行 n n n列的向量,其元素全是1或-1; c 1 , c 2 c_1,c_2 c1​,c2​和 c 3 c_3 c3​都是0到1的随机数; g a p gap gap是TTLSSA中的重要参数,其定义如下: g a p = 0.6 e − ( 4 mod ( l , w ) / w ) 2 (5) gap=0.6e^{-(4\text{mod}(l,w)/w)^2}\tag{5} gap=0.6e−(4mod(l,w)/w)2(5)其中, l l l表示当前的迭代次数, w w w是常数; mod ( l , w ) \text{mod}(l,w) mod(l,w)表示取 l l l除以 w w w的余数。
如图1所示,当 w w w为250、最大迭代次数为1000时, g a p gap gap呈锯齿状变化。迭代开始时 g a p gap gap数值较大,有利于开展以 X best \boldsymbol X_{\text{best}} Xbest​为中心的全局搜索,当 g a p gap gap数值较小时,会在 X best \boldsymbol X_{\text{best}} Xbest​附近执行精细搜索,呈锯齿状变化可以确保充分利用当前最优解的信息,增强算法的稳定性。
基于正态过程搜索和差分进化算法的改进樽海鞘群算法

图1 g a p gap gap变化曲线

<4> 跟随者

跟随者的更新策略与SSA算法中的定义一致,在Ⅱ型领导者之间使用式(3)可以得到跟随者。跟随者可以借助Ⅱ型领导者的位置信息,在当前最优解附近进行开发。

<5> 变异者

变异者采用差分进化算法中的DE/rand/1策略,其定义如下: X w = X b + H ( X m − X d ) (6) \boldsymbol X^w=\boldsymbol X^b+H(\boldsymbol X^m-\boldsymbol X^d)\tag{6} Xw=Xb+H(Xm−Xd)(6)其中, X b , X m , X d \boldsymbol X^b,\boldsymbol X^m,\boldsymbol X^d Xb,Xm,Xd都是随机抽取的Ⅱ型领导者; H H H为变异算子,是一个常数。

(2)TTLSSA的流程

TTLSSA的流程如算法1所示(省略了自变量超出搜索范围时的随机重置步骤)
算法1 TTLSSA
基于正态过程搜索和差分进化算法的改进樽海鞘群算法

二、仿真实验与分析

为了验证所提算法的性能, 使用文献[1]中所示的18个不同类型的基准函
数对算法的全局搜索能力、运行时间、收敛速度、开发能力等性能进行测试,并 将 其 与SSA、DE、SCA、GWO以及WOA做对比。其中,f1—f7为低维测试函数,f8—f13为单峰函数,其余函数为多峰函数。单峰函数主要验证算法的开发能力和收敛速度,多峰函数和低维函数用于检验算法的全局搜索能力,所有函数在测试时都会记录运行时间, 以进行时间复杂度分析。

1、参数设置

所有算法的搜索个体数目都设为250,取30次实验的平均值,其余关键参数如表1所列。

表1 关键参数的设置

基于正态过程搜索和差分进化算法的改进樽海鞘群算法

2、结果分析

以F1~F5、F9、F16为例。结果显示如下:
基于正态过程搜索和差分进化算法的改进樽海鞘群算法基于正态过程搜索和差分进化算法的改进樽海鞘群算法基于正态过程搜索和差分进化算法的改进樽海鞘群算法基于正态过程搜索和差分进化算法的改进樽海鞘群算法基于正态过程搜索和差分进化算法的改进樽海鞘群算法基于正态过程搜索和差分进化算法的改进樽海鞘群算法基于正态过程搜索和差分进化算法的改进樽海鞘群算法

函数:F1
TTLSSA:最大值: -959.6407,最小值:-959.6407,平均值:-959.6407,标准差:2.5856e-13,平均时间/s:0.5072
DE:最大值: -959.6407,最小值:-959.6407,平均值:-959.6407,标准差:5.7815e-13,平均时间/s:2.1058
SCA:最大值: -959.6393,最小值:-959.6407,平均值:-959.6404,标准差:0.00033716,平均时间/s:0.30532
SSA:最大值: -959.6407,最小值:-959.6407,平均值:-959.6407,标准差:2.8559e-13,平均时间/s:0.32995
GWO:最大值: -894.5782,最小值:-959.6407,平均值:-955.3032,标准差:16.5068,平均时间/s:0.31067
WOA:最大值: -959.6407,最小值:-959.6407,平均值:-959.6407,标准差:4.5865e-13,平均时间/s:0.29703
函数:F2
TTLSSA:最大值: -1,最小值:-1,平均值:-1,标准差:0,平均时间/s:0.45243
DE:最大值: -1,最小值:-1,平均值:-1,标准差:0,平均时间/s:1.9705
SCA:最大值: -1,最小值:-1,平均值:-1,标准差:0,平均时间/s:0.26286
SSA:最大值: -1,最小值:-1,平均值:-1,标准差:4.7857e-14,平均时间/s:0.29731
GWO:最大值: -1,最小值:-1,平均值:-1,标准差:0,平均时间/s:0.26625
WOA:最大值: -1,最小值:-1,平均值:-1,标准差:0,平均时间/s:0.25449
函数:F3
TTLSSA:最大值: 0.00098061,最小值:4.4174e-18,平均值:0.00022881,标准差:0.00042184,平均时间/s:6.261
DE:最大值: 0.0034008,最小值:0,平均值:0.00017873,标准差:0.00065732,平均时间/s:20.8436
SCA:最大值: 0.0012157,最小值:6.5004e-06,平均值:0.00027961,标准差:0.0002932,平均时间/s:4.2555
SSA:最大值: 0.00098061,最小值:8.3361e-18,平均值:0.00035956,标准差:0.00048063,平均时间/s:4.3594
GWO:最大值: 0.0034008,最小值:1.2233e-09,平均值:0.00017874,标准差:0.00065732,平均时间/s:4.2243
WOA:最大值: 0.048333,最小值:2.4561e-08,平均值:0.0052724,标准差:0.0099863,平均时间/s:3.9572
函数:F4
TTLSSA:最大值: -3.8628,最小值:-3.8628,平均值:-3.8628,标准差:3.599e-13,平均时间/s:0.49102
DE:最大值: -3.8628,最小值:-3.8628,平均值:-3.8628,标准差:3.0333e-15,平均时间/s:2.0159
SCA:最大值: -3.8543,最小值:-3.8628,平均值:-3.8562,标准差:0.0030568,平均时间/s:0.30973
SSA:最大值: -3.8628,最小值:-3.8628,平均值:-3.8628,标准差:7.8199e-15,平均时间/s:0.32524
GWO:最大值: -3.8549,最小值:-3.8628,平均值:-3.8623,标准差:0.0019984,平均时间/s:0.31939
WOA:最大值: -3.8622,最小值:-3.8628,平均值:-3.8627,标准差:0.0001414,平均时间/s:0.29477
函数:F5
TTLSSA:最大值: 0.00042904,最小值:5.9527e-08,平均值:0.00019438,标准差:0.00015693,平均时间/s:7.0062
DE:最大值: 0.00085025,最小值:9.3868e-09,平均值:0.00034047,标准差:0.00026886,平均时间/s:22.4125
SCA:最大值: 0.91351,最小值:0.00083055,平均值:0.54057,标准差:0.44034,平均时间/s:4.6816
SSA:最大值: 0.00041817,最小值:1.5942e-08,平均值:0.00017838,标准差:0.0001609,平均时间/s:4.939
GWO:最大值: 0.00054111,最小值:1.4063e-06,平均值:0.00015843,标准差:0.00016306,平均时间/s:5.0284
WOA:最大值: 0.97214,最小值:0.0033692,平均值:0.18973,标准差:0.28803,平均时间/s:4.5316
函数:F9
TTLSSA:最大值: 1.4808e-131,最小值:0,平均值:1.0129e-132,标准差:3.6778e-132,平均时间/s:1.4109
DE:最大值: 3.0989e-16,最小值:9.8646e-17,平均值:1.5069e-16,标准差:4.5387e-17,平均时间/s:4.9303
SCA:最大值: 4.2769e-05,最小值:8.0769e-09,平均值:3.6119e-06,标准差:8.5759e-06,平均时间/s:1.5587
SSA:最大值: 0.78954,最小值:6.4099e-05,平均值:0.082473,标准差:0.16794,平均时间/s:1.0902
GWO:最大值: 5.317e-102,最小值:1.4221e-106,平均值:4.0389e-103,标准差:9.7455e-103,平均时间/s:1.8667
WOA:最大值: 2.0368e-206,最小值:1.0367e-220,平均值:7.2535e-208,标准差:0,平均时间/s:0.95663
函数:F16
TTLSSA:最大值: 27.2316,最小值:0,平均值:10.8549,标准差:10.8581,平均时间/s:1.3663
DE:最大值: 130.7203,最小值:106.873,平均值:118.1972,标准差:5.8959,平均时间/s:4.6239
SCA:最大值: 63.8729,最小值:1.1794e-08,平均值:3.8789,标准差:13.4705,平均时间/s:1.4891
SSA:最大值: 72.6318,最小值:8.9546,平均值:36.515,标准差:14.1124,平均时间/s:1.069
GWO:最大值: 5.6843e-14,最小值:0,平均值:1.8948e-15,标准差:1.0378e-14,平均时间/s:1.6716
WOA:最大值: 0,最小值:0,平均值:0,标准差:0,平均时间/s:0.80175

结果表明,本文算法在没有明显增加SSA时间复杂度的前提下,加强了算法的全局搜索能力、收敛精度和收敛速度。但是,该算法仍存在最优参数的选择问题,这将是下一步的研究目标。

三、参考文献

[1] 俞家珊, 吴雷. 双领导者樽海鞘群算法[J]. 计算机科学, 2021, 48(4): 254-260.

四、Matlab仿真程序

下载地址:

上一篇:Redis Cluster集群底层原理的面试题(持续补充ing)


下一篇:微信小程序的组件封装中插槽的使用