【群智能算法】鹈鹕优化算法 POA算法【Matlab代码#56】


获取资源请见文章第4节:资源获取】


1. 鹈鹕优化算法(POA)

Pavel等人通过模拟鹈鹕在狩猎过程中的自然行为,于2022年提出了鹈鹕优化算法(Pelican Optimization Algorithm,POA) ,在基准测试函数中展现出了极强的优化性能,较8种典型智能优化算法的性能有了明显的提升。目前,关于该算法的进一步研究,以及其在一些工程实际的应用还未有相关报道。

在POA算法中,通过模拟了鹈鹕在狩猎时的行为和策略,以此来更新候选解。该狩猎过程分为两个阶段:逼近猎物(勘探阶段) ,水面飞行(开发阶段) 。

1.1 种群初始化

首先进行进行鹈鹕种群的初始化:
x i j = l j + r a n d ( u j − l j ) i = 1 , 2 , ⋅ ⋅ ⋅ , m (1) x_{ij}=l_{j}+rand(u_{j}-l_{j})\quad\quad i=1,2,···,m\tag1 xij=lj+rand(ujlj)i=1,2,⋅⋅⋅,m(1)
式中, x i j x_{ij} xij为第 i i i个鹈鹕的第 j j j维的位置; N N N为鹈鹕的种群数量; m m m为求解问题的维度; r a n d rand rand是[0,1]范围内的随机数; u j u_{j} uj l j l_{j} lj分别是求解 J J J维问题的上下边界。

1.2 勘探阶段

在初始化完成之后,鹈鹕进入勘探阶段,在解空间内随机生成猎物位置,鹈鹕向猎物的位置进行移动。其表达式如下:
x i j P 1 = { X i j + r a n d ( p j − I × x i j ) , F p < F i X i j + r a n d ( x i j − p j ) , 其他 (2) x_{ij}^{P1}=\left\{\begin{matrix}X_{ij}+rand(p_{j}-I\times x_{ij}),\quad F_{p}<F_{i} \\X_{ij}+rand(x_{ij}-p_{j}), \quad \quad\quad其他 \end{matrix}\right.\tag2 xijP1={Xij+rand(pjI×xij),Fp<FiXij+rand(xijpj),其他(2)
式中, I I I为1或2的随机整数; p j p_{j} pj为猎物在第 j j j维的位置; F p F_{p} Fp为猎物的目标函数值。
在POA中,如果该位置的目标函数值更好,则鹈鹕接受新位置。这个过程如下:
X i = { X i P 1 , F i P 1 < F i x i , 其他 (3) X_{i}=\left\{\begin{matrix}X_{i}^{P1},\quad F_{i}^{P1}<F_{i} \\x_{i}, \quad \quad\quad其他 \end{matrix}\right.\tag3 Xi={XiP1,FiP1<Fixi,其他(3)

1.3 开发阶段

勘探阶段完成后,鹈鹕进入开发阶段,向更好的狩猎位置收敛。其达式如下:
x i , j P 2 = x i , j + R ( 1 − t T ) × ( 2 × r a n d − 1 ) × x i , j (4) x_{i,j}^{P2}=x_{i,j}+R(1-\frac{t}{T} )\times (2\times rand-1)\times x_{i,j}\tag4 xi,jP2=xi,j+R(1Tt)×(2×rand1)×xi,j(4)
式中, R R R为常数,取值为0.2。在开发阶段,当得到最优值更小时,按照下面式(5)进行更新。
X i = { X i P 2 , F i P 2 < F i x i , 其他 (3) X_{i}=\left\{\begin{matrix}X_{i}^{P2},\quad F_{i}^{P2}<F_{i} \\x_{i}, \quad \quad\quad其他 \end{matrix}\right.\tag3 Xi={XiP2,FiP2<Fixi,其他(3)

2. 部分代码展示

%%
clc
clear
close all
%%

%%
Fun_name='F1'; % number of test functions: 'F1' to 'F23'

SearchAgents=30;                      % number of Pelicans (population members) 
Max_iterations=1000;                  % maximum number of iteration
[lowerbound,upperbound,dimension,fitness]=Get_Functions_details(Fun_name); % Object function information
[Best_score,Best_pos,POA_curve]=POA(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness);  % Calculating the solution of the given problem using POA 

%%
figure('Position',[454   445   694   297]);
subplot(1,2,1);
func_plot(Fun_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Fun_name,'( x_1 , x_2 )'])

subplot(1,2,2);
semilogy(POA_curve,'Color','b','LineWidth',2)
title(Fun_name)
xlabel('Iteration');
ylabel('Best fitness function');
axis tight
legend('POA')

display(['The best solution obtained by POA for ' [num2str(Fun_name)],'  is : ', num2str(Best_pos)]);
display(['The best optimal value of the objective funciton found by POA  for ' [num2str(Fun_name)],'  is : ', num2str(Best_score)]);       

3. 仿真结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 资源获取说明

可以获取完整代码资源。👇👇👇👀名片

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天`南

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值