2024年SCI一区新算法:黑翅鸢优化算法,原理详解,MATLAB代码免费获取
黑翅鸢优化算法(Black-winged kite algorithm,BKA)是一种受自然启发的群智能优化算法,其灵感来源于黑翅鸢(Black-winged kite)这种动物的生存策略。因为黑翅鸢在攻击和迁徙中表现出高度的适应性和智能行为。这激发了我们开发一种算法来更好地处理复杂问题。该算法具有进化能力强、搜索速度快、寻优能力强的特点。该成果于2024年发表在知名SCI期刊《Artificia
黑翅鸢优化算法(Black-winged kite algorithm,BKA)是一种受自然启发的群智能优化算法,其灵感来源于黑翅鸢(Black-winged kite)这种动物的生存策略。因为黑翅鸢在攻击和迁徙中表现出高度的适应性和智能行为。这激发了我们开发一种算法来更好地处理复杂问题。该算法具有进化能力强、搜索速度快、寻优能力强的特点。该成果于2024年发表在知名SCI期刊《Artificial Intelligence Review》上,在工程优化、机器学习、数据挖掘等有着极为广泛的应用。
黑翅鸢优化算法(Black flying Kite Algorithm, BKA)以其独特的生物启发式特征,不仅捕捉了黑翅鸢在自然界中的飞行和捕食行为,而且深度模拟了黑翅鸢对环境变化和目标位置的高度适应性。对这种生物机制的模仿为算法提供了鲁棒的动态搜索能力,使其能够有效地应对不断变化的优化环境。
1、算法原理
(1)初种群初始化
在BKA中,创建一组随机解是初始化总体的第一步。下面的矩阵可以用来表示每只黑翅鸢的位置:
其中pop是潜在解决方案的个数,dim是给定问题的维度大小,是第i个黑翅鸢的第j个维度。均匀地分配每只黑翅鸢的位置。
式中i为1 ~ pop之间的整数,其中和分别为第i个黑翅鸳在第j维的下界和上界,rand为[0,1]之间随机选取的值。
在初始化过程中,BKA选择适应度值最好的个体作为初始群体中的leader,这被认为是黑翅鸳的最优位置。下面是初始领导者的数学表示,以最小值为例。
(2)攻击行为
黑翅鸢是草原小型哺乳动物和昆虫的捕食者,在飞行过程中根据风速调整翅膀和尾巴的角度,静静地悬停观察猎物,然后迅速俯冲攻击。图a显示了黑翅鸳在空中盘旋时的攻击状态,而图b显示了黑翅鸳在空中悬停时的状态。以下是黑翅鸳攻击行为的数学模型。
该策略包括不同的攻击行为,用于全局探索和搜索。下面是黑翅鸳攻击行为的数学模型:
下面是方程的定义:
和分别表示第个黑翅鸢在第维和次迭代步骤中的位置。r为0~1之间的随机数,p为0.9的常数。T是迭代的总次数,T是到目前为止已经完成的迭代次数。
(3)迁移行为
鸟类迁徙是一种受气候和食物供应等环境因素影响的复杂行为。鸟类迁徙是为了适应季节变化,许多鸟类在冬季从北方向南迁徙,以获得更好的生存条件和资源。迁移通常由领导者领导,他们的导航技能对团队的成功至关重要。
文中提出了一个基于鸟类迁徙的假设:如果当前种群的适应度值小于随机种群的适应度值,那么领导者将放弃领导并加入迁徙种群,这表明它不适合领导种群前进。相反,如果当前种群的适应度值大于随机种群的适应度值,则会引导种群到达目的地。这种策略可以动态地选择优秀的领导者,以确保迁移的成功。以下是黑翅鸢迁徙行为的数学模型:
公式的属性定义如下:
表示到目前为止,在第t次迭代的第j维中,黑翅鸢的领先得分者。和分别表示第i个黑翅鸢在第j维的位置,在第t和(t+1)次迭代步骤中。表示任一黑翅鸢在第t次迭代中获得的第j维当前位置。表示第t次迭代中任意黑翅鸢在第j维随机位置的适应度值。
C(0,1)代表柯西变异。定义如下。
一维柯西分布是具有两个参数的连续概率分布。一维柯西分布的概率密度函数为:
当δ=1, μ = 0时,其概率密度函数成为标准形式。精确公式如下:
BKA的流程伪代码如下:
2、结果展示
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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)