找回密码
 立即注册
查看: 286|回复: 0

元启发式白鲸优化算法(BWO)

[复制链接]
发表于 2023-3-13 11:14 | 显示全部楼层 |阅读模式
论文:Beluga whale optimization: A novel nature-inspired metaheuristic algorithm
发表期刊:Knowledge-Based Systems
发表日期:2022年6月
一、论文的介绍

本文从白鲸的行为中得到启发,提出了一种新的元启发算法,即白鲸优化算法(BWO)。用鲸鱼的行为用来解决优化问题。BWO中 建立了探索、开发和坠落三个阶段,对应于分别对应鲸鱼游泳、捕食和鲸鱼坠落的行为。平衡系数和鲸鱼坠落的概率是自适应的,对控制探索和开发的能力起着重要作用。此外,还引入了Levy飞行,以加强开发阶段的全局收敛性。开发阶段,使用30个基准函数测试了所提出的BWO的有效性,并进行了定性、定量和可扩展性分析,其统计结果与其他15种元启发算法进行了比较。最后得出,BWO在解决单模态和多模态优化问题方面十分具有竞争力,而且在四个实际工程问题证明了BWO在解决下列问题上的优点和潜力。
1.研究背景

在过去的几十年里,随着现实世界优化问题复杂性和难度不断增加,对优化技术的要求变得越来越明显。元启发式算法是一类随机搜索方法。它在处理多模态、非连续和非差异性的问题时表现出很好的性能。因此,元启发式算法是非常流行的,它已被广泛用于解决现实世界的问题。如云计算、调度、神经网络、特征选择、图像分割、模糊控制,光伏模型,土木工程等等。
元启发式算法在优化问题具有比较好的表现,具体表现在以下方面:

  • 与问题无关或不需要问题所提供的信息,如导数、梯度或Hessian矩阵等信息,因此可以适用于多种复杂的优化问题。
  • 受自然现象启发,如模仿自然界的物理现象、生物或动物的群体生存行为等,因此可以借鉴自然界的智慧和创新。
  • 利用随机概率,优胜劣汰、择优保留、循序渐进等原则,因此可以在全局和局部之间平衡探索和开发,避免陷入局部最优解。
二、算法介绍

1.Exploration phase(探索阶段)

全局勘探,模拟白鲸成对游泳的行为。(白鲸可以在不同的姿态下进行社会性行为。如,两头白鲸紧紧靠在一起,以同步或镜像的方式成对游动)通过随机选择一个领导者和一个跟随者,更新跟随者的位置向领导者靠近。



探索阶段公式

p_{j}  (j = 1, 2, . . .  d)是一个从d维度选择的随机数。
r_{1} 和 r_{2} 是随机数 (0, 1)之间,sin(2πr2)和cos(2πr2)意味着被镜像的白鲸鳍朝向水面。白鲸的鳍是朝向表面的。根据尺寸选择奇数和偶数,更新的位置反映了白鲸在游泳或潜水时的同步或镜像行为。两个随机数 r_{1} 和 r_{2} 被用来增强在探索阶段的随机操作。
matlab伪代码:
r1 = rand(); r2 = rand();
newpos(i,params(1)) = pos(i,params(1))+(pos(RJ,params(1))-pos(i,params(2)))*(r1+1)*sin(r2*360);
newpos(i,params(2)) = pos(i,params(2))+(pos(RJ,params(1))-pos(i,params(2)))*(r1+1)*cos(r2*360);白鲸优化算法在探索阶段的作用是:

  • 增强算法的全局勘探能力,避免陷入局部最优解。
  • 保持算法的多样性,增加搜索空间的覆盖率。
  • 模拟白鲸成对游泳的社会行为,增加算法的协同性和稳定性。
2.Exploitation phase(开发阶段)

BWO的开发阶段是从白鲸的捕食行为中得到启发的。白鲸可以根据附近白鲸的位置移动合作觅食。因此,白鲸通过分享彼此的位置信息来捕食。在BWO的开发阶段,引入了Levy飞行策略,以提高收敛性(我们假设白鲸可以用Levy飞行策略捕获猎物)



算法公式

X_{i}^{T+1} 表示第i个解的下一代, X_{best}^{T} 表示当前最优解, X_{i}^{T} 表示第i个解, X_{r}^{T} 表示随机选择的解, r_{3} 和 r_{4} 分别表示探索和开发的比例, C_{1} 表示自适应平衡因子, L_{F} 表示Levy飞行。
其中, C_{1}=2r_{4}(1-T/T_{max})
L_{F}=0.05\times\frac{\mu\times\sigma}{|\nu|^{\frac{1}{\beta}}}
\sigma=(\frac{\Gamma(1+\beta)\times sin(\pi\beta/2)}{\Gamma((1+\beta)/2)\times \beta\times 2^{\beta-1}})^{1/\beta}
\beta=1.5
matlab伪代码:
r3 = rand(); r4 = rand(); C1 = 2*r4*(1-T/Max_it);
sigma=(gamma(1+alpha)*sin(pi*alpha/2)/(gamma((1+alpha)/2)*alpha*2^((alpha-1)/2)))^(1/alpha); % Levy flight
u=randn(1,nD).*sigma;
v=randn(1,nD);
S=u./abs(v).^(1/alpha);
KD = 0.05;
LevyFlight=KD.*S;
newpos(i,:) = r3*xposbest - r4*pos(i,:) + C1*LevyFlight.*(pos(RJ,:)-pos(i,:));白鲸优化算法在开发阶段的作用是:
开发阶段是指白鲸之间通过声波交流信息,根据最优解的位置更新自己的位置,从而提高搜索效率和精度这个阶段可以帮助白鲸找到更好的解决方案,避免陷入局部最优解
3.Whale fall(坠落阶段)

在迁徙和觅食期间,白鲸受到虎鲸、北极熊和人类的威胁。大多数白鲸很聪明,可以通过互相交流信息来逃避威胁。然而,有一小部分白鲸没有生存下来,沉进了深海海底。这种现象被称为 "鲸鱼坠落",给大量的生物、众多的鲨鱼和无脊椎动物聚集在一起,以白鲸的尸体为食。,而暴露在外的鲸鱼骨头和尸体则吸引了大量的毛壳类动物聚集。最后,骨架被细菌和珊瑚分解或占据几十年。
为了保证种群规模的数量不变,用白鲸的位置和鲸鱼坠落的步长用来确定更新的位置。



位置更新公式

其中, r_{5},r_{6},r_{7} 是(0,1)的随机数
X_{step}=(u_{b}-l_{b})exp(-C_{2}T/T_{max}) ,其中 C_{2} 是阶梯系数,与鲸鱼坠落的概率和种群数量有关,具体公式为( C_{2}=2W_{f}\times n ), u_{b} 和 l_{b} 分别为变量的上界和下界。可以看出步长受变量边界,迭代次数和最大迭代数的影响。而坠落概率为 W_{f}=0.1-0.05T/T_{max} 。
matlab伪代码:
r5 = rand(); r6 = rand(); r7 = rand();
C2 = 2*Npop*WF;
stepsize2 = r7*(ub-lb)*exp(-C2*T/Max_it);
newpos(i,:) = (r5*pos(i,:) - r6*pos(RJ,:)) + stepsize2; % boundary
Flag4ub = newpos(i,:)>ub;
Flag4lb = newpos(i,:)<lb;
newpos(i,:)=(newpos(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
newfit(i,1) = fobj(newpos(i,:));    % fitness calculation
Counts_run = Counts_run+1;
      if newfit(i,1) < fit(i,1)
              pos(i,:) = newpos(i,:);
              fit(i,1) = newfit(i,1);鲸鱼坠落的概率从初始迭代的0.1下降到最后迭代的0.05,表明在优化过程中,白鲸更接近食物来源,越不容易坠落,危险性降低。
BWO算法中的鲸鱼坠落方法的目的是控制探索和开发的能力,以确保全局收敛。它通过调整平衡因子 B_{f} 来实现从探索到开发的转换,并通过Levy飞行来增强开发阶段的全局收敛。
4.算法流程

第1步:初始化
算法参数,包括种群大小n和 最大迭代数Tmax,是确定的。所有白鲸的初始位置是在搜索空间内随机产生的。搜索空间内随机生成所有白鲸的初始位置,并根据目标函数获得适应值。
第2步:探索和开发阶段的更新
每个白鲸被决定进入探索阶段或开发阶段,其依据是平衡系数 B_{f}  。如果 B_{f} >0.5 的白鲸更新机制将进入探索阶段,白鲸的位置由探索阶段的算法进行更新。如果 B_{f} <0.5,白鲸的位置被开发阶段的算法进行更新。然后,计算新位置的适应值并进行排序以找到当前迭代中的最佳结果。
第3步:关于鲸鱼坠落阶段的最新情况
一些白鲸可能会死亡并落入深海,而鲸鱼坠落的概率 W_{f} 是在每次迭代中计算的。因此,白鲸的位置由坠落公式更新。
第四步:终止条件检查
如果当前的迭代次数大于最大迭代次数,则BWO算法停止。否则,从步骤2开始重复。



算法整体流程

四、重要参数

1.平衡因子

BWO中的平衡因子Bf可以控制探索和开发的能力,以确保全局收敛。它可以控制算法从探索到开发的转换,并通过Levy飞行来增强开发阶段的全局收敛。



平衡系数公式

其中 T 是当前的迭代次数, T_{max} 是最大的迭代次数, B_{0} 在每次迭代时在(0,1)之间随机变化的。当平衡因子 B_{f} >0.5时,就进入了探索阶段。而开发阶段发生在 B_{f} ≤0.5时。随着迭代次数T的增加, B_{f} 的波动范围从 (0, 1)减少到(0, 0.5),说明开发和探索阶段的概率发生了显著变化,开发阶段的概率则随着迭代次数的增加而增加。
关于平衡因子的思考:
①该公式中,随着迭代次数的增加,平衡因子将逐渐减小,表示各个目标函数的重要性差异将逐渐降低,最终达到一个平衡状态。
目标函数的重要性差异将逐渐降低,是指在BWO算法中,通过平衡因子的调整,各个目标函数的权重会逐渐逼近平衡状态,即不再出现某个目标函数权重过大或过小的情况,各目标函数的权重趋于平衡。在BWO算法中,平衡因子通过控制不同目标函数的权重,从而使得目标函数的重要性差异逐渐降低,以达到更好的优化效果。 举个例子来说,假设在一个多目标优化问题中,有两个目标函数A和B,其中A的重要性比B更高,那么在初始时刻,平衡因子可能会赋予A更高的权重,以更加重视A的优化效果。但随着BWO算法的迭代进行,平衡因子会逐渐调整,使得A和B的权重逐渐接近,最终达到平衡状态,即A和B的重要性差异逐渐降低。 这种重要性差异逐渐降低的过程,可以使得BWO算法更加全面地探索多目标问题的解空间,避免出现某个目标函数被过度优化,而其他目标函数则被忽略的情况。同时,这种平衡因子的调整过程也可以避免算法陷入局部最优解,从而提高算法的收敛性和优化效果。
②至于为什么不是1- \frac{T}{2T_{max}} ,而不是直接 \frac{T}{2T_{max}}
BWO算法中采用1- \frac{T}{2T_{max}} 的形式,是为了使平衡因子在迭代过程中逐渐减小,从而实现逐渐降低目标函数权重的效果。如果直接采用 \frac{T}{2T_{max}} 的形式,平衡因子会在迭代过程中逐渐增加,导致不同目标函数的权重逐渐失衡,不利于多目标优化问题的解决。 举个例子,假设在一个多目标优化问题中,有两个目标函数A和B,其中A的重要性比B更高,那么在初始时刻,平衡因子的值应该尽可能地靠近1,以更加重视A的优化效果。随着迭代过程的进行,平衡因子逐渐减小,使得A和B的权重逐渐接近,最终达到平衡状态。如果使用 \frac{T}{2T_{max}} 的形式,平衡因子将在迭代过程中逐渐增加,导致A的权重逐渐占优,不利于BWO算法的多目标优化效果。 因此,采用1- \frac{T}{2T_{max}} 的形式,可以使平衡因子在迭代过程中逐渐减小,从而实现目标函数权重逐渐平衡的效果,有利于多目标问题的优化。
2.Levy飞行机制

Levy飞行是一种步长的概率分布为重尾分布的随机行走,也就是说在随机行走的过程中有相对较高的概率出现大跨步。这种飞行机制可以增强优化算法的全局搜索能力和跳出局部最优的能力。
L_{F}=0.05\times\frac{\mu\times\sigma}{|\nu|^{\frac{1}{\beta}}}


有大步长“混”在其中,跳出局部最优值。
3.BWO计算复杂度

BWO的计算复杂性是判断其性能的一个重要指标。判断其性能的重要指标,它包括三个过程:初始化、适配性评估和白鲸的更新。请注意,对于白鲸,初始化过程的计算复杂度是O(n)。在探索和开发阶段,计算复杂度为O(n×Tmax),其中n是白鲸的数量,Tmax是最大迭代次数。在鲸鱼坠落阶段,计算复杂性受计算复杂度受鲸鱼坠落的概率Wf和平衡系数Bf的影响可以近似为O(0.1×n×Tmax)。因此,BWO的计算复杂度的计算复杂度约为O(n×(1+1.1×Tmax))
4.测试BWO性能的测试函数

为了测试所提出的BWO,我们测试了30个不同的基准问题。测试分为三类:单模态、多模态和组合函数。单模态的测试函数(F1-F9)显示了开发性能,而多模态的函数(F10-F24)可以挑战探索能力。此外,组合函数(F25-F30)测试了算法的局部最优规避能力。
1.单模态函数



单模态测试函数

单模态测试函数是一欸优化问题的基准函数,它们只有一个全局最优解,没有其他局部最优解。
为了更形象展示其中一个测试函数的形状,我画出其中一个测试函数(ps:有很多测试函数是画不出来的)



Sphere函数

2.多模态函数



多模态测试函数

多模态函数是一类优化问题的基准函数,它们有多个局部最优解和一个全局最优解,具有复杂的搜索空间。
同样给出一个多模态函数的图像,加深理解。
Schwefel函数是一个典型的欺骗问题,有一个全局极小值点,距离另一个局部最优点很远。Schwefel函数的表达式为:f(x) = 418.9829 * d - sum (x * sin(sqrt(abs(x))))其中d是维度,x是输入向量。Schwefel函数的图像如下所示:



Schwefel函数

3.组合函数



组合函数

组合函数就太复杂了,就不给图像了。
五、总结

BWO算法是一种模拟白鲸行为的元启发式优化算法,它分为三个阶段:探索、开发和鲸鱼坠落。平衡系数和鲸鱼坠落的概率是自适应的,它们可以根据当前迭代次数和最优解的变化来调整。平衡系数可以控制白鲸之间的交流程度,从而影响探索能力。鲸鱼坠落的概率可以控制白鲸是否跳出局部最优解,从而影响开发能力。
最后BWO具有的优点:
(1) BWO是一种无导数的优化技术,并且容易实现。
(2) BWO可以提供良好的能力来平衡探索和利用阶段,以确保全局收敛。
(3) BWO对单模态和多模态函数表现良好,尤其是在可扩展性分析方面表现突出,并为复合函数提供了竞争力。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 16:21 , Processed in 0.089455 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表