黑翅鸢优化算法(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.png 246b8fdb9db901d26d58f8589294cd55.png af03b3d95b0531ea5720c83fca5aa6d7.png 00c3ded50093086eecc07fec34d75527.png bd3dbac784fb1059b0b11f482f4dcf75.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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐