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

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


摘要:为了改善基本麻雀搜索算法在处理优化问题时存在的收敛精度不高,速度慢和易陷入局部极小值的问题,本文提出一种改进搜索机制的单纯形法引导麻雀搜索算法。首先,针对发现者搜索过程随机性过高的问题,改进发现者搜索机制,提高算法收敛速度和稳定性;其次,改进麻雀搜索算法侦察机制,提高算法跳出局部极小值能力;最后,对每一次迭代适应度较差的部分个体采用单纯形法的相关操作,提高算法搜索能力。

1.麻雀优化算法

基础麻雀算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108830958

2. 改进麻雀算法

2.1 改进发现者搜索机制

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

2.2 改进侦察机制

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

2.3 单纯形法策略

单纯形法在多维优化问题中表现出色,具有鲁棒性高、局部优化能力强和参数简单等优点 [16] 。单纯形法通过对适应度较差的个体进行反射、扩张和收缩等操作来改变个体位置,其中反射操作能使个体反方向搜索,增加个体搜索空间;扩张操作使个体远离最优解,防止算法陷入局部极小值点;压缩操作能使个体更加接近最优位置。其具体实现步骤 如下所示:

Step1 初始化种群, 计算个体适应度并排序, 记录全局最优个体 X b X_b Xb 和次优个体 X t X_t Xt 以及它们的适 应度值 f b f_b fb f t , X c f_t, X_c ft,Xc 定义为 X c = ( X b + X t t ) / 2 X_c=\left(X_b+X_t t\right) / 2 Xc=(Xb+Xtt)/2

Step2 对 m m m 个位置较差的点 w w w 进行反射操作, X r = X c + α ( X c − X w ) X_r=X_c+\alpha\left(X_c-X_w\right) 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\left(X_r-X_c\right), \beta Xy=Xc+β(XrXc),β 为扩张系数; 如果 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\left(X_r-X_c\right), \gamma Xz=Xcγ(XrXc),γ 为压缩系数; 如果 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\left(X_w-X_c\right), \sigma Xs=Xcσ(XwXc),σ 为收缩系数, 且 σ = γ \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 的搜索能力。

SMSSA 实现步骤如下所示:

步骤 1 初始化种群和 SMSSA 参数: 最大迭代 次数 T max  T_{\text {max }} Tmax , 种群规模 N N N, 搜索上下界 u b u b ub l b l b lb, 维度 d d d, 发现者比例 P P P
步骤 2 计算个体适应度并排序, 记录最优、 次优和最差适应度个体位置: X b 、 X t X_b 、 X_t XbXt X w X_w Xw, 及它们 的适应度值 f b 、 f t f_b 、 f_t fbft f w f_w fw
步骤 3 根据公式(5)更新发现者位置。
步骤 4 根据公式(3)更新加入者位置。
步骤 5 根据公式(6)更新侦察者位置。
步骤 6 定义 X c = ( X b + X t ) / 2 X_c=\left(X_b+X_t\right) / 2 Xc=(Xb+Xt)/2, 对 m m m 个位置较差 的个体 w w w 进行反射操作, X r = X c + α ( X c − X w ) X_r=X_c+\alpha\left(X_c-X_w\right) Xr=Xc+α(XcXw), 反射个 体适应度为 f r f_r fr
步骤 7 根据单纯形法判断 f r 、 f b 、 f w f_r 、 f_b 、 f_w frfbfw f t f_t ft 之间 大小关系, 然后决定对适应度最差的 m m m 个个体行执 行扩张、压缩或伸缩操作。
步骤 8 循环步骤 2-步骤 7, 判断是否满足迭 代条件, 满足则跳出循环。
步骤 9 算法结朿, 返回是优位置及适应度。

3.实验结果

请添加图片描述

4.参考文献

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

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/127341372
今日推荐