【智能算法改进】一种混合多策略改进的麻雀搜索算法

目录

    • 1.算法原理
    • 2.改进点
    • 3.结果展示
    • 4.参考文献
    • 5.代码获取


1.算法原理

【智能算法】麻雀搜索算法(SSA)原理及实现

2.改进点

精英反向学习策略

将精英反向学习策略应用到初始化阶段, 通过反向解的生成与精英个体的选择, 不仅使算法搜索范围得到扩大, 提高了全局搜索的能力, 也能够提高算法规避局部最优的能力:
( x i j ′ ) t = k ( l b j t + u b j t ) − x i j t (1) (x_{ij}^{\prime})^t=k(lb_j^t+ub_j^t)-x_{ij}^t\tag{1} (xij)t=k(lbjt+ubjt)xijt(1)

阶段性控制步长策略

提出一种基于警戒值的螺旋式搜索策略,用于在扩大搜索范围的同时逼近最优解。为了提升搜索精度和收敛速度,引入了非线性衰减因子μ,使得算法初期可以广泛搜索不同区域,而中后期则集中优化已知区域。改进后的发现者位置更新:
x i , j t + 1 = { x b j t + ∣ x i , j t − x b j t ∣ × e l × cos ⁡ ( 2 π l ) R 2 < 0.5 x i , j t × μ , 0.5 ⩽ R 2 < S T ′ x i , j t + Q , R 2 ⩾ S T ′ (2) x_{i,j}^{t+1}=\begin{cases}xb_j^t+|x_{i,j}^t-xb_j^t|\times\mathrm{e}^l\times\cos(2\pi l)\\[2ex]R_2<0.5\\[2ex]x_{i,j}^t\times\mu,0.5\leqslant R_2<\mathrm{S}T^{\prime}\\[2ex]x_{i,j}^t+Q,R_2\geqslant\mathrm{S}T^{\prime}\end{cases}\tag{2} xi,jt+1= xbjt+xi,jtxbjt×el×cos(2πl)R2<0.5xi,jt×μ,0.5R2<STxi,jt+Q,R2ST(2)
各参数表述为:
l = ( a − 1 ) × r a n d + 1 a = ( − t i t e r max ⁡ ) − 1 μ = 1 a × t i t e r max ⁡ e (3) l=(a-1)\times rand+1\\a=\left(-\frac t{iter_{\max}}\right)-1\\\mu=\frac1{a\times\frac t{iter_{\max}}}\\\mathrm{e}\tag{3} l=(a1)×rand+1a=(itermaxt)1μ=a×itermaxt1e(3)

混沌余弦变化因子

在发现者寻找到最优解并引领种群收敛的情况下, 其余跟随者的迅速靠拢是跳跃式的, 这会导致算法陷入局部最优, 降低了算法的多样性。 在跟随者的位置更新中引入混沌余弦变化因子, 通过在不同阶段调整, 加强跟随者对未知区域的广泛探索, 降低陷入局部最优的概率:
η = e ( δ × cos ⁡ ( π 2 u ) u = 1 − t i t e r m a x (4) \begin{aligned}\eta&=\mathrm{e}^{\left(\delta\times\cos\left(\frac\pi2u\right.\right)}\\\\u&=1-\frac t{iter_{\mathrm{max}}}\end{aligned}\tag{4} ηu=e(δ×cos(2πu)=1itermaxt(4)
采用 Circle 混沌映射生成相关参数:
y i + 1 = m o d ( y i + 0.2 − ( 0.5 2 π ) sin ⁡ ( 2 π y i ) , 1 ) (5) y_{i+1}=\mathrm{mod}\left(y_i+0.2-\left(\frac{0.5}{2\pi}\right)\sin\left(2\pi y_i\right),1\right)\tag{5} yi+1=mod(yi+0.2(2π0.5)sin(2πyi),1)(5)
改进后的跟随者位置更新:
x i , j t + 1 = { Q × exp ⁡ ( x w j ′ − x i , j ′ i 2 ) , i > n 2 x b j t + 1 + ∣ x i , j ′ − x b j t + 1 ∣ × L × A + × η × cos ⁡ ( 2 π k ) , i ⩽ n 2 (6) x_{i,j}^{t+1}=\begin{cases}Q\times\exp\Bigl(\frac{xw_j^{\prime}-x_{i,j}^{\prime}}{i^2}\Bigr) ,i>\frac{n}{2}\\xb_j^{t+1}+\bigl| x_{i,j}^{\prime}-xb_j^{t+1} \bigr|\times\\\boldsymbol{L}\times\boldsymbol{A}^{+}\times\eta\times\cos(2\pi\boldsymbol{k} ) ,i\leqslant\frac{n}{2}\end{cases}\tag{6} xi,jt+1= Q×exp(i2xwjxi,j),i>2nxbjt+1+ xi,jxbjt+1 ×L×A+×η×cos(2πk),i2n(6)

自适应选择机制的 Lévy 飞行

提出一种自适应选择机制的 Lévy 飞行策略, 通过随迭代次数不断减小的自适应因子p , 随机选择麻雀个体进行 Lévy 飞行扰动, 增强麻雀位置的多样性。自适应选择因子:
p = 1 − t i t e r max ⁡ e i t e r max ⁡ − t i t e r max ⁡ (7) p=1-\frac t{iter_{\max}}\mathrm{e}^{\frac{iter_{\max}-t}{iter_{\max}}}\tag{7} p=1itermaxteitermaxitermaxt(7)
Lévy 飞行的位置更新:
( x i ′ ) t = x i t + m ⊕ L e v y ( λ ) (8) (x_i^{\prime})^t=x_i^t+m\oplus Levy(\lambda)\tag{8} (xi)t=xit+mLevy(λ)(8)

3.结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

比较困难的F7,F8

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.参考文献

[1] 李江华,王鹏晖,李伟.一种混合多策略改进的麻雀搜索算法[J].计算机工程与科学,2024,46(02):303-315.

5.代码获取

【资源清单】代码资源清单导航~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gunicorn的预分叉架构:快速启动与高效资源利用

Gunicorn的预分叉架构&#xff1a;快速启动与高效资源利用 引言 Gunicorn&#xff08;Green Unicorn&#xff09;是一个Python WSGI HTTP服务器&#xff0c;设计用来为Python web应用提供高效、可靠的服务。Gunicorn支持同步和异步工作模式&#xff0c;并且兼容多种Web框架。…

从零开学C++:类和对象(上)

引言&#xff1a;在学习了C的入门级知识之后&#xff0c;现在就让我们一起进入类和对象的学习吧&#xff0c;该知识点我将分为上&#xff0c;中&#xff0c;下三个部分对其进行讲解。 更多有关C语言和数据结构的知识详解可前往个人主页&#xff1a;计信猫 目录 一&#xff0c;类…

通过实例说明.NET Autofac依赖注入的多种方式

Autofac提供了多种灵活的依赖注入方式&#xff0c;包括但不限于构造函数注入、属性注入、方法注入、字段注入、元数据注入和动态参数注入。根据具体的需求选择合适的注入方式&#xff0c;可以有效地管理对象的依赖关系和生命周期 构造函数注入 构造函数注入&#xff08;Const…

CSS 【详解】自定义属性(又名 CSS 变量)

声明变量 - - 变量命名规则 支持数字命名支持使用短横线和空格命名支持中文等CJK文字不支持包含$、[、]、^、(、)、%、"等特殊字符的命名&#xff0c;要使用这些特殊字符&#xff0c;需要使用反斜杠转义。 变量值 可以是任意值或表达式 --direction: to top;--gradient…

Android liveData 监听异常,fragment可见时才收到回调记录

背景&#xff1a;在app的fragment不可见的情况下使用&#xff0c;发现注册了&#xff0c;但是没有回调导致数据一直未更新&#xff0c;只有在fragment可见的时候才收到回调 // 观察通用信息mLightNaviTopViewModel.getUpdateCommonInfo().observe(this, new Observer<Common…

python 之修改host配置

背景&#xff1a;生产环境登录 test.ai.com &#xff0c;如果要登录验收的 test.ai.com 要改host配置&#xff0c;所以写了个python脚本 host生产环境配置为 # 192.163.0.0 test.ai.com host验收环境为 192.163.0.0 test.ai.com 不加host配置默认是生成哈 import os # C:…

[嵌入式 C 语言] 按位与、或、取反、异或

若协议中如下图所示&#xff1a; 注意&#xff1a; 长度为1&#xff0c;表示1个字节&#xff0c;也就是0xFF&#xff0c;也就是 1111 1111 &#xff08;这里0xFF只是单纯表示一个数&#xff0c;也可以是其他数&#xff0c;这里需要注意的是1个字节的意思&#xff09; 一、按位…

第三课网关作用

实验拓扑图&#xff1a; 基础配置&#xff1a; PC1的基础配置 PC2的基础配置&#xff1a; PC4的基础配置 AR1添加PC4网段: 并且添加pc1,pc2的网段。 并且添加pc1,pc2的网段。 原理&#xff1a;PC4先把数据交给100.100.100.1&#xff0c;交给了路由器&#xff0c;路由器再把数…

瑞萨RH850 RTC计时进位异常

RH850 MCU的RTC&#xff08;实时时钟&#xff09;采用BCD&#xff08;二进制编码的十进制&#xff09;编码格式&#xff0c;支持闰年自动识别&#xff0c;并具有秒、分、时、日、周、月、年的进位功能。其中&#xff0c;秒和分为60进位&#xff0c;时为12或24进位&#xff0c;周…

Qt Design Studio 4.5现已发布

Qt Design Studio现已强势回归&#xff0c;生产力和可用性均得到大幅提升。无论是直观的3D编辑界面&#xff0c;还是与Figma和Qt Creator的无缝连接&#xff0c;新版Qt Design Studio将为您带来更好的产品开发体验。快来深入了解Qt Design Studio的全新功能吧&#xff01; 为3…

期权交易必须弄懂的期权波动率是什么?

今天带你了解期权交易必须弄懂的期权波动率是什么&#xff1f;波动率是金融资产价格波动的度量&#xff0c;它衡量了资产的收益率的不确定性&#xff0c;常用于反映金融资产的风险水平。 期权波动率是衡量资产价格偏离平均值的程度&#xff0c;偏离程度越大&#xff0c;期权波…

Animate软件基础:重命名图层或文件夹

默认情况下&#xff0c;Animate 会按照创建顺序向新图层分配名称&#xff1a;图层 1、图层 2&#xff0c;依此类推。为了更好地反映图层的内容&#xff0c;可以对图层进行重命名。 如果需要对图层或图层文件夹进行重命名&#xff0c;请执行下列操作之一&#xff1a; 双击时间轴…

迂回战术:“另类“全新安装 macOS 15 Sequoia beta2 的极简方法

概述 随着 WWDC 24 的胜利闭幕&#xff0c;Apple 平台上各种 beta 版的系统也都“跃跃欲出”&#xff0c;在 mac 上自然也不例外。 本次全新的 macOS 15 Sequoia&#xff08;红杉&#xff09;包含了诸多重磅升级&#xff0c;作为秃头开发者的我们怎么能不先睹为快呢&#xff1…

一条SQL查询语句是如何执行的?

以一条简单的SQL为例。 mysql> select * from T where ID10&#xff1b; 我们看到的只是一条输入语句&#xff0c;但是在MYQL里面有他的一套执行流程&#xff0c;今天来分析一下这个问题。 基本架构图 首先&#xff0c;给出MYSQL的基本架构图。MYSQL可以分成Server层和存…

ARM功耗管理标准接口之ACPI

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理有哪些标准接口&#xff1f;ACPI&PSCI&SCMI&#xff1f; Advanced Configuration and Power Interface Power State Coordination Interface System Control and Management Interface ACPI可以被理解为一…

Outlook邮件提醒通知功能详解:设置教程!

Outlook邮件提醒通知使用指南&#xff1f;如何个性设计邮件通知&#xff1f; 为了帮助用户更好地管理邮件&#xff0c;Outlook提供了强大的邮件提醒通知功能。AokSend将详细介绍如何设置和使用Outlook邮件提醒通知功能&#xff0c;以提高工作效率和管理时间的能力。 Outlook邮…

聚类方法K-means和DBSCAN,附matlab代码

目录 引言 聚类的主要特点 聚类算法的主要步骤 聚类的应用场景 聚类算法的局限性 聚类方法 1. K-means聚类算法 2. DBSCAN聚类算法 3. 层次聚类算法 引言 聚类&#xff08;Clustering&#xff09;是数据挖掘和统计学中的一个重要概念&#xff0c;它是一种无监督学习的…

AI自动生成PPT哪个软件好?揭秘5款自动生成PPT的工具

在职场的竞技场上&#xff0c;演示文稿如同战士的利剑&#xff0c;其锋芒直接影响着演讲者的说服力。 然而&#xff0c;制作一份高质量的PPT往往需要耗费大量时间与精力。随着科技的进步&#xff0c;AI自动生成PPT成为了提升效率的新选择。面对市场上琳琅满目的软件&#xff0…

C++报警:warning: zero as null pointer constantstddef.h

源码和警告内容 解决办法&#xff1a; select(0,nullptr,nullptr,nullptr,&delay); 关于NULL和nullptr的区别&#xff1a; 在C中&#xff0c;nullptr和null&#xff08;通常指的是NULL宏&#xff0c;因为C标准中并没有直接定义null关键字&#xff09;都用于表示空指针&am…

揭秘控制流的秘密:Java中的if, for, while,你真的会用吗?

在编程的浩瀚宇宙中&#xff0c;控制流语句如同星辰&#xff0c;引领着代码的航向。今天&#xff0c;我们将深入探讨Java中至关重要的控制流语句——if, for, while&#xff0c;以及它们的变体。无论你是一名初学者&#xff0c;还是有着丰富经验的开发者&#xff0c;这篇文章都…