【智能算法】向日葵优化算法(SFO)原理及实现

本文介绍了Gomes等人基于向日葵运动行为提出的SFO算法,详细阐述了其原理,包括模拟向日葵追踪太阳的运动模式和施肥策略。算法通过位置更新和限制最大步长确保全局搜索。结果显示,SFO在损伤识别等领域具有良好的性能。
摘要由CSDN通过智能技术生成

在这里插入图片描述


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 =∣∣XXi∣∣XXi,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+Xi1∣∣)×∣∣Xi+Xi1∣∣(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∣∣XmaxXmin∣∣(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} X i+1=X i+di×s i(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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小O的算法实验室

谢谢大佬的肯定!

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

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

打赏作者

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

抵扣说明:

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

余额充值