2024年SCI一区新算法:黑翅鸢优化算法,原理详解,MATLAB代码免费获取

avatar
作者
筋斗云
阅读量:0

黑翅鸢优化算法(Black-winged kite algorithm,BKA)是一种受自然启发的群智能优化算法,其灵感来源于黑翅鸢(Black-winged kite)这种动物的生存策略。因为黑翅鸢在攻击和迁徙中表现出高度的适应性和智能行为。这激发了我们开发一种算法来更好地处理复杂问题。该算法具有进化能力强、搜索速度快、寻优能力强的特点。该成果于2024年发表在知名SCI期刊《Artificial Intelligence Review》上,在工程优化、机器学习、数据挖掘等有着极为广泛的应用。

36b7689d0065ffc0de805f097b0f6422.png

黑翅鸢优化算法(Black flying Kite Algorithm, BKA)以其独特的生物启发式特征,不仅捕捉了黑翅鸢在自然界中的飞行和捕食行为,而且深度模拟了黑翅鸢对环境变化和目标位置的高度适应性。对这种生物机制的模仿为算法提供了鲁棒的动态搜索能力,使其能够有效地应对不断变化的优化环境。

911e2a210be06d7e4f974add45e59f4c.png

1、算法原理

(1)初种群初始化

在BKA中,创建一组随机解是初始化总体的第一步。下面的矩阵可以用来表示每只黑翅鸢的位置:

其中pop是潜在解决方案的个数,dim是给定问题的维度大小,是第i个黑翅鸢的第j个维度。均匀地分配每只黑翅鸢的位置。

式中i为1 ~ pop之间的整数,其中和分别为第i个黑翅鸳在第j维的下界和上界,rand为[0,1]之间随机选取的值。

在初始化过程中,BKA选择适应度值最好的个体作为初始群体中的leader,这被认为是黑翅鸳的最优位置。下面是初始领导者的数学表示,以最小值为例。

(2)攻击行为

黑翅鸢是草原小型哺乳动物和昆虫的捕食者,在飞行过程中根据风速调整翅膀和尾巴的角度,静静地悬停观察猎物,然后迅速俯冲攻击。图a显示了黑翅鸳在空中盘旋时的攻击状态,而图b显示了黑翅鸳在空中悬停时的状态。以下是黑翅鸳攻击行为的数学模型。

ea37e974ea3e85891d11a475270742ae.png

10f233c929757e7a4c4b59b4b1831ed9.png

该策略包括不同的攻击行为,用于全局探索和搜索。下面是黑翅鸳攻击行为的数学模型:

bef0157fbfbdac893c40eb36e4947357.png

7127c32f2224b0d92bdc7146231ffc48.png

下面是方程的定义:

和分别表示第个黑翅鸢在第维和次迭代步骤中的位置。r为0~1之间的随机数,p为0.9的常数。T是迭代的总次数,T是到目前为止已经完成的迭代次数。

(3)迁移行为

鸟类迁徙是一种受气候和食物供应等环境因素影响的复杂行为。鸟类迁徙是为了适应季节变化,许多鸟类在冬季从北方向南迁徙,以获得更好的生存条件和资源。迁移通常由领导者领导,他们的导航技能对团队的成功至关重要。

9c4758a0917a884b20c6cf742b008796.png

文中提出了一个基于鸟类迁徙的假设:如果当前种群的适应度值小于随机种群的适应度值,那么领导者将放弃领导并加入迁徙种群,这表明它不适合领导种群前进。相反,如果当前种群的适应度值大于随机种群的适应度值,则会引导种群到达目的地。这种策略可以动态地选择优秀的领导者,以确保迁移的成功。以下是黑翅鸢迁徙行为的数学模型:

cb5a0351f65591541de31bd1b738ac7f.png

公式的属性定义如下:

表示到目前为止,在第t次迭代的第j维中,黑翅鸢的领先得分者。和分别表示第i个黑翅鸢在第j维的位置,在第t和(t+1)次迭代步骤中。表示任一黑翅鸢在第t次迭代中获得的第j维当前位置。表示第t次迭代中任意黑翅鸢在第j维随机位置的适应度值。

C(0,1)代表柯西变异。定义如下。

一维柯西分布是具有两个参数的连续概率分布。一维柯西分布的概率密度函数为:

当δ=1, μ = 0时,其概率密度函数成为标准形式。精确公式如下:

BKA的流程伪代码如下:

6d64b542c5e806466c42690c8c77a0f7.png

2、结果展示

2e6a7752b731186e3a78935aa7bb5cba.png246b8fdb9db901d26d58f8589294cd55.pngaf03b3d95b0531ea5720c83fca5aa6d7.png00c3ded50093086eecc07fec34d75527.pngbd3dbac784fb1059b0b11f482f4dcf75.png

3、MATLAB核心代码 

%%  Black-winged Kite Algorithm function [Best_Fitness_BKA,Best_Pos_BKA,Convergence_curve]=BKA(pop,T,lb,ub,dim,fobj) %% ----------------Initialize the locations of Blue Sheep------------------% p=0.9;r=rand; XPos=initialization(pop,dim,ub,lb);% Initial population for i =1:pop     XFit(i)=fobj(XPos(i,:)); end Convergence_curve=zeros(1,T); %% -------------------Start iteration------------------------------------% for t=1:T     [~,sorted_indexes]=sort(XFit);     XLeader_Pos=XPos(sorted_indexes(1),:);     XLeader_Fit = XFit(sorted_indexes(1)); %% -------------------Attacking behavior-------------------%     for i=1:pop         n=0.05*exp(-2*(t/T)^2);         if p<r             XPosNew(i,:)=XPos(i,:)+n.*(1+sin(r))*XPos(i,:);         else             XPosNew(i,:)= XPos(i,:).*(n*(2*rand(1,dim)-1)+1);         end         XPosNew(i,:) = max(XPosNew(i,:),lb);XPosNew(i,:) = min(XPosNew(i,:),ub);%%Boundary checking %% ------------ Select the optimal fitness value--------------%         XFit_New(i)=fobj(XPosNew(i,:));         if(XFit_New(i)<XFit(i))             XPos(i,:) = XPosNew(i,:);             XFit(i) = XFit_New(i);         end %% -------------------Migration behavior-------------------%          m=2*sin(r+pi/2);         s = randi([1,30],1);         r_XFitness=XFit(s);         ori_value = rand(1,dim);cauchy_value = tan((ori_value-0.5)*pi);         if XFit(i)< r_XFitness             XPosNew(i,:)=XPos(i,:)+cauchy_value(:,dim).* (XPos(i,:)-XLeader_Pos);         else             XPosNew(i,:)=XPos(i,:)+cauchy_value(:,dim).* (XLeader_Pos-m.*XPos(i,:));         end         XPosNew(i,:) = max(XPosNew(i,:),lb);XPosNew(i,:) = min(XPosNew(i,:),ub); %%Boundary checking %% --------------  Select the optimal fitness value---------%         XFit_New(i)=fobj(XPosNew(i,:));         if(XFit_New(i)<XFit(i))             XPos(i,:) = XPosNew(i,:);             XFit(i) = XFit_New(i);         end     end     %% -------Update the optimal Black-winged Kite----------%     if(XFit<XLeader_Fit)         Best_Fitness_BKA=XFit(i);         Best_Pos_BKA=XPos(i,:);     else         Best_Fitness_BKA=XLeader_Fit;         Best_Pos_BKA=XLeader_Pos;     end     Convergence_curve(t)=Best_Fitness_BKA; end end

参考文献

[1]Wang J, Wang W, Hu X, et al. Black-winged kite algorithm: a nature-inspired meta-heuristic for solving benchmark functions and engineering problems[J]. Artificial Intelligence Review, 2024, 57(4): 1-53.

完整代码获取

后台回复关键词:

TGDM877

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!