二区算法:蜜獾优化算法,原理详解,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

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
优化算法(Honey Bee Optimization Algorithm, HBA)是一种基于蜂觅食行为的启发式优化算法。该算法模拟了蜂在寻找源的过程中的智能行为,通过迭代搜索来寻找最优解。 优化算法的具体过程如下:首先,初始化一群,并随机分配到不同的位置上。接着,会根据目标函数的评估结果选择性地进行搜索。搜索的过程中,会根据该位置附近的信息素浓度以及该位置对应的目标函数值来进行决策。信息素浓度越高,说明该位置附近的解可能较优,因此更倾向于在该位置附近进行搜索。同时,目标函数值越小,说明该位置的解越接近最优解,因此也更倾向于在这些位置进行搜索。 在搜索过程中,会通过局部搜索和全局搜索两种方式来进行优化。局部搜索主要针对某个特定位置附近的解进行搜索,通过精细调整当前位置周围的解来寻找更优的解。全局搜索主要通过选择具有较高信息素浓度的位置进行搜索,以找到新的潜在最优解。 通过多次迭代搜索,优化算法能够逐渐靠近最优解,并且具有较好的全局搜索能力和较快的收敛速度。同时,该算法具有较好的鲁棒性和自适应性,在多种问题领域都有广泛应用。 在Python中实现优化算法,可以首先定义目标函数,并选择合适的算法参数。然后,通过编写搜索算法的迭代过程来实现的搜索行为。在搜索过程中,可以利用numpy等库来进行向量化运算,加快计算速度。最后,通过多次迭代搜索,获得最优解。 总结起来,优化算法是一种模拟蜂觅食行为的启发式优化算法,通过迭代搜索来寻找最优解。在Python中实现优化算法需要定义目标函数,并编写搜索算法的迭代过程来模拟的搜索行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今天吃饺子

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值