单目标优化:蜣螂优化算法(Dung beetle optimizer,DBO)

news/2024/11/28 0:49:49/

蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启发所得。
在这里插入图片描述

一、蜣螂优化算法

1.1蜣螂滚球

(1)当蜣螂前行无障碍时,蜣螂在滚粪球过程中会利用太阳进行导航,下图中红色箭头表示滚动方向
在这里插入图片描述
本文假设光源的强度会影响蜣螂的位置,蜣螂在滚粪球过程中位置更新如下:

x i ( t + 1 ) = x i ( t ) + α × k × x i ( t − 1 ) + b × Δ x , Δ 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, \\ \Delta x &=\left|x_{i}(t)-X^{w}\right| \end{aligned} xi(t+1)Δx=xi(t)+α×k×xi(t1)+b×Δx,=xi(t)Xw
其中, t t t表示当前迭代次数, x i ( t ) x_{i}(t) xi(t)表示第 i i i次蜣螂在第t次迭代中的位置信息, k ∈ ( 0 , 0.2 ] k∈(0,0.2] k(0,0.2]为扰动系数, b b b ( 0 , 1 ) (0,1) (0,1) 之间的随机数, α \alpha α取 -1 或 1 , X w X^{w} Xw表示全局最差位置, Δ x \Delta x Δx用于模拟光的强度变化。
其中, α \alpha α的取值采用算法1:
在这里插入图片描述

(2)当蜣螂遇到障碍物无法前进时,它需要通过跳舞来重新调整自己,以获得新的路线。本文使用切线函数来模仿跳舞行为,以此获得新的滚动方向,滚动方向仅考虑为 [ 0 , π ] [0,π] [0,π]之间。
在这里插入图片描述
蜣螂一旦成功确定新的方向,它应该继续向后滚动球。蜣螂的位置更新如下:
x i ( t + 1 ) = x i ( t ) + tan ⁡ ( θ ) ∣ x i ( t ) − x i ( t − 1 ) ∣ x_{i}(t+1)=x_{i}(t)+\tan (\theta)\left|x_{i}(t)-x_{i}(t-1)\right| xi(t+1)=xi(t)+tan(θ)xi(t)xi(t1)
其中, θ \theta θ为偏转角,其取值为 [ 0 , π ] [0,π] [0,π],采用算法2:
在这里插入图片描述

1.2蜣螂繁殖

在这里插入图片描述

在自然界中,雌性蜣螂将粪球被滚到适合产卵的安全地方并将其隐藏起来,以此为后代提供一个安全的环境。受此启发,因而提出了一种边界选择策略以此模拟雌性蜣螂产卵的区域:
L b ∗ = max ⁡ ( X ∗ × ( 1 − R ) , L b ) U b ∗ = min ⁡ ( X ∗ × ( 1 + R ) , U b ) \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} Lb=max(X×(1R),Lb)Ub=min(X×(1+R),Ub)
其中, 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分别表示优化问题的下限和上限。
雌性蜣螂一旦确定了产卵区,就会选择在该区域育雏球产卵。每只雌性蜣螂在每次迭代中只产生一个卵,可以看出,产卵区的边界范围是动态变化的,主要由R值决定。因此,育雏球的位置在迭代过程中也是动态的,其定义如下:
B i ( t + 1 ) = X ∗ + b 1 × ( B i ( t ) − L b ∗ ) + b 2 × ( B i ( t ) − U b ∗ ) 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) Bi(t+1)=X+b1×(Bi(t)Lb)+b2×(Bi(t)Ub)
其中, B i ( t ) B_{i}(t) Bi(t)表示第t次迭代中第 i个育雏球的位置信息, b 1 b_{1} b1 b 2 b_{2} b2均为1×D的随机向量,D表示优化问题的维度。
产卵区的选择如算法3所示:
在这里插入图片描述

1.3蜣螂觅食

在这里插入图片描述
雌性蜣螂所产的卵会逐渐长大,一些已经成熟的小蜣螂会从地下出来寻找食物,小蜣螂的最佳觅食区建模如下:
L b b = max ⁡ ( X b × ( 1 − R ) , L b ) U b b = min ⁡ ( X b × ( 1 + R ) , U b ) \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} Lbb=max(Xb×(1R),Lb)Ubb=min(Xb×(1+R),Ub)
其中, X b X^{b} Xb表示全局最优位置, L b b L b^{b} Lbb U b b U b^{b} Ubb分别表示最佳觅食区的下限和上限。
在这里插入图片描述

小蜣螂的位置更新如下:
x i ( t + 1 ) = x i ( t ) + C 1 × ( x i ( t ) − L b b ) + C 2 × ( x i ( t ) − U b b ) 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) xi(t+1)=xi(t)+C1×(xi(t)Lbb)+C2×(xi(t)Ubb)
其中, x i ( t ) x_{i}(t) xi(t)表示第t次迭代中第i只小蜣螂在的位置, C 1 C_{1} C1是服从正态分布的随机数, C 2 C_{2} C2为(0,1)的随机向量。

1.4蜣螂偷窃

在这里插入图片描述

另一方面,一些蜣螂从其他蜣螂那里偷粪球,盗贼蜣螂的位置更新如下:

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)表示在第t次迭代中第i个盗贼蜣螂的位置,g为服从正态分布的1×D随机向量,S为常数。

二、蜣螂优化算法描述

滚球蜣螂、繁殖蜣螂、觅食蜣螂和偷窃蜣螂的比例分布如下:
在这里插入图片描述
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.ppmy.cn/news/889757.html

相关文章

防范网络钓鱼仍然很重要!

在众多网络攻击中,网络钓鱼可以说是攻击者最喜欢使用的攻击手段之一。据《2022年数据泄露成本报告》显示,网络钓鱼已成为数据泄露的第二大方式,占比达16%,给受访组织造成高达491万美元的泄露成本。 钓鱼者可以攻击任何在线服务中的…

金钩钓鱼java代码_金钩钓鱼

黑坑钓鲤鱼时的五个常用味型的灵活搭配及实战应用 2020/2/18 22:17:30 在日常黑坑作钓中,大家经常提及的就是味型问题了。说起味型就离不开添加剂(俗称小药),如今市场上的添加剂五花八门,有些产品为博取顾客眼球被起了各种各样的名字&#xf…

常见网络钓鱼类型

网络钓鱼是一种网络攻击,是指具有恶意动机的攻击者伪装欺骗人们并收集用户名或密码等敏感信息的一系列行为。由于网络钓鱼涉及心理操纵并依赖于人为失误(而不是硬件或软件漏洞),因此被认定为是一种社会工程攻击。 1. 普通网络钓鱼(群攻&#…

【钓鱼邮件!】一枚合格的鱼饵是什么味道【下】钓鱼文案以及钓鱼迹象

0x01 钓鱼文案准备 • 重要性 首先得让体现出来邮件的重要性,来驱使目标去查看邮件。 • 合理性 其次文案得基本合理,这个就需要结合目标的身份,日常习惯,所在公司的情况及业务进行综合考量,来编写出一个合理的文案。 …

2023年睿抗机器开发者大赛

关于这个第二题,卡了我一个多小时,虽然我很笨,但是也在努力解答啦! 那个类型D是怎么算的? 开始我是打算用长度,但是比了半天也不知道怎么比,比较合适? 下面是代码,请各…

一星级挑战:09 打渔还是晒网

打渔还是晒网 题目描述 有句俗话叫“三天打渔,两天晒网”。如果小爱前三天打渔,后两天晒网,一直重复这个过程,那么在第 n n n天,她是在打渔还是晒网呢? 输入格式 单个整数表示 n n n。 输出格式 如果在打渔,输出 Fishing; 如果在晒网,输出 Lying。

HJ94 记票统计

描述 请实现一个计票统计系统。你会收到很多投票,其中有合法的也有不合法的,请统计每个候选人得票的数量以及不合法的票数。 (注:不合法的投票指的是投票的名字不存在n个候选人的名字中!!) …

RPC分布式网络通信框架(一)—— protobuf的使用

文章目录 一、protobuf的好处二、如何创建proto三、编译生成的C类UserServiceRpcUserServiceRpc_Stub四、序列化和反序列化序列化反序列化 粘包问题解决调用者组包提供者解包 一、protobuf的好处 常见序列化和反序列化协议有XML、JSON、protobuf,相比于其他protobu…