孔雀优化算法(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代码

公众号:启发式算法讨论

猜你喜欢

转载自blog.csdn.net/jieyanping/article/details/128416931
今日推荐