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

文章目录

    • 【`获取资源`请见文章第4节:资源获取】
    • 1. 鹈鹕优化算法(POA)
      • 1.1 种群初始化
      • 1.2 勘探阶段
      • 1.3 开发阶段
    • 2. 部分代码展示
    • 3. 仿真结果展示
    • 4. 资源获取说明


获取资源请见文章第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}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}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}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. 仿真结果展示

【群智能算法】鹈鹕优化算法 POA算法【Matlab代码#56】_第1张图片
【群智能算法】鹈鹕优化算法 POA算法【Matlab代码#56】_第2张图片
【群智能算法】鹈鹕优化算法 POA算法【Matlab代码#56】_第3张图片
【群智能算法】鹈鹕优化算法 POA算法【Matlab代码#56】_第4张图片

4. 资源获取说明

可以获取完整代码资源。

你可能感兴趣的:(Matlab,算法,matlab,启发式算法,人工智能,鹈鹕优化算法)