鹈鹕优化算法(Pelican Optimization Algorithm,POA)是一种启发式的智能优化算法。该成果于2022年发表在知名SCI期刊Sensors上。目前谷歌学术上查询被引200次。
POA的基本思想是将鹈鹕的行为分为三个阶段。第一阶段为种群初始化阶段;第二阶段为移向猎物阶段;第三阶段为掠过水面阶段。
算法原理
(1)种群初始化阶段
假设m维空间中有n只鹈鹕,第i只鹈鹕在m维空间中的位置为Xi=[Xi1,Xi2,...,Xin],则n只鹈鹕在m维空间位置X的数学模型如下式表示:
鹈鹕位置初始化:
其中, 为第i个鹈鹕在第j维的位置,N为鹈鹕的种群数量,m为求解问题的维度;α为[0,1]内的随机数, 、 分别是求解问题在第j维的上下边界
(2)移向猎物阶段
在这个阶段,鹈鹕识别猎物的位置,并向着猎物移动。猎物在搜索空间的随机分布特性增强了算法的全局寻优能力。每次迭代中,鹈鹕新位置的数学模型如下式表示:
其中 为第一阶段更新后第i个鹈鹕在第j维的位置, 为[0,1]范围内的随机数, 为[1,2]的随机整数, 为猎物在第j维的位置, 为猎物的目标函数值。
如果目标函数值在该位置得到改善,则其更新位置的数学模型如下式表示:
其中, 为第i个鹈鹕的新位置, 为第一阶段更新后的第i个鹈鹕在新位置的目标函数值。 为第一阶段更新后的第i个鹈鹕在新位置的目标函数。
(3)掠过水面阶段
鹈鹕到达水面后,它们在水面上展开翅膀,将猎物收集在喉袋中,该过程增强了算法的局部搜索能力。每次迭代中,鹈鹕新位置的数学模型如下式表示:
式中: 为第二阶段更新后第i个鹈鹕在第j维的位置,β为[0,1]内的随机数,R为1或2的随机整数,t为当前迭代次数,T为最大迭代次数。
如果目标函数值在该位置得到改善,则更新位置的数学模型如下式表示:
式中: 为第i个鹈鹕的新位置, 为第二阶段更新后的第i个鹈鹕在新位置的目标函数。
结果展示
以为CEC2005函数集为例,进行结果展示:
MATLAB核心代码
% 鹈鹕优化算法(POA)
function[Best_score,Best_pos,POA_curve]=POA(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
%% UPDATE location of food
X_FOOD=[];
k=randperm(SearchAgents,1);
X_FOOD=X(k,:);
F_FOOD=fit(k);
%%
for i=1:SearchAgents
%% PHASE 1: Moving towards prey (exploration phase)
I=round(1+rand(1,1));
if fit(i)> F_FOOD
X_new=X(i,:)+ rand(1,1).*(X_FOOD-I.* X(i,:)); %Eq(4)
else
X_new=X(i,:)+ rand(1,1).*(X(i,:)-1.*X_FOOD); %Eq(4)
end
X_new= max(X_new,lowerbound);X_new = min(X_new,upperbound);
% Updating X_i using (5)
f_new = fitness(X_new);
if f_new <= fit (i)
X(i,:) = X_new;
fit (i)=f_new;
end
%% END PHASE 1: Moving towards prey (exploration phase)
%% PHASE 2: Winging on the water surface (exploitation phase)
X_new=X(i,:)+0.2*(1-t/Max_iterations).*(2*rand(1,dimension)-1).*X(i,:);% Eq(6)
X_new= max(X_new,lowerbound);X_new = min(X_new,upperbound);
% Updating X_i using (7)
f_new = fitness(X_new);
if f_new <= fit (i)
X(i,:) = X_new;
fit (i)=f_new;
end
%% END PHASE 2: Winging on the water surface (exploitation phase)
end
best_so_far(t)=fbest;
average(t) = mean (fit);
end
Best_score=fbest;
Best_pos=Xbest;
POA_curve=best_so_far;
end
参考文献
[1] Trojovský P, Dehghani M. Pelican optimization algorithm: A novel nature-inspired algorithm for engineering applications[J]. Sensors, 2022, 22(3): 855.
[2] 杨光露,胡宏帅,王小明. 基于质量扰动鹈鹕优化算法的图像匹配方法研究[J]. 郑州大学学报(理学版),2023
完整代码获取方式:后台回复关键字:TGDM827