【智能优化算法】红尾鹰优化算法(Red-tailed hawk algorithm,RTH)

红尾鹰优化算法(Red-tailed hawk algorithm,RTH)是期刊“Scientific Reports”的智能优化算法

01.引言

这项研究提出了一种新的受自然启发的元启发式优化算法,称为红尾鹰算法(RTH)。作为捕食者,红尾鹰有从发现猎物到猛扑阶段的狩猎策略。狩猎过程分为三个阶段。在高空翱翔阶段,红尾鹰探索搜索空间,确定猎物所在的区域。在低空翱翔阶段,红尾在猎物周围选定的区域内移动,选择最佳位置进行捕猎。然后,红尾在弯腰和俯冲阶段摆动并击中目标。该算法模仿红尾鹰的猎物狩猎方法来解决现实世界的优化问题。所提出的 RTH 算法的性能已针对三类问题进行了评估。第一类包括三种特定类型的优化问题:22 个标准基准函数,包括单峰、多峰和固定维多峰函数、IEEE 进化计算大会 2020 (CEC2020) 和 IEEE CEC2022。将所提出的算法与八种最新算法进行比较,以确认其对解决这些问题的贡献。考虑的算法有农田肥力优化算法 (FO)、非洲秃鹫优化算法 (AVOA)、山羚优化算法 (MGO)、大猩猩部队优化算法 (GTO)、COOT 算法、饥饿游戏搜索 (HGS)、天鹰优化算法 (AO) 和哈里斯老鹰优化(HHO)。比较结果的准确性、鲁棒性和收敛速度。第二类包括七个现实世界的工程问题,将考虑对 RTH 性能与其他已发表的结果进行深入比较。最后,将执行质子交换膜燃料电池 (PEMFC) 提取参数,以评估具有复杂问题的算法。所提出的算法将与几篇已发表的论文进行比较,以验证其性能。每个类别的最终结果证实了所提出的 RTH 算法在大多数情况下提供更高性能的能力。对于第一类,RTH大多以更快的收敛速度获得了大多数函数的最优解。在解决实际工程问题或提取 PEMFC 参数时,RTH 为第二类和第三类提供了更好的性能。

02.优化算法的流程

红尾鹰优化算法(Red-tailed hawk algorithm,RTH)模仿红尾鹰的狩猎行为。在每个狩猎阶段采取的行动都会被呈现和建模。该算法包括高翱翔、低翱翔、弯腰俯冲三个阶段。

03.部分代码

function [Cost, Pos, Convergence_curve]=RTH(N,Tmax,low,high,dim,fobj)
Xbestcost = inf; Xbestpos = rand(N,dim);
for i=1:N
    Xpos(i,:) = low+(high-low).*rand(1,dim);
    Xcost(i)=fobj(Xpos(i,:));
    if Xcost(i) < Xbestcost
        Xbestpos = Xpos(i,:);
        Xbestcost = Xcost(i);
    end
end
A=15;
R0=0.5;
r = 1.5;
for t=1:Tmax
    %%               1- High Soaring
    Xmean=mean(Xpos);
    TF = 1+sin(2.5-t/Tmax); % TF
    for i=1:N
        Xnewpos=Xbestpos+(Xmean-Xpos(i,:)).*Levy(dim)*TF;
        Xnewpos = max(Xnewpos, low);
        Xnewpos = min(Xnewpos, high);
        Xnewcost=fobj(Xnewpos);
        if Xnewcost<Xcost(i)
           Xpos(i,:) = Xnewpos;
           Xcost(i)= Xnewcost;
             if Xcost(i) < Xbestcost
              Xbestpos= Xpos(i,:);
             Xbestcost=Xcost(i); 
             end
        end
    end
    %%                2- Low Soaring
    Xmean=mean(Xpos);
    for i=1:N-1
        aa=randperm(N);
        Xpos=Xpos(aa,:);
        Xcost=Xcost(aa);
        [x y]=polr(A,R0,N,t,Tmax,r);
        StepSize=Xpos(i,:)-Xmean;
        Xnewpos = Xbestpos +(y(i)+x(i))*StepSize;
        Xnewpos = max(Xnewpos, low);
        Xnewpos = min(Xnewpos, high);
        Xnewcost=fobj(Xnewpos);
        if Xnewcost<Xcost(i)
           Xpos(i,:) = Xnewpos;
           Xcost(i)= Xnewcost;
           if Xcost(i) < Xbestcost
                     Xbestpos= Xpos(i,:);
                    Xbestcost=Xcost(i);
           end
        end
    end
    %%                3- Stopping & Swooping
    Xmean=mean(Xpos);
    TF = 1+0.5*sin(2.5-t/Tmax); 
    for i=1:N
        b=randperm(N);
        Xpos=Xpos(b,:);
        Xcost=Xcost(b);
        [x y]=polr(A,R0,N,t,Tmax,r);
        alpha=(sin(2.5-t/Tmax).^2);
        G=2*(1-(t/Tmax));
        StepSize1 = 1.*Xpos(i,:) - TF*Xmean;
        StepSize2= G.*Xpos(i,:)-TF*Xbestpos;
        Xnewpos = alpha*Xbestpos+x(i)*StepSize1+y(i)*StepSize2;
        Xnewpos = max(Xnewpos, low);
        Xnewpos = min(Xnewpos, high);
        Xnewcost=fobj(Xnewpos);
        if Xnewcost<Xcost(i)
           Xpos(i,:) = Xnewpos;
           Xcost(i)= Xnewcost;
           if Xcost(i) < Xbestcost
                     Xbestpos= Xpos(i,:);
                    Xbestcost=Xcost(i); 
           end
        end
    end
    Convergence_curve(t)=Xbestcost;
    Cost = Xbestcost;
    Pos = Xbestpos;
end
 function [xR yR]=polr(A,R0,N,t,MaxIt,r)
%// Set parameters
th = (1+t/MaxIt)*A*pi*rand(N,1);
R  =(r-t/MaxIt)*R0*rand(N,1); 
xR = R.*sin(th);
yR = R.*cos(th);
 xR=xR/max(abs(xR));
 yR=yR/max(abs(yR));
 
 function o=Levy(d)
beta=1.5;
sigma=(gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2)))^(1/beta);
u=randn(1,d)*sigma;v=randn(1,d);step=u./abs(v).^(1/beta);
o=step;

04.代码效果图

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MATLAB科研小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值