蜣螂优化(DBO)算法的5种最新变体(含MATLAB代码)

2024-01-18 02:40

本文主要是介绍蜣螂优化(DBO)算法的5种最新变体(含MATLAB代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。

公众号原文链接:蜣螂优化(DBO)算法的5种最新变体(含MATLAB代码)

参考文献[1]中的蜣螂优化(Dung Beetle Optimizer, DBO)算法是2022年11月27日提出的,到今天才提出10个月不到,却受到了许多人的推崇。它是由东华大学的沈波教授团队提出的一种全新的群智能优化算法。麻雀搜索算法(Sparrow Search Algorithm, SSA)也是由这个团队提出。DBO算法确实性能优越,并且设计也很新颖,不得不说是一个难得的好算法。尤其是在近几年进化算法领域的水文暴增的情况下,DBO算得上比较完美的一个算法了。正因为它优秀,所以短短时间内就被许多人研究、引用。

图片

关于DBO算法的原理讲解,可看我之前的推送:

蜣螂优化(DBO)算法(含MATLAB代码)

这里展示一下DBO在WOS上的引用数据,如下图所示。

图片

目前DBO已经存在了一些变体。如果想改进DBO算法的同学,免不了要将自己改进的算法和其他DBO变体进行对比。这里我总结了目前DBO最新的5种变体算法,都是刚提出不久的,并且代码复现的效果与文章相近。这5种变体的详细信息如下表所示。

算法名年份期刊期刊信息
融合Levy飞行和T分布扰动的蜣螂优化(IDBO) [2]2023电力系统及其自动化学报北核、CSCD
引入周期突变机制的蜣螂优化(IDBO) [3]2023电子测量与仪器学报北核、CSCD
多策略增强的蜣螂优化(MDBO)  [4]2023Symmetry-Basel

JCR Q2

中科院4区

基于量子计算和多策略融合的蜣螂优化(QHDBO)  [5]2023Expert Systems with Applications

JCR Q1

中科院1区 TOP

改进正弦算法引导的蜣螂优化(MSADBO)  [6]2023计算机工程与应用北核、CSCD

下面,我把5种DBO变体的改进策略简要概括,并将其效果进行展示。

融合Levy飞行和T分布扰动的蜣螂优化(IDBO)

3个改进策略:Levy飞行、t分布策略、灰狼搜索策略

IDBO  vs DBO

(去公众号看视频)

引入周期突变机制的蜣螂优化(IDBO)

1个改进策略:周期突变机制

实际上也可以拆分为5个改进策略,因为周期突变是对蜣螂种群每个角色都有使用的,即:滚球、跳舞、繁殖、觅食和偷窃。

IDBO  vs DBO

(去公众号看视频)

多策略增强的蜣螂优化(MDBO)

3个改进策略:生成反向解、边界违规处理、盗窃蜣螂位置更新公式的改进。

MDBO  vs DBO

(去公众号看视频)

基于量子计算和多策略融合的蜣螂优化(QHDBO)

4个改进策略:佳点集初始化策略、收敛因子改进、全局搜索和局部探索平衡策略 基于量子计算的t分布变异

QHDBO  vs DBO

(去公众号看视频)

改进正弦算法引导的蜣螂优化(MSADBO)

3个改进策略:混沌映射初始化种群、引入改进的正弦算法改进DBO、自适应高斯-柯西混合变异扰动

MSADBO  vs DBO

(去公众号看视频)

需要说明一下的是,CEC2005测试集中的f9和f11是用plot画的,因为DBO和5种变体很快就收敛到理论最优值0了。而semilogy画的是y轴的对数,因此,若曲线收敛到0,semilogy是画不出来,需改用plot。

(怎么说呢,我觉得DBO会是第二个麻雀搜索算法。本身认可度高,效果也好,稍作改进也许就能在测试集上比其他算法优越。所以可以抓紧时间搞一搞,发论文还是不难的。)

MATLAB代码

DBO及5种变体跑CEC2005的代码链接如下:

标准DBO公众号里有链接
融合Levy飞行和T分布扰动的蜣螂优化(IDBO)公众号里有链接
引入周期突变机制的蜣螂优化(IDBO)公众号里有链接
多策略增强的蜣螂优化(MDBO)公众号里有链接
基于量子计算和多策略融合的蜣螂优化(QHDBO)公众号里有链接
改进正弦算法引导的蜣螂优化(MSADBO)公众号里有链接

关于其他智能优化算法的MATLAB代码,可访问我的个人主页查看:

(公众号里有链接)

可通过下方链接下载代码清单,在里面寻找需要的算法代码,然后去对应的链接获取。清单会同步更新,一旦有新的代码,就可以在清单里找到。清单里面有部分代码是开源获取的。可随时免费下载。

链接:https://pan.baidu.com/s/1SFDMplrL7tiqGZlrpOSGYg
提取码:8023

(最近也更新了一些代码,但没时间一一做成推送,可以自己到代码清单中去寻找。里面有一些代码是开源的,可以直接下载。)

参考文献

[1]  Xue J, Shen B. Dung beetle optimizer: a new meta-heuristic algorithm for global optimization[J]. The Journal of Supercomputing, 2022: 1-32.

[2] 李斌,高鹏,郭自强.改进蜣螂算法优化LSTM的光伏阵列故障诊断[J/OL].电力系统及其自动化学报:1-10[2023-09-21].DOI:10.19635/j.cnki.csu-epsa.001317.

[3]  周亚中,何怡刚,邢致恺等.基于IDBO-ARIMA的电力变压器振动信号预测[J/OL].电子测量与仪器学报:1-11[2023-09-20]. http://kns.cnki.net/kcms/detail/11.2488.TN.20230913.1840.022.html.

[4]  Shen Q, Zhang D, Xie M, et al. Multi-Strategy Enhanced Dung Beetle Optimizer and Its Application in Three-Dimensional UAV Path Planning[J]. Symmetry, 2023, 15(7): 1432.

[5]  Zhu F, Li G, Tang H, et al. Dung beetle optimization algorithm based on quantum computing and multi-strategy fusion for solving engineering problems[J]. Expert Systems with Applications, 2023: 121219.

[6]  潘劲成,李少波,周鹏等.改进正弦算法引导的蜣螂优化算法[J/OL].计算机工程与应用:1-21[2023-09-10].http://kns.cnki.net/kcms/detail/11.2127.TP.20230626.1952.024.html

这篇关于蜣螂优化(DBO)算法的5种最新变体(含MATLAB代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617898

相关文章

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P