白鲸优化算法(Beluga whale optimization,BWO)
白鲸优化算法(Beluga whale optimization,BWO)
- 一、算法灵感
- 二、算法介绍
- 2.1 初始化
- 2.2 探索阶段
- 2.3 开发阶段
- 2.4 鲸落阶段
- 2.5 算法伪代码
- 三、实验结果
- 3.1 F5收敛曲线
- 3.2 F6收敛曲线
- 3.3 F7收敛曲线
- 四、参考文献
一、算法灵感
白鲸优化算法(Beluga whale optimization, BWO)是2022年提出的一种元启发式优化算法,其灵感来源于白鲸的生活行为。白鲸以成年鲸的纯白色而闻名,是高度群居的动物,它们可以成群聚集,有2到25个成员,平均有10个成员。与其他元启发式方法类似,BWO包含探索阶段和开发阶段,此外该算法还模拟了生物界中存在的鲸落现象。
二、算法介绍
2.1 初始化
探索阶段通过随机选择白鲸,保证了设计空间中的全局搜索能力,开发阶段控制着设计空间中的局部搜索。为了模拟行为,白鲸被视为搜索代理,通过改变位置向量在搜索空间中移动。此外,在BWO中考虑了鲸鱼坠落的概率,它改变了白鲸的位置。
由于BWO基于种群的机制,白鲸被视为搜索代理,而每条白鲸都是一个候选解决方案,并在优化过程中进行更新。矩阵到搜索代理位置的矩阵被建模为:
X = [ x 1 , 1 x 1 , 2 . . . x 1 , d x 2 , 1 x 2 , 2 . . . x 2 , d ⋮ ⋮ ⋮ ⋮ x n , 1 x n , 2 . . . x n , d ] (1) X{\rm{ = }}\left[ \begin{aligned} {{x_{1,1}}} & {{x_{1,2}}} & {...} & {{x_{1,d}}} \cr {{x_{2,1}}} & {{x_{2,2}}} & {...} & {{x_{2,d}}} \cr \vdots & \vdots & \vdots & \vdots \cr {{x_{n,1}}} & {{x_{n,2}}} & {...} & {{x_{n,d}}} \cr \end{aligned} \right]\tag{1} X= x1,1x2,1⋮xn,1x1,2x2,2⋮xn,2......⋮...x1,dx2,d⋮xn,d (1)其中, n n n 为白鲸的种群大小, d d d 为设计变量的维数。对于所有的白鲸,相应的适应度值存储如下:
F X = [ f ( x 1 , 1 , x 1 , 2 , . . . , x 1 , d ) f ( x 2 , 1 , x 2 , 2 , . . . , x 2 , d ) ⋮ f ( x n , 1 , x n , 2 , . . . , x n , d ) ] (2) {F_X} = \left[ \begin{aligned} {f({x_{1,1}},{x_{1,2}},...,{x_{1,d}})} \cr {f({x_{2,1}},{x_{2,2}},...,{x_{2,d}})} \cr \vdots \cr {f({x_{n,1}},{x_{n,2}},...,{x_{n,d}})} \cr \end{aligned} \right]\tag{2} FX= f(x1,1,x1,2,...,x1,d)f(x2,1,x2,2,...,x2,d)⋮f(xn,1,xn,2,...,xn,d) (2) BWO算法可以从探索转向开发,这取决于平衡因子 B f B_f Bf ,其数学模型为:
B f = B 0 ( 1 − t 2 T ) (3) {B_f} = {B_0}(1 - {t \over {2T}})\tag{3} Bf=B0(1−2Tt)(3)其中, t t t 为当前迭代, T T T 为最大迭代数, B 0 B_0 B0 在每次迭代时在 ( 0 , 1 ) (0,1) (0,1) 之间随机变化。勘探阶段发生在平衡因子 B f > 0.5 B_f>0.5 Bf>0.5 ,而开发阶段发生在 B f B_f Bf ≤0.5。随着迭代 T T T 的增加, B f B_f Bf 的波动范围从 ( 0 , 1 ) (0,1) (0,1) 减小到 ( 0 , 0.5 ) (0,0.5) (0,0.5),说明开发和勘探阶段的概率发生了显著变化,而开发阶段的概率随着迭代 T T T 的不断增加而增加。
2.2 探索阶段
BWO的探索阶段是通过考虑白鲸的游泳行为来建立的。白鲸可以在不同的姿势下进行社会性行为,如两对白鲸以同步或镜像的方式紧密地游泳。因此,搜索代理的位置由一对白鲸的游泳决定,白鲸的位置更新如下:
{ X i , j t + 1 = X i , p j t + ( X r , p 1 t − X i , p j t ) ( 1 + r 1 ) s i n ( 2 π r 2 ) , j = e v e n X i , j t + 1 = X i , p j t + ( X r , p 1 t − X i , p j t ) ( 1 + r 1 ) cos ( 2 π r 2 ) , j = o d d (4) \left\{ \begin{aligned} &X_{i,j}^{t + 1} = X_{i,{p_j}}^t + (X_{r,{p_1}}^t - X_{i,{p_j}}^t)(1 + {r_1})sin(2\pi {r_2})&&,j=even \cr &X_{i,j}^{t + 1} = X_{i,{p_j}}^t + (X_{r,{p_1}}^t - X_{i,{p_j}}^t)(1 + {r_1})\cos (2\pi {r_2})&&,j= odd \cr \end{aligned} \right.\tag{4} {Xi,jt+1=Xi,pjt+(Xr,p1t−Xi,pjt)(1+r1)sin(2πr2)Xi,jt+1=Xi,pjt+(Xr,p1t−Xi,pjt)(1+r1)cos(2πr2),j=even,j=odd(4)其中, t t t 为当前迭代次数, X i , j t + 1 X_{i,j}^{t + 1} Xi,jt+1 是第 i i i 条白鲸在第 j j j 维上的新位置, P j ( j = 12... , d ) {P_j}(j = 12...,d) Pj(j=12...,d) 是从 d d d 维中随机选择的, X i , j t X_{i,j}^t Xi,jt 是第 i i i 条白鲸在 j j j 维度上的位置, X i , p j t X_{i,{p_j}}^t Xi,pjt 和 X r , p 1 t X_{r,{p_1}}^t Xr,p1t 是第 i i i 和第 r r r 条白鲸( r r r 代表随机选择的白鲸)的当前位置, r 1 r_1 r1 和 r 2 r_2 r2 是范围在 ( 0 , 1 ) (0,1) (0,1) 的随机数,用于增强勘探阶段的随机算子。 s i n ( 2 π r 2 ) sin(2πr_2) sin(2πr2) 和 c o s ( 2 π r 2 ) cos(2πr_2) cos(2πr2) 用于平均鱼鳍之间的随机数。根据奇数和偶数选择的维度,更新后的位置反映了白鲸在游泳或潜水时的同步或镜像行为。
2.3 开发阶段
BWO的开发阶段的灵感来自于白鲸的捕食行为。白鲸可以根据相邻白鲸的位置,合作觅食和移动。因此,白鲸通过分享彼此的位置信息来猎物,考虑最好的候选解和其他解。在BWO的开发阶段引入了Levy飞行的策略,以提高收敛性。我们假设它们可以用Levy飞行策略捕捉猎物,其数学模型表示为:
X i t + 1 = r 3 X b e s t t − r 4 X i t + C 1 ⋅ L F ⋅ ( X r t − X i t ) (5) X_i^{t + 1} = {r_3}X_{best}^t - {r_4}X_i^t + {C_1} \cdot {L_F} \cdot (X_r^t - X_i^t)\tag{5} Xit+1=r3Xbestt−r4Xit+C1⋅LF⋅(Xrt−Xit)(5)其中, T T T 为当前迭代次数, X i t X_i^t Xit 和 X r t X_r^t Xrt 是第 i i i 条白鲸和一条随机的白鲸的当前位置, X i t + 1 X_i^{t + 1} Xit+1 是第 i i i 条白鲸的新位置, X b e s t t X_{best}^t Xbestt 是鲸鱼中最佳位置, r 3 r_3 r3 和 r 4 r_4 r4 是范围在 ( 0 , 1 ) (0,1) (0,1) 的随机数, C 1 = 2 r 4 ( 1 − t / T m a x ) {C_1} = 2{r_4}(1 - t/{T_{max}}) C1=2r4(1−t/Tmax) 用于测量Levy飞行强度的随机跳跃强度。
L F L_F LF 为Levy飞行函数,其计算方法如下:
L F = 0.05 × u × σ ∣ v ∣ 1 / β (6) {L_F} = 0.05 \times {{u \times \sigma } \over {{{\left| v \right|}^{1/\beta }}}}\tag{6} LF=0.05×∣v∣1/βu×σ(6) σ = ( Γ ( 1 + β ) × s i n ( π β / 2 ) Γ ( ( 1 + β ) / 2 ) × β × 2 ( β − 1 ) / 2 ) 1 / β (7) \sigma = {\left( {{{\Gamma (1 + \beta ) \times sin(\pi \beta /2)} \over {\Gamma ((1 + \beta )/2) \times \beta \times {2^{(\beta - 1)/2}}}}} \right)^{1/\beta }}\tag{7} σ=(Γ((1+β)/2)×β×2(β−1)/2Γ(1+β)×sin(πβ/2))1/β(7)其中, u u u 和 v v v 是正态分布的随机数, β β β 是默认的常数,等于 1.5 1.5 1.5。
2.4 鲸落阶段
在迁徙和觅食的过程中,白鲸受到了来自虎鲸、北极熊和人类的威胁。大多数白鲸都很聪明,可以通过彼此分享信息来逃避威胁。然而,少数白鲸没有幸存下来,掉进了海底。这种现象被称为“鲸鱼坠落”,喂养了大量的生物。大量的鲨鱼和无脊椎动物聚集在一起喂养鲸鱼的尸体,暴露的死鲸鱼的骨头和尸体吸引了大量的毛发甲壳类动物。最后,骨骼被细菌和珊瑚分解或占据了几十年。
为了模拟每次迭代中鲸落的行为,我们选择鲸鱼从种群中掉落的概率作为我们主观的假设,以此模拟群体中的微小变化。我们假设这些白鲸要么转移到其他地方,要么被击落并掉入深海。为了保证种群数量不变,我们利用白鲸的位置和鲸鱼下降的步长来建立更新的位置。该数学模型表示为:
X i t + 1 = r 5 X i t − r 6 X r t + r 7 X s t e p (8) X_i^{t + 1} = {r_5}X_i^t - {r_6}X_r^t + {r_7}{X_{step}}\tag{8} Xit+1=r5Xit−r6Xrt+r7Xstep(8)其中, r 5 r_5 r5 、 r 6 r_6 r6 和 r 7 r_7 r7 是 ( 0 , 1 ) (0,1) (0,1) 之间的随机数, X s t e p X_{step} Xstep 是鲸鱼坠落的步长,确定为:
X s t e p = ( u b − l b ) e x p ( − C 2 t T ) (9) {X_{step}} = ({u_b} - {l_b})exp( - {C_2}{t \over T})\tag{9} Xstep=(ub−lb)exp(−C2Tt)(9)其中, C 2 C_2 C2 为与鲸鱼下降概率和种群大小相关的步长因子( C 2 = 2 W f × n C_2=2W_f ×n C2=2Wf×n ), u b ub ub 和 l b lb lb 分别为变量的上界和下界。可以看出,步长受设计变量、迭代次数和最大迭代数的边界的影响。
在这个模型中,鲸鱼坠落的概率( W f W_f Wf )被计算为一个线性函数:
W f = 0.1 − 0.05 t / T (10) {W_f} = 0.1 - 0.05t/T\tag{10} Wf=0.1−0.05t/T(10) 鲸鱼坠落的概率从初始迭代的 0.1 0.1 0.1 下降到最后一次迭代的 0.05 0.05 0.05,说明当白鲸在优化过程中更接近食物源时,白鲸的危险降低。
2.5 算法伪代码
- 设置参数:种群的数量 N N N 最大的迭代次数 T T T
- 初始化种群,评估适应度值,得到最优解( P ∗ P^* P∗)
- While t ≤ T t ≤ T t≤T do
- 由式(10)得到鲸鱼坠落概率 W f W_f Wf ,由式(3)得到平衡因子 B f B_f Bf
- For i = 1 i = 1 i=1 to N N N do
- If B f ( i ) > 0.5 B_f(i)>0.5 Bf(i)>0.5 then
- 使用公式(4)更新第 i i i 个白鲸的新位置
- Else If B f ( i ) ≤ 0.5 B_f(i)≤0.5 Bf(i)≤0.5 then
- 更新随机跳跃强度 C 1 C_1 C1,计算Levy飞行函数
- 使用公式(5)更新第 i i i 个白鲸的新位置
- End If
- 检查新位置的边界,并评估适合度值
- End For
- For i = 1 i = 1 i=1 to N N N do
- If B f ( i ) < = W f B_f(i)<=W_f Bf(i)<=Wf then
- 使用公式(8)更新第 i i i 个白鲸的新位置
- 检查新位置的边界,并评估适合度值
- End If
- End For
- 求当前最优解 P ∗ P^* P∗
- t = t + 1 t=t+1 t=t+1
- End While
- 输出最佳解 P ∗ P^* P∗
三、实验结果
BWO在23个经典测试函数(设置维度 d i m = 30 dim=30 dim=30)的F5、F6、F7中的收敛曲线,测试函数公式如下:
函数 | 公式 | 理论值 |
---|---|---|
F5 | F 5 ( x ) = ∑ i = 1 d − 1 [ 100 ( x i + 1 − x i 2 ) 2 + ( x i − 1 ) 2 ] {F_5}(x) = \sum\nolimits_{i = 1}^{d - 1} {[100{{({x_{i + 1}} - x_i^2)}^2} + {{({x_i} - 1)}^2}]} F5(x)=∑i=1d−1[100(xi+1−xi2)2+(xi−1)2] | 0.00 0.00 0.00 |
F6 | F 6 ( x ) = ∑ i = 1 d ( x i + 5 ) 2 {F_6}(x) = {\sum\nolimits_{i = 1}^d {({x_i} + 5)} ^2} F6(x)=∑i=1d(xi+5)2 | 0.00 0.00 0.00 |
F7 | F 7 ( x ) = ∑ i = 1 d i × x i 4 + r a n d o m [ 0 , 1 ) {F_7}(x) = \sum\nolimits_{i = 1}^d {i \times x_i^4 + random[0,1)} F7(x)=∑i=1di×xi4+random[0,1) | 0.00 0.00 0.00 |
3.1 F5收敛曲线
3.2 F6收敛曲线
3.3 F7收敛曲线
四、参考文献
[1] Zhong C, Li G, Meng Z. Beluga whale optimization: A novel nature-inspired metaheuristic algorithm[J]. Knowledge-Based Systems, 2022, 109215.
白鲸优化算法(Beluga whale optimization,BWO)相关推荐
- 智能优化算法:白鲸优化算法-附代码
智能优化算法:白鲸优化算法 摘要:白鲸优化算法([Beluga whale optimization,BWO)是由是由 Changting Zhong 等于2022 年提出的一种群体智能优化算法.其灵 ...
- 白鲸优化算法学习笔记
白鲸优化算法学习笔记 1. 引言 白鲸优化算法(Whale Optimization Algorithm,简称WOA)是一种基于自然界中的白鲸行为而发展起来的启发式优化算法.该算法模拟了白鲸群体的寻食 ...
- 单目标应用:白鲸优化算法(Beluga whale optimization,BWO)优化双向长短时记忆BiLSTM的权值和阈值(提供MATLAB代码)
一.算法简介 白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和"鲸鱼坠落" ...
- 白鲸优化算法(Beluga whale optimization,BWO)Python实现
白鲸优化算法Python实现 Python实现BWO Python实现BWO import numpy as np import math from copy import deepcopy impo ...
- 基于白鲸优化算法的函数寻优算法
文章目录 一.理论基础 1.白鲸优化算法 (1)探索阶段 (2)开发阶段 (3)鲸落 2.BWO算法流程图 二.仿真实验与结果分析 三.参考文献 一.理论基础 1.白鲸优化算法 文献[1]从白鲸的行为 ...
- 【智能优化算法-白鲸优化算法】基于白鲸优化算法求解单目标优化问题附matlab代码
1 内容介绍 白鲸优化算法(Beluga whale optimization,BWO)由Changting Zhong等人于2022年提出,该算法模拟了白鲸游泳,觅食和"鲸鱼坠落" ...
- 鲸鱼优化算法(Whale Optimization Algorithm,WOA)
鲸鱼优化算法(Whale Optimization Algorithm,WOA) 一.算法灵感 二.算法介绍 2.1 初始化 2.2 包围猎物阶段 2.3 气泡网捕食法 2.3.1 收缩包围 2.3. ...
- 群体智能优化算法之鲸鱼优化算法(Whale Optimization Algorithm,WOA)
获取更多资讯,赶快关注上面的公众号吧! 文章目录 鲸鱼优化算法(Whale Optimization Algorithm,WOA) 1.1 灵感 1.2 数学建模和优化算法 1.2.1 包围捕食(En ...
- 白骨顶鸡优化算法(Coot Optimization Algorithm,COOT)
白骨顶鸡优化算法(Coot Optimization Algorithm,COOT) 一.算法灵感 二.算法介绍 2.1 初始化 2.2 跟随者位置更新(探索阶段) 2.2.1 主动更新 2.2.1. ...
最新文章
- python实现简单的http服务器_Python实现简单HTTP服务器(二)
- 在公共区块链中通过加密保护数据
- Android Studio查看Android源代码失败
- sql中的begin....end
- 计算机网络管理云红艳电子版,计算机网络管理pdf
- jQuery属性操作
- OpenCASCADE:绘制演示脚本
- iOS 开发周报:Apple 发布 iPhone 7 / 7 Plus 、Apple Watch 2 等新品
- 对C# 程序员来说现在是到目前为止最好的时代
- UVA - 548 Tree
- C++11新特性(4)
- python中的数据类型中int表示_python中的基本数据类型之 int bool str
- 【题解】ZJOI2017仙人掌
- java中hashset_Java HashSet – Java中的HashSet
- 安全测试|SQL注入技术
- MFC 为对话框窗口自定义基类
- C语言每日一练——第35天:打印菱形
- 机械键盘的“轴”有什么区别?
- (web前端网页制作课作业)使用HTML+CSS制作非物质文化遗产专题网页设计与实现
- PL读写DDR3 实现PS和PL间的数据交互
热门文章
- HTML+CSS制作人物介绍网页
- TFIDF与TextRank
- VS C1001错误可能的解决方案
- 电脑无法访问别的计算机,为什么网上邻居别的电脑访问不到我的电脑?
- python时间间隔循环_python循环间隔
- Vue进阶(幺柒捌):延伸阅读Sass、Scss、Less与Stylus编程特性
- CodeForces刷题C语言:What is for dinner?、Reconnaissance 2、Shell Game、Extra-terrestrial Intelligence、Extra
- Python 元组(tuple)
- 关于《北京市安全生产专项整治三年行动计划》的解读
- 土法合并GridView表头