目录
- 1.背景
- 2.算法原理
- 2.1算法思想
- 2.2算法过程
- 3.结果展示
- 4.参考文献
1.背景
2019年,GF Gomes等人受到自然界向日葵运动行为启发,提出了向日葵优化算法(Sunflower Optimization, SFO)。
2.算法原理
2.1算法思想
SFO模拟向日葵行为的优化算法,受到向日葵向着太阳的自然行为的启发,具体体现在向日葵如何利用太阳光进行光合作用以最大化光能利用率。
2.2算法过程
向日葵通过其特有的日向性模式,每天按时跟随太阳运动,晚上则重置位置,为次日日出做好准备,这种特殊的运动模式帮助向日葵有效地吸收太阳光。在施肥方面,采用的是在相邻两朵向日葵之间随机施肥的策略。向日葵对热量的吸收遵循平方反比定律:
Q i = P 4 π r i 2 (1) Q_i=\frac{P}{4\pi r_i^2}\tag{1} Qi=4πri2P(1)
P是能量的功率,ri 是最佳位置和植物i的距离。向日葵朝向太阳的方向:
s i ⃗ = X ∗ − X i ∣ ∣ X ∗ − X i ∣ ∣ , i = 1 , 2 , … , n p (2) \vec{s_i}=\frac{X^*-X_i}{||X^*-X_i||},\quad i=1,2,\ldots,n_p\tag{2} si=∣∣X∗−Xi∣∣X∗−Xi,i=1,2,…,np(2)
向日葵在s方向步长更新:
d i = λ × P i ( ∣ ∣ X i + X i − 1 ∣ ∣ ) × ∣ ∣ X i + X i − 1 ∣ ∣ (3) d_i=\lambda\times P_i(||X_i+X_{i-1}||)\times||X_i+X_{i-1}||\tag{3} di=λ×Pi(∣∣Xi+Xi−1∣∣)×∣∣Xi+Xi−1∣∣(3)
其中, λ \lambda λ是惯性系数,Pi(||Xi Xi−1||)是授粉的概率,即向日葵i与其最近的邻居i−1授粉,在随机位置产生一个新个体,该位置根据花之间的每个距离而变化。也就是说,靠近太阳的个体会采取较小的步骤来寻找局部的改进,而离太阳较远的个体则会正常移动。为了不跳过容易成为全局最小候选者的区域,还需要限制每个个体给出的最大步长:
d max = ∣ ∣ X max − X min ∣ ∣ 2 × N pop (4) d_{\max}=\frac{||X_{\max}-X_{\min}||}{2\times N_{\text{pop}}}\tag{4} dmax=2×Npop∣∣Xmax−Xmin∣∣(4)
位置更新:
X ⃗ i + 1 = X ⃗ i + d i × s ⃗ i (5) \vec{X}_{i+1}=\vec{X}_{i}+d_{i}\times\vec{s}_{i}\tag{5} Xi+1=Xi+di×si(5)
伪代码
3.结果展示
使用测试框架,测试SFO性能 一键run.m
- 【智能算法】省时方便,智能算法统计指标——一键运行~
4.参考文献
[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.