蜣螂算法(原理)

news2024/9/22 7:42:28

原文(附文献下载)

1 群体智能优化算法

SI(swarm intelligence)系统的特点是个体间的相互作用促进了智能行为的出现。

SI优化过程的实现主要包括以下两个步骤:

  • 搜索空间范围内创建一组随机个体
  • 在迭代过程中组合、移动或进化这些随机个体。

每种优化算法的区别在于如何在优化过程中设计新的策略(特别是组合、移动或进化),如:

  • 粒子群优化算法:在进化过程中,每个个体的位置可以逐渐收敛到全局最优解,主要取决于以下两个重要位置:1)一个是每个个体的最优位置,2)另一个是整个种群的全局最优位置。
  • 蚁群优化(ant colony optimization, ACO)算法:在算法中,每只蚂蚁的路径表示一个可行解,所有蚂蚁的路径构成解空间。信息素的选择对于蚁群在整个优化问题空间中搜索全局最优路径至关重要。在这种情况下,在信息素水平较强的方向上获得最短路径。

除了研究群体与个体之间的关系,新的SI还研究了生物的习性。如:

  • 灰狼优化(GWO)算法:该算法模拟了灰狼的领导等级(包括alpha、beta、delta和omega)和狩猎行为。GWO算法的狩猎机制主要包括搜索、包围和攻击猎物。
  • 鲸鱼优化算法(WOA):首次提出了模仿座头鲸社会行为的气泡网捕猎策略。

除了以上介绍的算法,还有很多算法,且都应用到了实践中,但根据No Free Lunch (NFL)定理,我们知道没有一个算法可以处理所有的优化问题。

换句话说,一个算法的优化性能可能在一组问题中表现良好,而在另一组问题中表现不佳。

因此,NFL定理鼓励寻找和开发更多性能令人满意的优化器。在上述讨论的基础上,作者提出了一种新的基于SI的优化技术-蜣螂算法(Dung beetle optimizer,DBO),旨在为复杂的优化问题提供一种更高效的优化器。

2 蜣螂的生活习性

蜣螂以动物的粪便为食。研究表明,屎壳郎有一个有趣的习惯,就是把粪便打成球状,然后滚出来,如图所示。

滚球

向后滚

其会尽可能快速有效地移动它们的粪球,这可以防止它们与其他屎壳螂竞争(偷窃)

偷窃/竞争

另一方面,屎壳郎是利用天体线索(特别是太阳、月亮和偏振光)来导航,使粪球沿直线滚动。如果完全没有光源(即完全黑暗),屎壳郎的路径就不再是直线,而是弯曲的,有时甚至略圆

一些自然因素(如风和不平整的地面)也会导致屎壳郎偏离原来的方向。此外,屎壳郎在滚动过程中很可能会遇到障碍物,无法前进。在这方面,蜣螂通常爬到粪球上跳舞(包括一系列的旋转和停顿),这决定了它们的运动方向

跳舞(旋转和停顿)

蜣螂另一个有趣的行为是,获得的粪球有以下两个主要目的

  • 一些粪球用来产卵和养育下一代
  • 其余的用作食物

具体来说,蜣螂把粪球埋起来雌性蜣螂在这些粪球里产卵

埋球

繁殖(产卵)

繁殖(养育)

粪球不仅是幼虫的发育场所,还为幼虫提供了生活所必需的食物。因此,粪球对屎壳郎的生存起着不可替代的作用。

基于屎壳郎的滚球、跳舞、觅食、偷窃和繁殖行为提出了DBO算法。

3 数学模型

1) 模拟滚球行为

根据上面的讨论,我们知道蜣螂在滚动过程中需要通过天体线索来导航,以保持粪球在直线上滚动

为了模拟滚动球的行为,蜣螂需要在整个搜索空间中朝着给定的方向移动

屎壳郎的运动轨迹如图所示。在这张图中,可以看到屎壳郎利用太阳导航红色箭头表示滚动方向

运动轨迹

在本文中,假设光源的强度也会影响屎壳郎的路径。在滚球过程中,滚球屎壳郎的位置被更新,可表示为:

x i ( t + 1 ) = x i ( t ) + α × k × x i ( t − 1 ) + b × Δ x , ( 式 1 ) Δ x = ∣ x i ( t ) − X w ∣ \begin{aligned} x_{i}(t+1) & =x_{i}(t)+\alpha \times k \times x_{i}(t-1)+b \times \Delta x, \quad (式1)\\ \\ \Delta x & =\left|x_{i}(t)-X^{w}\right| \end{aligned} xi(t+1)Δx=xi(t)+α×k×xi(t1)+b×Δx,(1)=xi(t)Xw

式中:

  • t 表示当前迭代次数
  • x i ( t ) x_{i}(t) xi(t) 表示第 i 只蜣螂在第 t 次迭代时的位置信息
  • k∈(0,0.2) 表示一个常值,表示缺陷系数
  • b 表示属于 (0,1)常值
  • α \alpha α 是赋值为-11自然系数
  • X w X^{w} Xw 表示全局最差位置
  • Δ x \Delta x Δx 用来模拟光强变化

选择两个参数(k和b)的合适值是至关重要的,本文中k和b分别设为0.1和0.3

α \alpha α 意味着许多自然因素(如风和不平整的地面)可以使屎壳郎偏离原来的方向。其中, α \alpha α= 1表示无偏差 α \alpha α=−1表示偏离原方向

为了模拟现实世界中的复杂环境,本文通过概率法 α \alpha α设为1或-1。

同样, Δ x \Delta x Δx越高光源越弱。其具有以下两个优点:

  • 在优化过程中尽可能彻底地探索整个问题空间
  • 追求更强的搜索性能,减少陷入局部最优的可能性。

因此, X w X^{w} Xw 更适合控制 Δ x \Delta x Δx 的值来扩大搜索范围。

当屎壳郎遇到障碍无法前进时,它需要通过舞蹈来重新定位,以获得新的路线。

2) 模拟跳舞行为

为了模拟舞蹈行为,我们使用切线函数来得到新的滚动方向

我们只需要考虑在区间 [ 0 , π ] [0,\pi] [0π]上定义的正切函数的值,如图所示。

一旦蜣螂成功地确定了一个新的方向,它应该继续向后滚动球。因此,对滚球屎壳郎的位置进行更新和定义如下:

x i ( t + 1 ) = x i ( t ) + tan ⁡ ( θ ) ∣ x i ( t ) − x i ( t − 1 ) ∣ ( 式 2 ) x_{i}(t+1)=x_{i}(t)+\tan (\theta)\left|x_{i}(t)-x_{i}(t-1)\right| \quad (式2) xi(t+1)=xi(t)+tan(θ)xi(t)xi(t1)(2)

  • θ ∈ [ 0 , π ] \theta\in[0,\pi] θ[0π]:偏转角。
  • ∣ x i ( t ) − x i ( t − 1 ) ∣ \left|x_{i}(t)-x_{i}(t-1)\right| xi(t)xi(t1):第 i 只蜣螂在第 t 次迭代时的位置与第 t - 1次迭代时的位置之差。因此,滚球屎壳郎的位置更新与当前和历史信息密切相关。

如果 θ \theta θ 等于0, θ / 2 \theta/2 θ/2 θ \theta θ,屎壳郎的位置不会更新。

蜣螂会将粪球滚到安全的地方,并将粪球藏起来(见下图)。为了给后代提供一个安全的环境,选择合适的产卵地点对蜣螂来说至关重要。

3) 模拟产卵行为

在上述讨论的启发下,提出了一种边界选择策略来模拟雌性蜣螂产卵的区域,其定义为:

L b ∗ = max ⁡ ( X ∗ × ( 1 − R ) , L b ) , U b ∗ = min ⁡ ( X ∗ × ( 1 + R ) , U b ) ( 式 3 ) \begin{array}{l} L b^{*}=\max \left(X^{*} \times(1-R), L b\right), \\ \\ U b^{*}=\min \left(X^{*} \times(1+R), U b\right) \end{array}\quad (式3) Lb=max(X×(1R),Lb),Ub=min(X×(1+R),Ub)(3)

  • X ∗ X^{*} X 表示当前局部最佳位置
  • L b ∗ L b^{*} Lb U b ∗ U b^{*} Ub 分别表示产卵区下限和上限
  • R = 1 − t / T m a x R = 1−t/T_{max} R=1t/Tmax T m a x T_{max} Tmax 表示最大迭代次数
  • L b Lb Lb U b Ub Ub 分别表示优化问题的下限和上限

如图所示,当前局部最佳位置 X ∗ X^{*} X 用一个大棕色圆圈表示,而 X ∗ X^{*} X 周围的小黑圆圈表示卵球。每个卵球包含一个屎壳螂卵。红色小圆圈代表边界的上下边界

产卵区

一旦确定了产卵区域,雌性蜣螂就会选择这个区域的卵球产卵。对于DBO算法,每只雌性蜣螂在每次迭代中只产一个卵

由(3)可以清楚地看到,产卵区边界范围是动态变化的,主要由R值决定。

因此,在迭代过程中巢球的位置也是动态的

B i ( t + 1 ) = X ∗ + b 1 × ( B i ( t ) − L b ∗ ) + b 2 × ( B i ( t ) − U b ∗ ) ( 式 4 ) B_{i}(t+1)=X^{*}+b_{1} \times\left(B_{i}(t)-L b^{*}\right)+b_{2} \times\left(B_{i}(t)-U b^{*}\right) \quad (式4) Bi(t+1)=X+b1×(Bi(t)Lb)+b2×(Bi(t)Ub)(4)

  • B i ( t ) B_{i}(t) Bi(t) 为第 i 个球在第 t 次迭代时的位置信息
  • b 1 b_1 b1 b 2 b_2 b2 为两个大小为 1 × D独立随机向量
  • D 为优化问题的维数

注意窝球的位置被严格限制在一定范围内,即产卵区域。

4) 模拟觅食行为

一些成年屎壳郎从地下钻出来觅食。本文称其为小屎壳郎。此外,需要建立最佳觅食区域来引导甲虫觅食,如下图所示。

最优觅食区域的边界定义如下:

L b b = max ⁡ ( X b × ( 1 − R ) , L b ) U b b = min ⁡ ( X b × ( 1 + R ) , U b ) ( 式 5 ) \begin{array}{l} L b^{b}=\max \left(X^{b} \times(1-R), L b\right) \\ \\ U b^{b}=\min \left(X^{b} \times(1+R), U b\right) \end{array} \quad (式5) Lbb=max(Xb×(1R),Lb)Ubb=min(Xb×(1+R),Ub)(5)

  • X b X^{b} Xb全局最佳位置
  • L b Lb Lb U b Ub Ub 分别为最佳觅食区域的下界和上界,其他参数在 (3) 中定义。

因此,小蜣螂的位置更新如下:

x i ( t + 1 ) = x i ( t ) + C 1 × ( x i ( t ) − L b b ) + C 2 × ( x i ( t ) − U b b ) ( 式 6 ) x_{i}(t+1)=x_{i}(t)+C_{1} \times\left(x_{i}(t)-L b^{b}\right)+C_{2} \times\left(x_{i}(t)-U b^{b}\right) \quad (式6) xi(t+1)=xi(t)+C1×(xi(t)Lbb)+C2×(xi(t)Ubb)(6)

  • x i ( t ) x_{i}(t) xi(t) 为第 i 只小蜣螂在第 t 次迭代时的位置信息
  • C 1 C_1 C1服从正态分布的随机数
  • C 2 C_2 C2 为属于(0,1)随机向量

5) 模拟偷窃行为

一些屎壳郎,被称为小偷,从其他屎壳郎那里偷粪球(见下图),需要指出的是,这是自然界中很常见的现象。

此外,由 (5) 可以看出, X b X^{b} Xb最佳食物来源。因此,可以假设 X b X^{b} Xb 附近是最适合竞争食物的地方。在迭代过程中,小偷的位置信息被更新

x i ( t + 1 ) = X b + S × g × ( ∣ x i ( t ) − X ∗ ∣ + ∣ x i ( t ) − X b ∣ ) x_{i}(t+1)=X^{b}+S \times g \times\left(\left|x_{i}(t)-X^{*}\right|+\left|x_{i}(t)-X^{b}\right|\right) xi(t+1)=Xb+S×g×(xi(t)X+xi(t)Xb)

  • x i ( t ) x_{i}(t) xi(t) 为第 i 小偷在第 t 次迭代时的 x i ( t ) x_{i}(t) xi(t)
  • g 为服从正态分布的大小为1 × D随机向量
  • S常数值

4 算法框架

基于以上讨论,本文提出的DBO算法的伪代码如下所示。

  • 首先,设 T m a x T_{max} Tmax最大迭代次数 N N N总体大小
  • 然后对DBO算法的所有代理进行随机初始化,其分布设置如下图所示。

在这个图形中,小矩形的数量表示总体大小。假设总体规模为30:蓝色、黄色、绿色和红色的长方形分别代表滚球的屎壳郎、窝球、小屎壳郎和小偷。

  • 之后,根据步骤2-27,知道了滚球屎壳郎、窝球、小屎壳郎和小偷在优化过程中不断更新。
  • 最后输出最佳位置 X b X^{b} Xb 及其适应度值。

综上所述,对于任意优化问题,DBO算法作为一种新型的基于SI的优化技术,主要有六个步骤,可以概括为:

  1. 初始化屎壳郎群和DBO算法参数
  2. 根据目标函数计算各agent的适应度值
  3. 更 新所有屎壳郎的位置
  4. 判断各agent是否出界
  5. 更新当前最优解及其适应度值
  6. 重复上述步骤,直到 t 满足终止准则,输出全局最优解及其适应度值

5 总结

DBO算法在收敛速度、求解精度和稳定性方面与其他7种优化技术进行了比较,显示出具有竞争力的搜索性能。

从理论上讲,DBO算法在探索或开发方面比其他算法更具竞争力的原因有以下几个特点:

  1. 提出了一种新型的滚球蜣螂搜索机制,不同的搜索模式使我们可以:A) 利用不同时间段的信息对搜索空间进行彻底的探索;b) 追求更强的搜索能力,以避免陷入局部最优。
  2. R参数具有动态变化的特点,可以进一步激发DBO算法的探索和开发状态。
  3. 不同的区域搜索策略(包括产卵区域和最佳觅食区域)可以促进DBO算法的利用行为。
  4. 不同的更新规则可以保证所开发的DBO算法在局部和全局搜索能力之间保持足够的平衡。

matlab code:

https://www.mathworks.com/matlabcentral/fileexchange/121278-dung-beetle-optimizer-dbo

参考:
Xue, J., Shen, B. Dung beetle optimizer: a new meta-heuristic algorithm for global optimization. J Supercomput (2022). https://doi.org/10.1007/s11227-022-04959-6.

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

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

相关文章

基于java+springmvc+mybatis+jsp+mysql的校园办公室报修管理系统

项目介绍 校园办公室报修管理系统,是基于java编程语言,ssm框架,jsp技术,mysql数据库开发,本系统主要分为用户,教师,管理员,维修员四个角色,其中用户的功能是注册和登陆系…

【多尺度融合:基于深度学习:压缩图像伪像:blocking artifact】

Deep learning-based compressed image artifacts reduction based onmulti-scale image fusion (基于多尺度图像融合的基于深度学习的压缩图像伪影减少) 在基于块的图像/视频压缩平台中,视觉上明显的压缩伪像之一称为blocking artifact&…

CubeIDE新建工程

使用CubeIDE新建工程 开发流程如图(图片来源于b站教程): 1、新建工程 打开CubeIDE,选择文件>新建>STM32Project 软件自己会下载hal库,首次下载可能会有些慢,请耐心等待。 下载完成后,自…

基于java+springmvc+mybatis+jsp+mysql的个人所得税服务系统

项目介绍 随着居民的收入不断提高,个人都需要缴纳一定比例的个人所得税,传统的方式是去税务大厅人工缴纳,为了解决这种人工交税的方式,特此开发了一个在线交税的网站,本系统采用java语言开发,后端采用ssm框…

微服务框架 SpringCloud微服务架构 微服务保护 34 规则持久化 34.2 实现push 模式

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护34 规则持久化34.2 实现push 模式34.2.1 规则管理模式 - 实现push 模式34 规则持久化 34.2 实现p…

【LeetCode每日一题:1827. 最少操作使数组递增~~~贪心遍历模拟】

题目描述 给你一个整数数组 nums (下标从 0 开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。 比方说,如果 nums [1,2,3] ,你可以选择增加 nums[1] 得到 nums [1,3,3] 。 请你返回使 num…

Opencv中关于特征点匹配定位的问题(一)

Opencv中关于特征点匹配定位的问题回顾定位回顾 在我们检测到特征点之后,通常进行特征点的匹配。 首先我们先回顾一下使用Brute-Force匹配器来进行匹配。 import cv2 import numpy as np import matplotlib.pyplot as plt#读取图片 imgcv2.imread(./newmm.png) te…

【图像边缘检测】拉普拉斯算法图像边缘检测与增强【含Matlab源码 456期】

⛄一、拉普拉斯图像增强算法优化简介 图像Laplace变换是基本图像增强算法,原始图像通过Laplace变化后会增强图像中灰度突变处的对比度,使图像中的细节部分得到增强并保留了图像的背景色调,图像的细节比原始图像更加清晰。基于Laplace的图像增强已经成为图像锐化处理的基本工具…

SpringBoot快速入门

SpringBoot快速入门1.Spring Boot是什么2.IDEA创建Spring Boot项目3.测试业务4.application.properties的基本配置1.Spring Boot是什么 众所周知 Spring 应用需要进行大量的配置,各种 XML 配置和注解配置让人眼花缭乱,且极容易出错,因此 Spr…

ADI Blackfin DSP处理器-BF533的开发详解30:鼠标的光标显示应用(含源代码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 触摸屏的硬件设计原理图 功能介绍 代码实现了读取触摸屏坐标,并将触摸屏坐标换算为液晶屏的显示坐标,将光标数据叠加到背…

我的开源项目:文件快递柜-匿名口令分享文本,文件-像拿快递一样取文件

口令传送箱 解决问题 很多时候,我们都想将一些文件或文本传送给别人,或者跨端传递一些信息,但是我们又不想为了分享,而去下载一些七里八里的软件,这时候,我们就可以使用口令传送箱,像拿快递一…

Docker快速入门—高级篇【快速浏览版】

文章目录1.Mysql复杂安装详细解说1.1 安装mysql主从复制2.Redis复杂安装详细解说2.1 分布式存储算法2.2 Redis主从安装2.2.1 Redis集群3主3从的说明2.2.2 Redis集群配置2.2.3 主从容错切换迁移案例2.2.4 主从扩容案例2.2.5 主从缩容案例3.Dockerfile解析⭐️3.1 Dockerfile简介…

no matching host key type found. Their offer: ssh-rsa 问题解决

最近升级了Mac OS Ventura 13.0.1后发现ssh指定密钥登录服务器失败。 no matching host key type found. Their offer: ssh-rsa 进入当前用户的.ssh目录发现比之前系统多了一个config文件 查看sshd版本,发现升级了,需要指定算法参数 解决办法&#xff…

12月11日第壹简报,星期日,农历十一月十八

12月11日第壹简报,星期日,农历十一月十八1. 北京急救中心呼吁:无症状、轻症患者勿拨打120,为危重症患者留出通道;钟南山:发热患者可先在家做抗原检测,如持续发热再去医院检查。2. 湖北省第一条高…

解读YOLO v7的代码(一)模型结构研究

YOLO v7在今年7月份推出,模型的性能和速度相比以往版本有了很大的提升。我也想好好研究一下YOLO v7模型,因此把官方的代码库下载下来进行研究,尝试更好的理解这个模型。 从文档中我们可以看到,如果要从头开始训练,可以…

Linux系统的开机自启动

本文为joshua317原创文章,转载请注明:转载自joshua317博客 Linux系统的开机自启动 - joshua317的博客 当你使用windows操作系统时,开机后总会有各种软件自我启动完成,你并没有在桌面上点击它们的图标启动。比如某些安全卫士,某些…

享元模式分析与实践

享元就是共享单元(元素)的意思。单元代表了整体的部分,如果一个对象其中的部分是稳定的不会改变的,那么这个部分即可以共享。享元模式的用途就是复用对象的单元,让对象的节省内存。 一、享元模式与单例模式区别 单例…

基于C++实现(控制台)停车场管理系统【100010020】

停车场管理系统 1 需求分析 1.1问题描述 停车场内只有一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。 汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场…

vite3+vue3二次封装antdvue组件方法

有时候,第三方的组件库不能满足我们的业务需求,就有必要对别人的组件进行再次的封装,下面我们以antdvue里面的button组件二次封装为例,研究下封装的过程 最后效果 基础代码 <template><div><a-button type="primary" v

网络爬虫urllib库常用函数解析

文章目录前言urllib介绍urllib发送请求urllib编码与解码urllib异常处理urllib使用IP代理urllib使用cookie前言 快期末了&#xff0c;有个数据挖掘的大作业需要用到python的相关知识&#xff08;这太难为我这个以前主学C的人了&#xff0c;不过没办法还是得学&#x1f602;&…