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


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


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

    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\{

    Xi,dt(exp(TmaxtTmax1)1e1)k, if R2<STXi,dt+QL, if R2ST" role="presentation" style="position: relative;">Xi,dt(exp(TmaxtTmax1)1e1)k, if R2<STXi,dt+QL, if R2ST
    \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\{

    Φ1(t)=Φi+(ΦfΦi)(1tTmax)nΦ2(t)=Φi(ΦfΦi)(1tTmax)n" role="presentation" style="position: relative;">Φ1(t)=Φi+(ΦfΦi)(1tTmax)nΦ2(t)=Φi(ΦfΦi)(1tTmax)n
    \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_rfr<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_yfy<fb, 则 w = X y w=X_y w=Xy, 反之 w = X r w=X_r w=Xr

    Step4 判断, 如果 f r < f w f_rfr<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_zfz<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_sfs<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代码

  • 相关阅读:
    Mysql远程登录报错:Host ‘192.168.137.1‘ is not allowed to connect to this MySQL server
    SQL 基础知识梳理(一)- 数据库与 SQL
    JSP学生选课管理系统myeclipse开发sql数据库BS模式java编程网页结构
    三合一的王炸!主打特价中的特价Dana Chen 凌恩生物 2024-02-29 08:00 内蒙古
    第三方商城项目对接(2022-11)
    传输层协议 --TCP报文格式详细介绍
    Linux:基础IO(二.缓冲区、模拟一下缓冲区、详细讲解文件系统)
    java计算机毕业设计京津冀畅游网设计源码+mysql数据库+系统+lw文档+部署
    三分钟细数几款可视化前端开发工具
    浙江省内MBA项目奖学金盘点:给初试备考增添点动力~
  • 原文地址:https://blog.csdn.net/u011835903/article/details/127341372