蜣螂优化(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

相关文章

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n