2024最新算法:鹦鹉优化算法(Parrot optimizer,PO)求解23个基准函数(提供MATLAB代码)

一、鹦鹉优化算法

鹦鹉优化算法(Parrot optimizer,PO)由Junbo Lian等人于2024年提出的一种高效的元启发式算法,该算法从驯养的鹦鹉中观察到的觅食、停留、交流和对陌生人行为的恐惧中汲取灵感。这些行为被封装在四个不同的公式中,以促进寻找最佳解决方案。与遵循单独探索和开发阶段的传统元启发式算法相比,PO 群体中的每个个体在每次迭代期间都会随机表现出这四种行为中的一种。这种方法更恰当地表示了在驯化鹦鹉中观察到的行为随机性,并显着增强了种群多样性。通过偏离传统的勘探-开采两阶段结构,PO有效地降低了被困在局部最优值中的风险,同时保持了解决方案的质量。PO的随机结构使其与传统算法区分开来,使其特别适合避免局部最优,并适用于现实世界的问题解决,特别是在医学领域。

参考文献:

1Lian, Junbo, et al. "Parrot Optimizer: Algorithm and Applications to Medical Problems." Computers in Biology and Medicine, Elsevier BV, Feb. 2024, p. 108064, doi:10.1016/j.compbiomed.2024.108064.

二、23个函数介绍

参考文献:

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

三、PO求解23个函数

3.1部分代码

复制代码
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]=PO(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('PO')
saveas(gca,[Function_name '.jpg']);


display(['The best solution is ', num2str(Best_pos)]);
display(['The best fitness value is ', num2str(Best_fit)]);

3.2部分结果

四、完整MATLAB代码

相关推荐
nothing&nowhere12 分钟前
用 Python 做问卷数据清洗:无效样本检测与处理实战
开发语言·python·数据清洗·数据处理·问卷星·问卷星脚本·刷问卷
2601_9615934239 分钟前
Rust 开发环境配置繁琐?RustRover 开箱即用搞定编码调试
开发语言·后端·macos·rust
HZZD_HZZD1 小时前
DL/T 645-2026新国标深度解读与智能电表协议适配实战:从帧结构变化到Java采集器升级的全链路改造方案
java·开发语言
珠海西格电力3 小时前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
多加点辣也没关系3 小时前
JavaScript|第4章:类型转换
开发语言·javascript
聪慧的水蜜桃3 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·c#
yqcoder4 小时前
httpOnly 是什么,又有什么用?
开发语言·前端·javascript
还有多久拿退休金5 小时前
让飞书知识库跟着 commit 自己长:一套自动化知识库的真实实现
前端·算法·架构
wuqingshun3141595 小时前
重写equals而不重写hashCode,会出什么问题?
java·开发语言
飞猪~5 小时前
LangChain python 版本 第一集
开发语言·python·langchain