获取资源
请见文章第5节:资源获取】白鲸优化算法 (BWO,beluga whale optimization) 是2022 年在白鲸游泳、捕鲸及跌倒等行为中得到启发而提出的一种新型基于种群的元启发式算法。BWO 主要对白鲸游泳、捕食及跌倒 (坠落) 等行为进行模拟,其对应探索、开发及鲸鱼坠落三个阶段。BWO 当中鲸落概率与平衡因子均为自适应的,对开发能力与控制搜索起到决定性作用。除此之外,在开发阶段引入 Levy 飞行策略来进一步提升该阶段的全局收敛性。
准反向学习QOBL策略是一种强大的策略,被广泛运用于多种群智能算法中,以提高算法的迭代速度。QOBL策略主要涉及以下两个公式:
X i , j t + 1 = C i , j + ( X i , j o − C i , j ) × r a n d (1) X_{i,j}^{t+1}=C_{i,j}+(X_{i,j}^{o}-C_{i,j})\times rand\tag1 Xi,jt+1=Ci,j+(Xi,jo−Ci,j)×rand(1)
X i , j t + 1 = C i , j + ( C i , j − X i , j o ) × r a n d (2) X_{i,j}^{t+1}=C_{i,j}+(C_{i,j}-X_{i,j}^{o})\times rand\tag2 Xi,jt+1=Ci,j+(Ci,j−Xi,jo)×rand(2)
其中, X i , j o X_{i,j}^{o} Xi,jo是 X i , j X_{i,j} Xi,j的镜像反向解, C i , j C_{i,j} Ci,j是第 j j j维变量的上下限的中心值, X i , j t + 1 X_{i,j}^{t+1} Xi,jt+1即为根据QOBL策略生成的新的反向解,根据一定规则采用公式(1)还是公式(2)来生成该解。
对于生成的新解,只保留优于原先解的新解,否则,丢弃。
旋风觅食策略(CFS)是从种群围绕最优解的螺旋运动中概念化出来的策略,在蝠鲼优化算法中也被用到。CFS策略可以加强BWO算法的开发阶段,即种群可以围绕最佳解决方案以螺旋方向移动,使得后面的白鲸个体可以游向前面的白鲸个体。图1展示了种群螺旋移动的轨迹。
其中, β \beta β表示一个权重系数,和迭代次数有关。 r 8 r_{8} r8是[0,1]之间的随机值。 X b e s t t X_{best}^{t} Xbestt为上一次迭代的最优个体, X i t X_{i}^{t} Xit为原先的第 i i i个白鲸个体, X i t + 1 X_{i}^{t+1} Xit+1为更新后的新个体。
与第一个策略一样,更新的个体同样要进行贪婪选择。
Function_name = 'F1'; % 测试函数名
Npop = 30; % 种群个数
Max_it = 500; % 最大迭代次数
[lb,ub,nD,fobj]=Get_Functions_details(Function_name);
[xposbest_BWO,fvalbest_BWO,Curve_BWO]=BWO(Npop,Max_it,lb,ub,nD,fobj); % 白鲸优化算法
[fvalbest_GWO,xposbest_GWO,Curve_GWO]=GWO(Npop,Max_it,lb,ub,nD,fobj); % 灰狼优化算法
[fvalbest_WOA,xposbest_WOA,Curve_WOA]=WOA(Npop,Max_it,lb,ub,nD,fobj); % 鲸鱼优化算法
[fvalbest_SSA,xposbest_SSA,Curve_SSA]=SSA(Npop,Max_it,lb,ub,nD,fobj); % 麻雀搜索算法
[xposbest_EBWO,fvalbest_EBWO,Curve_EBWO]=EBWO(Npop,Max_it,lb,ub,nD,fobj); % 改进白鲸优化算法
figure('Position',[454 445 694 297]);
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
subplot(1,2,2);
% 灰狼优化算法
semilogy(Curve_GWO,'Color','b','LineWidth',2)
hold on
% 鲸鱼优化算法
semilogy(Curve_WOA,'Color','g','LineWidth',2)
hold on
% 麻雀搜索算法
semilogy(Curve_SSA,'Color','m','LineWidth',2)
hold on
% 白鲸优化算法
semilogy(Curve_BWO,'Color','k','LineWidth',2)
hold on
% 改进白鲸优化算法
semilogy(Curve_EBWO,'Color','r','LineWidth',2)
title(Function_name)
xlabel('Iteration');
ylabel('Best fitness function');
axis tight
legend('GWO','WOA','SSA','BWO','EBWO')
可以获取完整代码资源。