蒲公英优化器(DO)(含MATLAB代码)

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

蒲公英优化器(Dandelion Optimizer, DO)是2022年由辽宁工程技术大学智能科学与优化研究所的赵世杰教授等人提出。如果有阅读上一期推送的海马优化器(SHO),可知它的提出者也是赵世杰教授。DO模拟了蒲公英种子依靠风长距离飞行的过程。作者在CEC2017测试集上,将DO与9种先进的元启发式算法进行比较,对DO的优化精度、稳定性、收敛性和延展性等进行了评估。实验结果表明,与已有算法相比,DO具有较好的优化能力和较强的鲁棒性。它的原始参考文献如下:

“Zhao S, Zhang T, Ma S, et al. Dandelion Optimizer: A nature-inspired metaheuristic algorithm for engineering applications[J]. Engineering Applications of Artificial Intelligence, 2022, 114: 105075.”

蒲公英优化器(DO)(含MATLAB代码)_第1张图片

01
灵感来源

蒲公英是是菊科的多年生草本植物。叶为倒卵状披针形、倒披针形或长圆状披针形,叶柄及主脉常带红紫色;花为黄色,花的基部淡绿色,上部紫红色;内层为线状披针形;瘦果为暗褐色倒卵状披针形,冠毛为白色,长约6毫米;花期为4-9月,果期为5-10月。

蒲公英优化器(DO)(含MATLAB代码)_第2张图片

当种子成熟时,风把它们带到新的地方繁殖生命。风速和天气是影响蒲公英种子传播的两个主要因素。风速被用来确定种子是长距离还是短距离飞行。天气控制着蒲公英的种子是否能飞,也影响着蒲公英在近处或远处生长的能力。蒲公英的种子要经历三个阶段,如下所述。

  • 在上升阶段,蒲公英种子上方产生一个漩涡,在晴天和刮风天气下,在拖曳力的作用下上升。相反,如果天气多雨,种子上方就没有涡流。在这种情况下,只能执行局部搜索。

  • 在下降阶段,种子上升到一定高度后,逐渐下降。

  • 在落地阶段,蒲公英种子在风和天气的影响下,最终随机落地到一个地方,生长出新的蒲公英。

蒲公英的种群进化是通过将种子传给下一代,分三个阶段进行的。因此,DO算法的主要灵感来源于以上三个阶段。

02
算法设计

DO算法模拟了蒲公英种子依靠风长距离飞行的过程,包含三个阶段:上升阶段 、下降阶段和着陆阶段。该算法考虑了风速和天气两个主要因素,并引入了Brownian运动和Levy飞行描述种子的运动轨迹。算法的具体描述如下:

蒲公英优化器(DO)(含MATLAB代码)_第3张图片

蒲公英优化器(DO)(含MATLAB代码)_第4张图片

蒲公英优化器(DO)(含MATLAB代码)_第5张图片

蒲公英优化器(DO)(含MATLAB代码)_第6张图片

需要再次强调的是,根据赵世杰教授团队提供的DO源码,算法在迭代时,每个阶段使用的个体位置都是上一个阶段得到的位置。即下降阶段使用上升阶段得到的个体位置,着落阶段使用下降阶段得到的个体位置。

03
计算流程

DO算法的计算流程伪代码如下:

蒲公英优化器(DO)(含MATLAB代码)_第7张图片

04
实验仿真

这里对DO算法的性能进行简单的测试。首先将DO算法用于函数寻优,算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模取N等于50,Benchmark函数分别采用了CEC2005测试集、CEC2013测试集、CEC2014测试集、CEC2017测试集、CEC2020优化函数测试集和CEC2022优化函数测试集。这里对仿真结果进行简要展示,就不再进一步做分析了。

首先,我们来检验一下DO算法对全局勘探和局部开发的平衡能力。如图4所示,是DO算法在CEC2005测试函数f8上的勘探和开发占比曲线。

蒲公英优化器(DO)(含MATLAB代码)_第8张图片

图4 DO在CEC2005 f8上的勘探和开发百分占比变化曲线

其次,以CEC2005的单峰函数Schwefel's 2.22 (f2)和多峰函数Ackley (f10)为例,展示DO算法在30维环境下的收敛效果,如图5所示。

蒲公英优化器(DO)(含MATLAB代码)_第9张图片

(a) f2

蒲公英优化器(DO)(含MATLAB代码)_第10张图片

(b) f10

图5 DO在CEC2005两个测试函数上的收敛曲线

再次,以CEC2013测试集中的单峰函数F1为例,展示DO在30维环境下的收敛效果,如图6所示。(注意是画的误差曲线)

蒲公英优化器(DO)(含MATLAB代码)_第11张图片

图6 DO在CEC2013 F1上的误差收敛曲线

接着,以CEC2014测试集中的多模态函数F14为例,展示DO在30维环境下的收敛效果,如图7所示。(注意是画的误差曲线)

蒲公英优化器(DO)(含MATLAB代码)_第12张图片

图7 DO在CEC2014 F14上的误差收敛曲线

再然后,以CEC2017测试集中的多模态函数F4为例,展示DO在30维环境下的收敛效果,如图8所示。(注意是画的误差曲线)

蒲公英优化器(DO)(含MATLAB代码)_第13张图片

图8 DO在CEC2017 F4上的误差收敛曲线

在此之后,以CEC2020优化函数测试集中的复合函数F9为例,展示DO在10维环境下的收敛效果,如图9所示。(注意是画的误差曲线)

蒲公英优化器(DO)(含MATLAB代码)_第14张图片

图9 DO在CEC2020优化函数 F9上的误差收敛曲线

最后,以CEC2022优化函数测试集中的单峰函数F1为例,展示DO在10维环境下的收敛效果,如图10所示。(注意是画的误差曲线)

蒲公英优化器(DO)(含MATLAB代码)_第15张图片

图10 DO在CEC2022优化函数 F1上的误差收敛曲线

进一步,可将DO算法应用于复杂工程约束优化问题,例如之前推送的两期算法应用内容:

算法应用:基于DBO算法的工程优化设计(第1期)(含MATLAB代码)

算法应用:工程优化设计(第2期)(含MATLAB代码)

这里以压力容器设计(Pressure vessel design)问题为例,展示DO算法求解效果。收敛曲线如图11所示。

蒲公英优化器(DO)(含MATLAB代码)_第16张图片

图11 DO在压力容器设计问题上的目标函数收敛曲线

05
MATLAB代码

DO算法跑CEC2005测试集

关注公众号:启发式算法讨论

DO算法跑CEC2013测试集:

关注公众号:启发式算法讨论

DO算法跑CEC2014测试集:

关注公众号:启发式算法讨论

DO算法跑CEC2017测试集:

关注公众号:启发式算法讨论

DO算法跑CEC2020优化函数测试集:

关注公众号:启发式算法讨论

DO算法跑CEC2022优化函数测试集:

关注公众号:启发式算法讨论

DO算法的勘探(Exploration)和开发(Exploitation)占比分析:

关注公众号:启发式算法讨论

DO算法的工程应用(第1期):压力容器设计、滚动轴承设计、拉伸/压缩弹簧设计、悬臂梁设计、轮系设计、三杆桁架设计。

关注公众号:启发式算法讨论

DO算法的工程应用(第2期):焊接梁设计、多盘离合器制动器设计问题、步进圆锥滑轮问题、减速机设计问题、行星轮系设计优化问题、机器人夹持器问题。

关注公众号:启发式算法讨论

你可能感兴趣的:(matlab,开发语言,算法,人工智能,启发式算法)