巨型犰狳优化算法(Giant Armadillo Optimization,GAO)是一种新型群智能优化算法,该算法模拟了野生巨型犰狳的自然行为,具有进化能力强、搜索速度快、寻优能力强的特点。该成果于2023年8月份发表在知名SCI期刊Biomimetics上。
GAO的基本灵感来自于巨型犰狳攻击白蚁丘的策略。GAO理论分为两个阶段进行了描述和数学建模:(1)基于模拟巨型犰狳向白蚁丘移动的探索,(2)基于模拟巨型犰狳挖掘技能的开发,以捕食和打开白蚁丘。
算法原理
(1)算法初始化
基于其成员在问题求解空间中的搜索能力,GAO能够在迭代过程中为优化问题提供合适的解。每个GAO成员根据其在问题解决空间中的位置来确定问题的决策变量的值。因此,作为种群中的一员,每只巨型犰狳都是用矢量从数学角度建模的问题的一个候选解决方案。巨型犰狳共同构成了算法的种群,根据下式可以用矩阵从数学的角度对该种群进行建模。
其中,X为GAO种群矩阵,Xi为第i个GAO成员(候选解),Xi,d为其在搜索空间中的第d维,N为巨型犰狳的数量,m为决策变量的数量。
在算法执行开始时,需要利用下式随机初始化巨型犰狳在问题解决空间中的初始位置,数学表达式如下: 其中,r为区间[0,1]中的随机数,lbd,ubd为dth的下界和上界,分别为决策变量。
由于每个巨型犰狳在问题求解空间中的位置代表问题的候选解,因此可以对应于每个巨型犰狳来评估目标函数的值,据此,可以使用下式来表示目标函数的评估值的集合。 其中,F是评估目标函数的向量,Fi是基于第i个GAO成员的评估目标函数。目标函数的评价值提供了关于群体成员提出的候选解决方案的质量的有价值的信息。对于目标函数获得的最佳值对应于最佳成员(即,最佳候选解),而对于目标函数获得的最糟糕值对应于最差成员(即,最差候选解)。
(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函数集测试,结果如下:
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