智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码

鹈鹕优化算法(Pelican Optimization AlgorithmPOA)是一种启发式的智能优化算法。该成果于2022年发表在知名SCI期刊Sensors上。目前谷歌学术上查询被引200次。

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第1张图片

POA的基本思想是将鹈鹕的行为分为三个阶段。第一阶段为种群初始化阶段;第二阶段为移向猎物阶段;第三阶段为掠过水面阶段。

算法原理

(1)种群初始化阶段

假设m维空间中有n只鹈鹕,第i只鹈鹕在m维空间中的位置为Xi=[Xi1,Xi2,...,Xin],n只鹈鹕在m维空间位置X的数学模型如下式表示:

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第2张图片

鹈鹕位置初始化:

0624d710cc418c6014d208951573d78f.png

其中,  为第i个鹈鹕在第j维的位置,N为鹈鹕的种群数量,m为求解问题的维度;α[0,1]内的随机数, 、 分别是求解问题在第j维的上下边界

(2)移向猎物阶段

在这个阶段,鹈鹕识别猎物的位置,并向着猎物移动。猎物在搜索空间的随机分布特性增强了算法的全局寻优能力。每次迭代中,鹈鹕新位置的数学模型如下式表示:

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第3张图片

其中  为第一阶段更新后第i个鹈鹕在第j维的位置,  为[0,1]范围内的随机数,  为[1,2]的随机整数,  为猎物在第j维的位置,  为猎物的目标函数值。

如果目标函数值在该位置得到改善,则其更新位置的数学模型如下式表示:

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第4张图片

其中,  为第i个鹈鹕的新位置,  为第一阶段更新后的第i个鹈鹕在新位置的目标函数值。  为第一阶段更新后的第i个鹈鹕在新位置的目标函数。

(3)掠过水面阶段

鹈鹕到达水面后,它们在水面上展开翅膀,将猎物收集在喉袋中,该过程增强了算法的局部搜索能力。每次迭代中,鹈鹕新位置的数学模型如下式表示:

7c6ec05f1136c2f11d876538c2172ac2.png

式中:  为第二阶段更新后第i个鹈鹕在第j维的位置,β[0,1]内的随机数,R12的随机整数,t为当前迭代次数,T为最大迭代次数。

如果目标函数值在该位置得到改善,则更新位置的数学模型如下式表示:

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第5张图片

式中:  为第i个鹈鹕的新位置,  为第二阶段更新后的第i个鹈鹕在新位置的目标函数。

结果展示

以为CEC2005函数集为例,进行结果展示:

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第6张图片

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第7张图片

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第8张图片

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第9张图片

智能优化算法之鹈鹕算法(PDO),原理公式详解,附matlab代码_第10张图片

 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 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

你可能感兴趣的:(算法)