孔雀优化算法(POA)——(含MATLAB代码)
先要声明的是,这个算法的争议较大,评论是两边倒的,一些学者觉得是一锅乱炖,我个人不发表观点,这里只是把这个算法介绍一下。我不推荐它,也不反对大家去了解,只做单纯的讲解。觉得这个算法不行的就不看吧~
孔雀优化算法(Peafowl Optimization Algorithm, POA) 是2022提出的一种全新的国创群智能优化算法。POA由昆明理工大学的李博教授团队提出,并将其应用于固体氧化物燃料电池(SOFC)的参数估计。POA的原始参考文献如下:
“Wang J, Yang B, Chen Y, et al. Novel phasianidae inspired peafowl (Pavo muticus/cristatus) optimization algorithm: Design, evaluation, and SOFC models parameter estimation[J]. Sustainable Energy Technologies and Assessments, 2022, 50: 101825.”
POA提出不久,李博教授团队就将其应用于配电网储能系统双层多目标优化配置,设计出了多目标优化的POA。因此,如果大家对POA的原始参考文献阅读有困难,也可阅读李博教授2022年10月最新发表的中文EI文章:
“杨博,王俊婷,俞磊,曹璞璘,束洪春,余涛.基于孔雀优化算法的配电网储能系统双层多目标优化配置[J].上海交通大学学报,2022,56(10):1294-1307.”
在介绍算法之前,需要说明的是:蓝孔雀(Pavo cristatus)自然广泛分布在东南亚,如图1所示;而绿孔雀(Pavo muticus)仅自然分布在中国的云南省和藏区,如图2所示。图3是进一步的对比。而POA的主要灵感来源于对中国云南绿孔雀的生活习惯和行为的观察。
图1 蓝孔雀
图2 绿孔雀(濒危)
图3 蓝孔雀与绿孔雀的进一步对比(左绿右蓝)
01
灵感来源
雄性孔雀以其刺耳的叫声和华丽的羽毛而闻名,它们有一个带有眼睛斑点的尾巴或一排隐藏的羽毛,作为求爱仪式的一部分,如图4所示。孔雀被认为是一夫多妻的,其行为大致可分为繁殖行为、觅食行为、群体行为和空间行为。食物搜索行为是鸟类最重要的行为之一。
图4 雄性绿孔雀带有眼睛斑点的尾巴(羽毛)
雄性孔雀用华丽的羽毛来显示统治地位,并在找到食物来源后,通过昂首阔步和抖动羽毛来吸引雌性孔雀交配。雄孔雀越漂亮,就越能吸引雌孔雀。雄孔雀一旦找到食物来源,不仅会展开羽毛,还会进一步进行旋转舞蹈,扩大领地区域,吸引雌性。旋转舞蹈模式分为原地旋转和围绕食物源旋转两种。
作者基于绿孔雀的求偶、觅食和追逐行为,在此基础上提出了一种新的群智能优化算法,并将其命名为孔雀优化算法,即POA。
02
算法设计
在POA中,作者设计了雄性孔雀、雌性孔雀和孔雀幼崽的各种智能行为的数学模型。在这部分,我就将基于我的理解,详细介绍POA的基本工作机制。与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这一节的部分内容是在Word文档里先写好,然后做成图片,最后导入。
2.1 角色分配
为了建立一个高效的孔雀群体,模拟各个体的行为,如求偶、觅食、追逐等,作者将孔雀种群划分为成年雄性孔雀、成年雌性孔雀和孔雀幼崽三个角色。在实际优化问题中,首先根据个体的适应度值对所有个体进行排序。孔雀是一夫多妻制的,因此作者将前5个候选解视为成年雄性孔雀;剩下的个体中,前30%被作者定义为成年雌孔雀,其他的则被定义为幼孔雀。
举个例子,假如种群规模是55,根据适宜度排序后,前5个最优的个体是雄性孔雀;剩下的50个个体中,前30%,也就是前15个个体是雌性孔雀,剩下的35个个体是孔雀幼崽。当然,这种分配是在每一次迭代中都会重新进行的(就是说,在实际中,公的永远是公的,母的永远是母的,是绝对的;但是在算法中,会在每次迭代中根据适宜度排名重新分配角色,公或母是相对的)。
2.2 雄性孔雀的求偶行为
雄性孔雀找到食物源后,会围绕食物源进行旋转,以吸引雌性孔雀的注意,从而增加交配的概率。具体的求偶行为可分为三个主要阶段:展尾、旋转、拍打羽毛。在算法设计中,作者只考虑了雄性孔雀的旋转行为。从前面的描述可知,雄性孔雀的旋转方式分为原地旋转和绕食物源旋转两种形式。作者认为:适宜度值越高的雄性孔雀围绕食物源旋转的概率越大,但圆圈半径越小;适宜度值越低的雄性孔雀在原地旋转的概率越大,圆圈半径越大。
由此,便设计了5个雄性个体的位置更新方式:
最后,作者对雄性孔雀的旋转进行了2维和3维情况下的举例,如图5所示。这里也需要说明一下,作者举的例子是所有决策变量的上下界都是一样的,也就是常用的基准函数。因此,孔雀的旋转半径可以是一个数值,因为就算你把它当作向量来点乘的话,半径向量的每个元素的值是一样的,和点乘效果一样。但是,如果应用的优化问题,其决策变量的取值范围上下界是不一样的,那就必须当作向量来处理了,并且孔雀下一次可能的位置不会是像图5中的规则圆。
图5 孔雀的旋转行为: (a) 2维空间 (b) 3维空间
2.3 雌性孔雀的接近行为
雌性孔雀倾向于在整个搜索过程中采取自适应的接近机制,在不同阶段动态调整自己的行为。雌性孔雀在看到雄性孔雀求爱时,往往会先靠近雄性孔雀,然后再四处观察,雌性孔雀被吸引的概率与雄性孔雀的适宜度值成正比(这个就很好解释了,这里你就把适宜度值理解成男生的颜值就懂了)。作者设计了如下的数学模型来描述雌性孔雀的位置更新:
2.4 孔雀幼崽的搜索行为
除了接近拥有良好食物来源(高适宜度值)的雄性孔雀外,孔雀幼崽也可以进行随机搜索,希望在搜索空间中找到更高质量的食物来源。孔雀幼崽是在5只雄性孔雀中等概率的随机选取1只作为目标对象,引导自己寻找更优的食物来源。
作者使用Levy飞行策略来描述孔雀幼崽的随机搜索,如下所示:
2.5 雄性孔雀之间的交互行为
作者认为,第1只雄性孔雀拥有最好的食物来源,因此被视为领导者,而其余4只雄性孔雀会被诱导逐渐向它移动。但是,其余4只雄性孔雀并没有直接向第1只雄性孔雀移动,而是倾向于在它和另一只雄性孔雀之间的90°范围内随机地向第1只雄性孔雀移动,如图6所示。
图6 不同雄性孔雀之间的相互作用机制
因此,作者将不同雄性孔雀之间的位置关系建立如下:
由此,作者便基于绿孔雀求偶、觅食和追逐的个体行为,设计出了算法POA。实际上,POA也是一种基于子种群的优化算法,与蛇优化、蜉蝣算法、蜣螂优化一样,设计了每个子种群中的个体的位置更新方式。相比之下,POA除了子种群内部的个体交流外,使用子种群之间的信息交互来实现种群进化会比其他算法多一些,因为雌性孔雀和孔雀幼崽主要是被5个雄性孔雀所引导的。
03
计算流程
POA虽然计算公式较多,算法参数也远超于其他智能优化算法,但其计算流程并不复杂。说白了,就是划分子种群,然后每个子种群执行自己对应的位置更新方式。这里我用伪代码给出了POA的计算流程,如图7所示。
图7 POA的计算流程
04
实验仿真
POA虽然计算公式多,设计相对较复杂,但对一个算法的优劣最终还要落到它的收敛性能上。这里对POA的性能进行了简单的测试。在MATLAB编码中,POA的所有参数设置与其原始参考文献一致,代码也是严格按照原始文献的伪代码编写。此外,种群规模N我设置的55,最大迭代次数T取的500,问题维度D设置成30,基准函数采用的是CEC2005。
这里以多峰函数Griewank、Levy和Ackley为例,展现POA在30维环境下的收敛效果。如图8所示,这里就不再做进一步分析了。
(a) Griewank
(b) Levy
(c) Ackley
图8 POA的收敛曲线
05
MATLAB代码
公众号:启发式算法讨论
孔雀优化算法(POA)——(含MATLAB代码)相关推荐
- 浣熊优化算法(COA)(含MATLAB代码)
先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...
- 【优化算法】细菌粒子群优化算法【含Matlab源码 1195期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]细菌粒子群优化算法[含Matlab源码 1195期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏Mat ...
- 【优化算法】多元宇宙优化算法【含Matlab源码 265期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]多元宇宙优化算法[含Matlab源码 265期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏Matla ...
- 果蝇(FOA)优化算法(附完整Matlab代码,可直接复制)
果蝇优化算法的核心是利用果蝇搜索实物的机制来对问题进行寻优.果蝇根据气味来确定食物的位置,食物腐烂程度越高,气味越大,果蝇对其越敏感.果蝇的觅食行为如下图: Fig1. 果蝇觅食行为示意图 1.果蝇位 ...
- COI实验室技能:常见的图像增强算法(含MATLAB代码)
COI实验室技能:常见的图像增强算法(含MATLAB代码) 成像系统采集到的图片有时不一定具有很好的图像质量,往往需要进行一些图像增强的操作.本文主要整理了几种常见的图像增强算法,包括:同态滤波. ...
- 回声消除AEC算法(含Matlab代码)
基于自适应滤波器的回声消除AEC算法(含Matlab代码) 摘要 自适应滤波器 声学回波抵消 AEC算法解析 LMS算法 NLMS算法 VSNLMS算法 APLMS算法 LMS-Newton算法 PF ...
- MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)
前言: 本篇博文参考,智能优化算法书籍<MATLAB智能算法30个案例分析(第2版)>,今天要与大家分享的智能算法是多种群遗传算法. 本地MATLAB环境部署 因为后面要介绍的多种群遗传算 ...
- GWO灰狼优化算法python和matlab代码
简单实现了GWO灰狼优化算法的Matlab版本和Python版本,程序易读且简洁. Matlab: 这里可以移步github:https://github.com/ZYunfeii/GreyWolfO ...
- 压缩感知之常用稀疏恢复算法(凸优化算法)及matlab代码
文章目录 前言 一.基追踪算法(BP) 1.原理概述 2.matlab代码(基于linprog的基追踪MATLAB代码) 二.梯度投影法 1.原理概述 2.matlab代码 总结 前言 除了贪婪算 ...
最新文章
- python画折线图代码-用Python画论文折线图、曲线图?几个代码模板轻松搞定!
- 后端选型中不同语言及对应的Web框架
- 前端学习(1381):多人管理项目1项目管理搭建
- (王道408考研数据结构)第六章图-第四节4:最短路径之迪杰斯特拉算法(思想、代码、演示、答题规范)
- Xcode 6.0中彻底关闭ARC
- E人E本让中国人多了一种选择
- python安装-在Python中安装包的三种方法
- 基于MicroPython:TPYBoard心率监测器
- 即时语音提示软件php,即时语音提示校对专家
- 《微波工程》阅读杂记一
- 【十次方】十次方项目前期准备
- nmap扫描之端口“filtered“被过滤的分析
- SQL 2008客户端ODBC配置DSN时使用网络登录ID的windows NT验证登录时 报18452错误
- Android软键盘的删除键和activity返回冲突
- 计算摄影——自动构图
- itunes将m4a转mp3
- 计算机网络时间同步(时钟同步)的重要性
- 【Linux\云服务器】CentOS 7.2 64位 可视化桌面的安装与卸载
- 目标检测中的指标都是什么意思
- Linux解决tar:它似乎不像是一个tar归档文件
热门文章
- 如何使用代码调用API接口发送短信?(以SendCloud为例)
- 殷书数据结构5.8——堆
- 听听别人怎么说:VueJS 与 ReactJS
- 开热点给电脑消耗大吗_手机开启WiFi热点,提供流量给电脑上网,可行吗?
- 生成.bks格式文件
- GD32F4(2): 用keil5打开官方评估版demo,编译报错找不到core_cm4.h文件
- CSU_1505_酷酷的单词
- php Guzzle源码,php中的curl类 guzzle 的使用
- 指数灰度变换法 matlab,matlab指数灰度变换
- 常用的机器学习算法(使用 Python 和 R 代码)