先要声明的是,这个算法的争议较大,评论是两边倒的,一些学者觉得是一锅乱炖,我个人不发表观点,这里只是把这个算法介绍一下。我不推荐它,也不反对大家去了解,只做单纯的讲解。觉得这个算法不行的就不看吧~

孔雀优化算法(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代码)相关推荐

  1. 浣熊优化算法(COA)(含MATLAB代码)

    先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...

  2. 【优化算法】细菌粒子群优化算法【含Matlab源码 1195期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]细菌粒子群优化算法[含Matlab源码 1195期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏Mat ...

  3. 【优化算法】多元宇宙优化算法【含Matlab源码 265期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]多元宇宙优化算法[含Matlab源码 265期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏Matla ...

  4. 果蝇(FOA)优化算法(附完整Matlab代码,可直接复制)

    果蝇优化算法的核心是利用果蝇搜索实物的机制来对问题进行寻优.果蝇根据气味来确定食物的位置,食物腐烂程度越高,气味越大,果蝇对其越敏感.果蝇的觅食行为如下图: Fig1. 果蝇觅食行为示意图 1.果蝇位 ...

  5. COI实验室技能:常见的图像增强算法(含MATLAB代码)

    COI实验室技能:常见的图像增强算法(含MATLAB代码)   成像系统采集到的图片有时不一定具有很好的图像质量,往往需要进行一些图像增强的操作.本文主要整理了几种常见的图像增强算法,包括:同态滤波. ...

  6. 回声消除AEC算法(含Matlab代码)

    基于自适应滤波器的回声消除AEC算法(含Matlab代码) 摘要 自适应滤波器 声学回波抵消 AEC算法解析 LMS算法 NLMS算法 VSNLMS算法 APLMS算法 LMS-Newton算法 PF ...

  7. MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)

    前言: 本篇博文参考,智能优化算法书籍<MATLAB智能算法30个案例分析(第2版)>,今天要与大家分享的智能算法是多种群遗传算法. 本地MATLAB环境部署 因为后面要介绍的多种群遗传算 ...

  8. GWO灰狼优化算法python和matlab代码

    简单实现了GWO灰狼优化算法的Matlab版本和Python版本,程序易读且简洁. Matlab: 这里可以移步github:https://github.com/ZYunfeii/GreyWolfO ...

  9. 压缩感知之常用稀疏恢复算法(凸优化算法)及matlab代码

    文章目录 前言 一.基追踪算法(BP) 1.原理概述 2.matlab代码(基于linprog的基追踪MATLAB代码) 二.梯度投影法 1.原理概述 2.matlab代码 总结 前言   除了贪婪算 ...

最新文章

  1. python画折线图代码-用Python画论文折线图、曲线图?几个代码模板轻松搞定!
  2. 后端选型中不同语言及对应的Web框架
  3. 前端学习(1381):多人管理项目1项目管理搭建
  4. (王道408考研数据结构)第六章图-第四节4:最短路径之迪杰斯特拉算法(思想、代码、演示、答题规范)
  5. Xcode 6.0中彻底关闭ARC
  6. E人E本让中国人多了一种选择
  7. python安装-在Python中安装包的三种方法
  8. 基于MicroPython:TPYBoard心率监测器
  9. 即时语音提示软件php,即时语音提示校对专家
  10. 《微波工程》阅读杂记一
  11. 【十次方】十次方项目前期准备
  12. nmap扫描之端口“filtered“被过滤的分析
  13. SQL 2008客户端ODBC配置DSN时使用网络登录ID的windows NT验证登录时 报18452错误
  14. Android软键盘的删除键和activity返回冲突
  15. 计算摄影——自动构图
  16. itunes将m4a转mp3
  17. 计算机网络时间同步(时钟同步)的重要性
  18. 【Linux\云服务器】CentOS 7.2 64位 可视化桌面的安装与卸载
  19. 目标检测中的指标都是什么意思
  20. Linux解决tar:它似乎不像是一个tar归档文件

热门文章

  1. 如何使用代码调用API接口发送短信?(以SendCloud为例)
  2. 殷书数据结构5.8——堆
  3. 听听别人怎么说:VueJS 与 ReactJS
  4. 开热点给电脑消耗大吗_手机开启WiFi热点,提供流量给电脑上网,可行吗?
  5. 生成.bks格式文件
  6. GD32F4(2): 用keil5打开官方评估版demo,编译报错找不到core_cm4.h文件
  7. CSU_1505_酷酷的单词
  8. php Guzzle源码,php中的curl类 guzzle 的使用
  9. 指数灰度变换法 matlab,matlab指数灰度变换
  10. 常用的机器学习算法(使用 Python 和 R 代码)