SCI二区TOP|蜘蛛黄蜂优化算法(SWO)原理及实现【免费获取Matlab代码】

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献
    • 5.代码获取


1.背景

2023年,M Abdel-Basset受到蜘蛛黄蜂优化社会行为启发,提出了蜘蛛黄蜂优化算法(Spider Wasp Optimizer, SWO)。

在这里插入图片描述

在这里插入图片描述

2.算法原理

2.1算法思想

SWO模拟自然中雌性蜘蛛黄蜂的狩猎、筑巢和交配行为

在这里插入图片描述

2.2算法过程

捕猎和筑巢行为

雌性蜘蛛黄蜂开始他们的旅程,寻找猎物喂养他们的幼虫。它们在搜索空间内随机进行搜索,寻找最合适的猎物,这被称为探索阶段。雌性黄蜂以恒定的步长随机探索搜索空间:
S W ‾ i t + 1 = S W ‾ i t + μ 1 ∗ ( S W ‾ a t − S W ‾ b t ) (1) \overline{SW}_i^{t+1}=\overline{SW}_i^t+\mu_1*\left(\overline{SW}_a^t-\overline{SW}_b^t\right)\tag{1} SWit+1=SWit+μ1(SWatSWbt)(1)
其中,a和b是从种群中随机选取的两个指标来确定探索方向。参数表述为:
μ 1 = ∣ r n ∣ ∗ r 1 (2) \mu_1=|rn|*r_1\tag{2} μ1=rnr1(2)

雌黄蜂有时会找不到从球上掉下来的蜘蛛;因此,他们搜索了蜘蛛掉落的确切地点周围的整个区域:
S W ‾ i t + 1 = S W ‾ c t + μ 2 ∗ ( L ⃗ + r 2 ⃗ ∗ ( H ⃗ − L ⃗ ) ) (3) \overline{SW}_{i}^{t+1}=\overline{SW}_{c}^{t}+\mu_{2}*\left(\vec{L}+\vec{r_{2}}*\left(\vec{H}-\vec{L}\right)\right)\tag{3} SWit+1=SWct+μ2(L +r2 (H L ))(3)
各参数:
μ 2 = B ∗ cos ⁡ ( 2 π l ) B = 1 1 + e l (4) \mu_2=B*\cos(2\pi l)\\ B=\frac{1}{1+e^l}\tag{4} μ2=Bcos(2πl)B=1+el1(4)

跟随和逃离阶段

找到猎物后,蜘蛛黄蜂试图攻击他们在网络的中心:
S W ‾ i t + 1 = S W ‾ i t + C ∗ ∣ 2 ∗ r 5 ‾ ∗ S W ‾ a t − S W ‾ i t ∣ C = ( 2 − 2 ∗ ( t t m a x ) ) ∗ r 6 (5) \overline{SW}_{i}^{t+1}=\overline{SW}_{i}^{t}+C*\left|2*\overline{r_{5}}*\overline{SW}_{a}^{t}-\overline{SW}_{i}^{t}\right|\\C=\left(2-2*\left(\frac{t}{t_{max}}\right)\right)*r_{6}\tag{5} SWit+1=SWit+C 2r5SWatSWit C=(22(tmaxt))r6(5)
当蜘蛛逃离雌黄蜂时,雌黄蜂和蜘蛛之间的距离逐渐增加:
S W ‾ i t + 1 = S W ‾ i t ∗ ν c ‾ (6) \overline{SW}_i^{t+1}=\overline{SW}_i^t*\overline{\nu c}\tag{6} SWit+1=SWitνc(6)
其中,vc是根据正态分布在k和- k之间生成的向量。逐渐增大雌蜂与蜘蛛之间的距离:
k = 1 − ( t t m a x ) (7) k=1-\left(\frac{t}{t_{max}}\right)\tag{7} k=1(tmaxt)(7)

筑巢行为

雌性黄蜂将瘫痪的蜘蛛拉入预先准备好的巢穴:
S W ‾ i t + 1 = S W ‾ ∗ + cos ⁡ ( 2 π l ) ∗ ( S W ‾ ∗ − S W ‾ i t ) (8) \overline{SW}_{i}^{t+1}=\overline{SW}^{*}+\cos(2\pi l)*\left(\overline{SW}^{*}-\overline{SW}_{i}^{t}\right)\tag{8} SWit+1=SW+cos(2πl)(SWSWit)(8)
从种群中随机选择的雌性蜘蛛的位置上建造巢穴,使用额外的步长来避免在同一位置上建造两个巢穴:
S W ‾ i t + 1 = S W ‾ a t + r 3 ∗ ∣ γ ∣ ∗ ( S W ‾ a t − S W ‾ i t ) + ( 1 − r 3 ) ∗ U → ∗ ( S W ‾ b t − S W ‾ c t ) (9) \overline{SW}_{i}^{t+1}=\overline{SW}_{a}^{t}+\mathrm{r}_{3}*|\gamma|*\left(\overline{SW}_{a}^{t}-\overline{SW}_{i}^{t}\right)+\left(1-r_{3}\right)*\overrightarrow{U}*\left(\overline{SW}_{b}^{t}-\overline{SW}_{c}^{t}\right)\tag{9} SWit+1=SWat+r3γ(SWatSWit)+(1r3)U (SWbtSWct)(9)

交配行为

蜘蛛黄蜂的一个主要特征是它们能够确定性别,性别是根据卵所在的寄主的大小来决定的:
S W i t + 1 = C r o s s o v e r ( S W i t , S W m t , C R ) (10) SW_i^{t+1}=Crossover\big(SW_i^t,SW_m^t,CR\big)\tag{10} SWit+1=Crossover(SWit,SWmt,CR)(10)
其中Crossover表示均匀交叉算子,生成与雌性不同的雄性蜘蛛黄蜂:
S W ‾ m t + 1 = S W ‾ i t + e l ∗ ∣ β ∣ ∗ ν ‾ 1 + ( 1 − e l ) ∗ ∣ β 1 ∣ ∗ ν ‾ 2 (11) \overline{SW}_{m}^{t+1}=\overline{SW}_{i}^{t}+e^{l}*|\beta|*\overline{\nu}_{1}+\left(1-e^{l}\right)*|\beta_{1}|*\overline{\nu}_{2}\tag{11} SWmt+1=SWit+elβν1+(1el)β1ν2(11)
各参数表述为:
v ⃗ 1 = { x ⃗ a − x ⃗ i f ( x ⃗ a ) < f ( x ⃗ i ) x ⃗ i − x ⃗ a o t h e r w i s e v ⃗ 2 = { x ⃗ b − x ⃗ c f ( x ⃗ b ) < f ( x ⃗ c ) x ⃗ c − x ⃗ b o t h e r w i s e (12) \vec{v}_{1}=\left\{\begin{array}{c}\vec{x}_a-\vec{x}_if\big(\vec{x}_a\big)<f(\vec{x}_i)\\\vec{x}_i-\vec{x}_a otherwise\end{array}\right.\\\\\vec{v}_{2}=\left\{\begin{array}{c}\vec{x}_b-\vec{x}_cf\big(\vec{x}_b\big)<f(\vec{x}_c)\\\vec{x}_c-\vec{x}_b otherwise\end{array}\right.\tag{12} v 1={x ax if(x a)<f(x i)x ix aotherwisev 2={x bx cf(x b)<f(x c)x cx botherwise(12)

伪代码

在这里插入图片描述

3.结果展示

在这里插入图片描述
在这里插入图片描述

4.参考文献

[1] Abdel-Basset M, Mohamed R, Jameel M, et al. Spider wasp optimizer: a novel meta-heuristic optimization algorithm[J]. Artificial Intelligence Review, 2023, 56(10): 11675-11738.

5.代码获取

【资源清单】代码资源清单导航~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dpo相对于rlhf的优化,或两者之间的异同

DPO (Direct Preference Optimization) 和 RLHF (Reinforcement Learning from Human Feedback) 都是用于优化大型语言模型以符合人类偏好的方法&#xff0c;但它们在实现方式和效果上有一些重要的区别&#xff1a; 相同点 目标&#xff1a;两种方法都旨在使模型输出与人类偏…

Android | 开发UI时候要注意的(单线程模型 导致事件执行到最后都需要回归主线程)

在 Android 开发中&#xff0c;所有涉及到 UI 操作的代码必须在主线程&#xff08;UI 线程&#xff09;上执行的原因如下所述&#xff0c;以及程序员在开发过程中需要注意的一些事项&#xff1a; 1. 原因&#xff1a; 安全性和稳定性&#xff1a; Android 系统是单线程模型的&…

初识c++(引用,inline,nullprt)

一、引用 1、定义 引用不是新定义⼀个变量&#xff0c;而是给已存在变量取了⼀个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c; 它和它引用的变量共用同⼀块内存空间。 类型& 引用别名 引用对象; #include<iostream> using namespace std; in…

342. 4的幂

哈喽&#xff01;大家好&#xff0c;我是奇哥&#xff0c;一位专门给面试官添堵的职业面试员 文章持续更新&#xff0c;可以微信搜索【小奇JAVA面试】第一时间阅读&#xff0c;回复【资料】更有我为大家准备的福利哟&#xff01; 文章目录 一、题目二、答案三、总结 一、题目 …

python--del

在Python中&#xff0c;del是一个关键字&#xff0c;用于删除对象。当你想删除列表的某个元素或者整个变量时&#xff0c;可以使用del。 以下是使用del的一些示例&#xff1a; 删除列表中的特定索引处的元素&#xff1a; my_list [1, 2, 3, 4, 5] del my_list[2] # 删除索引为…

C++ 算法——二分查找

如果要你在一个升序序列中查找一个值的位置&#xff0c;你是否还会傻乎乎的用下面这个 O ( n ) \mathcal O(n) O(n) 的代码暴力查找&#xff0c;如果是&#xff0c;我告诉你&#xff0c;其实根本不用这么做。 int find(int a[],int n,int k) {for(int i0;i<n;i) if(a[i]k)…

在Spring Boot项目中集成监控与报警

在Spring Boot项目中集成监控与报警 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 引言 在当今的软件开发中&#xff0c;监控和报警系统是保证系统稳定性和可靠性的重要组成部分。Spring Boot…

华为机考真题 -- 篮球游戏

题目描述: 幼儿园里有一个放倒的圆桶,它是一个线性结构,只能在桶的右边将放入篮球,但是可以在桶的左边或者右边将取出篮球。每个篮球有单独的编号,老师可以一次性放入一个或者多个篮球,小朋友可以在桶左边或者右边取出篮球,当桶里只有一个篮球的情况下,只能从桶的左边…

视频监控技术在食品安全监管中的关键应用

视频监控技术在食品安全监管中的关键应用 1、视频监控技术在食品安全监管中的作用 在食品安全监管中&#xff0c;视频监控技术发挥着不可替代的作用。通过安装视频监控系统&#xff0c;可以实现对食品生产、运输、储存等各个环节的实时监控和录像存储。这不仅有助于监管部门及…

Linux的前世今生

Unix的起源和发展 1969年&#xff0c;AT&T贝尔实验室的Ken Thompson和Dennis Ritchie等人开发了Unix操作系统。Unix的设计理念强调小而简洁的工具&#xff0c;文本流和系统模块化&#xff0c;这些理念后来成为Linux开发的重要基础。1973年&#xff0c;Unix用C语言重新编写…

深度学习-数学基础(四)

深度学习数学基础 数学基础线性代数-标量和向量线性代数-向量运算向量加和向量内积向量夹角余弦值 线性代数-矩阵矩阵加法矩阵乘法矩阵点乘矩阵计算的其他内容 人工智能-矩阵的操作矩阵转置&#xff08;transpose&#xff09;矩阵与向量的转化 线性代数-张量&#xff08;tensor…

GEE代码实例教程详解:湖泊面积变化分析

GEE代码实例教程详解&#xff1a;湖泊面积变化分析 简介 在本篇博客中&#xff0c;我们将通过Google Earth Engine (GEE) 探索湖泊面积随时间的变化。通过分析MODIS数据集中的归一化差异水体指数&#xff08;NDWI&#xff09;&#xff0c;我们可以识别湖泊区域并监测其面积变…

达梦数据库kill会话

达梦数据库kill会话 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;可以使用 SP_CLOSE_SESSION 存储过程来终止会话。这个存储过程需要提供会话 ID (sid) 作为参数&#xff0c;用于指定哪个会话需要被终止。 下面是使用 SP_CLOSE_SESSION 存储过程的详细步骤…

第5章 Vite高级功能(二)

文章目录 6 缓存和持久化6.1 配置缓存目录 7 压缩与最小化7.1 启用压缩7.2 配置压缩选项 8 生产环境优化8.1 移除调试信息8.2 配置环境变量 9 静态资源优化9.1 压缩图像9.2 合并和压缩 CSS9.3 使用 HTTP/2 10 分析构建结果10.1 使用分析插件10.2 生成包分析报告 6 缓存和持久化…

PostgreSQL的使用

PostgreSQL的使用 1.首先&#xff0c;使用docker进行安装pgvector数据库&#xff0c;具体的安装步骤可以查看我之前发的博文。 2.docker exec -it pgvector /bin/bash 进入docker容器内部&#xff0c;操作数据库&#xff0c;上述命令是以交互式命令进入了容器的内部&#xf…

卷技术还是卷应用?李彦宏给出了明确答案

如何理解李彦宏说的“不要卷模型&#xff0c;要卷应用” 引言 7月4日&#xff0c;2024世界人工智能大会在上海世博中心召开。百度创始人兼CEO李彦宏在产业发展主论坛上呼吁&#xff1a;“大家不要卷模型&#xff0c;要卷应用&#xff01;”这句话引起了广泛讨论。李彦宏认为&a…

Python股票计算小程序(字符串格式化练习)

要求&#xff1a;打印的第一行使用f控制&#xff0c;第二行打印使用占位符&#xff0c;股价输出保留两位小数。 # 股价计算小程序 name"周氏集团" stock_price19.99 stock_code "9283" stock_price_daily_growth_factor1.2 growth_days7print(f"公司…

多线程场景下,使用QEventLoop使界面不卡顿的同时过滤用户输入

背景描述 有耗时的操作需要放到子线程中处理&#xff0c;但是此过程中不允许界面执行其他操作&#xff0c;不能使用阻塞界面的模态对话框实现。 可以通过QEventLoop在子线程执行的同时开启一个事件循环&#xff0c;使UI界面不卡顿&#xff0c;能够正常响应。但是这种不卡顿只是…

【Python进阶】继承进阶和私有权限

目录 一、继承进阶 1、方法重写 2、调用父类方法 3、多层继承 二、私有权限 1、私有属性 2、私有方法 面向对象基础&#xff1a;小白也能看懂的Python基础教程&#xff08;8&#xff09;-CSDN博客 一、继承进阶 1、方法重写 当父类的同名方法达不到子类的要求&#x…

阿里云上kubesphere安装配置 - 使用阿里云负载均衡

教程参考 https://www.kubesphere.io/zh/docs/v3.3/installing-on-linux/public-cloud/install-kubesphere-on-ali-ecs/ 环境配置 关闭防火墙关闭selinux关闭swap分区时间同步hosts解析内核参数设置检查DNS安装ipvs安装依赖组件安装、设置docker每台机器都需要操作 #安装工具…