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

本文介绍了一种名为PelicanOptimizationAlgorithm(POA)的启发式智能优化算法,模仿鹈鹕行为的三个阶段:种群初始化、移向猎物和掠过水面。算法通过随机搜索和局部优化来寻找最优解,以CEC2005函数集为例展示了其性能。附有MATLAB实现代码和参考文献。
摘要由CSDN通过智能技术生成

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

be17b9cb549efc4f3a4af87b5b8f1941.png

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

算法原理

(1)种群初始化阶段

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

5afd32e9f805e25f463994ac03091096.png

鹈鹕位置初始化:

0624d710cc418c6014d208951573d78f.png

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

(2)移向猎物阶段

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

fbda4483ef0018feb5531183bcfad54d.png

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

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

165b5f551e03cbd836d8e4b9b813ecce.png

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

(3)掠过水面阶段

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

7c6ec05f1136c2f11d876538c2172ac2.png

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

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

69b995f6595ef11016cc85cff24ed9ad.png

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

结果展示

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

78fa71fb3322fe4dc21774f6f8ef6808.png

5bc6ce15e4762fd3da2117f7c0ef329a.png

1f017b4aca6e168bb93603c00d678fbf.png

1ae9fb87848ca3f9b09f3885030ca233.png

0465a9502eb5da4afc818a180936bd7b.png

 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

淘个代码_

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值