当前位置: 首页 > news >正文

智能优化算法:白鲸优化算法-附代码

智能优化算法:白鲸优化算法

摘要:白鲸优化算法([Beluga whale optimization,BWO)是由是由 Changting Zhong 等于2022 年提出的一种群体智能优化算法。其灵感来源于白鲸的群体觅食行为。

1.白鲸优化算法

BWO建立了探索、开发和鲸鱼坠落的三个阶段,分别对应于成对游泳、捕食和鲸落的行为。BWO中的平衡因子和鲸落概率是自适应的,对控制探索和开发能力起着重要作用。此外,还引入了莱维飞行来增强开发阶段的全局收敛性。

BWO算法可以从探索逐渐转换到开发,这取决于平衡因子   B f \mathrm{~B}_{\mathrm{f}}  Bf ,其定义为:
B f = B 0 ( 1 − T / ( 2   T max ⁡ ) ) \mathrm{B}_{\mathrm{f}}=\mathrm{B}_0\left(1-\mathrm{T} /\left(2 \mathrm{~T}_{\max }\right)\right) Bf=B0(1T/(2 Tmax))
其中, T \mathrm{T} T 是当前迭代次, T max ⁡ \mathrm{T}_{\max } Tmax 是最大迭代次数, B 0 \mathrm{B}_0 B0 在每次迭代中在 ( 0 , 1 ) (0,1) (0,1) 之间随机变化。探索阶段发生在平衡因子 B f > 0.5 \mathrm{B}_{\mathrm{f}}>0.5 Bf>0.5 时,而开发 阶段发生在 B f ≤ 0.5 \mathrm{B}_{\mathrm{f}} \leq 0.5 Bf0.5 。随着迭代次数 T \mathrm{T} T 的增加, B f \mathrm{B}_{\mathrm{f}} Bf 的波动范围从 ( 0 , 1 ) (0,1) (0,1) 减小到 ( 0 , 0.5 ) (0,0.5) (0,0.5) ,说明开发和探索阶段的概率发生了显著变化,而 开发阶段的概率随着迭代次数 T \mathrm{T} T 的不断增加而增加。

1.1 探索阶段

BWO的探索阶段是白鲸的游泳行为建立的。搜索代理的位置由白鲸的配对游泳决定,白鲸的位置更新如下:
{ 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 π r 2 ) , j =  even  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 \begin{cases}\mathrm{X}_{\mathrm{i}, \mathrm{j}}^{\mathrm{T+1}}=\mathrm{X}_{\mathrm{i}, \mathrm{p}_{\mathrm{j}}}^{\mathrm{T}}+\left(\mathrm{X}_{\mathrm{r}, \mathrm{p}_1}^{\mathrm{T}}-\mathrm{X}_{\mathrm{i}, \mathrm{p}_{\mathrm{j}}}^{\mathrm{T}}\right)\left(1+\mathrm{r}_1\right) \sin \left(2 \pi \mathrm{r}_2\right), \mathrm{j}=\text { even } \\ \mathrm{X}_{\mathrm{i}, \mathrm{j}}^{\mathrm{T}+1}=\mathrm{X}_{\mathrm{i}, \mathrm{p}_{\mathrm{j}}}^{\mathrm{T}}+\left(\mathrm{X}_{\mathrm{r}, \mathrm{p}_1}^{\mathrm{T}}-\mathrm{X}_{\mathrm{i}, \mathrm{p}_{\mathrm{j}}}^{\mathrm{T}}\right)\left(1+\mathrm{r}_1\right) \cos \left(2 \pi \mathrm{r}_2\right), \quad \mathrm{j}=\mathrm{odd}\end{cases} Xi,jT+1=Xi,pjT+(Xr,p1TXi,pjT)(1+r1)sin(2πr2),j= even Xi,jT+1=Xi,pjT+(Xr,p1TXi,pjT)(1+r1)cos(2πr2),j=odd
其中, T \mathrm{T} T 是当前迭代次数, X i , j T + 1 \mathrm{X}_{\mathrm{i}, \mathrm{j}}^{\mathrm{T+1}} Xi,jT+1 是第i只白鲸在第 j j j维上的新位置, p j ( j = 1 , 2 , ⋯   , d ) \mathrm{p}_{\mathrm{j}}(\mathrm{j}=1,2, \cdots, \mathrm{d}) pj(j=1,2,,d) 是从 d \mathrm{d} d 维中选择的随机整数, X i , p j T \mathrm{X}_{\mathrm{i}, \mathrm{p} \mathrm{j}}^{\mathrm{T}} Xi,pjT 是第i条白鲸 在 p j \mathrm{p}_{\mathrm{j}} pj 维度上的位置, X i , p j T \mathrm{X}_{\mathrm{i}, \mathrm{p}_{\mathrm{j}}}^{\mathrm{T}} Xi,pjT X r , p 1 T \mathrm{X}_{\mathrm{r}, \mathrm{p} 1}^{\mathrm{T}} Xr,p1T 分别是第1条和第 r \mathrm{r} r 条白鲸的当前位置 ( r \left(\mathrm{r}\right. (r 是随机选择的白鲸),随机数 r 1 r_1 r1 r 2 r_2 r2 用于增强探索阶段的随机算子 , r 1 \mathrm{r}_1 r1 r 2 \mathrm{r}_2 r2 ( 0 , 1 ) (0,1) (0,1) 的随机数, sin ⁡ ( 2 π r 2 ) \sin \left(2 \pi \mathrm{r}_2\right) sin(2πr2) sin ⁡ ( 2 π r 2 ) \sin \left(2 \pi \mathrm{r}_2\right) sin(2πr2) 表示镜像白鲸的鲌朝向水面。根据奇偶数选择的维数,更新后的位置反映了白鲸在游泳或跳水时的同步或镜像行为。

1.2 开发阶段

BWO的开发阶段受到白鲸捕食行为的启发。白鲸可以根据附近白鲸的位置合作觅食和移动。因此,白鲸通过共享彼此的位置信息来捕 食,同时考虑最佳候选者和其他候选者。在BWO的开发阶段引入了莱维飞行策略,以增强收敛性。假设它们可以使用莱维飞行策略捕捉 猎物,数学模型表示为:
X i T + 1 = r 3 X best  T − r 4 X i T + C 1 ⋅ L F ⋅ ( X r T − X i T ) \mathrm{X}_{\mathrm{i}}^{\mathrm{T}+1}=\mathrm{r}_3 \mathrm{X}_{\text {best }}^{\mathrm{T}}-\mathrm{r}_4 \mathrm{X}_{\mathrm{i}}^{\mathrm{T}}+\mathrm{C}_1 \cdot \mathrm{L}_{\mathrm{F}} \cdot\left(\mathrm{X}_{\mathrm{r}}^{\mathrm{T}}-\mathrm{X}_{\mathrm{i}}^{\mathrm{T}}\right) XiT+1=r3Xbest Tr4XiT+C1LF(XrTXiT)
其中, T \mathrm{T} T 是当前迭代次数, X i T \mathrm{X}_{\mathrm{i}}^{\mathrm{T}} XiT X r T \mathrm{X}_{\mathrm{r}}^{\mathrm{T}} XrT 分别是第 i \mathrm{i} i 条白鲸和随机白鲸的当前位置, X i T + 1 \mathrm{X}_{\mathrm{i}}^{\mathrm{T}+1} XiT+1 是第 i \mathrm{i} i 条白鲸的新位置, X b e s t T \mathrm{X}_{\mathrm{best}}^{\mathrm{T}} XbestT 是白鲸种群中的最佳位置, r 3 \mathrm{r}_3 r3 r 4 \mathrm{r}_4 r4 ( 0 , 1 ) (0,1) (0,1) 之间的随机数, C 1 = 2 r 4 ( 1 − T / T max ⁡ ) \mathrm{C}_1=2 \mathrm{r}_4\left(1-\mathrm{T} / \mathrm{T}_{\max }\right) C1=2r4(1T/Tmax) 是衡量莱维飞行强度的随机跳跃强度。 L F \mathrm{L}_{\mathrm{F}} LF 是莱维飞行函数,计算如下:
L F = 0.05 × u × σ ∣ v ∣ 1 / β σ = ( Γ ( 1 + β ) × sin ⁡ ( π β / 2 ) Γ ( ( 1 + β ) / 2 ) × β × 2 ( β − 1 ) / 2 ) 1 / β \begin{gathered} \mathrm{L}_{\mathrm{F}}=0.05 \times \frac{\mathrm{u} \times \sigma}{|\mathrm{v}|^{1 / \beta}} \\ \sigma=\left(\frac{\Gamma(1+\beta) \times \sin (\pi \beta / 2)}{\Gamma((1+\beta) / 2) \times \beta \times 2^{(\beta-1) / 2}}\right)^{1 / \beta} \end{gathered} LF=0.05×v1/βu×σσ=(Γ((1+β)/2)×β×2(β1)/2Γ(1+β)×sin(πβ/2))1/β
其中, u u u v v v 为正态分布随机数, β \beta β 为默认常数,等于1.5。

1.3 鲸鱼坠落

为了在每次迭代中模拟鲸鱼坠落的行为,从种群中的个体中选择鲸鱼坠落概率作为主观假设,以模拟群体中的小变化。假设这些白鲸要 么移到别处,要么被击落并坠入深海。为了确保种群大小的数量恒定,使用白鲸的位置和鲸鱼落体的步长来建立更新的位置。数学模型表 示为:
X i T + 1 = r 5 X i T − r 6 X r T + r 7 X step  \mathrm{X}_{\mathrm{i}}^{\mathrm{T}+1}=\mathrm{r}_5 \mathrm{X}_{\mathrm{i}}^{\mathrm{T}}-\mathrm{r}_6 \mathrm{X}_{\mathrm{r}}^{\mathrm{T}}+\mathrm{r}_7 \mathrm{X}_{\text {step }} XiT+1=r5XiTr6XrT+r7Xstep 
其中, r 5 、 r 6 \mathrm{r}_5 、 \mathrm{r}_6 r5r6 r 7 \mathrm{r}_7 r7 ( 0 , 1 ) (0,1) (0,1) 之间的随机数, X s t e p \mathrm{X}_{\mathrm{step}} Xstep 是鲸鱼坠落的步长,定义为:
X step  = ( u b − l b ) exp ⁡ ( − C 2   T / T max ⁡ ) \mathrm{X}_{\text {step }}=\left(\mathrm{u}_{\mathrm{b}}-\mathrm{l}_{\mathrm{b}}\right) \exp \left(-\mathrm{C}_2 \mathrm{~T} / \mathrm{T}_{\max }\right) Xstep =(ublb)exp(C2 T/Tmax)
其中, C 2 \mathrm{C}_2 C2 是与鲸鱼下降概率和种群规模相关的阶跃因子 ( C 2 = 2   W f × n ) \left(\mathrm{C}_2=2 \mathrm{~W}_{\mathrm{f}} \times \mathrm{n}\right) (C2=2 Wf×n) u b \mathrm{u}_{\mathrm{b}} ub l b \mathrm{l}_{\mathrm{b}} lb 分别是变量的上下限。可以看出,步长受问题变量边 界、当前迭代次数和最大迭代次数的影响。
在该模型中,鲸鱼坠落概率 ( W f ) \left(\mathrm{W}_{\mathrm{f}}\right) (Wf) 作为线性函数计算:
W f = 0.1 − 0.05   T / T max ⁡ \mathrm{W}_{\mathrm{f}}=0.1-0.05 \mathrm{~T} / \mathrm{T}_{\max } Wf=0.10.05 T/Tmax
鲸鱼队落的概率从初始迭代的0.1降低到最后一次迭代的 0.05 0.05 0.05 ,表明在优化过程中,当白鲸更接近食物源时,白鲸的危险性降低。

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1] Changting Zhong, Gang Li, Zeng Meng. Beluga whale optimization: A novel nature-inspired metaheuristic algorithm[J]. Knowledge-Based Systems, 2022, 251: 109215.

5.Matlab代码

6.python代码

相关文章:

  • OAuth 2.0 (第三方登录)前端流程实现
  • 【JAVA高级】——吃透JDBC中的事务及事务的封装
  • AJAX快速入门、同步和异步、Axios异步框架、JSON
  • 2022年了,软件测试已经饱和了?
  • 闭包“陷阱” 私有对象真的没办法修改属性吗?
  • Ai-WB1系列驱动4.0寸电阻触摸屏运行LVGL v8.3
  • Symfony 表单教程
  • 程序员最浪漫的表白方式,将情书写在她的照片里,Python简直太厉害啦~
  • 硬件电路(3)设计篇----为什么栅极型推挽电路不用上P下N?
  • SpringSecurity(十三)---实现过滤器(上)基础讲解
  • 【微信小程序系列:三】前端实现微信支付与代扣签约
  • 每天五分钟机器学习:数据和特征决定机器学习的上限(特征工程)
  • Mysql注入
  • 测开 - 进阶篇 - 细节狂魔
  • 四旋翼无人机学习第4节--STM32、MPU9250等器件的绘制
  • Linux系统中利用open函数多次打开同一个文件操作方法
  • Windows下安装及卸载程序可用的添加和删除当前路径到环境变量的bat脚本以及如何和inno setup结合使用的实例
  • 【无标题】
  • stm32f103c6t6下的HAL库搭建三种低功耗模式
  • 多态