自适应螺旋飞行麻雀搜索算法

一、理论基础

1、麻雀搜索算法

请参考这里

2、自适应螺旋飞行麻雀搜索算法

(1)基于随机变量的Tent混沌映射

由于SSA具有随机性大的缺点,因此决定引入有序和均匀Tent映射对其进行改进。然而,基本Tent映射不是很稳定。为了减少这种影响,本文引入了基于随机变量的帐篷映射策略来改进SSA的初始化,使种群的初始化更加有序,增强了算法的可控性。其具体公式如下: z i + 1 = { 2 z i + rand ( 0 , 1 ) × 1 N ,     0 ≤ z i ≤ 1 2 2 ( 1 − z i ) + rand ( 0 , 1 ) × 1 N , 1 2 < z i ≤ 1 (1) z_{i+1}=\begin{dcases}2z_i+\text{rand}(0,1)\times\frac1N,\quad\quad\quad\,\,\, 0\leq z_i\leq\frac12\\[2ex]2(1-z_i)+\text{rand}(0,1)\times\frac1N,\quad\frac12<z_i\leq1\end{dcases}\tag{1} zi+1=2zi+rand(0,1)×N1,0zi212(1zi)+rand(0,1)×N1,21<zi1(1)经过伯努利变换后的表达式为: z i + 1 = ( 2 z i ) mod   1 + rand ( 0 , 1 ) × 1 N (2) z_{i+1}=(2z_i)\text{mod}\,1+\text{rand}(0,1)\times\frac1N\tag{2} zi+1=(2zi)mod1+rand(0,1)×N1(2)其中, N N N是混沌序列中的粒子总数。
根据Tent映射的特点,在可行域中产生混沌的序列步骤如下:
(1)随机生成 ( 0 , 1 ) (0,1) (0,1)中的初始值 z 0 z_0 z0,令 i = 1 i=1 i=1
(2)使用式(2)进行迭代以生成 z z z序列, i i i自增1;
(3)如果迭代次数达到最大值,则停止,并保存生成的 z z z序列。

(2)自适应权重

权重策略在粒子群优化算法中很常见。通常,粒子群算法通过在设定的最大值和最小值之间自适应地改变,在一定程度上减少陷入局部最优的情况。受此启发,本文在麻雀优化的发现阶段添加了惯性权重 w w w,该权重随迭代次数而变化。在算法的初始阶段,它削弱了随机初始化的影响,平衡了下面的Levy飞行机制,从而增强了算法的局部搜索和全局搜索。
发现者引导群体中的其他个体搜索食物,因此自适应权重的引入提高了个体位置的质量,使其他个体能够更快地收敛到最优位置,并且总体上加快了收敛速度。基于麻雀的特性,自适应权重的公式如下: w ( t ) = 0.2 cos ⁡ ( π 2 ⋅ ( 1 − t iter max ⁡ ) ) (3) w(t)=0.2\cos\left(\frac\pi2\cdot\left(1-\frac{t}{\text{iter}_{\max}}\right)\right)\tag{3} w(t)=0.2cos(2π(1itermaxt))(3)式(3)的含义是 w w w [ 0 , 1 ] [0,1] [0,1]之间具有非线性变化的性质。根据 cos ⁡ \cos cos函数的特点,算法开始时权值较小,但优化速度较快,后期权值较大,但变化速度较慢,因此算法的收敛性是平衡的。改进的发现者位置更新如下: X i , j t + 1 = { w ( t ) ⋅ X i , j t ⋅ exp ⁡ ( − i α ⋅ iter max ⁡ ) , if    R 2 < ST w ( t ) ⋅ X i , j t + Q ⋅ L ,   if    R 2 ≥ ST (4) X_{i,j}^{t+1}=\begin{dcases}w(t)\cdot X_{i,j}^t\cdot\exp\left(\frac{-i}{\alpha\cdot\text{iter}_{\max}}\right),\quad\text{if}\,\,R_2<\text{ST}\\[2ex]w(t)\cdot X_{i,j}^t+Q\cdot L,\quad\quad\quad\quad\quad\quad\,\text{if}\,\,R_2\geq\text{ST}\end{dcases}\tag{4} Xi,jt+1=w(t)Xi,jtexp(αitermaxi),ifR2<STw(t)Xi,jt+QL,ifR2ST(4)通过引入自适应权重来动态调整麻雀的位置变化,发现者在不同时间的不同引导模式使算法搜索灵活。随着迭代次数的增加,单个麻雀向最优位置收敛,权重越大,个体移动越快,从而提高了算法的收敛速度。

(3)莱维飞行机制

当面对高维复杂问题时,仍然存在陷入局部最优的可能性。因此,引入Levy飞行策略来提高算法解的随机性,从而丰富种群位置的多样性,还可以有效地提高算法的运行效率。
莱维飞行服从莱维分布。它使用随机长距离和短距离机制来覆盖大面积。在加入Levy飞行机制后,可以提高算法的性能。加入Levy飞行策略的位置更新公式如下: x i ′ ( t ) = x i ( t ) + l ⊕ levy ( λ ) (5) x_i'(t)=x_i(t)+l\oplus\text{levy}(\lambda)\tag{5} xi(t)=xi(t)+llevy(λ)(5)其中, x i ( t ) x_i(t) xi(t)表示第 i i i个个体在第 t t t次迭代中的位置; ⊕ \oplus 表示点到点乘法的算术符号; l l l表示步长控制参数,其值为 l = 0.01 ( x i ( t ) − x p ) l=0.01(x_i(t)-x_p) l=0.01(xi(t)xp) levy ( λ ) \text{levy}(\lambda) levy(λ)是服从莱维分布的路径,表示引入莱维飞行策略,并满足 levy ∼ u = t − λ , 1 < λ ≤ 3 \text{levy}\sim u=t^{-\lambda},1<\lambda\leq3 levyu=tλ,1<λ3
由于莱维分布非常复杂,通常使用蒙特卡洛算法对其进行模拟。步长计算的公式如下: s = μ ∣ ν ∣ 1 / γ (6) s=\frac{\mu}{|\nu|^{1/\gamma}}\tag{6} s=ν1/γμ(6) μ ∼ N ( 0 , σ μ 2 ) (7) \mu\sim N(0,\sigma_\mu^2)\tag{7} μN(0,σμ2)(7) ν ∼ N ( 0 , σ ν 2 ) (8) \nu\sim N(0,\sigma_\nu^2)\tag{8} νN(0,σν2)(8) σ μ = { Γ ( 1 + γ ) sin ⁡ ( π γ / 2 ) γ ⋅ Γ [ ( γ + 1 ) / 2 ] ⋅ 2 ( γ + 1 ) / 2 } 1 / γ (9) \sigma_\mu=\left\{\frac{\Gamma(1+\gamma)\sin(\pi\gamma/2)}{\gamma\cdot\Gamma[(\gamma+1)/2]\cdot2^{(\gamma+1)/2}}\right\}^{1/\gamma}\tag{9} σμ={γΓ[(γ+1)/2]2(γ+1)/2Γ(1+γ)sin(πγ/2)}1/γ(9)其中, σ ν = 1 \sigma_\nu=1 σν=1 γ = 1.5 \gamma=1.5 γ=1.5

(4)可变螺旋搜索策略

跟随者随着发现者的位置而动态更新,这导致了他们搜索方式的盲目性和单一性。受鲸鱼优化算法螺旋操作的启发,引入了可变螺旋位置更新策略,以使跟随者位置更新更灵活,开发各种位置更新搜索路径,并平衡算法的全局和局部搜索。
在跟随者位置更新过程中,螺旋参数 z z z不能是固定数值,这导致搜索方法单调,可能陷入局部最优,从而削弱了算法的搜索能力。因此参数 z z z被设计为一个自适应变量,用于动态调整跟随者搜索的螺旋形状,从而拓宽了跟随者探索未知区域的能力,提高了算法的搜索效率和全局搜索性能。跟随者可变螺旋位置更新策略的公式如下: X i , j t + 1 = { e z l ⋅ cos ⁡ ( 2 π l ) ⋅ Q ⋅ exp ⁡ ( X worst t − X i , j t i 2 ) , if    i > n 2 X P t + 1 + ∣ X i , j t − X P t + 1 ∣ ⋅ A + ⋅ L ⋅ e z l ⋅ cos ⁡ ( 2 π l ) , otherwise (10) X_{i,j}^{t+1}=\begin{dcases}e^{zl}\cdot\cos(2\pi l)\cdot Q\cdot\exp\left(\frac{X_{\text{worst}}^t-X_{i,j}^t}{i^2}\right),\quad\quad\quad\text{if}\,\,i>\frac n2\\[2ex]X_P^{t+1}+\left|X_{i,j}^t-X_P^{t+1}\right|\cdot A^+\cdot L\cdot e^{zl}\cdot\cos(2\pi l),\quad\text{otherwise}\end{dcases}\tag{10} Xi,jt+1=ezlcos(2πl)Qexp(i2XworsttXi,jt),ifi>2nXPt+1+Xi,jtXPt+1A+Lezlcos(2πl),otherwise(10) z = e k ⋅ cos ⁡ ( π ⋅ ( 1 − ( i / i max ⁡ ) ) ) (11) z=e^{k\cdot\cos(\pi\cdot(1-(i/i_{\max})))}\tag{11} z=ekcos(π(1(i/imax)))(11)其中, k k k是变化系数, k = 5 k=5 k=5 l l l [ − 1 , 1 ] [-1,1] [1,1]的均匀分布的随机数。随着跟随者位置更新的范围从大到小,在早期找到更多高质量的解,后期优化减少了空闲工作的增加,从而提高了算法的全局最优搜索性能。同时,根据螺旋线的特点,在一定程度上提高了算法的优化精度。

(5)改进麻雀搜索算法的步骤

自适应螺旋飞行麻雀搜索算法(ASFSSA)的具体步骤如下:
步骤1:初始化麻雀种群参数,如:种群数 p o p pop pop、发现者总数 p N u m pNum pNum、最大迭代次数 iter max ⁡ \text{iter}_{\max} itermax和求解精度 ε \varepsilon ε等。
步骤2:使用式(1)的Tent映射初始化种群个体的位置,产生 p o p pop pop个麻雀个体。
步骤3:根据优化的目标函数计算每个个体的适应度值 f i f_i fi,并找到最小适应度值 f g f_g fg和最大适应度值 f w f_w fw
步骤4:根据适应度值对群体进行排序。
步骤5:选择 p N u m pNum pNum个适应度较优的个体作为发现者,其余为跟随者,在添加策略后使用式(4)和(5)更新发现者的位置。
步骤6:使用式(10)更新跟随者的位置。
步骤7:使用基本麻雀算法的对应公式更新警戒者的位置。
步骤8:在一次迭代完成后,重新计算每个个体的适应度值 f i f_i fi,并更新最小适应度值 f g f_g fg、最大适应度值 f w f_w fw和相应的位置。
步骤9:判断算法是否已达到最大迭代次数或解的准确度。如果达到,则输出优化结果;否则,它将返回到步骤4。

二、仿真实验与结果分析

将ASFSSA与PSO、GWO、SSA和CSSA[2]进行对比,以文献[1]中表1的F1、F2、F3、F8、F9、F10、F16、F17、F18为例,实验设置种群规模为100,最大迭代次数为200,每种算法独立运算30次,结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
PSO:最差值: 36.2222, 最优值: 3.3372, 平均值: 13.6704, 标准差: 7.5121, 秩和检验: 1.2118e-12
GWO:最差值: 1.5074e-13, 最优值: 3.4305e-15, 平均值: 2.896e-14, 标准差: 2.7859e-14, 秩和检验: 1.2118e-12
SSA:最差值: 5.7147e-176, 最优值: 0, 平均值: 1.9049e-177, 标准差: 0, 秩和检验: 0.00066167
CSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
ASFSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F2
PSO:最差值: 9.7974, 最优值: 1.8171, 平均值: 4.3593, 标准差: 1.5399, 秩和检验: 1.2118e-12
GWO:最差值: 2.5083e-08, 最优值: 2.5608e-09, 平均值: 8.4577e-09, 标准差: 5.3152e-09, 秩和检验: 1.2118e-12
SSA:最差值: 9.0305e-92, 最优值: 0, 平均值: 3.5082e-93, 标准差: 1.6614e-92, 秩和检验: 5.8522e-09
CSSA:最差值: 2.1668e-159, 最优值: 0, 平均值: 7.2226e-161, 标准差: 3.956e-160, 秩和检验: 2.213e-06
ASFSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F3
PSO:最差值: 1154.4407, 最优值: 145.9255, 平均值: 436.1113, 标准差: 202.8757, 秩和检验: 1.2118e-12
GWO:最差值: 0.071841, 最优值: 0.00025149, 平均值: 0.015366, 标准差: 0.018831, 秩和检验: 1.2118e-12
SSA:最差值: 1.5258e-134, 最优值: 0, 平均值: 5.0861e-136, 标准差: 2.7858e-135, 秩和检验: 0.00031349
CSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
ASFSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F8
PSO:最差值: 13.4788, 最优值: 0.51689, 平均值: 3.0278, 标准差: 2.6519, 秩和检验: 1.2118e-12
GWO:最差值: 0.00016935, 最优值: 1.0188e-05, 平均值: 6.0761e-05, 标准差: 3.3525e-05, 秩和检验: 1.2118e-12
SSA:最差值: 1.4849e-184, 最优值: 0, 平均值: 4.9496e-186, 标准差: 0, 秩和检验: 0.0055843
CSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
ASFSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F9
PSO:最差值: 2.545785568985982e+16, 最优值: 653648260.9772, 平均值: 1102052804318338, 标准差: 4695031609008598, 秩和检验: 1.2118e-12
GWO:最差值: 1.4333e-35, 最优值: 1.0188e-45, 平均值: 5.6523e-37, 标准差: 2.6126e-36, 秩和检验: 1.2118e-12
SSA:最差值: 1.7358e-63, 最优值: 0, 平均值: 5.7861e-65, 标准差: 3.1692e-64, 秩和检验: 3.4526e-07
CSSA:最差值: 1.5716e-149, 最优值: 0, 平均值: 5.2386e-151, 标准差: 2.8693e-150, 秩和检验: 6.6096e-05
ASFSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F10
PSO:最差值: 0.12631, 最优值: 0.027397, 平均值: 0.058827, 标准差: 0.026412, 秩和检验: 3.0199e-11
GWO:最差值: 0.0047975, 最优值: 0.00039792, 平均值: 0.0020318, 标准差: 0.0011046, 秩和检验: 3.0199e-11
SSA:最差值: 0.0010802, 最优值: 3.8144e-06, 平均值: 0.00030218, 标准差: 0.00026607, 秩和检验: 0.00076973
CSSA:最差值: 0.00036871, 最优值: 1.1244e-06, 平均值: 0.00010135, 标准差: 0.00011246, 秩和检验: 0.37108
ASFSSA:最差值: 0.00036209, 最优值: 1.1872e-06, 平均值: 0.00010759, 标准差: 9.5646e-05, 秩和检验: 1
函数:F16
PSO:最差值: 4.3585e-17, 最优值: 2.7222e-21, 平均值: 4.4102e-18, 标准差: 9.0741e-18, 秩和检验: 1.2118e-12
GWO:最差值: 1.8653e-114, 最优值: 8.5392e-173, 平均值: 6.2176e-116, 标准差: 3.4055e-115, 秩和检验: 1.2118e-12
SSA:最差值: 1.2904e-149, 最优值: 0, 平均值: 6.0689e-151, 标准差: 2.5161e-150, 秩和检验: 0.00066167
CSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
ASFSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F17
PSO:最差值: 1.8263e-16, 最优值: 1.4617e-21, 平均值: 2.0378e-17, 标准差: 4.0282e-17, 秩和检验: 2.3692e-11
GWO:最差值: 2.7542e-06, 最优值: 8.1184e-09, 平均值: 4.2415e-07, 标准差: 5.374e-07, 秩和检验: 2.3692e-11
SSA:最差值: 1.3593e-15, 最优值: 2.8125e-21, 平均值: 1.0532e-16, 标准差: 3.3378e-16, 秩和检验: 2.3692e-11
CSSA:最差值: 7.7736e-15, 最优值: 3.0315e-22, 平均值: 2.8089e-16, 标准差: 1.4159e-15, 秩和检验: 2.3692e-11
ASFSSA:最差值: 1.9909e-29, 最优值: 0, 平均值: 1.0365e-30, 标准差: 3.6905e-30, 秩和检验: 1
函数:F18
PSO:最差值: 6.9033, 最优值: 0.998, 平均值: 1.7576, 标准差: 1.2063, 秩和检验: 0.0055747
GWO:最差值: 10.7632, 最优值: 0.998, 平均值: 2.4428, 标准差: 2.4451, 秩和检验: 1.2224e-10
SSA:最差值: 12.6705, 最优值: 0.998, 平均值: 4.2858, 标准差: 5.0449, 秩和检验: 0.10391
CSSA:最差值: 0.998, 最优值: 0.998, 平均值: 0.998, 标准差: 1.934e-16, 秩和检验: 0.0011992
ASFSSA:最差值: 2.9821, 最优值: 0.998, 平均值: 1.0641, 标准差: 0.36225, 秩和检验: 1

实验结果验证了ASFSSA算法的有效性。

三、参考文献

[1] Chengtian Ouyang, Yaxian Qiu, Donglin Zhu. Adaptive Spiral Flying Sparrow Search Algorithm[J]. Scientific Programming, 2021, 2021: 6505253.
[2] 吕鑫, 慕晓冬, 张钧, 等. 混沌麻雀搜索优化算法[J]. 北京航空航天大学学报, 2021, 47(8): 1712-1720.

  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Matlab 中的麻雀算法是一种基于圆混沌映射的自适应权重优化算法,用于优化BP神经网络。该算法通过在训练过程中自动调整权重,以提高网络的性能。麻雀算法的优点在于其具有较快的收敛速度和较高的优化效果。 ### 回答2: MATLAB中基于Circle混沌映射自适应权重的麻雀算法,是一种用于优化BP神经网络的方法。麻雀算法是一种基于自然界麻雀行为的优化算法,它模拟了麻雀觅食的过程。而Circle混沌映射是一种混沌映射方法,用于生成混沌序列。 在这个方法中,首先需要初始化BP神经网络的权重矩阵。然后,利用Circle混沌映射生成的混沌序列来更新权重矩阵。具体来说,在麻雀算法的每一轮迭代中,使用混沌序列的元素值来调整每个权重矩阵的元素值,以实现权重的自适应更新。通过这种方式,可以在搜索空间中找到更优的权重组合,从而改善BP神经网络的性能。 这种基于Circle混沌映射自适应权重的麻雀算法优化BP神经网络的方法有以下特点: 1. 利用了混沌序列的随机性和无序性,可以避免陷入局部最优解,提高全局搜索的能力。 2. 通过自适应地调整权重矩阵,可以动态地优化BP神经网络的性能。 3. 麻雀算法模拟了麻雀觅食的过程,利用了麻雀行为中的搜索策略,能够更好地探索搜索空间。 总结起来,基于Circle混沌映射自适应权重的麻雀算法是一种有效的优化BP神经网络的方法。它利用混沌序列作为自适应权重的调整因子,结合麻雀算法的搜索策略,能够找到更优的权重组合,提高神经网络的性能。 ### 回答3: 麻雀算法是一种基于自然界麻雀群体行为的优化算法,它模拟麻雀群体觅食的过程来进行优化。而BP神经网络是一种常用的神经网络模型,用于解决分类和回归问题。为了提高BP神经网络的性能,可以引入麻雀算法进行优化。 在matlab中,基于Circle混沌映射的麻雀算法可以用来自适应调整BP神经网络的权重。Circle混沌映射是一种随机非线性映射,可以产生具有随机性和不可预测性的序列。这里的Circle混沌映射是指利用三次映射的结果,将其投影到x-y平面形成一个圆。 首先,我们需要初始化麻雀算法和BP神经网络的参数。麻雀算法的参数包括种群大小、最大迭代次数、搜索半径等。BP神经网络的参数包括输入层节点数、隐藏层节点数、输出层节点数、学习率等。 然后,我们使用麻雀算法来优化BP神经网络的权重。具体方法是,在每一次迭代中,通过计算麻雀算法的适应度函数来评估每个麻雀的适应性。适应度函数可以根据BP神经网络的误差来定义,例如均方误差。 接下来,根据适应度函数的结果,选择一些适应度高的麻雀进行交叉和变异操作,生成新的麻雀个体。通过交叉和变异操作,可以改变麻雀的权重,从而优化BP神经网络。 最后,重复以上步骤,直到达到最大迭代次数或者满足停止准则为止。在最后的结果中,我们可以得到优化后的BP神经网络的权重,从而提高了网络的性能和预测精度。 总之,matlab中基于Circle混沌映射自适应权重的麻雀算法优化BP神经网络的过程是通过使用麻雀算法来搜索和优化神经网络的权重,从而提高BP神经网络的性能和预测精度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心️升明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值