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

在这里插入图片描述


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.

最近更新

  1. TCP协议是安全的吗?

    2024-04-28 04:12:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-28 04:12:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-28 04:12:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-28 04:12:04       20 阅读

热门阅读

  1. Mysql常用关键字详解

    2024-04-28 04:12:04       11 阅读
  2. Linux server

    2024-04-28 04:12:04       11 阅读
  3. mysql学前理论知识

    2024-04-28 04:12:04       11 阅读
  4. Vuex是什么?

    2024-04-28 04:12:04       10 阅读
  5. lua编译器介绍

    2024-04-28 04:12:04       13 阅读
  6. DSP实验

    2024-04-28 04:12:04       15 阅读
  7. leetCode59. 螺旋矩阵 II

    2024-04-28 04:12:04       14 阅读
  8. LeetCode 287 寻找重复数字

    2024-04-28 04:12:04       12 阅读
  9. 提示工程的艺术:释放ChatGPT的潜力

    2024-04-28 04:12:04       15 阅读
  10. Pytorch:Attention理解和代码实现

    2024-04-28 04:12:04       15 阅读
  11. Linux 内核深入理解 - 绪论

    2024-04-28 04:12:04       13 阅读