当前位置: 首页 > news >正文

引力搜索算法

引力搜索算法过程,包括了初始化、适应度评估、质量计算、加速度计算、更新速度和位置的一些步骤。

import numpy as np
import random as rd
from math import exp, sqrt
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation# 定义目标函数
def objFunction(x1, x2):return x1 ** 2 + x2 ** 2# 初始化种群的位置和速度
def init(n):position, velocity = [], []for i in range(n):X1 = rd.uniform(-10, 10)X2 = rd.uniform(-10, 10)V1 = rd.uniform(-3, 3)V2 = rd.uniform(-3, 3)position.append([X1, X2])velocity.append([V1, V2])return position, velocity# 计算适应度值
def fitnessEva(position):fitness = []for i in range(len(position)):fitness.append(objFunction(position[i][0], position[i][1]))return fitness# 找到最佳和最差的适应度值
def findBestAndWorst(position):return min(fitnessEva(position)), max(fitnessEva(position))# 计算每个个体的质量
def calculateMass(fitness):mass = []Mass = []for i in range(len(fitness)):mass.append((fitness[i] - max(fitness)) / (min(fitness) - max(fitness)))for i in range(len(mass)):Mass.append(mass[i] / sum(mass))return Mass# 计算每个个体的加速度
def calculateAcceleration(position, Mass, G, topK):acceleration = []Fi0, Fi1 = 0, 0for i in range(len(position)):for j in range(len(position)):if i != j and j in topK:Fi0 += rd.random() * G * ((Mass[i] * Mass[j]) / (calculateDistance(position[i], position[j]) + r)) * (position[j][0] - position[i][0])Fi1 += rd.random() * G * ((Mass[i] * Mass[j]) / (calculateDistance(position[i], position[j]) + r)) * (position[j][1] - position[i][1])if Mass[i] != 0:acceleration.append([Fi0 / Mass[i] / 10, Fi1 / Mass[i] / 10])  # 这里除10是为了避免粒子的加速度过大else:acceleration.append([10, 10])Fi0 = 0Fi1 = 0return acceleration# 找出适应度更优的前K个粒子
def findTopK(fitness, K):topK = []dic = {}for i in range(len(fitness)):dic[i] = fitness[i]fitness.sort()for i in range(K):topK.append(list(dic.keys())[list(dic.values()).index(fitness[i])])return topK# 更新速度和位置
def updateVelocityAndPosition(acceleration, position, velocity):for i in range(len(velocity)):velocity[i][0] = rd.random() * velocity[i][0] + acceleration[i][0]velocity[i][1] = rd.random() * velocity[i][1] + acceleration[i][1]position[i][0] = position[i][0] + velocity[i][0]position[i][1] = position[i][1] + velocity[i][1]# 计算两个点之间的距离
def calculateDistance(p1, p2):return sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)# 检查位置是否在可行域内
def checkPosition(position):for i in range(len(position)):if position[i][0] < -10:position[i][0] = -10elif position[i][0] > 10:position[i][0] = 10if position[i][1] < -10:position[i][1] = -10elif position[i][1] > 10:position[i][1] = 10if __name__ == '__main__':G = 100r = 1K = 50iterx, maxIterx = 0, 50position, velocity = init(50)fig = plt.figure(figsize=(10, 8))ax = fig.add_subplot(111, projection='3d')scatter = ax.scatter([], [], [], c='pink', marker='o')path_lines = [ax.plot([], [], [], color='lightyellow')[0] for _ in range(50)]ax.set_xlim(-10, 10)ax.set_ylim(-10, 10)ax.set_zlim(0, 200)ax.set_title('Gravitational Search Algorithm Visualization')ax.set_xlabel('X1')ax.set_ylabel('X2')ax.set_zlabel('Fitness')def animate(iteration, position, velocity, G, K, path_history):fitness = fitnessEva(position)  # 适应性评估G = G * exp(-20 * iteration / maxIterx)  # 更新引力常量Mass = calculateMass(fitness)  # 更新粒子质量topK = findTopK(fitness, K)  # 找出适应度更优的前K个粒子acceleration = calculateAcceleration(position, Mass, G, topK)  # 计算粒子加速度updateVelocityAndPosition(acceleration, position, velocity)  # 根据加速度更新速度与位置checkPosition(position)  # 检查粒子是否冲出了解空间K = K - iteration  # 更新K值# Update scatter plotscatter._offsets3d = ([pos[0] for pos in position],[pos[1] for pos in position],fitness)# Update path historyfor i in range(len(position)):path_history[i].append(position[i] + [fitness[i]])path_lines[i].set_data(np.array(path_history[i]).T[:2])path_lines[i].set_3d_properties(np.array(path_history[i]).T[2])best_fitness = min(fitnessEva(position))best_position = position[fitnessEva(position).index(best_fitness)]ax.set_title(f'Iteration {iteration}: Best Fitness = {best_fitness:.4f}')return scatter,path_history = [[] for _ in range(50)]ani = FuncAnimation(fig, lambda frame: animate(frame, position, velocity, G, K, path_history), frames=maxIterx,interval=200, blit=True, repeat=False)plt.show()best_fitness = min(fitnessEva(position))best_position = position[fitnessEva(position).index(best_fitness)]print("最优解:", best_fitness)print("最优解对应的位置:", best_position)

相关文章:

引力搜索算法

引力搜索算法过程&#xff0c;包括了初始化、适应度评估、质量计算、加速度计算、更新速度和位置的一些步骤。 import numpy as np import random as rd from math import exp, sqrt import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotli…...

【时间之外】IT人求职和创业应知【35】-RTE三进宫

目录 新闻一&#xff1a;京东工业发布11.11战报&#xff0c;多项倍增数据体现工业经济信心提升 新闻二&#xff1a;阿里云100万核算力支撑天猫双11&#xff0c;弹性计算规模刷新纪录 新闻三&#xff1a;声网CEO赵斌&#xff1a;RTE将成为生成式AI时代AI Infra的关键部分 认知…...

Linux的目录结构

/ ├── bin # Binary - 存放用户可以直接使用的基本二进制可执行文件 ├── sbin # System Binaries - 存放系统管理员专用的二进制可执行文件 ├── usr # Unix System Resources - 存放用户使用的软件和库文件 │ ├── bin # Binary - 用户级应用程序…...

python: generator IDAL and DAL using sql server 2019

其它数据库也是一样的思维方式 create IDAL # encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看&#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎 # 描述&#xff1a; # Author : geovindu,Geovin Du 涂聚文. # IDE : P…...

命令执行简单

前言&#xff1a;小迪安全2022第一节反弹shell&#xff0c;小迪用的是两台都是云服务器&#xff0c;没有服务器可以在自己的主机上搭建也是可以的&#xff0c;主机上搭两个网站 思路&#xff1a;生成一个木马文件&#xff0c;下载到本机&#xff0c;然后利用本机上传到目标主机…...

【一句话经验】亚马逊云EC2 ubuntu24.04.1开启ROOT登录Permission denied (publickey)

按照常规的方法SSH登录会一直报错&#xff1a; Permission denied (publickey) 因为亚马逊云的默认配置不是在/etc/ssh/sshd_config&#xff0c;而是在引入的文件里了&#xff0c;所以在instance控制台输入这行命令来解除登录限制&#xff1a; sudo sed -i s/^PasswordAuthe…...

百度智能云千帆大模型平台引领企业创新增长

本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容&#xff0c;请访问&#xff1a; https://baiduworld.baidu.com 首先&#xff0c;跟大家分享一张图&#xff0c;这个是我们目前大模型应用落地的场景分布。可以看到&#xff0c;大模型…...

【Linux】深入理解GCC/G++编译流程及库文件管理

目录 1.背景知识 2.gcc/g如何完成编译 (1) 预处理&#xff08;进行宏替换&#xff09; (2) 编译&#xff08;生成汇编&#xff09; (3) 汇编&#xff08;生成机器可识别代码&#xff09; (4) 链接&#xff08;生成可执行文件或库文件&#xff09; (5) 总结 (6) 函数库 …...

【Unity基础】对比Unity中两种粒子系统

在Unity中&#xff0c;Particle System和Visual Effect Graph (VFX) 都是用于创建粒子效果的工具&#xff0c;但它们的设计目标、使用场景和功能特点有所不同。以下是详细对比&#xff1a; 1. Particle System 特点 传统粒子系统&#xff0c;Unity自带的模块化粒子特效工具。…...

琐碎笔记——pytest实现前置、后置、参数化、跳过用例执行以及重试

pytest的fixture中文介绍可参考&#xff08;不过文档稍微有点老&#xff09;&#xff1a; https://www.osgeo.cn/pytest/fixture.html#what-fixtures-are pytest各个作用域的fixture scope “function” 可作用于每个用例 fixture使用的声明放在类定义前面&#xff0c;类中的…...

C# 深层副本与浅层副本 深拷贝与浅拷贝

C# 深层副本与浅层副本 数据复制是编程中的重要任务。 对象是 OOP 中的复合数据类型。 对象中的成员字段可以按值或按引用存储。 可以以两种方式执行复制。 浅表副本将所有值和引用复制到新实例中。 引用所指向的数据不会被复制&#xff1b; 仅指针被复制。 新的引用指向原始…...

CH06_Lambda表达式

第6章&#xff1a;Lambda表达式 本章目标 为什么要学习C#编程语言 了解C#相关常识 C#开发工具Visual Studio安装 掌握C#程序的开发步骤 掌握C#的注释 掌握C#的常用转义符 本章内容 lambda表达式演变史 C# 匿名函数的演变历史可以追溯到 C# 语言的不同版本&#xff0c;…...

大模型本地部署实践:Ollama+Open-WebUI(MacOS)

目录 什么是Ollama Ollama安装 对话界面可视化&#xff1f;Open-WebUI&#xff01; 安装Open-WebUI 什么是Ollama Ollama是一个为简化大语言模型本地部署与交互的开源框架。它提供了用户友好的接口&#xff0c;帮助开发者和模型爱好者在没有依赖外部API的基础上高效地运行、…...

JavaScript——DOM编程、JS的对象和JSON

一、DOM编程 DOM(Document Object Model)编程&#xff1a;就是使用document对象的API&#xff0c;完成对网页HTML文档进行动态修改&#xff0c;以实现网页数据&#xff0c;和样式动态变化效果的编程。 (一)DOM获取元素的多种方法 1.查找元素的函数 getElementById("id值…...

SIMCom芯讯通A7680C在线升级:FTP升级成功;http升级腾讯云对象储存的文件失败;http升级私有服务器的文件成功

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...

OSRM docker环境启动

命令一把梭 wget https://download.geofabrik.de/asia/china-latest.osm.pbf docker pull osrm/osrm-backend docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/china-latest.osm.pbf docker run -t -v "${PWD}:/data&q…...

Vue3 动态获取 assets 文件夹图片

我真服了Vue3 这个老六了,一个简单图片src 赋值搞得那么复杂. //item.type 是我遍历类型的类型参数 <img alt"吐槽大会" :src"getAssetUrl(item.type)" /> 基于 Vue2 的Webpack 处理,还不错,可以用/ 这种绝对路径,可以接受,虽然多了个require很不爽…...

<项目代码>YOLOv8 草莓成熟识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…...

代码随想录算法训练营第五十一天|Day51 图论

岛屿数量 深搜 https://www.programmercarl.com/kamacoder/0099.%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E9%87%8F%E6%B7%B1%E6%90%9C.html 思路 #include <stdio.h> #define MAX_SIZE 50 int grid[MAX_SIZE][MAX_SIZE]; int visited[MAX_SIZE][MAX_SIZE]; int N, M; …...

uniapp 自定义加载组件,全屏加载,局部加载 (微信小程序)

效果图 全屏加载 页面加载使用 局部加载 列表加载里面使用 使用gif html <template><view><view class"" v-if"typeFullScreen"><view class"loading" v-if"show"><view class""><i…...

Clawforce:开源AI智能体团队基础设施,实现持久化与安全协作

1. 项目概述&#xff1a;Clawforce&#xff0c;一个为持久化AI智能体团队构建的基础设施最近在AI智能体领域&#xff0c;一个词被反复提及&#xff1a;“Agentic AI”&#xff0c;即智能体驱动的AI。这不再是让单个AI模型回答一个问题那么简单&#xff0c;而是构建一个能够自主…...

基于MCP协议与FFmpeg构建AI视频处理服务器:原理、部署与实战

1. 项目概述&#xff1a;一个面向视频处理的MCP服务器 最近在折腾一些AI应用&#xff0c;发现很多工具在处理视频内容时&#xff0c;总感觉差了那么一口气。要么是功能太单一&#xff0c;只能做简单的剪辑或转码&#xff1b;要么就是流程太复杂&#xff0c;需要把视频下载、处…...

图解人工智能(11)让人惊讶的AI

人工智能已经融入到我们的生活之中&#xff0c;如便捷的刷脸支付&#xff0c;帮我们扫地的机器人。想一想&#xff0c;你身边还有哪些有趣的人工智能设备&#xff1f;以一种设备为例&#xff0c;搜索它的相关信息&#xff0c;看它为我们的生活带来了哪些便利。开放讨论题&#…...

喜马拉雅音频离线收藏:这款跨平台下载器如何帮你永久保存付费内容?

喜马拉雅音频离线收藏&#xff1a;这款跨平台下载器如何帮你永久保存付费内容&#xff1f; 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-q…...

鸿蒙系统安装

一、下载 DevEco Studio 打开华为开发者官网&#xff0c;找到 DevEco Studio 6.1.0 Release 下载页面。 DevEco Studio for Windows 6.1.0.830(2.8GB) 下载。 Mac 用户可以选择对应版本&#xff08;x86/ARM&#xff09;。 等待下载完成&#xff0c;得到 .exe 安装文件。二、安装…...

2026程序员危机:AI岗位暴涨12倍,传统开发即将“毕业”?转型AI大模型开发,才是破局关键!

2026年技术圈将面临巨大变革&#xff0c;AI岗位需求激增&#xff0c;传统编程岗位面临淘汰风险。企业更看重懂AI、能提效的复合型人才。程序员需转型AI大模型开发&#xff0c;掌握系统设计、代码审查及AI工具应用能力。北大青鸟推出AI大模型开发实战营&#xff0c;聚焦落地开发…...

CoverM如何革新宏基因组覆盖率分析:从短读长到PacBio HiFi的完整解决方案

CoverM如何革新宏基因组覆盖率分析&#xff1a;从短读长到PacBio HiFi的完整解决方案 【免费下载链接】CoverM Read alignment statistics for metagenomics 项目地址: https://gitcode.com/gh_mirrors/co/CoverM 宏基因组研究正经历着从短读长测序到长读长技术的深刻变…...

2026年强烈建议收藏:八大热门AI编程工具权威评测

AI编程工具已全面进入智能体时代&#xff0c;从单一代码补全进化为全流程开发引擎。本文精选8款全球主流工具&#xff0c;从核心能力、场景适配、使用体验等维度客观解析&#xff0c;为开发者提供精准选型参考。 一、Trae&#xff08;字节跳动旗下&#xff09;—— 全链路AI原生…...

AI决策公平性:司法审查下的技术实践与算法治理

1. 项目概述&#xff1a;当算法成为“法官”&#xff0c;公平如何被审查&#xff1f;最近几年&#xff0c;我参与和观察了不少涉及算法决策的项目&#xff0c;从信贷审批到招聘筛选&#xff0c;再到内容推荐。一个越来越无法回避的问题是&#xff1a;当AI系统代替人类做出影响个…...

CES效用函数保姆级解析:从公式推导到Python代码实现(附替代弹性计算)

CES效用函数实战指南&#xff1a;从数学本质到Python可视化 在经济学建模和金融工程领域&#xff0c;CES&#xff08;Constant Elasticity of Substitution&#xff09;效用函数就像一把瑞士军刀——它不仅能描述消费者偏好&#xff0c;还能通过调整参数δ来模拟完全替代、Cobb…...