改进搜索机制的单纯形法引导麻雀搜索算法

一、理论基础

1、麻雀搜索算法

请参考这里

2、改进的麻雀搜索算法

(1)改进发现者搜索机制

发现者负责搜索具有丰富食物的区域,并为其他个体提供搜索方向,是整个种群运作的核心,因此发现者的搜索能力在一定程度上对整个算法的收敛起着重要影响。当搜索范围内没有出现捕食者时,发现者的位置更新算子存在一定的随机性,这种随机性可能会导致算法稳定性降低,收敛速度变慢。针对上述问题,本文改进了SSA发现者的搜索机制,改进的发现者位置更新数学模型描述如式(1)所示: X i , d t + 1 = { X i , d t ⋅ ( exp ⁡ ( T max ⁡ − t T max ⁡ − 1 ) ⋅ 1 e − 1 ) k , R 2 < S T X i , d t + Q ⋅ L ,    R 2 ≥ S T (1) X_{i,d}^{t+1}=\begin{dcases}X_{i,d}^t\cdot\left(\exp(\frac{T_{\max}-t}{T_{\max}}-1)\cdot\frac1{e-1}\right)^k,\quad R_2<ST\\X_{i,d}^t+Q\cdot L,\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\, R_2\geq ST\end{dcases}\tag{1} Xi,dt+1=Xi,dt(exp(TmaxTmaxt1)e11)k,R2<STXi,dt+QL,R2ST(1)其中, t t t为当前迭代次数, k k k为调节因子,通过 k k k值可以自适应调节发现者位置更新算子下降速率, k k k值越大,算子下降速率越大。
由式(1)可知,改进的位置更新公式中引入了迭代次数 t t t,使发现者位置更新算子随迭代次数增加呈非线性变化,增加了算法的多样性;同时,结合调节因子 k k k,可自适应调节位置更新算子的下降速率,平衡了算法的搜索能力;最后,发现者位置更新脱离了随机因子 α \alpha α的影响,算法更加稳定。

(2)改进侦察机制

在原始SSA中,当侦察者预警到危险(即意识到有陷入局部极值的风险)时,对于处于种群中心的侦察者,SSA选择让其靠近邻居减少被捕食的风险,这样会导致算法陷入局部最优值而停止搜索;对于处在种群边缘的侦察者,SSA利用随机步长控制侦察者向安全区域靠近,而这种随机步长可能会导致算法收敛速度变慢。
综上所述,针对SSA侦察机制存在的局限性,本文通过引入新的侦察因子 Φ \it\Phi Φ改进SSA的侦察机制,对于处于种群中心的侦察者,通过非线性递增的侦察因子 Φ 1 {\it\Phi}_1 Φ1使其逐步远离当前位置,防止算法陷入局部最优值;对于处在种群边缘的侦察者,采用非线性递减的侦察因子 Φ 2 {\it\Phi}_2 Φ2代替随机步长因子,在保证侦察者安全的同时使其逐步靠近最优位置,加快算法收敛。 Φ 1 {\it\Phi}_1 Φ1 Φ 2 {\it\Phi}_2 Φ2的数学模型描述如式(2)所示: { Φ 1 ( t ) = Φ i + ( Φ f − Φ i ) ⋅ ( 1 − t T max ⁡ ) n Φ 2 ( t ) = Φ i − ( Φ f − Φ i ) ⋅ ( 1 − t T max ⁡ ) n (2) \begin{dcases}{\it\Phi}_1(t)={\it{\Phi_i+(\Phi_f-\Phi_i)}}\cdot(1-\frac{t}{T_{\max}})^n\\\\{\it\Phi}_2(t)={\it{\Phi_i-(\Phi_f-\Phi_i)}}\cdot(1-\frac{t}{T_{\max}})^n\end{dcases}\tag{2} Φ1(t)=Φi+(ΦfΦi)(1Tmaxt)nΦ2(t)=Φi(ΦfΦi)(1Tmaxt)n(2)其中, Φ i \it\Phi_i Φi Φ f \it\Phi_f Φf分别表示 Φ \it\Phi Φ的初始值和最终值, T max ⁡ T_{\max} Tmax为最大迭代次数, n n n为非线性调节系数。

(3)单纯形法策略

单纯形法在多维优化问题中表现出色,具有鲁棒性高、局部优化能力强和参数简单等优点。单纯形法通过对适应度较差的个体进行反射、扩张和收缩等操作来改变个体位置,其中反射操作能使个体反方向搜索,增加个体搜索空间;扩张操作使个体远离最优解,防止算法陷入局部极小值点;压缩操作能使个体更加接近最优位置。其具体实现步骤如下所示:
Step1 初始化种群,计算个体适应度并排序,记录全局最优个体 X b X_b Xb和次优个体 X t X_t Xt以及它们的适应度值 f b f_b fb f t f_t ft X c X_c Xc定义为 X c = ( X b + X t ) / 2 X_c=(X_b+X_t)/2 Xc=(Xb+Xt)/2
Step2 对 m m m个位置较差的点 w w w进行反射操作, X r = X c + α ( X c − X w ) X_r=X_c+\alpha(X_c-X_w) Xr=Xc+α(XcXw),其中 α \alpha α表示反射系数。
Step3 判断,如果 f r < f b f_r<f_b fr<fb,则进行扩张操作, X y = X c + β ( X r − X c ) X_y=X_c+\beta(X_r-X_c) Xy=Xc+β(XrXc) β \beta β为扩张系数;如果 f y < f b f_y<f_b fy<fb,则 w = X y w=X_y w=Xy,反之 w = X r w=X_r w=Xr
Step4 判断,如果 f r < f w f_r<f_w fr<fw,则进行压缩操作, X z = X c − γ ( X r − X c ) X_z=X_c-\gamma(X_r-X_c) Xz=Xcγ(XrXc) γ \gamma γ为压缩系数;如果 f z < f w f_z<f_w fz<fw,则 w = X z w=X_z w=Xz,反之 w = X r w=X_r w=Xr
Step5 判断,如果 f w > f r > f t f_w>f_r>f_t fw>fr>ft,则进行收缩操作, X s = X c − σ ( X w − X c ) X_s=X_c-\sigma(X_w-X_c) Xs=Xcσ(XwXc) σ \sigma σ为收缩系数,且 σ = γ \sigma=\gamma σ=γ;如果 f s < f w f_s<f_w fs<fw,则 w = X s w=X_s w=Xs,反之 w = X r w=X_r w=Xr
为了改善SSA求解速度慢、精度不高的问题,本文在算法每次迭代结束时,对位置较差的 m m m个麻雀个体进行单纯形法操作,增强SSA的搜索能力。

(4)SMSSA伪代码

SMSSA实现伪代码如下所示:

初始化种群并设定参数 
计算个体适应度并排序 
记录最优、次优和最差个体位置及适应度 
For t=1:Tmax 
	for i=1:pNum 
		按式(1)更新发现者位置 
	end 
	for i=pNum+1:pop 
		按原始公式更新加入者位置 
	end 
	for i=1:round(pop*P) 
		按式(2)更新侦察者位置 
	end 
	利用单纯形法更新适应度较差m个个体 
end 
算法结束,返回最优位置及适应度

二、仿真实验与结果分析

为了检验SMSSA的性能,本文选取基本粒子群优化(PSO)算法、灰狼优化(GWO)算法、鲸鱼优化算法(WOA)和麻雀搜索算法(SSA)与SMSSA 进行寻优对比,基本参数设置为:最大迭代次数 T max ⁡ = 500 T_{\max}=500 Tmax=500,种群规模 N = 30 N=30 N=30,维度 d = 200 d=200 d=200,各算法内部参数设置如文献[1]中表1所示。为了测试SMSSA在对于基准函数上的寻优效果,采用文献[1]中表2的8个基准测试函数进行仿真实验,每个实验进行30次,结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
SSA:最差值: 9.5428e-66, 最优值: 0, 平均值: 3.8662e-67, 标准差: 1.7695e-66, 秩和检验: 1.6572e-11
PSO:最差值: 7165.1363, 最优值: 3448.7122, 平均值: 5367.4426, 标准差: 848.1916, 秩和检验: 1.2118e-12
WOA:最差值: 2.1555e-69, 最优值: 8.9098e-85, 平均值: 1.2986e-70, 标准差: 4.5278e-70, 秩和检验: 1.2118e-12
GWO:最差值: 3.6769e-07, 最优值: 2.2778e-08, 平均值: 1.2772e-07, 标准差: 7.2788e-08, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F2
SSA:最差值: 3.8985e-29, 最优值: 5.7924e-175, 平均值: 1.6299e-30, 标准差: 7.2164e-30, 秩和检验: 1.2118e-12
PSO:最差值: 462.7717, 最优值: 242.4231, 平均值: 311.8446, 标准差: 53.0066, 秩和检验: 1.2118e-12
WOA:最差值: 9.9064e-49, 最优值: 7.0457e-57, 平均值: 8.6268e-50, 标准差: 2.3725e-49, 秩和检验: 1.2118e-12
GWO:最差值: 4.9634e-05, 最优值: 2.2765e-05, 平均值: 3.1881e-05, 标准差: 6.975e-06, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F3
SSA:最差值: 6.0012e-45, 最优值: 0, 平均值: 2.6e-46, 标准差: 1.1329e-45, 秩和检验: 4.5736e-12
PSO:最差值: 264819.8408, 最优值: 71167.7784, 平均值: 142174.4306, 标准差: 46594.5147, 秩和检验: 1.2118e-12
WOA:最差值: 7904199.1066, 最优值: 1927503.4587, 平均值: 4223853.8308, 标准差: 1375007.1531, 秩和检验: 1.2118e-12
GWO:最差值: 50628.9379, 最优值: 7041.4824, 平均值: 24479.0052, 标准差: 11159.7076, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F4
SSA:最差值: 3.5608e-35, 最优值: 1.3344e-105, 平均值: 1.5743e-36, 标准差: 6.7513e-36, 秩和检验: 1.2118e-12
PSO:最差值: 22.3442, 最优值: 15.1623, 平均值: 18.2354, 标准差: 1.7874, 秩和检验: 1.2118e-12
WOA:最差值: 98.3616, 最优值: 21.1337, 平均值: 78.6, 标准差: 22.9002, 秩和检验: 1.2118e-12
GWO:最差值: 45.0736, 最优值: 14.0973, 平均值: 27.4643, 标准差: 8.1054, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F5
SSA:最差值: 0.0045499, 最优值: 3.741e-05, 平均值: 0.00081416, 标准差: 0.0010033, 秩和检验: 9.2113e-05
PSO:最差值: 1203.6928, 最优值: 19.3009, 平均值: 397.6049, 标准差: 332.104, 秩和检验: 3.0199e-11
WOA:最差值: 0.018584, 最优值: 0.00024793, 平均值: 0.0041121, 标准差: 0.0052125, 秩和检验: 1.2057e-10
GWO:最差值: 0.024201, 最优值: 0.006823, 平均值: 0.013978, 标准差: 0.0043161, 秩和检验: 3.0199e-11
SMSSA:最差值: 0.00057954, 最优值: 4.5032e-06, 平均值: 0.00016684, 标准差: 0.0001404, 秩和检验: 1
函数:F6
SSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
PSO:最差值: 1992.922, 最优值: 1501.9365, 平均值: 1734.55, 标准差: 92.9977, 秩和检验: 1.2118e-12
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GWO:最差值: 41.1646, 最优值: 3.8714e-05, 平均值: 21.3616, 标准差: 11.272, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F7
SSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
PSO:最差值: 145.9599, 最优值: 100.8943, 平均值: 127.3103, 标准差: 11.2942, 秩和检验: 1.2118e-12
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
GWO:最差值: 0.052205, 最优值: 8.9418e-09, 平均值: 0.0070764, 标准差: 0.016303, 秩和检验: 1.2118e-12
SMSSA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F8
SSA:最差值: 1.3176e-07, 最优值: 1.9733e-11, 平均值: 1.5154e-08, 标准差: 2.6397e-08, 秩和检验: 0.065671
PSO:最差值: 45.5286, 最优值: 13.596, 平均值: 24.9901, 标准差: 7.8267, 秩和检验: 3.0199e-11
WOA:最差值: 0.1629, 最优值: 0.032262, 平均值: 0.064249, 标准差: 0.032276, 秩和检验: 3.0199e-11
GWO:最差值: 0.65455, 最优值: 0.40283, 平均值: 0.53259, 标准差: 0.059422, 秩和检验: 3.0199e-11
SMSSA:最差值: 4.9299e-08, 最优值: 2.3597e-11, 平均值: 6.822e-09, 标准差: 1.2238e-08, 秩和检验: 1

实验结果表明:SMSSA与其余4种算法相比,具有更快的收敛速度、更高的收敛精度以及更强的稳定性。

三、参考文献

[1] 刘成汉, 何庆. 改进搜索机制的单纯形法引导麻雀搜索算法[J/OL]. 计算机工程与科学: 1-9 [2021-12-24].

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

心️升明月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值