zl程序教程

您现在的位置是:首页 >  后端

当前栏目

基于Logistic回归麻雀算法-附代码

算法代码 基于 回归 Logistic 麻雀
2023-09-14 09:06:12 时间

基于Logistic回归麻雀算法


摘要:针对麻雀搜索算法后期种群多样性减少、易陷入局部最优解等情况,提出了一种新的改进麻雀搜索算法。该改进算法首先引入小孔成像反向学习策略对发现者的位置进行更新,提升寻优位置的多样性;其次受logistic模型的启发,提出一种新的自适应因子对安全阈值进行动态控制,平衡算法的全局搜索与局部开发的能力。

1.麻雀搜索算法

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

2.改进麻雀算法

2.1 逐维小孔成像反向学习优化发现者位置

在式(1)发现者更新位置阶段, 当 R 2 < S T R_2<S T R2<ST 时麻雀个体的位置随着迭代次数的增加而整体呈递减的 趋势, 意味着迭代后期种群的多样性逐渐减少, 增大了算法陷入局部最优解的概率。受小孔成像的启发, 将反向原理简化到学习策略中, 可以帮助算法寻得更广的反向位置 [ 18 ] { }^{[18]} [18] 。假设 每一维解空间的区间为 [ a i , b i ] \left[a_i, b_i\right] [ai,bi], 高度为 h h h 的火焰在 X \mathrm{X} X 轴上的投影为麻雀种群中发现者的位置 x i , j t x_{i, j}^t xi,jt, 然后火焰通过小孔屏在接收屏上得到一个高度为 h ′ h^{\prime} h 的倒像, 同时在 X \mathrm{X} X 轴上的投影为 x i , j t ′ ( x i , j t x_{i, j}^{t^{\prime}}\left(x_{i, j}^t\right. xi,jt(xi,jt 的反向 点)。所以由三角形相似原理可得:
( a i + b i ) / 2 − x i , j t x i , j t ′ − ( a i + b i ) / 2 = h h ′ \frac{\left(a_i+b_i\right) / 2-x_{i, j}^t}{x_{i, j}^{t^{\prime}}-\left(a_i+b_i\right) / 2}=\frac{h}{h^{\prime}} xi,jt(ai+bi)/2(ai+bi)/2xi,jt=hh
h h = k \frac{h}{h}=k hh=k, 公式变换可得:
x i , j t ′ = ( a i + b i ) 2 + ( a i + b i ) 2 k − x i , j t k x_{i, j}^{t^{\prime}}=\frac{\left(a_i+b_i\right)}{2}+\frac{\left(a_i+b_i\right)}{2 k}-\frac{x_{i, j}^t}{k} xi,jt=2(ai+bi)+2k(ai+bi)kxi,jt
k = 1 k=1 k=1 时, 可得:
x i , j t ′ = ( a i + b i ) − x i , j t x_{i, j}^{t^{\prime}}=\left(a_i+b_i\right)-x_{i, j}^t xi,jt=(ai+bi)xi,jt
由式(6)可以看出, 当 k = 1 k=1 k=1 时的小孔成像反向学习就是常见的反向学习策略, 而常见的反向学习策 略得到的候选解一般是固定的, 但小孔成像反向学习可通过改变接收屏与小孔屏之间的距离来调整比 例系数 k k k, 从而得到更广的反向位置(解)。
利用逐维小孔成像反向学习策略对发现者位置进行更新, 将 S S A \mathrm{SSA} SSA R 2 < S T R_2<S T R2<ST 时发现者的位置通过 式(5)映射到空间中得到反向位置 (解), 然后将发现者位置的适应度值与反向学习后的适应度值进行 比较筃选, 若反向学习后的适应度值优于原适应度值, 则反向位置 (解) 取代原发现者的位置; 反 之, 则保留原发现者位置至下一代。因此引入小孔成像反向学习这种策略不仅丰富了发现者的寻优位 置, 使麻雀个体每一维可大可小, 也在一定程度上增加种群的多样性, 减少收敛早熟现象的产生。

2.2 基于 Logistic 模型的自适应因子

在麻雀自身的受食过程中, 一旦发现捕食者, 它们通过唧唧喳喳的叫声作为警报信号。当 R 2 R_2 R2 (警 报信号)<ST(安全阈值), 发现者在受食区域内末发现捕食者的存在, 可继续向其他区域开展大范围搜 麻雀发出逃离信号, 所有麻雀迅速飞往其他安全区域受食, 代表算法的局部开发能力。而安全阈值在 SSA 中往往是固定参数, 虽然能发挥算法的全局搜索能力, 但忽略了算法的局部开发能力, 可能会导 致算法收敛早熟现象的发生。
为了平衡算法的全局搜索能力与局部开发能力, 提出一种基于 Logistic 模型的自适应因子。 Sigmoid 函数是生物学中一种常见的 Logistic 曲线, 也常应用于神经网络中, 它可将变量映射到区间 [0,1]之间,其表达式为:
S ( x ) = 1 1 + e − x S(x)=\frac{1}{1+e^{-x}} S(x)=1+ex1
显而易见, Sigmoid 函数是一个严格单调递增、连续光滑的阈值函数, 对式(7)进行伸缩平移, 并 引入幅值、伸缩与平移因子, 得到:
S ( x ) = L ⋅ ( 1 1 + e a x + b + ω ) S(x)=L \cdot\left(\frac{1}{1+e^{a x+b}}+\omega\right) S(x)=L(1+eax+b1+ω)
式中: L L L 表示幅值增益, a 、 b a 、 b ab 分别表示伸缩与平移因子, ω ∈ [ 0 , 1 ) \omega \in[0,1) ω[0,1), 可动态设定函数的上下界。 其中 ω \omega ω 设为 0.05 0.05 0.05, 可根据实际应用设定。在算法迭代前期的发 现者阶段, 可保证安全阈值长时间处于较大值的范围内, 发现者对安全区域进行大范围的搜索, 指引 种群往最优位置附近收敛; 随着迭代次数的增加, 安全阈值开始非线性减小, 当到迭代后期时, 安全 阈值往往处于较小值的范围内, 发现者在最优位置的附近进行局部开发, 逼近理论最优解, 提高算法 的收敛精度。

3.实验结果

请添加图片描述

4.参考文献

[1]陈刚,林东,陈飞,陈祥宇.基于Logistic回归麻雀算法的图像分割[J/OL].北京航空航天大学学报:1-14[2021-09-26].https://doi.org/10.13700/j.bh.1001-5965.2021.0268.

5.Matlab代码

6.python代码