zl程序教程

您现在的位置是:首页 >  其他

当前栏目

自适应变异麻雀搜索优化算法-附代码

搜索算法代码 优化 适应 变异 麻雀
2023-09-14 09:06:12 时间

基于Logistic回归麻雀算法


摘要:针对麻雀搜索算法前期易陷入局部极值点、后期寻优精度不高等问题,提出一种自适应变异麻雀搜索算法(AMSSA)。首先,通过猫映射混沌序列初始化种群,增强初始种群的随机性、遍历性,提高算法的全局搜索能力;其次,引入柯西变异和Tent混沌扰动,拓展局部搜索能力,使陷入局部极值点的个体跳出限制继续搜索;最后,提出探索者-跟随者数量自适应调整策略,利用各阶段探索者和跟随者数量的改变增强算法前期的全局搜索能力和后期的局部深度挖掘能力,提高算法的寻优精度。

1.麻雀搜索算法

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

2.改进麻雀算法

2.1 猫映射混沌初始化种群

点, 本文通过猫映射来生成 SSA2 算法的初始种群。猫映射表达式为:
[ y i + 1 w i + 1 ] = [ 1 a 1 b 1 a 1 b 1 + 1 ] [ y i w i ]   m o d   1 \left[\begin{array}{l} y_{i+1} \\ w_{i+1} \end{array}\right]=\left[\begin{array}{cc} 1 & a_1 \\ b_1 & a_1 b_1+1 \end{array}\right]\left[\begin{array}{c} y_i \\ w_i \end{array}\right] \bmod 1 [yi+1wi+1]=[1b1a1a1b1+1][yiwi]mod1
式中: a 1 、 b 1 a_1 、 b_1 a1b1 为任意实数;   m o d   1 \bmod 1 mod1 表示求 a 1 a_1 a1 小数部分。由于猫映射结构简单, 不易陷入小循环周 期和不动点, 通过该映射产生初始种群具有更好的遍历均匀性。
根据猫映射的特点, 在可行域中产生混沌序列并结合反向解初始化的方法步骤为:随机产生当前 种群的一个可行解, 记为:
{ Y i = [ y i 1 , y i 2 , … , y i d , … , y i D ] ; y i d ∈ [ l b i d , u b i s ] } \left\{\boldsymbol{Y}_i=\left[y_{i 1}, y_{i 2}, \ldots, y_{i d}, \ldots, y_{i D}\right] ; y_{i d} \in\left[l b_{i d}, u b_{i s}\right]\right\} {Yi=[yi1,yi2,,yid,,yiD];yid[lbid,ubis]}
则反向解为:
Y ′ = [ Y 1 ′ , Y 2 ′ , … , Y d ′ , … , Y D ′ ] y i d = q ( l b i d − u b d d ) − y i d \begin{aligned} &\boldsymbol{Y}^{\prime}=\left[\boldsymbol{Y}_1^{\prime}, \boldsymbol{Y}_2^{\prime}, \ldots, \boldsymbol{Y}_d^{\prime}, \ldots, \boldsymbol{Y}_D^{\prime}\right] \\ &y_{i d}=q\left(l b_{i d}-u b_{d d}\right)-y_{i d} \end{aligned} Y=[Y1,Y2,,Yd,,YD]yid=q(lbidubdd)yid
式中: q q q 为区间 [ 0 , 1 ] [0,1] [0,1] 上的均匀分布, l b i d l b_{i d} lbid u b i d u b_{i d} ubid 表示可行解的上下界。

2.2 Tent 混沌和柯西变异扰动策略

2.1 2.1 2.1 节中提到, Tent 混沌映射存在小周期和不稳定周期点, 为避免落入小周期点和不稳定周期 点, 文献[22]在原有的 Tent 映射表达式上引入随机变量 rand ⁡ ( 0 , 1 ) × 1 N \operatorname{rand}(0,1) \times \frac{1}{N} rand(0,1)×N1, 改进后的 Tent 混沌映射表达式 如下:
z i + 1 = { 2 z i + rand ⁡ ( 0 , 1 ) × 1 N , 0 ≤ z ≤ 1 2 2 ( 1 − z i ) + rand ⁡ ( 0 , 1 ) × 1 N , 1 2 < z ≤ 1 z_{i+1}= \begin{cases}2 z_i+\operatorname{rand}(0,1) \times \frac{1}{N}, & 0 \leq z \leq \frac{1}{2} \\ 2\left(1-z_i\right)+\operatorname{rand}(0,1) \times \frac{1}{N}, \frac{1}{2}<z \leq 1\end{cases} zi+1={2zi+rand(0,1)×N1,2(1zi)+rand(0,1)×N1,21<z10z21
贝努利移位变换后的表达式为:
z i + 1 = ( 2 z i )   m o d   1 + rand ⁡ ( 0 , 1 ) × 1 N z_{i+1}=\left(2 z_i\right) \bmod 1+\operatorname{rand}(0,1) \times \frac{1}{N} zi+1=(2zi)mod1+rand(0,1)×N1
式中: N N N 为序列内粒子个数。

柯西变异来源于连续型概率分布的柯西分布[23], 主要特点为零处峰值较小, 从峰值到零值下降缓 慢, 使变异范围更均匀。变异公式为:
mutation ( x ) = x ( 1 + tan ⁡ ( π ( u − 0.5 ) ) ) (x)=x(1+\tan (\pi(u-0.5))) (x)=x(1+tan(π(u0.5)))
式中: x x x 为原来个体位置, mutation ( x ) (x) (x) 为经过柯西变异后的个体位置, u u u ( 0 , 1 ) (0,1) (0,1) 区间内的随机数。

2.3 改进探索者位置更新公式

在 SSA2 算法中, 麻雀探索者只受上一代探索者位置的影响, exp ⁡ ( − i α ⋅  iter  max ⁡ ) \exp \left(\frac{-i}{\alpha \cdot \text { iter }_{\max }}\right) exp(α iter maxi) 的值在不断迭代过程 中自适应降低, 其值较大时, 探索者进入广泛搜索模式, 随着其值降低, 探索者主要进行窄搜索模 式, 即在最优解附件深度挖掘, 提高算法的收玫精度。因此, exp ⁡ ( − i α ⋅ i t e r max ⁡ ) \exp \left(\frac{-i}{\alpha \cdot i t e r_{\max }}\right) exp(αitermaxi) 的值尤为重要。由于 exp ⁡ ( − i α ⋅ i t e max ⁡ ) \exp \left(\frac{-i}{\alpha \cdot i t e_{\max }}\right) exp(αitemaxi) 值的微小改变对探索者的影响较大, 因此本文在式 (2) 的基础上, 将探索者更新公式 改为:
x i , d ′ + 1 = { x i , d ′ ⋅ 2 exp ⁡ ( 4 i α ⋅ i t e r ) ′ ′ , R 2 < S T x i , d ′ + Q × L , R 2 ≥ S T x_{i, d}^{\prime+1}=\left\{\begin{array}{l} x_{i, d}^{\prime} \cdot \frac{2}{\exp \left(\frac{4 i}{\alpha \cdot i_{t e r}}\right)^{\prime \prime}}, R_2<S T \\ x_{i, d}^{\prime}+Q \times L \quad, R_2 \geq S T \end{array}\right. xi,d+1={xi,dexp(αiter4i)′′2,R2<STxi,d+Q×L,R2ST

2.4 探索者-跟随者自适应调整策略

在 SSA2 算法中,探索者和跟随者的数目比例保持不变,这会导致在迭代前期,探索者的数目相对较少,无法对全局进行充分的搜索,在迭代后期,探索者的数目又相对较多,此时已不需要更多的探索者进行全局搜索, 而需要增加跟随者的数量进行精确的局部搜索。为解决这个问题, 本文提出探 索者-跟随者自适应调整策略, 该策略在迭代前期, 探索者可以占种群数目的多数, 随着迭代次数的 增加, 探索者的数目自适应减少, 跟随者的数目自适应增加, 逐步从全局搜索转为局部精确搜索, 从 整体上提高算法的收敛精度。探索者和跟随者数目调整公式为:
r = b ( tan ⁡ ( − π t 4 ⋅  iter  max ⁡ + π 4 ) − k ⋅ rand ⁡ ( 0 , 1 ) ) p N u m = r ⋅ N s N u m = ( 1 − r ) ⋅ N \begin{gathered} r=b\left(\tan \left(-\frac{\pi t}{4 \cdot \text { iter }_{\max }}+\frac{\pi}{4}\right)-k \cdot \operatorname{rand}(0,1)\right) \\ p N u m=r \cdot N \\ s N u m=(1-r) \cdot N \end{gathered} r=b(tan(4 iter maxπt+4π)krand(0,1))pNum=rNsNum=(1r)N
式中: p N u m p N u m pNum 为探索者数目, s N u m s N u m sNum 为跟随者数目; b b b 为比例系数, 用于控制探索者和跟随者之间 的数目; k k k 为扰动偏离因子, 对非线性递减的 r r r 值进行扰动。

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]唐延强,李成海,宋亚飞,陈晨,曹波.自适应变异麻雀搜索优化算法[J/OL].北京航空航天大学学报:1-14[2021-09-27].https://doi.org/10.13700/j.bh.1001-5965.2021.0282.

5.Matlab代码

6.python代码