超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)

news2025/1/16 16:56:45

在这里插入图片描述

蜣螂优化算法(dung beetle optimizer,DBO)是JiankaXue 和Bo Shen在2022 年提出的一种新型群体智能优化算法[1],其灵感来自于蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为。该算法同时考虑了全局探索和局部开发,从而具有收敛速度快和准确率高的特点,可以有效地解决复杂的寻优问题。本文将对该算法进行原理讲解及程序实现。

00 文章目录

1 蜣螂优化算法原理

2 代码目录

3 算法性能

4 总结

01 蜣螂优化算法原理

自然界中,蜣螂的特点是将粪便滚成球,利用天体线索导航,从而使球沿直线滚动。然而,没有任何光源,屎壳郎的路径就不再是直线了。此外,许多自然因素也会导致屎壳郎偏离原来的方向。再者,屎壳郎可以通过舞蹈来重新确立自己的方向。粪球还可以作为虫卵的繁殖地。除此之外,还有一种偷窃行为,一些蜣螂会把食物作为自己的食物来竞争。

在DBO中,每只蜣螂的位置对应一个解。蜣螂觅食时的行为有五种:滚球,即把粪便滚成一个球,利用天体线索进行导航,从而把球滚成一条直线;跳舞,这让蜣螂重新定位自己;觅食,一些成年蜣螂会从地下钻出来寻找食物;偷窃,一些被称为小偷的蜣螂会从其他蜣螂那里偷取粪球;繁殖,在自然界中,蜣螂会把粪球滚到安全的地方,藏起来进行繁殖。

因此算法中蜣螂种群分为四个部分,分别为滚球蜣螂、育雏球、小蜣螂和小偷蜣螂。滚球蜣螂受各种自然环境影响决更新其运行方向,初步寻找可以安全觅食的位置,育雏球会被产在已知的安全区域内,成长为成虫的蜣螂被称为小蜣螂,小蜣螂会在最佳觅食区觅食,小偷蜣螂也会根据其他蜣螂的位置和最佳觅食区寻找食物。

四种蜣螂位置更新方式如下:

(1)滚球蜣螂

滚球蜣螂以太阳为导航以保证粪球在直线路径上滚动,光源强度、风等自然因素会影响滚球蜣螂的行进路线,

在这里插入图片描述

图源文献[1]

滚球蜣螂位置更新方式如下:
在这里插入图片描述

式中,𝑡代表当前迭代次数,𝑥𝑖(𝑡)表示第𝑡次迭代时第𝑖只蜣螂的位置信息,α 是一个自然系数,表示是否偏离原来方向,根据概率法分配为−1或1,𝑘 ∈ (0,0.2)表示偏转系数,𝑏 ∈ (0,1)表示常数,𝑘和𝑏分别设定为0.1和0.3,𝑋𝑤表示全局最差位置,Δ𝑥用于模拟光强变化。

当蜣螂遇到障碍物而不能前进时,它需要通过跳舞来调整自己的方向,滚球蜣螂跳舞更新位置的公式定义如下:
在这里插入图片描述

式中θ ∈ [0, 𝜋]表示偏转角,在θ等于0、𝜋/2或𝜋时,蜣螂的位置不会更新。

(2)育雏球

育雏球采用边界选择策略模拟雌性蜣螂产卵区域,产卵区域的定义为:
在这里插入图片描述

式中,𝑋∗表示当前的局部最佳位置,𝐿𝑏∗和𝑈𝑏∗分别表示产卵区的下限和上限, 𝑅 = 1 −𝑡/𝑇𝑚𝑎𝑥,𝑇𝑚𝑎𝑥表示最大迭代数,𝐿𝑏和𝑈𝑏分别代表优化问题的下限和上限。

在迭代过程中,育雏球位置是动态变化的,其定义为:
在这里插入图片描述

式中,𝐵𝑖(𝑡)是第𝑡次迭代时第𝑖个育雏球的位置信息,𝑏1和𝑏2代表两个大小为1×D 的独立随机向量,D 表示优化问题的维度。

(3)小蜣螂

需要建立一个最优觅食区域,指导幼体蜣螂寻找食物并模拟其觅食行为,其中最优觅食区域定义为:
在这里插入图片描述

式中,𝑋b表示当前的局部最佳位置,𝐿𝑏b和𝑈𝑏b分别表示最佳觅食区的下限和上限

小蜣螂的位置更新如下:
在这里插入图片描述

式中,𝑥𝑖(𝑡)是第𝑡次迭代时第𝑖只小蜣螂的位置信息,𝐶1表示遵循正态分布的随机数,𝐶2 ∈(0,1)表示随机向量。

(4)小偷蜣螂

Xb是食物竞争的最佳位置,因此小偷蜣螂位置更新方式如下:

在这里插入图片描述

式中,𝑥𝑖(𝑡)第𝑖只小偷蜣螂在第𝑡次迭代的位置信息,g 表示一个遵循正态分布的大小为1×D的随机向量,S表示一个常数值。

综上所述,DBO 算法主要分为六个步骤。

1)初始化蜣螂种群和DBO 算法的参数;

2)根据目标函数计算所有蜣螂位置的适度值;

3)更新所有蜣螂的位置;

4)判断每个更新后的蜣螂是否出了边界;

5)更新当前最优解及其适度值;

6)重复上述步骤,在𝑡达到最大迭代次数后,输出全局最优值及其最优解。[2]

02 代码目录

在这里插入图片描述

代码注释完整,其中部分DBO程序如下:
在这里插入图片描述

代码获取方式见文末

03 算法性能

采用CEC的一个测试函数来初步检验其寻优性能,得到结果如下:

在这里插入图片描述

04 总结

本文介绍了蜣螂优化算法的原理及其MATLAB实现,蜣螂优化算法虽然具有寻优能力强,收敛速度快的特点,但同时也存在全局探索和局部开发能力不平衡,容易陷入局部最优,且全局探索能力较弱的缺点,因此作者将在后面的文章中继续介绍其改进方法。

参考文献

[1] Xue Jiankai, Shen Bo. Dung beetle optimizer: a new meta-heuristic algorithm for global optimization[J]. Journal of Supercomputing, 2023,79(7):7305-7336.

[2]潘志远,卜凡亮.基于蜣螂算法优化的DV-Hop定位算法[J/OL].电子测量与仪器学报:1-10[2023-08-16].http://43.138.60.40/kcms/detail/11.2488.TN.20230803.1820.026.html

代码在作者微信公众号 KAU的云实验台 回复: DBO (大写字母) 获取

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞(ง•̀_•́)ง(不点也行)

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

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

相关文章

每日一题leetcode--使循环数组所有元素相等的最少秒数

相当于扩散,每个数可以一次可以扩散到左右让其一样,问最少多少次可以让整个数组都变成一样的数 使用枚举,先将所有信息存到hash表中,然后逐一进行枚举,计算时间长短用看下图 考虑到环形数组,可以把首项n放…

数字技术能让古籍“活过来”吗?

数字技术能让古籍“活过来”吗? 本篇目录: 一、写在前面的话 二、前言 三、你觉得数字技术能让古籍活过来吗? 四、你觉得利用现代技术修复古籍可能遇到的难点是什么? 五、如果有机会为古籍活化助力,你想参与哪部分…

C语言实现16k、48kpcm数据的双向重采样

文章目录 注意事项重采样代码int16_t数据溢出测试代码测试结果 注意事项 音频重采样过程中使用有符号数,确保计算过程正确。在48k->16k的下采样过程中,3个采样点数据相加取平均值不用担心溢出问题。已使用测试代码确认在Linux、Windows均正常。 重采…

生活随笔,记录我的日常点点滴滴.

前言 😘个人主页:曲终酣兴晚^R的小书屋🥱 😕作者介绍:一个莽莽撞撞的🐻 💖专栏介绍:日常生活&往事回忆 😶‍🌫️每日金句:被人暖一下就高热&…

Nuxt3_1_路由+页面+组件+资源+样式 使用及实例

1、 简介 1.1 开发必备 node版本 v16.10.0 我使用的是16.14.0编辑器推荐使用Volar Extension 的VS code插件Terminal 运行nuxt指令 1.2 环境搭建 安装项目: npx nuxilatest init [first_nuxt3]进入项目目录: cd [first_nuxt3]安装依赖:n…

day06-点赞系统

当热心用户或者老师给学生回答了问题以后,所有学员可以给自己心仪的回答点赞,点赞越高,排名也越靠前。 1.1.业务需求 首先我们来分析整理一下点赞业务的需求,一个通用点赞系统需要满足下列特性: 1.2.实现思路 要保…

服务器数据恢复-HP EVA存储常见故障的数据恢复流程

EVA存储原理: EVA系列存储是以虚拟化存储为实现目的的中高端存储设备,内部的结构组成完全不同于其他的存储设备,RAID在EVA内部称之为VRAID。 EVA会在每个物理磁盘(PV)的0扇区写入签名,签名后PV会被分配到不…

项目实施方案案例模板-拿来即用

《项目实施方案》实际案例模板,拿来即用,原件可获取。 项目背景 项目目标 项目范围 项目总体计划 项目组织架构 5.1. 项目职责分工 项目风险点 6.1. 项目风险分析 6.2. 项目实施关键点 项目管理规范 7.1. 项目实施约束 7.2. 项目变更冻结 7…

Vue3组件应用及单文件组件 - 抽象独立的代码

目录 前言01-组件的概念及组件的基本使用方式02-组件之间是如何进行互相通信的03-组件的属性与事件是如何进行处理的04-组件的内容是如何组合与分发处理的05-单文件组件SFC06-Vue CLI脚手架安装 前言 学习前的准备工作 官网地址:https://cn.vuejs.org/ Vue.js文件下…

【校招VIP】前端vue考点之生命周期和双向绑定

考点介绍: VUE是前端校招面试的重点,而生命周期和双向绑定又是基础考点之一,尤其在一二线公司,要求知道双向绑定的原理,以及相关代码实现。 『前端vue考点之生命周期和双向绑定』相关题目及解析内容可点击文章末尾链接…

骨传导耳机骑车好吗,骨传导耳机可用于骑摩托车吗?

如今,越来越多的人在选择耳机时转向了骨传导耳机,相较于传统耳机,这种神奇的创新产品能够让我们享受音乐的同时,也无需将耳机塞入耳中。无论是运动还是日常使用,这种设计都能给我们带来极佳的防丢能力。再也不用担心在…

【DDD - 概念】领域模型

什么是模型: 模型是一种知识形式,它通过对知识进行抽象和选择性简化和有意识的结构化来传达重要的要素信息,它可以使人专注于问题并帮助人快速的理解问题。因为系统需要一整套的知识体系来完成特定的功能,这一整套的知识体系是很…

误删文件恢复软件,这2款小白也能轻松使用!

“快给我推几个好用的文件恢复软件吧!真的非常需要!突然不见了好多重要的文件,让我超级崩溃!怎么找回这些文件呢?” 电脑误删文件已经是一个电脑用户比较常见的问题了,可能很多人都经历过这种崩溃的瞬间。那…

【C# 基础精讲】自定义异常类

自定义异常类是C#中异常处理的一种重要方式,它允许您创建具有自定义错误信息和处理逻辑的异常类型,以提高程序的可读性和可维护性。通过自定义异常类,您可以为特定的业务逻辑或应用场景创建更有意义的异常,使错误处理更加精确和有…

凸优化基础学习——凸集

凸优化基础学习——凸集 文章内容全部来自对Stephen Boyd and Lieven vandenberghe的Convex Optimization的总结归纳。 电子书资源: 链接:https://pan.baidu.com/s/1dP5zI6h3BEyGRzSaJHSodg?pwd0000 提取码:0000 基本概念 仿射集合 **…

JVM中判定对象是否回收的的方法

引用计数法 引用计数法是一种垃圾回收(Garbage Collection)算法,用于自动管理内存中的对象。在引用计数法中,每个对象都有一个关联的引用计数器,用于记录对该对象的引用数量。 当一个新的引用指向对象时,…

【数据分享】2023年7月全国各城市公交线路与站点数据

公交线路与站点数据是我们做城市研究时经常会用到的基础数据。那么去哪里获取该数据呢?今天,我们就给大家分享一份2023年7月采集的全国所有城市的公交站点与线路数据,数据格式为shp矢量格式。数据来源于开源公交信息查询网站。 数据预览 我…

Netty:ChannelHandler抛出异常,对应的channel被关闭

说明 使用Netty框架构建的socket服务端在处理客户端请求时,每接到一个客户端的连接请求,服务端会分配一个channel处理跟该客户端的交互。如果处理该channel数据的ChannelHandler抛出异常没有捕获,那么该channel会关闭。但服务端和其它客户端…

LeetCode Top100 Liked 题单(序号34~51)

​34. Find First and Last Position of Element in Sorted Array ​ 题意:找到非递减序列中目标的开头和结尾 我的思路 用二分法把每一个数字都找到,最后返回首尾两个数 代码 Runtime12 ms Beats 33.23% Memory14 MB Beats 5.16% class Solution {…

如何借助数字化为企业管理赋能?

数字化可以利用技术简化流程、增强决策并提高整体效率,从而显着增强企业管理能力。以下是有关如何使用数字化赋能企业管理的分步指南: 1.评估当前流程和需求: 了解您当前的业务流程、痛点以及可以从数字化中受益的领域。确定您想要解决的具体…