一、理论基础
1、算法原理
向日葵的模式是一致的:它们每天都像时钟一样随着太阳走。在傍晚时分,它们会走另一条路,在第二天早上的聚会上待命。基于向日葵在探索太阳最佳方位时运动的特殊性。随机施肥被认为是在向日葵
i
i
i和
i
+
1
i+1
i+1的边缘距离之间。一般来说,每一片花都会释放出数以百万计的花粉配子。为了简单起见,我们认为每一朵向日葵只产生一个花粉配子,并单独繁殖。基于自然的优化的另一个重要点是平方反比定律。该定律指出,接收到的功率与分离的平方成反比,需要较大的阶跃值才能朝向太阳(全局最优)。所有向日葵的接收热量定义为
Q
i
=
P
4
π
r
i
2
(1)
Q_i=\frac{P}{4\pi r_i^2}\tag{1}
Qi=4πri2P(1)式中,
P
P
P是能量的功率,
r
i
r_i
ri是最佳位置和植物
i
i
i之间的距离。
向日葵对太阳的方向是:
s
i
→
=
X
∗
−
X
i
∣
∣
X
∗
−
X
i
∣
∣
,
i
=
1
,
2
,
⋯
,
n
p
(2)
\overrightarrow{s_i}=\frac{X^*-X_i}{||X^*-X_i||},\quad i=1,2,\cdots,n_p\tag{2}
si=∣∣X∗−Xi∣∣X∗−Xi,i=1,2,⋯,np(2)向日葵在
s
s
s方向上的步进通过以下公式计算:
d
i
=
λ
i
×
P
i
(
∣
∣
X
i
+
X
i
−
1
∣
∣
)
×
∣
∣
X
i
+
X
i
−
1
∣
∣
(3)
d_i=\lambda_i×P_i(||X_i+X_{i-1}||)×||X_i+X_{i-1}||\tag{3}
di=λi×Pi(∣∣Xi+Xi−1∣∣)×∣∣Xi+Xi−1∣∣(3)式中,
λ
\lambda
λ是定义植物“惯性”位移的常数值,
P
i
(
∣
∣
X
i
+
X
i
−
1
∣
∣
)
P_i(||X_i+X_{i-1}||)
Pi(∣∣Xi+Xi−1∣∣)是授粉的概率,即向日葵
i
i
i与其最近的邻居
i
−
1
i−1
i−1授粉,在随机位置产生一个新的个体,该个体根据花之间的每个距离而变化。也就是说,离太阳较近的个体会采取较小的步进来寻找局部优化,而距离较远的个体则会正常移动。也有必要限制每个个体给出的最大步长,以避免跳过容易成为全局最小候选的区域。这里我们将最大步长定义为:
d
m
a
x
=
∣
∣
X
max
−
X
min
∣
∣
2
×
N
p
o
p
(4)
d_{max}=\frac{||X_{\max}-X_{\min}||}{2×N_{pop}}\tag{4}
dmax=2×Npop∣∣Xmax−Xmin∣∣(4)式中,
X
max
X_{\max}
Xmax和
X
min
X_{\min}
Xmin是上下限值,
N
p
o
p
N_{pop}
Npop是向日葵的数量(种群规模)。
新的植物位置将由下式更新:
X
→
i
+
1
=
X
→
i
+
d
i
×
s
i
→
(5)
\overrightarrow X_{i+1}=\overrightarrow X_i+d_i×\overrightarrow{s_i}\tag{5}
Xi+1=Xi+di×si(5)
2、算法伪代码
二、仿真实验
本文以Sphere的5维函数为例,迭代1000次。
图2为迭代过程中自变量位置的变化动图。
图3为寻优过程的收敛曲线。
三、参考文献
[1] Gomes, G.F., da Cunha, S.S., Ancelotti, A.C… A sunflower optimization (SFO) algorithm applied to damage identification on laminated composite plates[J]. Engineering with Computers, 2019, 35: 619-626.