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

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
蜣螂优化算法(Cockroach Algorithm)是一模拟昆虫觅食行为的优化算法,可以用于解决优化问题。以下是一个简单的蜣螂优化算法Matlab 代码示例: ```matlab function [bestSolution, bestFitness, convergenceCurve] = cockroachAlgorithm(fobj, nVar, varMin, varMax, maxIter, nPop) % 参数说明: % fobj: 适应度函数 % nVar: 变量数量 % varMin: 变量下界 % varMax: 变量上界 % maxIter: 最大迭代次数 % nPop: 群数量 % 初始化蜣螂位置 positions = repmat(varMin, nPop, nVar) + rand(nPop, nVar) .* (repmat(varMax - varMin, nPop, 1)); % 计算初始适应度 fitness = feval(fobj, positions); % 初始化最佳解和最佳适应度 [bestFitness, bestIndex] = min(fitness); bestSolution = positions(bestIndex, :); % 存储每次迭代的最佳适应度值 convergenceCurve = zeros(maxIter, 1); % 开始迭代 for iter = 1:maxIter % 更新速度和位置 for i = 1:nPop step = randn(1, nVar); positions(i, :) = positions(i, :) + step; % 边界处理 positions(i, :) = max(positions(i, :), varMin); positions(i, :) = min(positions(i, :), varMax); end % 计算新位置的适应度 fitness = feval(fobj, positions); % 更新最佳解和最佳适应度 [currentBestFitness, currentBestIndex] = min(fitness); if currentBestFitness < bestFitness bestFitness = currentBestFitness; bestSolution = positions(currentBestIndex, :); end % 保存每次迭代的最佳适应度值 convergenceCurve(iter) = bestFitness; end end ``` 在这个示例中,我们需要提供适应度函数 `fobj`,变量数量 `nVar`,变量下界 `varMin`,变量上界 `varMax`,最大迭代次数 `maxIter` 和群数量 `nPop`。算法将基于这些参数生成一个初始蜣螂群,并迭代更新蜣螂的位置和速度,直到达到最大迭代次数。每次迭代都会计算新位置的适应度,并更新最佳解和最佳适应度。最后,算法返回最佳解、最佳适应度和每次迭代的最佳适应度值。 你可以根据自己的具体问题,将适应度函数 `fobj` 替换为相应的函数来实现蜣螂优化算法的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

algorithmzzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值