2023算法:巨型犰狳优化(GAO),原理公式详解,附matlab代码

本文介绍了一种名为巨型犰狳优化算法(GAO)的新型群智能优化算法,模仿野生犰狳的行为,具有高搜索效率和寻优能力。算法分为探索和开发两个阶段,通过模拟犰狳攻击白蚁丘和挖掘技能来优化解。在CEC2005测试中展示了其性能。MATLAB代码提供了实现细节。
摘要由CSDN通过智能技术生成

巨型犰狳优化算法(Giant Armadillo OptimizationGAO)是一种新型群智能优化算法,该算法模拟了野生巨型犰狳的自然行为,具有进化能力强、搜索速度快、寻优能力强的特点。该成果于2023年8月份发表在知名SCI期刊Biomimetics上。

ff1ffdac35503cefb1bdcdc9817142ff.png

GAO的基本灵感来自于巨型犰狳攻击白蚁丘的策略。GAO理论分为两个阶段进行了描述和数学建模:(1)基于模拟巨型犰狳向白蚁丘移动的探索,(2)基于模拟巨型犰狳挖掘技能的开发,以捕食和打开白蚁丘。

算法原理

(1)算法初始化

基于其成员在问题求解空间中的搜索能力,GAO能够在迭代过程中为优化问题提供合适的解。每个GAO成员根据其在问题解决空间中的位置来确定问题的决策变量的值。因此,作为种群中的一员,每只巨型犰狳都是用矢量从数学角度建模的问题的一个候选解决方案。巨型犰狳共同构成了算法的种群,根据下式可以用矩阵从数学的角度对该种群进行建模。

其中,XGAO种群矩阵,Xi为第iGAO成员(候选解)Xi,d为其在搜索空间中的第d维,N为巨型犰狳的数量,m为决策变量的数量。

在算法执行开始时,需要利用下式随机初始化巨型犰狳在问题解决空间中的初始位置,数学表达式如下:  其中,r为区间[0,1]中的随机数,lbd,ubddth的下界和上界,分别为决策变量。

由于每个巨型犰狳在问题求解空间中的位置代表问题的候选解,因此可以对应于每个巨型犰狳来评估目标函数的值,据此,可以使用下式来表示目标函数的评估值的集合。 其中,F是评估目标函数的向量,Fi是基于第iGAO成员的评估目标函数。目标函数的评价值提供了关于群体成员提出的候选解决方案的质量的有价值的信息。对于目标函数获得的最佳值对应于最佳成员(即,最佳候选解),而对于目标函数获得的最糟糕值对应于最差成员(即,最差候选解)

(2)探索阶段

在GAO的设计中,它的灵感来自于巨型犰狳在向白蚁丘移动时位置的变化,以更新种群成员在解决问题空间中的位置。对这一攻击过程进行建模,使得巨型犰狳的位置发生了广泛的变化,从而增加了算法在全局搜索管理中的探索能力。在GAO设计中,对于代表一只巨型犰狳的每个种群成员,具有更好的目标函数值的其他种群成员的位置被认为是白蚁丘。群体中每个成员的候选白蚁土堆集合的数学公式如下所示:  其中,TMi是第i个巨型犰狳的候选白蚁土丘位置的集合,Xk是具有比第i个巨型犰狳更好的目标函数值的种群成员,并且Fk是其目标函数值。

巨型犰狳随机选择一个候选白蚁土丘并攻击它。基于对巨型犰狳向白蚁丘移动的建模,种群的每个成员新位置的数学表达式如下:  其中,STMi是为第i只巨型犰狳选择的白蚁丘,STMi,j是其第j维,XP1i是基于所提出的GAO的攻击阶段为第i只巨型犰狳计算的新位置,XP1i,j是其第j维,ri,j是来自区间[0,1]的随机数,Ii,j是随机选择为1或2的数。

如果该新位置根据下式改善了目标函数的值,则该新位置替换相应的先前位置。  其中,XP1i是基于所提出的GAO的攻击阶段为第i只巨型犰狳计算的新位置,FP1i是其目标函数值。

(3)开发阶段 在 GAO 的第二阶段,种群成员在问题求解空间中的位置是基于对巨型犰狳挖掘白蚁土丘以捕食白蚁的模拟来更新的。建模这个巨大的犰狳挖掘过程的目的是狩猎和吃白蚁导致小的变化,在巨大的犰狳的位置,因此,增加了本地搜索管理的算法的开发能力。

在GAO设计中,基于对巨型犰狳挖掘白蚁土丘的技能进行建模,使用下式为种群的每个成员计算新的位置。  其中,XP2i是基于所提出的GAO的挖掘阶段为第i只巨型犰狳计算的新位置,xP2i,j是其第j维,ri,j是来自区间[0,1]的随机数,t是迭代计数。  其中,XP2i是基于所提出的GAO的挖掘阶段为第i只巨型犰狳计算的新位置,FP2i是其目标函数值。


结果展示

在CEC2005函数集测试,结果如下:

21b4c5a027ab3670b54768cd50df2256.png

11e17bb4453f8e83ced6db6ad5b89d79.png

2dc903a5c0a50eae5ed337559f656a53.png

2d0624802ad467e34981589583bcaef3.png

 MATLAB核心代码

function[Best_score,Best_pos,GAO_curve]=GAO(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness)
lowerbound=ones(1,dimension).*(lowerbound);                              % Lower limit for variables
upperbound=ones(1,dimension).*(upperbound);                              % Upper limit for variables
%% INITIALIZATION
for i=1:dimension
    X(:,i) = lowerbound(i)+rand(SearchAgents,1).*(upperbound(i) - lowerbound(i));                          % Initial population
end
for i =1:SearchAgents
    L=X(i,:);
    fit(i)=fitness(L);
end
%%
for t=1:Max_iterations  % algorithm iteration
    %%  update: BEST proposed solution
    [Fbest , blocation]=min(fit);
    if t==1
        xbest=X(blocation,:);                                           % Optimal location
        fbest=Fbest;                                           % The optimization objective function
    elseif Fbest<fbest
        fbest=Fbest;
        xbest=X(blocation,:);
    end
    %%
    %%
    for i=1:SearchAgents
        %%
            %% Phase 1: Attack on termite mounds (exploration phase)
            TM_location=find(fit<fit(i));% based on Eq(4)
            if size (TM_location,2)==0
                STM=xbest;
            else
                K=randperm(  size (TM_location,2)  ,1);
                STM=X(K,:);
            end
            I=round(1+rand);
            X_new_P1=X( i,: ) + rand(1,1).* ( STM - I.*X( i,: ) ) ;%Eq(5)
            X_new_P1 = max(X_new_P1,lowerbound);X_new_P1 = min(X_new_P1,upperbound);
            % update position based on Eq (6)
            L=X_new_P1;
            fit_new_P1=fitness(L);
            if fit_new_P1<fit(i)
                X(i,:) = X_new_P1;
                fit(i) = fit_new_P1;
            end
            %% End Phase 1
            %% Phase 2: Digging in termite mounds (exploitation phase)
            X_new_P2=X(i,:)+ (1-2*rand).*(upperbound-lowerbound)./t; % Eq(7)
            X_new_P2= max(X_new_P2,lowerbound/t);X_new_P2 = min(X_new_P2,upperbound/t);
            % Updating X_i using (8)
            L=X_new_P2;
            f_new = fitness(L);
            if f_new <= fit (i)
                X(i,:) = X_new_P2;
                fit (i)=f_new;
                if f_new<fbest
                    xbest=X_new_P2;
                    fbest=f_new;
                end
            end
            %%
        %%
    end % for i=1:SearchAgents
    %% 
    best_so_far(t)=fbest;
    average(t) = mean (fit);
end
Best_score=fbest;
Best_pos=xbest;
GAO_curve=best_so_far;
end

参考文献

[1]  Alsayyed O, Hamadneh T, Al-Tarawneh H, et al. Giant Armadillo Optimization: A New Bio-Inspired Metaheuristic Algorithm for Solving Optimization Problems[J]. Biomimetics, 2023, 8(8): 619.

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

TGDM101

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今天吃饺子

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值