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

在这里插入图片描述

目录

    • 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 =∣∣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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/576523.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android某钉数据库的解密分析

声明 1 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 目的 1 解密app数据库,用数据库软件打开查看信息内容 入手…

C语言数据类型的介绍,类型的基本归类,整型在内存中的存储,原码、反码、补码,大小端等介绍

文章目录 前言一、数据类型的介绍类型的意义 1. 类型的基本归类(1). 整型家族(2). 浮点数家族(3). 构造类型(4). 指针类型(5). 空类型 二、整型在内存中的存储…

【网络安全】安全事件管理处置 — 安全事件处置思路指导

专栏文章索引:网络安全 有问题可私聊:QQ:3375119339 目录 一、处理DDOS事件 1.准备工作 2.预防工作 3.检测与分析 4.限制、消除 5.证据收集 二、处理恶意代码事件 1.准备 2.预防 3.检测与分析 4.限制 5.证据收集 6.消除与恢复 …

NodeJS基础知识

文章目录 **1. Node.js平台与架构****1.1 Node.js简介****1.2 事件循环(Event Loop)** **2. JavaScript基础知识****2.1 ECMAScript版本****2.2 变量、数据类型、运算符****2.3 函数****2.4 类与面向对象编程** **3. Node.js核心API****3.1 全局对象与内…

Linux下载及安装OpenSSL

文章目录 前言一、OpenSSL下载二、OpenSSL安装1.上传下载好的安装包到服务器2.解压3.切换目录4.配置config5.编译6.安装7.备份旧版本OpenSSL7.创建软链接8.添加OpenSSL动态链接库9.更新库缓存10.查看OpenSSL版本验证安装是否成功 前言 一般系统会自带有OpenSSL,我们…

OpenHarmony实战开发-媒体查询 (@ohos.mediaquery)

概述 媒体查询作为响应式设计的核心,在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。媒体查询常用于下面两种场景: 针对设备和应用的属性信息(比如显示区域、深浅色、分辨率)&#xff0…

大数据第五天(操作hive的方式)

文章目录 操作hive的方式hive 存储位置hive 操作语法创建数据表的方式 操作hive的方式 hive 存储位置 hive 操作语法 创建数据表的方式 – 创建数据库 create database if not exists test我们创建数据库表的时候,hive是将我们的数据自动添加到数据表中&#xf…

Matlab|交直流系统潮流计算(含5种控制模式)

目录 1 主要内容 程序参考流程图 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《交直流系统潮流计算及相互关联特性分析》,采用5种交直流潮流控制方式:1.定电流定电压 2.定电流定熄弧角 3.定功率定电压 4.定功率定熄弧角 5.定触发角…

C++进阶:多态

目录 一、多态的概念 二、多态的实现 1.多态的实现条件 2.虚函数 3.虚函数的重写(覆盖) 三、概念比较 四、抽象类 1.概念 2.接口继承与实现继承 一、多态的概念 在生活中我们通常会遇到以下的一个场景:领支付宝的红包。 明明都是同一个红包,不同…

Qt配置CMake出错

一个项目需要在mingw环境下编译Opencv源码,当我用Qt配置opencv的CMakeLists.txt时,出现了以下配置错误: 首先我根据下述博文介绍,手动配置了CMake,但仍不能解决问题。 Qt(MinGW版本)安装 - 夕西行 - 博客园 (cnblogs.…

鸿蒙(HarmonyOS)性能优化实战-Trace使用教程

概述 OpenHarmony的DFX子系统提供了为应用框架以及系统底座核心模块的性能打点能力,每一处打点即是一个Trace,其上附带了记录执行时间、运行时格式化数据、进程或线程信息等。开发者可以使用SmartPerf-Host调试工具对Trace进行解析,在其绘制…

人工智能如何提高公司效率的 5 种方法

人工智能是当今最热门的话题之一,但并不是每个人都了解其对商业的价值规模。由此可见,现有的AI技术可以将企业的生产力提升40%。 在机器学习的帮助下,Netflix 利用自动化个性化推荐每年赚取 10 亿美元。当公司使用人工智能时,34%…

线性代数:抽象向量空间

一、说明 有些函数系列极具线性代数的向量特征。这里谈及多项式构成函数的线性代数意义。问题是这个主题能展开多少内涵?请看本文的论述。 二、线性空间和向量 让我先问你一个简单的问题。什么是向量?为了方便起见,二维箭头从根本上说是平…

Web前端一套全部清晰 ③ day2 HTML 标签综合案例

别让平淡生活&#xff0c;耗尽所有向往 —— 24.4.26 综合案例 —— 一切都会好的 网页制作思路&#xff1a;从上到下&#xff0c;先整体到局部&#xff0c;逐步分析制作 分析内容 ——> 写代码 ——>保存——>刷新浏览器&#xff0c;看效果 <!DOCTYPE html> &l…

IDEA生成测试类

方法一 具体流程: 选中要生成的测试类------------>选择code选项------------>选择Generate选项---------->选择test选项---------->选择要生成的方法 第一步: 光标选中需要生成测试类的类 找到code选项 选中Generate选项 选中test选项 选中你要生成的测试…

【智能算法】囊状虫群算法(TSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c;S Kaur等人受到囊状虫群自然行为启发&#xff0c;提出了囊状虫群算法&#xff08;Tunicate Swarm Algorithm, TSA&#xff09;。 2.算法原理 2.1算法思想 TSA模拟了囊状虫群在导…

Scala的函数至简原则

对于scala语言来说&#xff0c;函数的至简原则是它的一大特色。下面让我们一起来看看分别有什么吧&#xff01; 函数至简原则&#xff1a;能省则省&#xff01; 初始函数 def test(name:String):String{return name }1、return可以省略&#xff0c;Scala会使用函数体的最后一…

什么是用户体验(UX)文案,为什么它很重要?

网上购物如今比以往任何时候都更加相关。所以我们将以此为例说明什么是用户体验&#xff08;UX&#xff09;文案&#xff0c;以及为什么它很重要。 假设你去了一个在线商店。你需要执行一系列操作&#xff1a; 找到合适的部分选择你感兴趣的产品弄清楚它们是什么&#xff0c;…

Access2019直接将数据导入SQL Server数据库中,再直接链接回来

Access2019 的数据表等&#xff0c;除了通过 SSMA 导入数据库外&#xff0c;还可以利用access2019 自身的外部数据导出功能来达到目的。本文将详细介绍这一操作过程。 一、命令行操作阶段 1.以SA这一超级用户登录SQL Server&#xff0c;创建一个数据库&#xff0c;例如“个人…

PyQt5中QTablewidget生成右键菜单

QTablewidget生成右键菜单&#xff0c;需要自定义一个QTablewidget类 import sys from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QMenu, QAction, QDialog from PyQt5.QtCore import Qt from PyQt5 import QtCoreclass CustomTableWidget(QTabl…