当前位置: 首页 > news >正文

集成随机惯性权重和差分变异操作的樽海鞘群算法-附代码

基于衰减因子和动态学习的改进樽海鞘群算法

文章目录

  • 基于衰减因子和动态学习的改进樽海鞘群算法
    • 1.樽海鞘群算法
    • 2.改进樽海鞘群算法
      • 2.1 PSO算法随机惯性权重的引入
      • 2.2 集成DE算法的变异操作
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要:为了提高樽海鞘群算法(Salp Swarm Algorithm,SSA)的收敛速度、计算精度和全局优化能力,在分析总结粒子群优化(Particle Swarm Optimization,PSO)和差分进化(Differential Evolution,DE)算法相关研究成果后,提出了一种集成PSO算法随机惯性权重和DE算法差分变异操作的改进SSA算法——iSSA。首先,将PSO算法的随机惯性权重引入SSA算法的追随者位置更新公式中,用于增强和平衡SSA算法的勘探与开发能力;其次,用DE算法的变异操作替代SSA算法的领导者位置更新操作,以提高SSA算法的收敛速度和计算精度。

1.樽海鞘群算法

基础樽海鞘群算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107767869

2.改进樽海鞘群算法

2.1 PSO算法随机惯性权重的引入

由 SSA 算法中的式 (3) 可知, 追随者 i i i 的第 j j j 维位置 x j i x_j^i xji 的更新操作直接受前一个追随者 i − 1 i-1 i1 的第 j j j 维位置 x j i − 1 x_j^{i-1} xji1 的 影响。然而, 在大多数情况下, 追随者 i − 1 i-1 i1 的位置对应的解 通常较差, 从而导致 S S A \mathrm{SSA} SSA 算法易陷入局部最优, 收敛速度慢 且计算精度低。

在 PSO 算法中, 粒子速度更新直接决定着粒子位置更 新。惯性权重是 PSO 算法粒子速度更新公式中的重要参数, 它体现了上一代粒子对当前粒子速度更新的影响力, 用于平 衡 PSO 算法的勘探与开发 [ 6 ] { }^{[6]} [6] 。尽管迄今为止已有大量学者 提出了各种 PSO 算法惯性权重控制策略, 但文献 [ 15 ] [15] [15] 的研究 表明, 在总计 18 种 PSO 算法惯性权重控制策略中, 除了随机 惯性权重以外, 常数项惯性权重优于其他所有的惯性权重控 制策略。
常数项惯性权重需要繁琐的算法参数调校, 因此本文将 P S O \mathrm{PSO} PSO 算法的随机惯性权重引入 SSA 算法追随者位置更新操 作中, 从而得到追随者位置更新公式:
x j i = 1 2 ( x j i + w × x j i − 1 ) (4) x_j^i=\frac{1}{2}\left(x_j^i+w \times x_j^{i-1}\right)\tag{4} xji=21(xji+w×xji1)(4)
其中, w w w 为随机惯性权重系数, 其取值方法如式 (5) 1 [16] 所示:
w = 0.5 +  Random  ( 0 , 1 ) / 2 (5) w=0.5+\text { Random }(0,1) / 2 \tag{5} w=0.5+ Random (0,1)/2(5)
其中, Random ( 0 , 1 ) (0,1) (0,1) 表示均匀分布于 ( 0 , 1 ) (0,1) (0,1) 内的随机数, 故 w w w 的取值范围为 ( 0.5 , 1 ) (0.5,1) (0.5,1) 。显然, 此处引入的随机惯性权重没有 改变 SSA 算法的时间复杂度。

2.2 集成DE算法的变异操作

根据 SSA 算法的式(1), 在领导者位置更新操作中, 参与 者是食物源且没有追随者, 缺乏樽海鞘之间的协作和信息共 享, 容易导致 SSA算法过早收敛于较差的局部最优解。
变异操作是 DE 算法的重要组成部分, 它一般通过 3 个 不同的个体来为种群内每一个个体生成一个新个体, 通过比 例因子可以调节算法开发和勘探之间的平衡 。目前 D E \mathrm{DE} DE 算法研究中最典型的变异操作有 5 种, 其中与 SSA 算法的式 (1)一样包含最优解且形式最简单的变异操作一般简称为:“DE/best/1” D E \mathrm{DE} DE / 。
综上所述, 本文提出用 D E \mathrm{DE} DE 算法的上述变异操作来替代 S S A \mathrm{SSA} SSA 算法领导者的位置更新操作, 从而得到如式 (6) 所示的 领导者位置更新操作:
x j i = F k + r × ( x j m − x j n ) (6) x_j^i=F_k+r \times\left(x_j^m-x_j^n\right) \tag{6} xji=Fk+r×(xjmxjn)(6)

3.实验结果

请添加图片描述

4.参考文献

[1]张志强,鲁晓锋,隋连升,李军怀.集成随机惯性权重和差分变异操作的樽海鞘群算法[J].计算机科学,2020,47(08):297-301.

5.Matlab代码

6.python代码

相关文章:

  • A Lightweight and Accurate Recognition Framework for Signs of X-ray Weld Images
  • 【小程序】IDEA实现qq邮件的发送
  • Selenium入门之java爬虫入门
  • 基于C#的五子棋游戏设计
  • 记一次线上环境排查错误过程
  • 快速文本分类(FastText)
  • 【填坑】ESP32 bootloader初探(下)
  • Addflow for WPF 2019 Crack
  • 压缩网络相关
  • C++中的经验记录
  • 【题解】同济线代习题一.8.4
  • MySQL - 索引的数据结构
  • PostgreSQL数据库统计信息——acquire_sample_rows采样函数
  • 硬盘io性能分析
  • 【优化求解】基于matlab遗传算法求解数控机床加工孔最佳路径优化问题【含Matlab源码 2100期】
  • 【Leetcode】101. 对称二叉树
  • 【翻译】babel对TC39装饰器草案的实现
  • 【刷算法】从上往下打印二叉树
  • Electron入门介绍
  • GitUp, 你不可错过的秀外慧中的git工具
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript 基础知识 - 入门篇(一)
  • js中的正则表达式入门
  • magento2项目上线注意事项
  • python学习笔记-类对象的信息
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • Yii源码解读-服务定位器(Service Locator)
  • 闭包--闭包之tab栏切换(四)
  • 记一次和乔布斯合作最难忘的经历
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 带你开发类似Pokemon Go的AR游戏
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • (12)Hive调优——count distinct去重优化
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (八十八)VFL语言初步 - 实现布局
  • (多级缓存)多级缓存
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (九十四)函数和二维数组
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET gRPC 和RESTful简单对比
  • .NET 指南:抽象化实现的基类
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET单元测试
  • .NET建议使用的大小写命名原则
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [383] 赎金信 js
  • [Android] Upload package to device fails #2720
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [C++]打开新世界的大门之C++入门
  • [C++]类和对象(中)
  • [Codeforces] combinatorics (R1600) Part.2
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [hdu 1711] Number Sequence [kmp]