鹦鹉优化算法原理及代码实现

2024-05-11 08:52

本文主要是介绍鹦鹉优化算法原理及代码实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

鹦鹉(Pyrrhura Molinae)表现出四种不同的行为特征:觅食、停留、交流和对陌生人的恐惧。这些行为(如图1所示)在现实环境中构成了我们设计PO动机的基础。

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

觅食:驯化的鹦鹉(Pyrrhura Molinae)的觅食行为令人着迷,因为个体选择在食物丰富的小群体中觅食。它们可以利用主人的位置和群体的存在,朝着食物走去。它们利用嗅觉和视觉提示来加强搜索。

停留:停留的行为包括皮茹拉在主人身体的不同部位随机栖息。

交流:这些群居鸟类发出独特的叫声,在群体中进行交流,既用于社会互动,也用于信息传播。

对陌生人的恐惧:对陌生人的天然恐惧是鸟类的共同特征,这促使鹦鹉离开不熟悉的个体,向它们的主人寻求保护。

重要的是,鹦鹉行为的不可预测性强调了我们设计的动机,因为这四种行为在驯化群的每次迭代中随机发生在每个个体身上。

一、种群初始化

考虑种群规模为N,最大迭代次数为Max_iter,搜索空间限制为lb(下界)和ub(上界),所提PO的初始化公式如下:

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

式中,rand(0,1)表示[0,1]范围内的随机数,X_i^0表示第i个鹦鹉在初始阶段的位置。

二、觅食行为

在觅食行为中,它们主要通过观察食物的位置或考虑主人的位置来估计食物的大致位置,然后向各自的位置飞去。因此,位置运动遵循如下公式:

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

在式(2)中,X_i^t表示当前位置,X_i^(t+1)表示后续更新的位置。X_mean^t表示当前种群内的平均位置,Levy(D)表示Levy分布,用于描述鹦鹉的飞行情况。X_best表示从初始化到当前搜索到的最佳位置,它也表示主人的当前位置。T表示当前迭代次数。(X_i^t- x_best)⋅Levy(dim)表示根据自己相对于主人的位置进行移动,rand(0,1)⋅(1-t/(Max_iter)) ^(2t/(Max_iter))⋅X_mean^t表示观察整个种群的位置,以进一步确定食物的方向。该过程如下图所示。

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

当前种群的平均位置用X_mean^t表示,使用下列公式表示:

表示:

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

根据下列公式中的规则可以得到Levy分布,其中γ赋值为1.5:

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

 

三、停留行为

鹦鹉(Pyrrhura Molinae)是一种高度社会化的生物,它的停留行为主要包括突然飞到主人身体的任何部位,在那里静止一段时间。该过程如图3所示。这个过程可以表示为:

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

式中ones(1,dim)表示维度dim的全1向量,X_best⋅Levy(dim)表示飞往宿主的过程,rand(0,1)⋅ones(1,dim)表示随机停在宿主身体某个部位的过程。

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

四、交流行为

鹦鹉是天生的社会性动物,其特点是群体内的密切交流。这种沟通行为包括飞向鸟群和不飞向鸟群的沟通。在PO中,假设这两种行为发生的概率相等,并使用当前种群的平均位置来象征群体的中心。该过程如下图所示。这个过程可以表示为:

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

式中,0.2⋅rand(0,1)⋅(1-t/(Max_iter))⋅(X_i^t- x_mean ^t)表示个体加入鹦鹉群体进行交流的过程,0.2⋅rand(0,1)⋅exp (-t/(rand(0,1)⋅Max_iter))表示个体在交流后立即飞出的过程。这两种行为都是可行的,因此,使用在[0,1]范围内随机生成的P来实现。

五、对陌生人的恐惧行为

一般来说,鸟类对陌生人表现出天然的恐惧,鹦鹉也不例外。它们与不熟悉的个体保持距离,与主人一起寻找安全环境的行为可以用以下公式和图表示:

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

其中rand(0,1)⋅cos (0.5π·t/(Max_iter))⋅(X_best-X_i^t)表示重新定向飞向所有者的过程,cos (rand(0,1)⋅π)⋅(t/(Max_iter)) ^(2/(Max_iter))⋅(X_i^t- x_best)表示远离陌生人的过程。

 

640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

算法流程图和伪代码

Algorithm1:Pseudo-codeofthePOalgorithm

1:InitializethePOparameters

2: Initialize the solutions'positions randomly

3:Fori  =1:Max_iterdo

4:       Calculatethefitnessfunction

5:       Find  thebestpositionandworstposition

6:       Forj  =1:Ndo

7:       St = randi([1, 4])

8:             Behavior 1: The foraging behavior

9:             IfSt==1Then

10:                  UpdatepositionbyEq.(2)

11:           Behavior 2: The staying behavior

12:           ElseifSt==2Then

13:                  UpdatepositionbyEq.(5)

14:           Behavior 3: The communicating  behavior

15:           ElseifSt==3Then

16:                  UpdatepositionbyEq.(6)

16:        Behavior 4: The fear of strangers’  behavior

17:         ElseifSt==4Then

18:                  UpdatepositionbyEq.(7)

19:           End

20:      End

21:      Return  thebestsolution

22:End

 

228c555b2c014189b4358ec3f8dcbf85.png

 

这篇关于鹦鹉优化算法原理及代码实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Flutter实现文字镂空效果的详细步骤

《Flutter实现文字镂空效果的详细步骤》:本文主要介绍如何使用Flutter实现文字镂空效果,包括创建基础应用结构、实现自定义绘制器、构建UI界面以及实现颜色选择按钮等步骤,并详细解析了混合模... 目录引言实现原理开始实现步骤1:创建基础应用结构步骤2:创建主屏幕步骤3:实现自定义绘制器步骤4:构建U

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环