【智能优化算法】黑翅风筝算法(Black Kite Algorithm,BKA)

黑翅风筝算法(Black Kite Algorithm,BKA)是中科院二区期刊“ARTIFICIAL INTELLIGENCE REVIEW”的文章“Black-winged kite algorithm: a nature-inspired meta-heuristic for solving benchmark functions and engineering problems”上的优化算法

01.引言

黑翅风筝算法(Black Kite Algorithm, BKA)是一种受黑鸢迁徙和捕食行为启发的元启发式优化算法。BKA将Cauchy突变策略和Leader策略相结合,提高了算法的全局搜索能力和收敛速度。这种新颖的组合在探索全球解决方案和利用本地信息之间取得了很好的平衡。对照CEC-2022和CEC-2017标准测试功能集以及其他复杂功能,BKA分别在66.7、72.4和77.8%的情况下获得最佳性能。通过详细的收敛分析和统计比较,验证了算法的有效性。此外,它在解决五个实际工程设计问题中的应用表明了它在解决现实世界中约束挑战方面的实际潜力,并表明与现有优化技术相比,它具有显著的竞争优势。综上所述,BKA以其优异的性能证明了其在解决各种复杂优化问题方面的实用价值和优势。

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

(2)在黑翅风筝算法中,我们首先引入了Cauchy突变策略,这是一种概率分布策略,可以帮助算法跳出局部最优,增加在全局搜索空间中发现更好解的概率。该策略提高了算法发现全局最优解的性能,为高维复杂优化问题提供了新的解决方案。

(3)我们整合了一个领导力策略,模仿风筝社区领导者的领导力角色,确保算法能够有效地利用当前最优解并引导搜索方向。该方法不仅有助于提高算法利用当前搜索区域的效率,而且有效地平衡了探索和利用之间的动态关系,确保在追求最优解的过程中不会忽视潜在的竞争性新区域。

02. 代码流程

03.部分代码

%________________________________________________________ ________________%
%  Black-winged Kite Algorithm (BKA) source codes                         %
%                                                                         %
%  Developed in MATLAB R2022b                                             %
%                                                                         %
%  Author and programmer:                                                 %
%  Black-winged Kite Algorithm: A nature-inspired meta-heuristic for
%              Solving benchmark functions and Engineering problems                                                                       %
%  e-Mail:                                                                %
%  Artificial Intelligence Review                                                                      %                                                                        %
%  DOI:                                                                   %
%                                                                         %
%_________________________________________________________________________%
%%
%%  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

04.代码效果图

获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复:智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB科研小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值