智能优化算法:白鲨优化算法-附代码

智能优化算法:白鲨优化算法

文章目录

  • 智能优化算法:白鲨优化算法
    • 1.白鲨优化算法
      • 1.1 初始化
      • 1.2 速度更新
      • 1.3位置更新
      • 1.4鱼群行为
    • 2.实验结果
    • 3.参考文献
    • 4.Matlab
    • 5.python

摘要:WSO 算法是 Braik 等于 2022 年提出一种基于白鲨深海觅食策略的新型优化算法 .该算法灵感来自于白鲨敏锐的听觉和嗅觉功能,这些功能有助于白鲨探索整个搜索空间来追踪、定位和捕获猎物,并通过白鲨位置的不断更新来达到求解优化问题的目的 。具有寻优能力强,收敛速度快等特点。

1.白鲨优化算法

1.1 初始化

WSO 是一种基于种群的优化算法, 该算法通过 式 (3) 随机生成均匀分布的白鲨种群个体位置 w j i w_j^i wji.
w j i = l j + R × ( u j − l j ) (3) w_j^i=l_j+R \times\left(u_j-l_j\right) \tag{3} wji=lj+R×(ujlj)(3)
式中: w j i w_j^i wji 为第 i i i 头白鲨第 j j j 维位置, i = 1 , 2 , ⋯   , n i=1,2, \cdots, n i=1,2,,n, 其 中 n n n 为白鲨种群规模; u j 、 l j u_j 、 l_j ujlj 分别为第 j j j 维搜索空间 上、下限; R R R 为介于 0 和 1 之间的随机数.

1.2 速度更新

白鲨大部分时间都在狩猎和追踪猎物 .WSO 算法中,白鲨根据猎物移动来感知其位置,并更新自身速度. 数学描述如下:
v k + 1 i = μ [ v k i + p 1 ( w gbest  k − w k i ) × c 1 + p 2 ( w best  v k i − w k i ) × c 2 ] (4) \begin{gathered} v_{k+1}^i=\mu\left[v_k^i+p_1\left(w_{\text {gbest }_k}-w_k^i\right) \times c_1+\right. \left.p_2\left(w_{\text {best }}^{v_k^i}-w_k^i\right) \times c_2\right] \end{gathered} \tag{4} vk+1i=μ[vki+p1(wgbest kwki)×c1+p2(wbest vkiwki)×c2](4)
式中: v k + 1 i v_{k+1}^i vk+1i 为第 i i i 头白鲨第 ( k + 1 ) (k+1) (k+1) 次迭代速度; v k i v_k^i vki 为 第 i i i 头白鲨第 k k k 次迭代速度; w gbest  k w_{\text {gbest }_k} wgbest k 为迄今为止白鲨 在第 k k k 次迭代中获得的全局最优位置; w k i w_k^i wki 为第 i i i 头 白鲨第 k k k 次迭代位置; w best  v k i w_{\text {best }}^{v_k^i} wbest vki 为第 i i i 头白鲨第 k k k 次迭代 速度对应的最优位置; c 1 、 c 2 c_1 、 c_2 c1c2 为介于 0 和 1 之间的随 机数; p 1 、 p 2 p_1 、 p_2 p1p2 分别为 w gbest  k 、 w best  v k i w_{\text {gbest }_k} 、 w_{\text {best }}^{v_k^i} wgbest kwbest vki 控制系数, 描述为 p 1 = p max  + ( p max  − p min  ) × e − ( 4 k / K ) 2 , p 2 = p min  + ( p max  − p_1=p_{\text {max }}+\left(p_{\text {max }}-p_{\text {min }}\right) \times \mathrm{e}^{-(4 k / K)^2}, p_2=p_{\text {min }}+\left(p_{\text {max }}-\right. p1=pmax +(pmax pmin )×e(4k/K)2,p2=pmin +(pmax  p min  ) × e − ( 4 k / K ) 2 ; k 、 K \left.p_{\text {min }}\right) \times \mathrm{e}^{-(4 k / K)^2} ; k 、 K pmin )×e(4k/K)2;kK 分别为当前迭代次数和最大迭 代次数; p max  、 p min  p_{\text {max }} 、 p_{\text {min }} pmax pmin  分别为控制系数最大、最小值; μ \mu μ 表 示收缩因子.

1.3位置更新

(1)基于最优猎物的位置更新. WSO 算法中, 白渔 通过朝最优猎物移动来更新自身位置以找到最优或 次优猎物. 数学描述如下:
w k + 1 i = { w k i ⋅ ¬ ⊕ w o + u ⋅ a + l ⋅ b R < m v w k i + v k i / f R ⩾ m v (5) w_{k+1}^i=\left\{\begin{array}{cc} w_k^i \cdot \neg \oplus w_o+u \cdot a+l \cdot b & R<m_v \\ w_k^i+v_k^i / f & R \geqslant m_v \end{array}\right. \tag{5} wk+1i={wki¬wo+ua+lbwki+vki/fR<mvRmv(5)
式中: w k + 1 i w_{k+1}^i wk+1i 为第 i i i 头白渔第 ( k + 1 ) (k+1) (k+1) 次迭代位置; → \rightarrow 为 否定运算符; ⊕ \oplus 为位运算符; a 、 b a 、 b ab 为一维二进制向量, 描述为 a = sgn ⁡ ( w k i − u ) > 0 , b = sgn ⁡ ( w k i − l ) < 0 , sgn ⁡ a=\operatorname{sgn}\left(w_k^i-u\right)>0, b=\operatorname{sgn}\left(w_k^i-l\right)<0, \operatorname{sgn} a=sgn(wkiu)>0,b=sgn(wkil)<0,sgn ( - ) 为正负号返回函数; u , l u, l u,l 分别为搜索空间上、下 限; w 0 w_0 w0 为逻辑向量, 描述为 w 0 = ⊕ ( a , b ) ; f w_0=\oplus(a, b) ; f w0=(a,b);f 为白渻 波浪运动频率; m v m_v mv 为白鲨接近猎物时随迭代次数增 加而增加的动力; 其他参数意义同上.
(2)基于最好白鲨的位置更新. WSO 算法中, 白鲨 通过朝着最优白鲨位置移动以靠近猎物最优位置. 数 学描述如下:
w k + 1 ′ i = w gbest  k + r 1 D k sgn ⁡ ( r 2 − 0.5 ) r 3 < s s (6) w_{k+1}^{\prime i}=w_{\text {gbest }_k}+r_1 D_k \operatorname{sgn}\left(r_2-0.5\right) \quad r_3<s_s \tag{6} wk+1i=wgbest k+r1Dksgn(r20.5)r3<ss(6)
式中: w k + 1 i w_{k+1}^i wk+1i 为第 i i i 头白鲨第 ( k + 1 ) (k+1) (k+1) 次迭代相对于猎 物的新位置; r 1 、 r 2 、 r 3 r_1 、 r_2 、 r_3 r1r2r3 为介于 0 和 1 之间的随机数; D k D_k Dk 为猎物与白鲨之间的距离; s s s_s ss 为白鲨在接近最佳 猎物时的嗅觉和视觉强度参数; 其他参数意义同上.

1.4鱼群行为

WSO 算法通过模拟白鲨群受食行为来保留了前 两个最优解, 并根据这些最优位置来更新其他白鲨个 体位置. 数学描述如下:
w k + 1 i = w k i + w k + 1 i 2 × R (7) w_{k+1}^i=\frac{w_k^i+w_{k+1}^i}{2 \times R} \tag{7} wk+1i=2×Rwki+wk+1i(7)
式中,参数意义同上.

2.实验结果

在这里插入图片描述

3.参考文献

[1] BRAIK M, HAMMOURI A, ATWAN J, et al. White Shark Optimizer: a novel bio-inspired meta-heuristic algorithm for global optimization problems [ J ] [\mathrm{J}] [J]. Knowledge-based systems,2022,243(7): 108457.

[2]陈金红,崔东文.基于深度学习神经网络超参数优化的入库径流预测方法研究——以云南省暮底河水库为例[J].三峡大学学报(自然科学版),2023,45(04):25-32.DOI:10.13393/j.cnki.issn.1672-948x.2023.04.005.

4.Matlab

5.python

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

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

相关文章

【Opencv入门到项目实战】(十):项目实战|文档扫描|OCR识别

所有订阅专栏的同学可以私信博主获取源码文件 文章目录 1.引言1.1 什么是光学字符识别 (OCR)1.2 应用领域 2.项目背景介绍3.边缘检测3.1 原始图像读取3.2 预处理3.3 结果展示 3.轮廓检测4.透视变换5.OCR识别5.1 tesseract安装5.2 字符识别 1.引言 今天我们来看一个OCR相关的文…

aardio 调用 python pickle load 数据

aardio 调用 python pickle load 词典数据 dump_pickle.py import os import sys import time import pickle from readmdict import MDX, MDDos.chdir("/mdict")mdxfile "your.mdx" if not os.path.exists(mdxfile):print("{mdxfile} not found!&…

2023年大数据与计算国际会议 (WBDC 2023)| EI、Scoups检索

会议简介 Brief Introduction 2023年大数据与计算国际会议&#xff08;WBDC 2023&#xff09; 会议时间&#xff1a;2023年11月17 -19日 召开地点&#xff1a;中国西安 大会官网&#xff1a;www.iwbdc.org 2023年大数据与计算国际会议&#xff08;WBDC 2023&#xff09;将围绕“…

docker下载和案例

文章目录 Docker安装一,根据官方文档安装二,根据我以下方式 Docker配置错误导致漏洞一,CRLF注入漏洞介绍在nginx中该漏洞例子解决方法 目录穿越漏洞介绍解决方法 Docker安装 一,根据官方文档安装 官方文档 二,根据我以下方式 docker安装要求&#xff1a; Docker要求Ce…

VTK学习笔记(二十一)

显示立方体已经做过了&#xff0c;现在想简单处理一下立方体&#xff0c;比如每个面上增加一些文字。效果如下。 #include <vtkAnnotatedCubeActor.h> #include <vtkCamera.h> #include <vtkNamedColors.h> #include <vtkNew.h> #include <vtkPrope…

SQL 数据科学:了解和利用联接

推荐&#xff1a;使用 NSDT场景编辑器助你快速搭建可编辑的3D应用场景 什么是 SQL 中的连接&#xff1f; SQL 联接允许您基于公共列合并来自多个数据库表的数据。这样&#xff0c;您就可以将信息合并在一起&#xff0c;并在相关数据集之间创建有意义的连接。 SQL 中的连接类型…

积木报表集成前端加载js文件404

项目场景&#xff1a; 在集成积木报表和shiro时候&#xff1a; 集成积木报表&#xff0c;shrio&#xff0c;shrio是定义在另一个模块下的&#xff0c;供另一个启动类使用&#xff0c;积木报表集成shrio的时候&#xff0c;需要依赖存放shrio的核心包&#xff0c;该核心包除了存…

Eleastisearch5.2.2利用镜像迁移构建实例后ES非健康状态

正常迁移完成后启动服务&#xff0c;查看ES非健康状态 此时观察ES集群状态&#xff1a;curl -XGET -u elastic:xxx localhost:9200/_cluster/health?pretty 注意到"active_shards_percent_as_number" : 88.8888 该项的值不产生变化;集群状态"status" : “…

常见的数据结构(顺序表、顺序表、链表、栈、队列、二叉树)

线性表&#xff08;Linear List&#xff09;  1.什么是线性表 2.线性表的特点 3.线性表的基本运算 顺序表 1.什么是顺序表 2.时间复杂度&#xff1a; 链表 1.什么是链表 2.单向链表 3. 双向链表 4.ArrayList和LinkedList的使用 栈Stack  1.什么是栈  2.栈的基本方法 队列…

【果树农药喷洒机器人】Part2:机器人变量喷药系统硬件选型

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

【ChatGPT 指令大全】怎么使用ChatGPT辅助程式开发

目录 写程式 解读程式码 重构程式码 解 bug 写测试 写 Regex 总结 在当今快节奏的数字化世界中&#xff0c;程式开发变得越来越重要和普遍。无论是开发应用程序、网站还是其他软件&#xff0c;程式开发的需求都在不断增长。然而&#xff0c;有时候我们可能会遇到各种问题…

C语言数据类型

C语言具有多种数据类型&#xff0c;用于存储不同类型的数据。大体可以分为基本数据类型和派生数据类型两大类。 一、基本数据类型 整型&#xff08;Integer&#xff09;&#xff1a; 用于表示整数值&#xff0c;包括int、short、long和long long等类型&#xff0c;可以有不同…

AI:03-基于深度神经网络的低空无人机目标检测图像识别的研究

文章目录 数据集收集与预处理深度神经网络模型设计模型训练与优化目标检测与图像识别代码实现:实验结果与分析讨论与展望低空无人机的广泛应用为许多领域带来了巨大的潜力和机会。为了实现无人机的自主导航和任务执行,准确的目标检测和图像识别是至关重要的。本文旨在研究并提…

软件外包开发的VUE开发框架

Vue.js&#xff08;通常简称为Vue&#xff09;是一个流行的渐进式JavaScript框架&#xff0c;用于构建用户界面。它的核心库专注于视图层&#xff0c;但也可以结合其他库和工具来构建完整的单页面应用&#xff08;SPA&#xff09;。以下分享Vue.js的开发框架和特点&#xff0c;…

剑指offer-1.1C++

sizeof空类问题 问&#xff1a;定义一个空的类型&#xff0c;里面没有任何成员变量和成员函数。对该类型求sizeof&#xff0c;得到的结果是多少&#xff1f; 答&#xff1a;1 问&#xff1a;为什么不是0&#xff1f; 答&#xff1a;空类型的实例中不包含任何信息&#xff0…

小说推文怎么做详细教程。小说推文项目拆解及分享

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 如何制作小说推文的详细教程&#xff01; 我做自媒体已经五年了&#xff0c;在自媒体行业也…

STM32CubeMX之freeRTOS消息队列

创建一个消息队列&#xff0c;两个发送任务&#xff0c;一个接受任务 发送任务一&#xff1a;等待时间为0 发送任务二&#xff1a;等待时间为最大 接受为0 简单来说就是&#xff1a; 任务一&#xff1a;一个普写 一个死写 一个普读 任务二&#xff1a;创造队列 一个普写 …

什么是React?React与VU的优缺点有哪些?

什么是React&#xff1f;什么是VUE&#xff1f; 维基百科上的概念解释&#xff0c;Vue.js是一个用于创建用户界面的开源MVVM前端JavaScript框架&#xff0c;也是一个创建单页应用的Web应用框架。Vue.js由尤雨溪&#xff08;Evan You&#xff09;创建&#xff0c;由他和其他活跃…

Scractch3.0_Arduino_ESP32_学习随记_IO中断(六)

IO中断 目的器材程序联系我们 目的 ESP32 IO中断的使用。 中断&#xff1a; 当IO中断事件发生时&#xff0c;MCU将优先执行中断的程序。 打个比方&#xff1a; 你正在读一本书&#xff0c;突然手机收到一条紧急消息。你不想错过这个重要的消息&#xff0c;所以你立即停下手中的…

MySQL高阶知识点

MySQL 文章目录 MySQLchar和varchar的区别视图视图的特点 存储过程存储过程的特点 触发器触发器的特点 MySQL引擎索引为什么要有索引呢&#xff1f;什么是索引索引的优势索引的劣势索引类型索引种类组合索引最左前缀原则索引创建原则B树和B树的区别数据库为什么使用B树而不是B树…