【智能优化算法】鹦鹉优化算法(Parrot optimizer,PO)

2024-04-06 17:04

本文主要是介绍【智能优化算法】鹦鹉优化算法(Parrot optimizer,PO),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Parrot optimizer(鹦鹉优化算法)是发表在中科院二区Computers in Biology and Medicine期刊上的论文“Parrot optimizer: Algorithm and applications to medical problems”

01.引言

随机优化方法作为一种有效的技术在当代研究中得到了显著的突出,有效地解决了复杂的优化挑战。本文介绍了鹦鹉优化器(Parrot Optimizer, PO),这是一种基于训练后鹦鹉关键行为的高效优化方法。本研究以定性分析和综合实验为特色,展示了Parrot Optimizer在处理各种优化问题时的鲜明特点。性能评估包括对提议的PO在35个功能上进行基准测试,包括IEEE CEC 2022测试集的经典案例和问题,并将其与八种流行的算法进行比较。研究结果生动地突出了PO在探索性和开发性方面的竞争优势。此外,通过参数灵敏度实验探讨了所提出的PO在不同构型下的适应性。应用于工程设计问题,证明了该方法的有效性和优越性。为了进一步将评估扩展到现实世界的应用,我们将PO在疾病诊断和医学图像分割问题中的应用纳入其中,这些问题在医学领域中具有高度相关性和重要意义。总之,研究结果证明,PO是一种有前途和竞争力的算法,超越了文献中的一些现有算法。

02.文章的贡献

1.介绍鹦鹉优化器,一种适用于各种优化情况的高效优化器。

2. 构建高效优化机制的特点是没有明确划分勘探和开发阶段,但提高了优化能力。

3. 通过全面的定性分析和参数灵敏度实验,深入探索PO算法的特点,增强其在各种优化问题中的适用性。

4. 通过与8种常用算法的对比实验验证了该算法的性能,证明了该算法在解决各种优化挑战方面有很强竞争力。

5. 将PO算法应用于5个现实世界的优化问题,证实了它在解决广泛的实际优化任务方面的潜力。

03.代码流程图

03.部分代码

%___________________________________________________________________________________________________________________________________________________%
% Parrot Optimizer (PO) source codes (version 1.0)
% PO
% Parrot optimizer: Algorithm and applications to medical problems
% Website and codes of Parrot optimizer(PO):http://www.aliasgharheidari.com/PO.html
% Junbo Lian, Guohua Hui, Ling Ma, Ting Zhu, Xincan Wu, Ali Asghar Heidari, Yi Chen, Huiling Chen
% Last update: Jan 31 2023
% E-Mail: as_heidari@ut.ac.ir, aliasghar68@gmail.com, chenhuiling.jlu@gmail.com %----------------------------------------------------------------------------------------------------------------------------------------------------%
% Authors: Junbo Lian (junbolian@qq.com), Ali Asghar Heidari(as_heidari@ut.ac.ir, aliasghar68@gmail.com), Huiling Chen(chenhuiling.jlu@gmail.com) 
%----------------------------------------------------------------------------------------------------------------------------------------------------%
function [avg_fitness_curve, Best_pos, Best_score, curve, search_history, fitness_history] = PO(N, Max_iter, lb, ub, dim, fobj)
% BestF: Best value in a certain iteration
% WorstF: Worst value in a certain iteration
% GBestF: Global best fitness value
% AveF: Average value in each iteration
if (max(size(ub)) == 1)ub = ub .* ones(1, dim);lb = lb .* ones(1, dim);
end
%% Initialization
X0 = initialization(N, dim, ub, lb); % Initialization
X = X0;
% Compute initial fitness values
fitness = zeros(1, N);
for i = 1:Nfitness(i) = fobj(X(i, :));
end
[fitness, index] = sort(fitness); % sort
GBestF = fitness(1); % Global best fitness value
AveF = mean(fitness);
for i = 1:NX(i, :) = X0(index(i), :);
end
curve = zeros(1, Max_iter);
avg_fitness_curve = zeros(1, Max_iter);
GBestX = X(1, :); % Global best position
X_new = X;
search_history = zeros(N, Max_iter, dim);
fitness_history = zeros(N, Max_iter);
%% Start search
for i = 1:Max_iterif mod(i,100) == 0display(['At iteration ', num2str(i), ' the fitness is ', num2str(curve(i-1))]);endavg_fitness_curve(i) = AveF;alpha = rand(1) / 5;sita = rand(1) * pi;for j = 1:size(X, 1)St = randi([1, 4]);% foraging behaviorif St == 1X_new(j, :) = (X(j, :) - GBestX) .* Levy(dim) + rand(1) * mean(X(j, :)) * (1 - i / Max_iter) ^ (2 * i / Max_iter);% staying behaviorelseif St == 2X_new(j, :) = X(j, :) + GBestX .* Levy(dim) + randn() * (1 - i / Max_iter) * ones(1, dim);% communicating behaviorelseif St == 3H = rand(1);if H < 0.5X_new(j, :) = X(j, :) + alpha * (1 - i / Max_iter) * (X(j, :) - mean(X(j, :)));elseX_new(j, :) = X(j, :) + alpha * (1 - i / Max_iter) * exp(-j / (rand(1) * Max_iter));end% fear of strangers' behaviorelseX_new(j, :) = X(j, :) + rand() * cos((pi *i )/ (2 * Max_iter)) * (GBestX - X(j, :)) - cos(sita) * (i / Max_iter) ^ (2 / Max_iter) * (X(j, :) - GBestX);end% Boundary controlfor j = 1:Nfor a = 1:dimif (X_new(j, a) > ub(a))X_new(j, a) = ub(a);endif (X_new(j, a) < lb(a))X_new(j, a) = lb(a);endendend% Update positionsfor j = 1:Nfitness_new(j) = fobj(X_new(j, :));endfor j = 1:Nif (fitness_new(j) < GBestF)GBestF = fitness_new(j);GBestX = X_new(j, :);endendX = X_new;fitness = fitness_new;% Sorting and updating[fitness, index] = sort(fitness); % sortfor j = 1:NX(j, :) = X(index(j), :);endcurve(i) = GBestF;endBest_pos = GBestX;Best_score = curve(end);search_history(:, i, :) = X;fitness_history(:, i) = fitness;
end
%%  Levy search strategy
function o = Levy(d)beta = 1.5;sigma = (gamma(1 + beta) *sin(pi * beta / 2) / (gamma((1 + beta) / 2) * beta * 2^((beta - 1) / 2)))^(1 / beta);u = randn(1, d) * sigma;v = randn(1, d);step = u ./ abs(v).^(1 / beta);o = step;
end   
end

04.代码效果图

默认PO算法保持觅食(F)、停留(S)、交流(C)、惧陌生人(O)行为的等比例,表示为1:1:1:1。然而,我们假设改变这些行为的分布可能会产生不同的优化结果。为了验证这一假设,我们设计了参数敏感性分析实验。建立了五种不同行为比的PO算法变体。其中包括原PO算法F:S:C:O = 1:1:1:1、PO-F算法F:S:C:O = 2:1:1:1、PO-S算法F:S:C:O = 1:2:1:1、PO-C算法F:S:C:O = 1:1:2、PO-O算法F:S:C:O = 1:1:2。在保持相同迭代次数和种群大小(如3.1节所述)的情况下,分别在经典测试函数集和IEEE CEC 2022测试集上对这五种不同参数的PO算法进行测试,研究参数敏感性。

获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复:智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。

这篇关于【智能优化算法】鹦鹉优化算法(Parrot optimizer,PO)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/880379

相关文章

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.