长鼻浣熊优化算法(Coati Optimization Algorithm,COA)是一种新型元启发式优化算法,该算法是受浣熊狩猎行为启发而提出的,具有进化能力强、搜索速度快、寻优能力强的特点。该成果于2023年发表在知名SCI期刊Knowledge-Based Systems上。目前谷歌学术上查询被引94次。
先说一下:这个算法的寻优效果是真的好,值得研究一下!且算法较新,是一个值得改进的算法!
COA算法通过种群初始化、鬣蜥的狩猎和攻击策略、逃离捕食者的过程,三个主要操作模拟了浣熊狩猎行为,最后选取最优解。
算法原理
(1)初始化种群
首先在寻优空间里随机初始化种群:
式中: 为个体; 为寻优下边界; 为寻优上边界;r为[0,1]之间的随机数。
(2)鬣蜥的狩猎和攻击策略(探索阶段)
在这一策略中,一群浣熊爬上树去够一只鬣蜥并吓唬它。其他几只浣熊在树下等待,直到鬣蜥摔倒在地。鬣蜥落地后,浣熊攻击并猎杀它。这种策略导致浣熊移动到搜索空间的不同位置,进而表明COA优化算法在解决问题空间的全局搜索中具有探索能力。
在COA算法中,假设种群中最好成员的位置是鬣蜥的位置。也有人假设,一半的浣熊爬上树,另一半等待鬣蜥掉到地上。因此,位置的数学模拟为: 式中: 为第i个浣熊在第 个维度的新位置; 为 之间的随机数; 为鬣蜥在第 个维度的位置,实际上是指最佳成员的位置; 为从集合{1,2}中随机选取的一个数; 为浣熊的数量;[N/2]为不超过[N/2]的最大整数; 为决策变量个数。
鬣蜥倒地后,被放置在搜索空间中的随机位置。基于这个随机位置,地面上的浣熊在搜索空间中移动。这一步通过两个公式进行模拟。 式中: 为鬣蜥在第 个维度在地上的位置。 其他 式中: 为第 维下鬣蜥落到地面后的目标函数值; 为第 维下第 个浣熊的目标函数值。如果更新后的个体更优,则更新当前个体;否则保持原状。 其他 式中: 为第 个浣熊在新位置的目标函数值; 为第 个浣熊在之前位置的目标函数值。
(3)逃离捕食者的过程(剥削阶段)
该阶段是基于浣熊遇到捕食者和逃离捕食者时的自然行为进行数学建模的。当捕食者攻击浣熊时,浣熊会逃离它的位置。浣熊在这个策略上的举动导致其处于接近当前位置的安全位置。这表明了COA算法在本地搜索中的开发能力。
为了模拟这种行为,基于下列等式在每个浣熊所在的位置附近生成一个随机位置。 式中: 为第 个决策变量的局部下界, 为第 个决策变量的局部上界, 为迭代次数; 为最大迭代次数。
式中: 为第 个浣熊在第 个维度的新位置。如果更新后的个体更优则更新当前个体,否则保持原状。 其他 结果展示
以为CEC2005函数集为例,进行结果展示:
MATLAB核心代码
function[Best_score,Best_pos,COA_curve]=COA(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
%% update the best condidate solution
[best , location]=min(fit);
if t==1
Xbest=X(location,:); % Optimal location
fbest=best; % The optimization objective function
elseif best<fbest
fbest=best;
Xbest=X(location,:);
end
%%
for i=1:SearchAgents/2
%% Phase1: Hunting and attacking strategy on iguana (Exploration Phase)
iguana=Xbest;
I=round(1+rand(1,1));
X_P1(i,:)=X(i,:)+rand(1,1) .* (iguana-I.*X(i,:)); % Eq. (4)
X_P1(i,:) = max(X_P1(i,:),lowerbound);X_P1(i,:) = min(X_P1(i,:),upperbound);
% update position based on Eq (7)
L=X_P1(i,:);
F_P1(i)=fitness(L);
if(F_P1(i)<fit(i))
X(i,:) = X_P1(i,:);
fit(i) = F_P1(i);
end
end
%%
for i=1+SearchAgents/2 :SearchAgents
iguana=lowerbound+rand.*(upperbound-lowerbound); %Eq(5)
L=iguana;
F_HL=fitness(L);
I=round(1+rand(1,1));
if fit(i)> F_HL
X_P1(i,:)=X(i,:)+rand(1,1) .* (iguana-I.*X(i,:)); % Eq. (6)
else
X_P1(i,:)=X(i,:)+rand(1,1) .* (X(i,:)-iguana); % Eq. (6)
end
X_P1(i,:) = max(X_P1(i,:),lowerbound);X_P1(i,:) = min(X_P1(i,:),upperbound);
% update position based on Eq (7)
L=X_P1(i,:);
F_P1(i)=fitness(L);
if(F_P1(i)<fit(i))
X(i,:) = X_P1(i,:);
fit(i) = F_P1(i);
end
end
%% END Phase1: Hunting and attacking strategy on iguana (Exploration Phase)
%%
%% Phase2: The process of escaping from predators (Exploitation Phase)
for i=1:SearchAgents
LO_LOCAL=lowerbound/t;% Eq(9)
HI_LOCAL=upperbound/t;% Eq(10)
X_P2(i,:)=X(i,:)+(1-2*rand).* (LO_LOCAL+rand(1,1) .* (HI_LOCAL-LO_LOCAL)); % Eq. (8)
X_P2(i,:) = max(X_P2(i,:),LO_LOCAL);X_P2(i,:) = min(X_P2(i,:),HI_LOCAL);
% update position based on Eq (11)
L=X_P2(i,:);
F_P2(i)=fitness(L);
if(F_P2(i)<fit(i))
X(i,:) = X_P2(i,:);
fit(i) = F_P2(i);
end
end
%% END Phase2: The process of escaping from predators (Exploitation Phase)
best_so_far(t)=fbest;
average(t) = mean (fit);
end
Best_score=fbest;
Best_pos=Xbest;
COA_curve=best_so_far;
end
参考文献
[1] Dehghani Mohammad, Montazeri Zeinab, Trojovská Eva, Trojovský Pavel. Coati Optimization Algorithm: A new bio-inspired metaheuristic algorithm for solving optimization problems[J]. Knowledge-Based Systems,2023,259.
完整代码获取方式:后台回复关键字:
TGDM990
版权声明:本文为博主作者:今天吃饺子原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/woaipythonmeme/article/details/134820704