基于蒲公英优化算法的函数寻优算法
Posted 心️升明月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于蒲公英优化算法的函数寻优算法相关的知识,希望对你有一定的参考价值。
文章目录
一、理论基础
1、蒲公英优化算法
文献[1]模拟蒲公英种子依靠风的长距离飞行过程提出了一种新的群体智能仿生优化算法,称为蒲公英优化(Dandelion Optimizer, DO)算法,用于解决连续优化问题。
(1)初始化
与其他自然启发元启发式算法相似,DO在种群初始化的基础上进行种群进化和迭代优化。在提出的DO算法中,假设每个蒲公英种子代表一个候选解,其种群表示为: p o p u l a t i o n = [ x 1 1 ⋯ x 1 D i m ⋮ ⋱ ⋮ x p o p 1 ⋯ x p o p D i m ] (1) population=\\beginbmatrix x_1^1 & \\cdots & x_1^Dim \\\\[2ex]\\vdots & \\ddots & \\vdots\\\\[2ex]x_pop^1 & \\cdots & x_pop^Dim\\endbmatrix\\tag1 population=⎣ ⎡x11⋮xpop1⋯⋱⋯x1Dim⋮xpopDim⎦ ⎤(1)其中, p o p pop pop表示种群数量, D i m Dim Dim表示问题变量的维数。每个候选解在给定问题的上界( U B UB UB)和下界( L B LB LB)之间随机生成,第 i i i个个体 X i X_i Xi的表达式为: X i = r a n d × ( U B − L B ) + L B (2) X_i=rand\\times(UB-LB)+LB\\tag2 Xi=rand×(UB−LB)+LB(2)其中, r a n d rand rand表示0和1之间的随机数, L B LB LB和 U B UB UB如下所示: L B = [ l b 1 , ⋯ , l b D i m ] U B = [ u b 1 , ⋯ , u b D i m ] (3) \\beginarraycLB=[lb_1,\\cdots,lb_Dim]\\\\[2ex]UB=[ub_1,\\cdots,ub_Dim]\\endarray\\tag3 LB=[lb1,⋯,lbDim]UB=[ub1,⋯,ubDim](3)在初始化过程中,DO将适应度值最优的个体作为初始精英,认为这是蒲公英种子最适合生长的位置。以最小值为例,初始精英个体 X e l i t e X_elite Xelite的数学表达式为: f b e s t = min ( f ( X i ) ) X e l i t e = X ( f i n d ( f b e s t = f ( X i ) ) ) (4) \\beginarraycf_best=\\min(f(X_i))\\\\[2ex]X_elite=X(find(f_best=f(X_i)))\\endarray\\tag4 fbest=min(f(Xi))Xelite=X(find(fbest=f(Xi)))(4)其中, f i n d ( ) find() find()表示具有相等值的两个索引。
(2)上升阶段
在上升阶段,蒲公英的种子需要达到一定的高度才能离开父母。在风速、空气湿度等影响下,蒲公英种子会上升到不同高度。在这里,天气分为以下两种情况: 以上是关于基于蒲公英优化算法的函数寻优算法的主要内容,如果未能解决你的问题,请参考以下文章
第一种情况:在晴天,风速可被视为具有对数正态分布
ln
Y
∼
N
(
μ
,
σ
2
)
\\ln Y\\sim N(\\mu,\\sigma^2)
lnY∼N(μ,σ2)。在这种分布下,随机数沿
Y
Y
Y轴分布更为均匀,这增加了蒲公英种子传播到遥远地区的机会。因此,DO在该情况下中强调探索。在搜索空间中,蒲公英种子被风随机吹到各个位置。蒲公英种子的上升高度由风速决定。风越大,蒲公英飞得越高,种子撒得越远。受风速的影响,蒲公英种子上方的漩涡不断被调整,使其呈螺旋状上升。在这种情况下对应的数学表达式为:
X
t
+
1
=
X
t
+
α
∗
v
x
∗
v
y
∗
ln
Y
∗
(
X
s
−
X
t
)
(5)
X_t+1=X_t+\\alpha*v_x*v_y*\\ln Y*(X_s-X_t)\\tag5
Xt+1=Xt+α∗vx∗vy∗lnY∗(Xs−Xt)(5)其中,
X
t
X_t
Xt表示第
t
t
t次迭代时蒲公英种子的位置,
X
s
X_s
Xs表示第
t
t
t次迭代时搜索空间中随机选择的位置,式(6)给出了随机生成位置的表达式。
X
s
=
r
a
n
d
(
1
,
D
i
m
)
∗
(
U
B
−
L
B
)
+
L
B
(6)
X_s=rand(1,Dim)*(UB-LB)+LB\\tag6
Xs=rand(1,Dim)∗(UB−LB)+LB(6)
ln
Y
\\ln Y
lnY表示服从
μ
=
0
\\mu=0
μ=0和
σ
2
=
1
\\sigma^2=1
σ2=1的对数正态分布,其数学表达式为:
ln
Y
=
1
y
2
π
exp
[
−
1
2
σ
2
(
ln
y
)
2
]
y
≥
0
0
y
<
0
(7)
\\ln Y=\\begindcases\\frac1y\\sqrt2\\pi\\exp\\left[-\\frac12\\sigma^2(\\ln y)^2\\right]\\quad y\\geq0\\\\[2ex]0\\quad\\quad\\quad\\quad\\quad\\quad\\quad\\quad\\quad\\quad\\quad\\,\\,\\, y<0\\enddcases\\tag7
lnY=