【智能算法】蒲公英优化算法(DO)原理及实现

本文介绍了由Zhao等人提出的蒲公英优化算法(DandelionOptimizer),它模仿蒲公英种子的飞行过程,分为上升、下降和着陆阶段。算法通过自适应参数调整和随机策略在搜索空间中寻找全局最优解,特别适用于工程问题的求解。
摘要由CSDN通过智能技术生成

在这里插入图片描述


1.背景

2022年,Zhao等人受到自然界蒲公英种子依靠风的长距离飞行过程启发,提出了蒲公英优化算法(Dandelion Optimizer, DO)。

2.算法原理

2.1算法思想

DO模拟了蒲公英御风长距离飞行过程分为上升、下降和着陆 3 个阶段。在上升阶段,根据不同天气条件,种子在群落中以螺旋式上升方式运动或在局部中飘逸;在下降阶段,通过在全局空间中不断调整飞行方向,上升到一定高度后种子稳定下降;在着陆阶段,在风和天气的影响下,种子随机选择位置降落。
在这里插入图片描述

2.2算法过程

上升阶段

蒲公英种子达到一定高度后分散。受风速、温度、湿度等影响,蒲公英种子上升高度不同,按天气可分为晴天和雨天

晴天风速服从对数性质的正态分lnY~N(μ,σ^2)随机沿 Y 轴均匀分布,蒲公英种子有更多机会传播至遥远区域。在探索空间内,蒲公英种子被风随机吹到不同的位置。风速决定种子飞行高度。风速不断调整种子上方的漩涡,上升姿态呈现螺旋状:
X t + 1 = X t + α ν x ν y ln ⁡ Y ( X s − X t ) (1) X_{t+1}=X_{t}+\alpha\nu_{x}\nu_{y}\ln Y(X_{s}-X_{t})\tag{1} Xt+1=Xt+ανxνylnY(XsXt)(1)
Xs为搜索空间中随机位置:
X s = r a n d ( 1 ) ( U B − L B ) + L B (2) X_{s}=\mathrm{rand}(1)(U_{\mathrm{B}}-L_{\mathrm{B}})+L_{\mathrm{B}}\tag{2} Xs=rand(1)(UBLB)+LB(2)
函数 lnY 服从 μ=0 和 σ^2=1 的对数正态分布:
ln ⁡ Y = { 1 y 2 π exp ⁡ [ − 1 2 σ 2 ( ln ⁡ y ) 2 ] , y ⩾ 0 0 , y < 0 (3) \ln Y=\begin{cases}\dfrac{1}{y\sqrt{2\pi}}\exp[-\dfrac{1}{2\sigma^2}(\ln y)^2],y\geqslant0\\0,&y<0\end{cases}\tag{3} lnY= y2π 1exp[2σ21(lny)2],y00,y<0(3)
调整搜索步长 α 为自适应参数:
α = r a n d ( 1 T 2 − 2 T t + 1 ) (4) \alpha=\mathrm{rand}(\frac{1}{T^{2}}-\frac{2}{T}t+1)\tag{4} α=rand(T21T2t+1)(4)
当分离涡流作用于蒲公英时,会产生升力分量系数 vx、vy:
{ r = e − θ v x = r cos ⁡ θ v y = r sin ⁡ θ (5) \begin{cases}r=e^{-\theta}\\v_x=r\cos\theta\\v_y=r\sin\theta\end{cases}\tag{5} r=eθvx=rcosθvy=rsinθ(5)
雨天,受空气湿度、空气阻力等因素影响,蒲公英种子无法充分地随风上升,种子在局部领域开发:
X t + 1 = X t k (6) X_{t+1}=X_{t}k\tag{6} Xt+1=Xtk(6)
k 值调节蒲公英的局部搜索区域:
{ q = 1 T 2 − 2 T + 1 t 2 − 2 T 2 − 2 T + 1 t + 1 T 2 − 2 T + 1 + 1 k = 1 − rand ( ) q (7) \begin{cases}q=\dfrac{1}{T^2-2T+1}t^2-\dfrac{2}{T^2-2T+1}t+\dfrac{1}{T^2-2T+1}+1\\k=1-\text{rand}()q\end{cases}\tag{7} q=T22T+11t2T22T+12t+T22T+11+1k=1rand()q(7)

综上,蒲公英种子处于上升阶段:
X t + 1 = { X t + α ν x ν y ln ⁡ Y ( X s − X t ) , rand ( n ) < 1.5 X t k , 其他 (8) X_{t+1}=\begin{cases}X_t+\alpha\nu_x\nu_y\ln Y(X_s-X_t),&\text{rand}(n)<1.5\\X_tk,&\text{其他}\end{cases}\tag{8} Xt+1={Xt+ανxνylnY(XsXt),Xtk,rand(n)<1.5其他(8)
在这里插入图片描述

下降阶段:

蒲公英种子上升到一定高后稳定下降,DO 采用服从正态分布的布朗运动来模
拟蒲公英种子的运动轨迹,使个体在迭代过程中容易遍历更多搜索区域。采用上升阶段后的平均位置信息反映蒲公英下降的稳定性,有助于整个种群向最优个体的区域搜索开发:
X t + 1 = X t − α β t ( X t m e a n − α β t X t ) (9) X_{t+1}=X_{t}-\alpha\beta_{t}(X_{t}^{\mathrm{mean}}-\alpha\beta_{t}X_{t})\tag{9} Xt+1=Xtαβt(XtmeanαβtXt)(9)
Xmean 为种群平均位置信息:
X t m e a n = 1 N p ∑ i = 1 N p X i (10) X_{t}^{\mathrm{mean}}=\frac{1}{N_{p}}\sum_{i=1}^{N_{p}}X_{i}\tag{10} Xtmean=Np1i=1NpXi(10)
在这里插入图片描述

着陆阶段:

蒲公英种子随机选择位置降落,随着迭代次数增加,算法有望收敛于全局最优解,反映种子最容易存活的近似位置。在确定最优种子生长位置后,利用当前精英个体局部领域内的信息,可以使算法精确收敛于全局最优解。随着种群不断进化,最终算法收敛于全局最优解。
X t + 1 = X e l i t e + L e v y ( λ ) α ( X e l i t e − X t δ ) (11) X_{t+1}=X_{\mathrm{elite}}+\mathrm{Levy}(\lambda)\alpha(X_{\mathrm{elite}}-X_{t}\delta)\tag{11} Xt+1=Xelite+Levy(λ)α(XeliteXtδ)(11)
Xelite为种子在第 t 次迭代产生的最优位置;Levy(λ)为莱维飞行函数,用于增强局部搜索能力。
在这里插入图片描述

伪代码
在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] 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.

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小O的算法实验室

谢谢大佬的肯定!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值