【机器学习|学习笔记】粒子群优化(Particle Swarm Optimization, PSO)详解,附代码。

【机器学习|学习笔记】粒子群优化(Particle Swarm Optimization, PSO)详解,附代码。

【机器学习|学习笔记】粒子群优化(Particle Swarm Optimization, PSO)详解,附代码。


文章目录

  • 【机器学习|学习笔记】粒子群优化(Particle Swarm Optimization, PSO)详解,附代码。
  • 前言
    • 起源
    • 发展
      • 参数收敛与稳定性分析
      • 算法变体
      • 元启发式与混合优化
    • 原理
      • 基本算法
      • 收敛机制
    • 应用
    • Python代码实现


欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/147567533


前言

  • PSO 以极少的参数和简单的公式模拟鸟群或鱼群的社会行为,通过粒子间的信息共享不断迭代逼近最优解;
  • 自1995年Kennedy和Eberhart提出以来,它因易于实现、无需梯度信息且适用大规模连续优化而广泛流行。
  • 本文结合机器学习专业视角,系统回顾PSO的理论基础、主要变体及典型应用,并给出完整的Python示例代码。

起源

  • 1995年,James Kennedy(社会心理学家)和Russell Eberhart(电气工程师)首次将社会行为模拟与进化计算相结合,提出了粒子群优化算法,用以模拟鸟群觅食或鱼群游动的群体智能行为,从而在连续空间中进行优化搜索
  • 该算法最初旨在研究社会心理学中的“个体—群体”互动模型,后简化为无隐喻的优化范式。
  • PSO的直接学术渊源还包括Craig Reynolds于1987年提出的Boids模型,该模型用简单规则成功模拟鸟群飞行的涡流与聚集现象
  • 1995年Kennedy与Eberhart在IEEE会议上发表的原始论文详细回顾了社会仿真向优化算法演变的各阶段,并展示了PSO在基准函数与工程设计问题上的初步成功

发展

参数收敛与稳定性分析

  • Clerc 和 Kennedy于2002年在IEEE Trans. EC上分析了PSO的“爆炸—收敛”行为,提出了收缩因子(constriction factor)方法,为参数(惯性权重 w w w、学习因子 φ p φₚ φp φ g φ_g φg)提供了理论收敛域
  • 这一贡献使PSO在高维空间中的稳定性大幅提升,并成为SPSO‑2011标准的理论基础。

算法变体

  • Bare‑Bones PSO:2003年Kennedy提出无需显式速度更新的简化版本,通过正态分布直接采样新位置,降低了参数依赖并在若些测试函数上提升了性能
  • Accelerated PSO (APSO):Yang等人于2011年提出在无速度结构下通过全局最优和随机扰动快速收敛的APSO变体,进一步简化并加速了收敛
  • 多目标与多群体为解决多目标优化和防止提前收敛,研究者发展了多群体PSO(multi‑swarm)和Pareto‑PSO,使算法能同时逼近Pareto前沿
  • 离散与二值PSO:Kennedy & Eberhart在1997年将PSO推广到二值空间,用于组合优化,后续Clerc等人提出基于集合运算的通用离散PSO理论。

元启发式与混合优化

  • PSO常与遗传算法(GA)、差分进化(DE)、贝叶斯优化等方法混合,以利用不同算法优势。例如,将PSO用于GA的初代群体生成,或结合DE的变异策略增强全局搜索能力。

原理

基本算法

  • 设目标函数 f : R n → R f:R^n→R f:RnR 待最小化。令粒子数为 S S S,第 i i i 个粒子在迭代 t t t 的位置与速度分别为 x i t x_i^t xit v i t v_i^t vit,个体最优位置 p i p_i pi 与群体最优 g g g。更新公式为:

在这里插入图片描述

  • 其中 r p , r g ∼ U ( 0 , 1 ) r_p ,r_g∼U(0,1) rp,rgU(0,1) 为随机向量, w w w 为惯性权重, ϕ p , ϕ g ϕ_p,ϕ_g ϕp,ϕg 为学习因子。惯性权重 w w w 平衡全局与局部搜索,典型取值在 (0.4,0.9);学习因子通常取 1–3。

收敛机制

  • PSO通过粒子间共享“最佳位置”信息,使得搜索既保留个体探索性又具备群体协同,随着迭代,速度趋于0而位置收敛至局部或全局最优。

应用

PSO已被成功应用于工程、计算机科学、经济学等众多领域:

  • 神经网络训练:用PSO优化权重和结构参数,加速收敛并提升精度。
  • 控制系统设计:如PID参数整定、无人机轨迹规划、机器人路径优化。
  • 电力负荷预测:结合PSO与支持向量回归(SVR)实现短期负荷精准预测。
  • 图像处理:滤波器参数优化、图像分割能量函数最小化。
  • 组合优化:旅行商、作业调度、网络拓扑优化等离散和混合问题。
  • 经济与金融:资产组合优化、风险管理和策略回测参数调优。

Python代码实现

  • 下面给出基于NumPy的简易PSO实现示例,可直接用于任意连续优化问题。
import numpy as npdef pso(func, lb, ub, dim, num_particles=30, max_iter=100, w=0.7, c1=1.5, c2=1.5):# 初始化X = np.random.uniform(lb, ub, (num_particles, dim))        # 粒子位置V = np.random.uniform(-(ub-lb), ub-lb, (num_particles, dim))  # 粒子速度P = X.copy()  # 个体最优位置Pbest = np.array([func(x) for x in P])g_idx = np.argmin(Pbest)G = P[g_idx].copy()  # 全局最优位置for t in range(max_iter):r1, r2 = np.random.rand(), np.random.rand()# 更新速度与位置V = w*V + c1*r1*(P - X) + c2*r2*(G - X)X = X + V# 边界处理X = np.clip(X, lb, ub)# 更新个体/全局最优fitness = np.array([func(x) for x in X])better = fitness < PbestP[better] = X[better]Pbest[better] = fitness[better]if fitness.min() < Pbest.min():G = X[fitness.argmin()]return G, func(G)# 示例:Rosenbrock 函数优化
def rosen(x):return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)best_pos, best_val = pso(rosen, lb=-5, ub=5, dim=3)
print("Best position:", best_pos, "Best value:", best_val)
  • 以上代码实现了PSO的核心机制,包括随机初始化、速度/位置更新、个体与全局最优跟踪,以及边界处理,用户可调整参数或替换目标函数以满足不同优化需求。

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

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

相关文章

深度剖析:AI 社媒矩阵营销工具,如何高效获客?

在社交媒体营销领域&#xff0c;竞争日益激烈&#xff0c;传统的社媒矩阵运营方式面临诸多挑战。而 AI 社媒矩阵营销工具的出现&#xff0c;正以前所未有的方式重构社媒矩阵的底层架构&#xff0c;为营销人员带来了全新的机遇与变革。接下来&#xff0c;我们将从技术破局、实战…

Spring XML 常用命名空间配置

Spring XML 常用命名空间配置 下面是一个综合性的Spring XML配置样例&#xff0c;展示了各种常用命名空间的使用方式&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&quo…

UE5场景漫游——开始界面及关卡跳转

UE中实现UMG游戏界面搭建及蓝图控制&#xff0c;点击游戏界面中的按钮实现关卡的跳转效果。 一、游戏界面显示。1.创建UMG&#xff0c;2.搭建UI。3.关卡蓝图控制显示 二、点击按钮之后实现关卡跳转

CSS 外边距合并(Margin Collapsing)问题研究

在 CSS 中&#xff0c;margin-top 属性会导致外部 DIV 移动的现象主要是由于 外边距合并&#xff08;Margin Collapsing&#xff09; 造成的。这是 CSS 盒模型的一个特性&#xff0c;可能会与直觉相悖。 外边距合并的原理 当一个元素&#xff08;如内部 DIV&#xff09;的 ma…

清理电脑C磁盘,方法N:使用【360软件】中的【清理C盘空间】

1、先下载并打开【360安全卫士】&#xff0c;点击如下位置&#xff1a; 之后&#xff0c;可以把这个东西&#xff0c;创建快捷方式到电脑桌面&#xff0c;方便以后使用&#xff1a;

微服务集成seata分布式事务 at模式快速验证

微服务集成Seata分布式事务 本次demo代码地址业务场景&#xff1a;一般用于以下场景&#xff1a;使用 AT 模式的优势&#xff08;适用于快速验证&#xff09;&#xff1a;快速验证建议步骤&#xff1a;注意事项&#xff1a; 工具环境微服务版本选择Nacos 环境搭建与启动nacos 下…

LLM基础5_从零开始实现 GPT 模型

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 设计 LLM 的架构 GPT 模型基于 Transformer 的 decoder-only 架构&#xff0c;其主要特点包括&#xff1a; 顺序生成文本 参数数量庞大&#xff08;而非代码量复杂&#xff09; 大量重复…

Android 中 linux 命令查询设备信息

一、getprop 命令 在 Linux 系统中&#xff0c; getprop 命令通常用于获取 Android 设备的系统属性&#xff0c;这些属性包括设备型号、Android 版本、电池状态等。 1、获取 Android 版本号 adb shell getprop ro.build.version.release2、获取设备型号 adb shell getprop …

26考研 | 王道 | 计算机组成原理 | 六、总线

26考研 | 王道 | 计算机组成原理 | 六、总线 文章目录 26考研 | 王道 | 计算机组成原理 | 六、总线6.1 总线概述1. 总线概述2. 总线的性能指标 6.2 总线仲裁&#xff08;考纲没有&#xff0c;看了留个印象&#xff09;6.3 总线操作和定时6.4 总线标准&#xff08;考纲没有&…

SE(Secure Element)加密芯片与MCU协同工作的典型流程

以下是SE&#xff08;Secure Element&#xff09;加密芯片与MCU协同工作的典型流程&#xff0c;综合安全认证、数据保护及防篡改机制&#xff1a; 一、基础认证流程&#xff08;参数保护方案&#xff09; 密钥预置‌ SE芯片与MCU分别预置相同的3DES密钥&#xff08;Key1、Key2…

数据库——MongoDB

一、介绍 1. MongoDB 概述 MongoDB 是一款由 C 语言编写的开源 NoSQL 数据库&#xff0c;采用分布式文件存储设计。作为介于关系型和非关系型数据库之间的产品&#xff0c;它是 NoSQL 数据库中最接近传统关系数据库的解决方案&#xff0c;同时保留了 NoSQL 的灵活性和扩展性。…

WebSocket 前端断连原因与检测方法

文章目录 前言WebSocket 前端断连原因与检测方法常见 WebSocket 断连原因及检测方式聊天系统场景下的断连问题与影响行情推送场景下的断连问题与影响React 前端应对断连的稳健策略自动重连机制的设计与节流控制心跳机制的实现与保持连接存活连接状态管理与 React 集成错误提示与…

2025年真实面试问题汇总(三)

线上数据库数据丢失如何恢复 线上数据库数据丢失的恢复方法需要根据数据丢失原因、备份情况及数据库类型&#xff08;如MySQL、SQL Server、PostgreSQL等&#xff09;综合处理&#xff0c;以下是通用的分步指南&#xff1a; 一、紧急止损&#xff1a;暂停写入&#xff0c;防止…

Android音视频多媒体开源框架基础大全

安卓多媒体开发框架中&#xff0c;从音频采集&#xff0c;视频采集&#xff0c;到音视频处理&#xff0c;音视频播放显示分别有哪些常用的框架&#xff1f;分成六章&#xff0c;这里一次帮你总结完。 音视频的主要流程是录制、处理、编解码和播放显示。本文也遵循这个流程展开…

安卓上架华为应用市场、应用宝、iosAppStore上架流程,保姆级记录(1)

上架前请准备好apk、备案、软著、企业开发者账号&#xff01;&#xff01;&#xff01;其余准备好app相关的截图、介绍、测试账号&#xff0c;没讲解明白的评论区留言~ 华为应用市场 1、登录账号 打开 华为开发者平台 https://developer.huawei.com/consumer/cn/ 2.登录企…

【Docker】docker 常用命令

目录 一、镜像管理 二、容器操作 三、网络管理 四、存储卷管理 五、系统管理 六、Docker Compose 常用命令 一、镜像管理 命令参数解说示例说明docker pull镜像名:标签docker pull nginx:alpine拉取镜像&#xff08;默认从 Docker Hub&#xff09;docker images-a&#x…

OSPF域内路由

简介 Router-LSA Router-LSA&#xff08;Router Link State Advertisement&#xff09;是OSPF&#xff08;Open Shortest Path First&#xff09;协议中的一种链路状态通告&#xff08;LSA&#xff09;&#xff0c;它由OSPF路由器生成&#xff0c;用于描述路由器自身的链路状态…

torch 高维矩阵乘法分析,一文说透

文章目录 简介向量乘法二维矩阵乘法三维矩阵乘法广播 高维矩阵乘法开源 简介 一提到矩阵乘法&#xff0c;大家对于二维矩阵乘法都很了解&#xff0c;即 A 矩阵的行乘以 B 矩阵的列。 但对于高维矩阵乘法可能就不太清楚&#xff0c;不知道高维矩阵乘法是怎么在计算。 建议使用…

瑞萨RA-T系列芯片马达类工程TCM加速化设置

本篇介绍在使用RA8-T系列芯片&#xff0c;建立马达类工程应用时&#xff0c;如何将电流环部分的指令和变量设置到TCM单元&#xff0c;以提高电流环执行速度&#xff0c;从而提高系统整体的运行性能&#xff0c;在伺服和高端工业领域有很高的实用价值。本文以RA8T1为范例&#x…

获取Unity节点路径

解决目的&#xff1a; 避免手动拼写节点路径的时候&#xff0c;出现路径错误导致获取不到节点的情况。解决效果&#xff1a; 添加如下脚本之后&#xff0c;将自动复制路径到剪贴板中&#xff0c;在代码中通过 ctrlv 粘贴路径代码如下&#xff1a; public class CustomMenuItems…