2022年优化算法人工兔(ARO)优化算法

本文介绍了一种新的元启发式算法人工兔子优化(ARO),灵感源于兔子的觅食策略。算法通过绕道觅食和随机隐藏来避免被捕食者,MATLAB代码展示了其求解过程。测试结果显示了算法的有效性。
摘要由CSDN通过智能技术生成

        提出了一种新的仿生元启发式算法人工兔子优化(ARO),并进行了全面的测试。ARO算法的灵感来自于自然界中兔子的生存策略,包括绕道觅食和随机隐藏。绕道觅食策略迫使兔子吃其他兔子巢穴附近的草,这可以防止它的巢穴被捕食者发现。随机隐藏策略使兔子能够从自己的洞穴中随机选择一个洞穴进行隐藏,从而减少了被敌人捕获的可能性。此外,兔子的能量收缩会导致兔子从绕道觅食策略向随机隐藏策略的过渡。

MATLAB代码如下:

function [BestX,BestF,HisBestF]=ARO(F_index,MaxIt,nPop)
[Low,Up,Dim]=EngRange(F_index);
PopPos=zeros(nPop,Dim);
PopFit=zeros(nPop,1);

for i=1:nPop
    PopPos(i,:)=rand(1,Dim).*(Up-Low)+Low;
    PopFit(i)=EngFunctions(PopPos(i,:),F_index);
end

BestF=inf;
BestX=[];

for i=1:nPop
    if PopFit(i)<=BestF
        BestF=PopFit(i);
        BestX=PopPos(i,:);
    end
end

HisBestF=zeros(MaxIt,1);

for It=1:MaxIt
    Direct1=zeros(nPop,Dim);
    Direct2=zeros(nPop,Dim);
    theta=2*(1-It/MaxIt);
    for i=1:nPop
        L=(exp(1)-exp(((It-1)/MaxIt)^2))*(sin(2*pi*rand));%Eq.(3)
        rd=ceil(rand*(Dim));
        Direct1(i,randperm(Dim,rd))=1;
        c=Direct1(i,:);%Eq.(4)
        R=L.*c;%Eq.(2)
        
        A=2*log(1/rand)*theta;% Eq.(15)

        if A>1

            K=[1:i-1 i+1:nPop];
            RandInd=K(randi([1 nPop-1]));
            newPopPos=PopPos(RandInd,:)+R.*( PopPos(i,:)-PopPos(RandInd,:))...
                +round(0.5*(0.05+rand))*randn;%Eq.(1)
        else

            Direct2(i,ceil(rand*Dim))=1;
            gr=Direct2(i,:);%Eq.(12)
            H=((MaxIt-It+1)/MaxIt)*randn; %Eq.(8)
            b=PopPos(i,:)+H*gr.*PopPos(i,:);%Eq.(13)
            newPopPos=PopPos(i,:)+ R.*(rand*b-PopPos(i,:));%Eq.(11)

        end
        newPopPos=SpaceBound(newPopPos,Up,Low);
        newPopFit=EngFunctions(newPopPos,F_index);
        if newPopFit<PopFit(i)
            PopFit(i)=newPopFit;
            PopPos(i,:)=newPopPos;
        end

    end

    for i=1:nPop
        if PopFit(i)<BestF
            BestF=PopFit(i);
            BestX=PopPos(i,:);
        end
    end

    HisBestF(It)=BestF;

end

测试结果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值