二区算法:蜜獾优化算法,原理详解,MATLAB代码免费获取

蜜獾优化算法(Honey Badger Algorithm,HBA)是一种受自然启发的群智能优化算法,其灵感来源于蜜獾(Honey Badger)这种动物的生存策略。蜜獾是一种生活在非洲和亚洲的小型哺乳动物,以其顽强和适应力强而著称。蜜獾优化算法模仿了蜜獾在寻找食物和避开危险时的行为,通过模拟蜜獾的觅食策略来解决优化问题。该算法具有进化能力强、搜索速度快、寻优能力强的特点。该成果于2021年发表在知名SCI期刊JCR2区Mathematics and Computers in Simulation上,目前在谷歌学术上被引率高达610次,在工程优化、机器学习、数据挖掘等有着极为广泛的应用。

7528b650c36c2045ab32bdf1cc335ee8.png

蜜獾优化算法的基本原理是将问题空间中的解看作食物的位置,将优化的目标看作食物的质量。算法通过模拟蜜獾在寻找食物时的探索和利用策略,不断调整解的位置以寻找最优解。与其他优化算法相比,蜜獾优化算法具有较强的全局搜索能力和快速收敛性,在解决复杂优化问题时表现出色。

d3e97a8f289d7bf7d2b86ba3577069a0.png

1、算法原理

介绍HBA卡算法的数学表达式。从理论上讲,HBA具有勘探和开发两个阶段,因此可以称为全局优化算法。从数学上讲,建议的HBA的步骤详细如下。这里,HBA中候选解决方案的总体表示为:

其中,蜜獾的第i个位置如下

(1)初始化

根据下式初始化蜜獾的数量(种群大小N)和它们各自的位置:

r1是0到1之间的随机数,其中Xi是指N个种群中的候选解的第i个蜜獾位置,而lbi和ubi分别是搜索域的下限和上限。

(2)定义强度

强度与猎物的集中强度和猎物与蜜獾的距离有关。Ii是猎物的气味强度;如果气味高,运动将很快,反之亦然,由下式定义:

r2是0到1之间的随机数。

其中S是源强度或浓度强度,其中di表示猎物与第i只獾之间的距离。

(3)更新密度因子

密度因子(α)控制随时间变化的随机化,以确保从勘探到开采的平稳过渡。使用下式更新随迭代而减小的递减因子α,以减少随时间的随机化:

其中C为≥1的常数(默认为2)。

(4)逃离局部最优

这一步和接下来的两个步骤用于逃离局部最优区域。在这种情况下,所提出的算法使用一个改变搜索方向的标志F,为智能体提供严格扫描搜索空间的高机会。

(5)更新代理的位置

如前所述,HBA位置更新过程(xnew)分为“挖掘阶段”和“蜂蜜阶段”两部分。下面给出了更好的解释:

在挖掘阶段,蜜獾的动作类似于心形,如下图所示。

b52ebcabf96931d4f5a14b6092899bf3.png

心形运动可由下式模拟:

xprey是猎物的位置,也就是目前找到的最佳位置,也就是全局最佳位置。β≥1(默认= 6)是蜜獾获取食物的能力。di为猎物与第i只蜜獾之间的距离,F作为改变搜索方向的标志,由下式确定:

在挖掘阶段,蜜獾主要依赖于猎物的气味强度I、与猎物的距离di和时变搜索影响因子α。此外,在挖掘活动中,獾可能会受到任何干扰,这使得它能够找到更好的猎物位置。

在蜂蜜阶段,当蜜獾跟随导蜜鸟到达蜂巢时的情况可以模拟为下式:

其中r7是0到1之间的随机数。

其中xnew为蜜獾的新位置,xprey为猎物位置,蜜獾根据距离信息di,在目前发现的猎物位置xprey附近进行搜索。在这个阶段,搜索受到随时间变化的搜索行为(α)的影响。此外,蜜獾可能会发现干扰F。

HBA算法的伪代码如下:

c8589c55dc47a770c840971a69d9d4a5.png

2、结果展示

dec7caf3e0c2063cb40fb0d6dec68f41.png

ca62b3d7cbc96080a0a1cecf4611ff26.png

6fe3f584a53c4d1436ea344a1b1bea79.png

830878190da918dd4cddfc572d127593.png

3、MATLAB核心代码

%微信公众号搜索:淘个代码,获取更多免费代码
%禁止倒卖转售,违者必究!!!!!
%唯一官方店铺:https://mbd.pub/o/author-amqYmHBs/work
% 蜜獾优化算法(HBA)
function [ Food_Score,Xprey,CNVG] = HBA(objfunc, dim,lb,ub,tmax,N)
beta       = 6;     % the ability of HB to get the food  Eq.(4)
C       = 2;     %constant in Eq. (3)
vec_flag=[1,-1];
%initialization
X=initialization(N,dim,ub,lb);
%Evaluation
fitness = fun_calcobjfunc(objfunc, X);
[GYbest, gbest] = min(fitness);
Xprey = X(gbest,:);
for t = 1:tmax
    alpha=C*exp(-t/tmax);   %density factor in Eq. (3)
    I=Intensity(N,Xprey,X); %intensity in Eq. (2)
    for i=1:N
        r =rand();
        F=vec_flag(floor(2*rand()+1));
        for j=1:1:dim
            di=((Xprey(j)-X(i,j)));
            if r<.5
                r3=rand;                r4=rand;                r5=rand;
                
                Xnew(i,j)=Xprey(j) +F*beta*I(i)* Xprey(j)+F*r3*alpha*(di)*abs(cos(2*pi*r4)*(1-cos(2*pi*r5)));
            else
                r7=rand;
                Xnew(i,j)=Xprey(j)+F*r7*alpha*di;
            end
        end
        FU=Xnew(i,:)>ub;FL=Xnew(i,:)<lb;Xnew(i,:)=(Xnew(i,:).*(~(FU+FL)))+ub.*FU+lb.*FL;
        
        tempFitness = fun_calcobjfunc(objfunc, Xnew(i,:));
        if tempFitness<fitness(i)
            fitness(i)=tempFitness;
            X(i,:)= Xnew(i,:);
        end
    end
    FU=X>ub;FL=X<lb;X=(X.*(~(FU+FL)))+ub.*FU+lb.*FL;
    [Ybest,index] = min(fitness);
    CNVG(t)=min(Ybest);
    if Ybest<GYbest
        GYbest=Ybest;
        Xprey = X(index,:);
    end
end
Food_Score = GYbest;
end

function Y = fun_calcobjfunc(func, X)
N = size(X,1);
for i = 1:N
    Y(i) = func(X(i,:));
end
end
function I=Intensity(N,Xprey,X)
for i=1:N-1
    di(i) =( norm((X(i,:)-Xprey+eps))).^2;
    S(i)=( norm((X(i,:)-X(i+1,:)+eps))).^2;
end
di(N)=( norm((X(N,:)-Xprey+eps))).^2;
S(N)=( norm((X(N,:)-X(1,:)+eps))).^2;
for i=1:N
    r2=rand;
    I(i)=r2*S(i)/(4*pi*di(i));
end
end
function [X]=initialization(N,dim,up,down)
if size(up,2)==1
    X=rand(N,dim).*(up-down)+down;
end
if size(up,2)>1
    for i=1:dim
        high=up(i);low=down(i);
        X(:,i)=rand(N,1).*(high-low)+low;
    end
end
end

参考文献

[1]Hashim F A, Houssein E H, Hussain K, et al. Honey Badger Algorithm: New metaheuristic algorithm for solving optimization problems[J]. Mathematics and Computers in Simulation, 2022, 192: 84-110.

完整代码获取方式:后台回复关键字:

TGDM877

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

淘个代码_

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值