【智能算法】引力搜索算法(GSA)原理及实现

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.代码实现
    • 4.参考文献


1.背景

2009年,Esmat Rashedi等人受到万有引力定律启发,提出了引力搜索算法(Gravitational Search Algorithm,GSA)。

2.算法原理

2.1算法思想

GSA基于万有引力定律:任何物体之间都有相互吸引力,这个力的大小与各个物体的质量成正比例,而与它们之间的距离的平方成反比。

2.2算法过程

万有引力定律
万有引力定律可以表述为:
F = G M 1 M 2 R 2 F=G\frac{M_{1}M_{2}}{R^{2}} F=GR2M1M2
其中, G G G是引力常数。由于重力减弱的影响,引力常数的实际值取决于宇宙的实际年龄:
G ( t ) = G ( t 0 ) × ( t 0 t ) β , β < 1 G(t)=G(t_{0})\times\left(\frac{t_{0}}{t}\right)^{\beta},\quad\beta<1 G(t)=G(t0)×(tt0)β,β<1
在理论物理中,存在三种质量:

  • 主动引力质量 M a M_a Ma:决定物体产生的引力场的强弱
  • 被动引力质量 M p M_p Mp:决定物体在处于其他引力场时受到的引力大小
  • 惯性质量 M i M_i Mi:用于度量施加外力时运动状态不易改变的程度

因此,质量 i i i受到质量 j j j作用的引力 F i j F_{ij} Fij,与质量 j j j的主动引力质量和质量 i i i的被动引力质量的乘积成正比,与它们之间的距离的平方成反比, 牛顿定律可以重新表述为:
F i j = G M a j × M p i R 2 a i = F i j M i i \begin{aligned}F_{ij}&=G\frac{M_{aj}\times M_{pi}}{R^2}\\a_i&=\frac{F_{ij}}{M_{ii}}\end{aligned} Fijai=GR2Maj×Mpi=MiiFij
加速度,速度和位置更新:
t t t时刻,质量 i i i受到质量 j j j的力为:
F i j d ( t ) = G ( t ) M p i ( t ) × M a j ( t ) R i j ( t ) + ε ( x j d ( t ) − x i d ( t ) ) F_{ij}^{d}(t)=G(t)\frac{M_{pi}(t)\times M_{aj}(t)}{R_{ij}(t)+\varepsilon}(x_{j}^{d}(t)-x_{i}^{d}(t)) Fijd(t)=G(t)Rij(t)+εMpi(t)×Maj(t)(xjd(t)xid(t))
其中,距离 R i j R_{ij} Rij为欧式距离。
GSA中考虑随机特征,这里将质量 i i i在维度 d d d上受到的力随机加权:
F i d ( t ) = ∑ j = 1 , j ≠ i N r a n d j F i j d ( t ) F_{i}^{d}(t)=\sum_{j=1,j\neq i}^{N}rand_{j}F_{ij}^{d}(t) Fid(t)=j=1,j=iNrandjFijd(t)
由牛顿第二定律,加速度有:
a i d ( t ) = F i d ( t ) M i i ( t ) a_{i}^{d}(t)=\frac{F_{i}^{d}(t)}{M_{ii}(t)} aid(t)=Mii(t)Fid(t)
因此,速度和位置更新为:
ν i d ( t + 1 ) = r a n d i × ν i d ( t ) + a i d ( t ) x i d ( t + 1 ) = x i d ( t ) + ν i d ( t + 1 ) \begin{aligned}\nu_i^d(t+1)&=rand_i\times\nu_i^d(t)+a_i^d(t)\\x_i^d(t+1)&=x_i^d(t)+\nu_i^d(t+1)\end{aligned} νid(t+1)xid(t+1)=randi×νid(t)+aid(t)=xid(t)+νid(t+1)
流程图
在这里插入图片描述

3.代码实现

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

代码传送门
在这里插入图片描述

4.参考文献

[1] Rashedi E, Nezamabadi-Pour H, Saryazdi S. GSA: a gravitational search algorithm[J]. Information sciences, 2009, 179(13): 2232-2248.

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

安装Pytorch——CPU版本

安装Pytorch——CPU版本 1. 打开pytorch官网2. 选择pip安装pytorch-cpu3.复制安装命令4. 在cmd命令窗口&#xff0c;进入你的虚拟环境4.1 创建虚拟环境4.2 进行安装 5. 安装成功6. 进行测试——如下面步骤&#xff0c;如图6.1 输入 python6.2 输入 import torch6.2 输入 print …

指挥航空公司架次与延误率占比

打开前端Vue项目kongguan_web&#xff0c;创建前端 src/components/Delay.vue 页面&#xff0c;并添加柱状图与折线图叠加&#xff0c;设置双Y轴。 页面div设计&#xff0c;代码如下&#xff1a; <template><div><div class"home"><div id&qu…

常用芯片学习——BME280芯片

BME280 温湿度气压传感器 芯片介绍 BME280是基于成熟传感原理的组合数字湿度、压力和温度传感器。该传感器块采用极为紧凑的金属盖LGA封装&#xff0c;占地面积仅为2.5x2.5mm2&#xff0c;高度为0.93mm。该传感器提供I2C以及SPI接口。它的小尺寸和低功耗允许在电池驱动的设备…

【C++刷题】优选算法——动态规划第一辑

1.状态表示是什么&#xff1f;简答理解是dp表里的值所表示的含义怎么来的&#xff1f;题目要求经验题目要求分析问题的过程中&#xff0c;发现重复子问题 2.状态转移方程dp[i]......细节问题&#xff1a;3.初始化控制填表的时候不越界4.填表顺序控制在填写当前状态的时候&#…

通过键盘对机械臂进行操作

1 #include<myhead.h>2 #include<linux/input.h>3 #define SER_PORT 88884 #define SER_IP "192.168.116.225"5 #define CLI_PORT 99996 #define CLI_IP "192.168.65.129"7 int main(int argc, const char *argv[])8 {9 //1、创建用于连接…

3.4 bp,si,di寄存器,寻址方式,寄存器总结

汇编语言 1. [bxidata] 我们可以用[bx]来指明一个内存单元我们也可以用[bxidata]来表示一个内存单元&#xff0c;它的偏移地址为bx中的数值加上idata mount c d:masm c: debug r d 2000:1000 e 2000:1000 12 34 56 78 a mov ax,2000 mov ds,ax mov bx,1000 mov ax,[bx] mov c…

[嵌入式系统-40]:龙芯1B 开发学习套件 -10-PMON启动过程start.S详解

目录 一、龙芯向量表与启动程序的入口&#xff08;复位向量&#xff09; 1.1 复位向量&#xff1a; 1.2 代码执行流程 1.3 计算机的南桥 VS 北桥 二、PMON代码执行流程 三、Start.S详解 3.1 CPU初始化时所需要的宏定义 &#xff08;1&#xff09;与CPU相关的一些宏定义…

利用Python网络爬虫下载一本小说

目录 一、引言 二、准备工作 三、爬虫设计 四、案例实现 发送HTTP请求获取页面内容 解析HTML页面获取章节列表 循环爬取每个章节的内容 完整代码示例 五、注意事项与优化 六、总结 一、引言 随着网络技术的不断发展&#xff0c;网络爬虫已经成为了一种重要的数据获取…

JOSEF约瑟 TQ-100同期继电器 额定直流电压220V 交流电压100V±10V

TQ-100型同期继电器 TQ-100同期继电器 ​ l 应用 本继电器用于双端供电线路的自动重合闸和备用电源自投装置中&#xff0c;以检查线路电压与母线电压的 相位差和幅值差。 2 主要性能 2 1采用进口集成电路和元器件构成&#xff0c;具有原理先进、性能稳定、可靠性高、动作值精…

SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)

文章目录 1.整合MyBatis1.需求分析2.数据库表设计3.数据库环境配置1.新建maven项目2.pom.xml 引入依赖3.application.yml 配置数据源4.Application.java 编写启动类5.测试6.配置类切换druid数据源7.测试数据源是否成功切换 4.Mybatis基础配置1.编写映射表的bean2.MonsterMapper…

AI日报:戴尔首席执行官:我们可能在10年内需要100倍以上的数据中心

文章目录 数据中心的需要认知超能力的成本&#xff1a;接近零 数据中心的需要 戴尔创始人兼首席执行官迈克尔戴尔表示&#xff0c;随着对人工智能服务需求的增加&#xff0c;数据中心的容量可能必须在10年内从目前的水平增加100倍。 戴尔在SXSW 2024的炉边谈话中表示&#xff…

数据库表结构导出工具【人生的第一个开源工具】

数据库表结构导出工具 如今我努力奔跑&#xff0c;不过是为了追上那个曾经被寄予厚望的自己 —— 约翰。利文斯顿 本工具是一个用于将数据库表结构导出到 Word 文档的实用工具。它能够连接到指定的数据库&#xff0c;提取数据库中所有表的结构信息&#xff0c;并将这些信息以专…

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛——B 题:基于多模态特征融合的图像文本检索完整思路与源代码分享

一、问题背景 随着近年来智能终端设备和多媒体社交网络平台的飞速发展&#xff0c;多媒体数据呈现海量增长 的趋势&#xff0c;使当今主流的社交网络平台充斥着海量的文本、图像等多模态媒体数据&#xff0c;也使得人 们对不同模态数据之间互相检索的需求不断增加。有效的信…

01_线性回归

线性回归 1 一元线性回归重要公式2 一元线性回归code实现3 sklearn实现一元线性回归4 多元线性回归公式5 sklearn实现多元线性回归6 模型评价指标7 多项式回归7.1将多项式回归作为线性回归处理7.2 sklaearn多项式特征维度扩展 1 一元线性回归重要公式 一元线性回归的均方误差&…

谁将主导未来AI市场?Claude3、Gemini、Sora与GPT-4的技术比拼

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

微信开发者工具如何使用?使用注意事项

&#xff08;1&#xff09;单位如何进行换算&#xff1f; 1 px 750/屏幕宽度 rpx 1 rpx 屏幕宽度/750 px &#xff08;2&#xff09;如何新建文件&#xff1f; 1> 点开app.json 2> 在“pages/index/index”后面接“&#xff0c;pages/自定义文件夹名/自定义文件名”…

怎么在空闲时间用网络赚钱且收入不低于50?

何其有幸&#xff0c;我们生活在一个网络时代&#xff0c;买东西&#xff0c;生活缴费都可以通过网络来完成&#xff0c;给大家省下了大量的时间和精力&#xff0c;让生活更加便利。不仅如此&#xff0c;还可以通过网络来娱乐、交流&#xff0c;更可以通过它来赚钱。很多朋友上…

网络编程--高并发服务器

这里写目录标题 引入场景 多进程并发服务器二级目录二级目录二级目录 多线程并发服务器二级目录二级目录二级目录 多路IO转接服务器设计思路对比引入 select函数简介参数介绍第一个参数第234参数返回值对于第234参数的应用对于最后一个参数总结 epoll进阶二级目录二级目录二级目…

跳绳计数,YOLOV8POSE

跳绳计数&#xff0c;YOLOV8POSE 通过计算腰部跟最初位置的上下波动&#xff0c;计算跳绳的次数