2024最新算法:北极海鹦优化(Arctic puffin optimization,APO)算法求解23个函数,MATLAB代码

一、算法介绍

北极海鹦优化(Arctic puffin optimization,APO)算法是2024年提出一种智能优化算法。该算法模拟海鹦在空中飞行和水下觅食两个阶段的行为,旨在实现勘探与开发之间更好的平衡。该算法包括几个关键操作,包括空中飞行阶段的空中搜索和俯冲捕食,以及水下觅食阶段的采集觅食、强化搜索和捕食者规避。通过这些步骤,该算法旨在有目的地探索搜索空间,在探索和利用之间取得更好的平衡,从而避免陷入局部最优。APO包括空中飞行(探索)和水下觅食(开发)阶段。在探索阶段,引入Levy飞行和速度因子机制,增强算法跳出局部最优值的能力,提高收敛速度。在开发阶段,采用协同效应和自适应变化因子等策略,确保算法能够有效利用当前最佳解,指导搜索方向。此外,通过行为转换因子实现勘探和开发阶段之间的动态过渡,有效平衡了全球搜索和局部开发。

参考文献:

[1]Wen-chuan Wang, Wei-can Tian, Dong-mei Xu, Hong-fei Zang. Arctic Puffin Optimization: A Bio-inspired metaheuristic Algorithm for Solving Engineering Design Optimization. Advances in Engineering Software, 2024,195, 103694. Redirecting

二、23个函数简介

参考文献

[1] Yao X, Liu Y, Lin G M. Evolutionary programming made faster[J]. IEEE transactions on evolutionary computation, 1999, 3(2):82-102.

三、部分代码

复制代码
close all ;
clear
clc
Npop=30;               
Function_name='F1';     % Name of the test function that can be from F1 to F23 ( 
Tmax=300;              
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
[Best_fit,Best_pos,Convergence_curve]=(Npop,Tmax,lb,ub,dim,fobj);
figure('Position',[100 100 660 290])
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
%Draw objective space
subplot(1,2,2);
semilogy(Convergence_curve,'Color','r','linewidth',3)
title('Search space')
xlabel('Iteration');
ylabel('Best score obtained so far');
axis tight
grid on
box on
legend('')
saveas(gca,[Function_name '.jpg']);
display(['The best solution is ', num2str(Best_pos)]);
display(['The best fitness value is ', num2str(Best_fit)]);

四、部分结果

五、完整MATLAB代码

相关推荐
数据分析螺丝钉15 分钟前
力扣第218题“天际线问题”
经验分享·python·算法·leetcode·面试
极客先躯19 分钟前
中级java每日一道面试题-2024年7月3日
java·开发语言·java每日一道面试题
Song21 分钟前
C++:求梯形面积
开发语言·c++
如影随从1 小时前
04-ArcGIS For JavaScript的可视域分析功能
开发语言·javascript·arcgis·可视域分析
XiaoCCCcCCccCcccC1 小时前
C语言实现双向链表
c语言·开发语言·链表
十年一梦实验室1 小时前
【C++】相机标定源码笔记- RGB 相机与 ToF 深度传感器校准类
开发语言·c++·笔记·数码相机·计算机视觉
Tech Synapse1 小时前
Java循环创建对象内存溢出怎么解决
java·开发语言·jvm
蜉蝣之翼❉1 小时前
c++ 简单线程池
开发语言·c++
半截詩1 小时前
力扣Hot100-24两两交换链表中的节点(三指针)
算法