【智能优化算法】鹦鹉优化算法(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

相关文章

基于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.

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

MySQL中like模糊查询的优化方案

《MySQL中like模糊查询的优化方案》在MySQL中,like模糊查询是一种常用的查询方式,但在某些情况下可能会导致性能问题,本文将介绍八种优化MySQL中like模糊查询的方法,需要的朋友可以参... 目录1. 避免以通配符开头的查询2. 使用全文索引(Full-text Index)3. 使用前缀索

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指