【智能算法】跳蛛优化算法(AOA)原理及实现

在这里插入图片描述

目录

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


1.背景

2021年,H Peraza-Vázquez等人受到跳蛛狩猎行为启发,提出了跳蛛优化算法(Jumping Spider Optimization Algorithm,JSOA)。

2.算法原理

2.1算法思想

JSOA模拟了跳蛛的捕猎行为,主要包括跳蛛捕猎时的迫害、跳向猎物、搜索行为,并通过信息素来优化位置不佳的跳蛛。
在这里插入图片描述

2.2算法过程

迫害

当跳蛛跳跃距离不够捕捉猎物时,它会通过一些隐蔽的移动靠近猎物:
x ⃗ i ( g + 1 ) = 1 2 ( x ⃗ i ( g ) − x ⃗ r ( g ) ) (1) \vec{x}_{i}(g+1)=\frac{1}{2}(\vec{x}_{i}(g)-\vec{x}_{r}(g))\tag{1} x i(g+1)=21(x i(g)x r(g))(1)
其中,xr为不等于xi的随机跳蛛。

跳向猎物

跳蛛扑向猎物的行为可以表示为初速度为V0,与水平夹角为φ 的 抛 物 线 运 动。该抛物线运动水平方向速度与竖直方向速度为:
x ⃗ i = V 0 cos ⁡ ( α ) t i ⃗ y ⃗ i = ( V 0 sin ⁡ ( α ) t − 1 2 g t 2 ) j ⃗ (2) \begin{aligned}&\vec{x}_{i}=V_{0}\cos(\alpha)t\vec{i}\\&\vec{y}_{i}=\left(V_{0}\sin(\alpha)t-\frac{1}{2}gt^{2}\right)\vec{j}\end{aligned}\tag{2} x i=V0cos(α)ti y i=(V0sin(α)t21gt2)j (2)
当时间间隔为1时,可以得到:
y = x tan ⁡ ( α ) − g x 2 2 V 0 2 cos ⁡ 2 ( α ) (3) y=x\tan(\alpha)-\frac{gx^2}{2V_0^2\cos^2(\alpha)}\tag{3} y=xtan(α)2V02cos2(α)gx2(3)
跳向猎物过程可以表述为:
x ⃗ i ( g + 1 ) = x ⃗ i ( g ) tan ⁡ ( α ) − g x ⃗ i 2 ( g ) 2 V 0 2 cos ⁡ 2 ( α ) α = ϕ π 180 (4) \begin{aligned}&\vec{x}_{i}(g+1)=\vec{x}_{i}(g)\tan(\alpha)-\frac{g\vec{x}_{i}^{2}(g)}{2V_{0}^{2}\cos^{2}(\alpha)}\\&\alpha=\frac{\phi\pi}{180}\end{aligned}\tag{4} x i(g+1)=x i(g)tan(α)2V02cos2(α)gx i2(g)α=180ϕπ(4)

搜索猎物:

跳蛛在周围环境进行随机搜索以找到猎物,算法提供了局部搜索和全局搜索。局部搜索表述为:
x ⃗ i ( g + 1 ) = x ⃗ b e s t ( g ) + W A L K ( 1 2 − ε ) (5) \vec{x}_i(g+1)=\vec{x}_{\mathrm{best}}(g)+WALK\left(\frac{1}{2}-\varepsilon\right)\tag{5} x i(g+1)=x best(g)+WALK(21ε)(5)
全局搜索表述为:
x ⃗ i ( g + 1 ) = x ⃗ b e s t ( g ) + ( x ⃗ b e s t ( g ) − x ⃗ w o r s t ( g ) ) λ (6) \vec{x}_i(g+1)=\vec{x}_{\mathrm{best}}(g)+(\vec{x}_{\mathrm{best}}(g)-\vec{x}_{\mathrm{worst}}(g))\lambda \tag{6} x i(g+1)=x best(g)+(x best(g)x worst(g))λ(6)
在这里插入图片描述

信息素:

第i只跳蛛信息素为:
p h e r o m o n e ( i ) = F i t n e s s max ⁡ − F i t n e s s ( i ) F i t n e s s max ⁡ − F i t n e s s min ⁡ (7) pheromone\left(i\right)=\frac{Fitness_{\max}-Fitness\left(i\right)}{Fitness_{\max}-Fitness_{\min}}\tag{7} pheromone(i)=FitnessmaxFitnessminFitnessmaxFitness(i)(7)
当信息素小于或等于0.3时:
x ⃗ i ( g ) = x ⃗ best ( g ) + 1 2 ( x ⃗ r 1 ( g ) − ( − 1 ) σ x ⃗ r 2 ( g ) ) \vec{x}_i(g)=\vec{x}_{\text{best}}(g)+\frac{1}{2}(\vec{x}_{r1}(g)-(-1)^{\sigma}\vec{x}_{r2}(g)) x i(g)=x best(g)+21(x r1(g)(1)σx r2(g))

伪代码:
在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Peraza-Vázquez H, Peña-Delgado A, Ranjan P, et al. A bio-inspired method for mathematical optimization inspired by arachnida salticidade[J]. Mathematics, 2021, 10(1): 102.

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

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

相关文章

【Kaggle】练习赛《鲍鱼年龄预测》(上)

前言 上一篇文章,讲解了《肥胖风险的多类别预测》机器学习方面的文章,主要是多分类算法的运用,本文是一个回归的算法,本期是2024年4月份的题目《Regression with an Abalone Dataset》即《鲍鱼年龄预测》,在此分享高手…

C++数据结构与算法——回溯算法组合问题

C第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更…

C++ 引用和指针

C++ 中的引用(Reference)和指针(Pointer)是两种不同的概念,它们在语法上和语义上有很多不同之处,下面是它们的区别: 语法: 引用使用 & 符号声明,并且必须在初始化时绑定到一个对象上。例如:int& ref = obj;指针使用 * 符号声明,并且可以在任何时候指向一个对…

Java入门第6课

1.数据类型的自动转化 java的数据转化是容量小的部分向大的方向转,这个部分很简单,byte->short->int->long,char->int->long;int->double 有一些数据转化虽然是自动的,但是存在数据精度丢失,比如i…

特征增强自蒸馏卷积神经网络

目录 1.1 模型总体架构 1.2 特征增强金字塔模块 1.3 辅助分类器 1.1 模型总体架构 与自然图像相比,遥感场景图像地物较为复杂,具有类间相似度高和类内差异大的特点,这导致常用的网络模型难以有效学习遥感场景图像的表征特征。此外&#xf…

【ARM 嵌入式 C 入门及渐进 21 -- 内存分配相关函数malloc 与 realloc】

请阅读【嵌入式开发学习必备专栏 】 文章目录 malloc 与 reallocmallocrealloc主要差异点 malloc 与 realloc malloc 和 realloc 都是 C 语言标准库中的函数,用于动态内存分配。它们在使用上有明显的区别: malloc malloc(Memory Allocatio…

springboot之mybatisPlus多表查询及分页查询

文章目录 一、多表查询二、mybatis-plus条件查询三、分页查询 一、多表查询 可能会用到的注解 这里的场景是,查询每个用户及其所有的订单。就是查询你的id号的同时,把你所有的历史订单信息都拉出来。 表结构这样 CREATE TABLE User ( id INT PRIMARY…

【可靠性】陷阱电荷对TDDB影响的多尺度模拟

【From Accelerated to Operating Conditions: How Trapped Charge Impacts on TDDB in SiO2 and HfO2 Stacks】 文章总结: 本研究深入探讨了在SiO2和HfO2介质堆叠中,陷阱电荷对时间依赖介电击穿(TDDB)现象的影响。通过引入载流子…

位运算-191. 位1的个数- 136. 只出现一次的数字

位1的个数 已解答 简单 相关标签 相关企业 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。 示例 1: 输入:n 11 输…

Git 术语及中英文对照

完毕!!感谢您的收看 ----------★★历史博文集合★★---------- 我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字…

C++从入门到精通——类的定义及类的访问限定符和封装

类的定义及类的访问限定符和封装 前言一、类的定义类的两种定义方式成员变量命名规则的建议示例 二、类的访问限定符和封装访问限定符访问限定符说明C为什么要出现访问限定符例题 封装例题 前言 类的定义是面向对象编程中的基本概念,它描述了一类具有相同属性和方法…

MyBatis-Plus的学习笔记

MyBatis-Plus 一、MyBatis-Plus快速入门 1.1 简介 课程版本:3.5.3.1 https://baomidou.com/ MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变&…

基于Vision Transformer的迁移学习在乳腺X光图像分类中的应用

乳房X线摄影(MG)在乳腺癌的早期发现中起着重要作用。MG可以在早期阶段发现乳腺癌,即使是感觉不到肿块的小肿瘤。基于卷积神经网络(CNN)的DL最近吸引了MG的大量关注,因为它有助于克服CAD系统的限制(假阳性、不必要的辐射暴露、无意义的活组织检查、高回调…

使用Python写简单的点云SUSAN关键点检测

一、代码 Python import numpy as np import open3d as o3d from scipy.spatial import cKDTree from joblib import Parallel, delayeddef calculate_response(idx, points, radius, t, kdtree):# 使用KD树找到半径内的所有点neighbor_indices = kdtree.query_ball_point(po…

大模型的Base版本模型、Chat版本模型和4Bit版本模型有什么区别

在最近开源的大部分大语言模型里,我们往往能看到在huggingface上,同一数据量级会有Base版本模型、Chat版本模型和4Bit模型等多个版本的模型,像我一样的新手小白可能会搞不清楚我应该用哪个来使用 下面是一些总结: Base版本模型&a…

51单片机入门_江协科技_21.1_开发板USB口连接建议

1. 目前我自己用的普中A2版本的开发板,操作失误导致在开发板连接电脑并通电的情况下误将跳线帽触碰到开发板的3.3V与GND,导致USB口浪涌,2个电脑上面的USB口烧毁,开发板暂时没有任何问题,电脑USB口现在只是接通后有电&a…

8_springboot_shiro_jwt_多端认证鉴权_多Reaml管理

1. 目标 前面一直讨论的是只有一个Reaml的场景,Shiro是可以管理多个Realm的。那么什么场景下,我们需要定义多个Realm,以及Shiro框架是如何管理多个Realm的,他们是如何工作的。本章将会解释上面的问题,最后会配置前面章…

为什么数据质量对于 GenAI 时代的营销至关重要

最近的一项调查显示,全球的首席营销官(CMO)对于通用人工智能(GenAI)未来提高生产力和创造竞争优势的能力持乐观和自信的态度。70%的人已经在使用通用人工智能,19%的人正在测试中。他们正在探索的主要领域包…

基于python爬虫与数据分析系统设计

**单片机设计介绍,基于python爬虫与数据分析系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于Python爬虫与数据分析系统的设计是一个结合了网络数据抓取、清洗、存储和数据分析的综合项目。这样的系统通常…

python中tkinter窗口内替换鼠标图标

本文使用创作助手。 要替换鼠标图标,可以使用Tkinter库的configure方法来修改鼠标图标。以下是一个示例代码: import tkinter as tk# 创建主窗口 root tk.Tk()# 设置鼠标图标 root.configure(cursor"arrow") # 替换为想要的鼠标图标&#…