粒子群算法(PSO)原理与经典应用——python实现(含完整代码)

Python 实现粒子群算法(PSO) 粒子群算法 阅读详情

粒子群算法(PSO)原理与经典应用

一、算法简介

粒子群算法(Particle Swarm Optimization, PSO)是一种模拟群体智能的全局优化算法,由Kennedy和Eberhart于1995年提出。它通过模拟鸟群、鱼群等群体觅食行为,协同搜索最优解,广泛应用于函数优化、神经网络训练、路径规划等领域。

二、基本原理

PSO通过一群“粒子”在搜索空间中移动来寻找最优解。每个粒子代表一个潜在解,具有位置和速度。粒子根据自身历史最优位置(个体极值 pbestp_{best}pbest​)和全体粒子历史最优位置(全局极值 gbestg_{best}gbest​)来调整自己的速度和位置。

1. 速度与位置更新公式

粒子 iii 在第 kkk 代的速度和位置更新如下:

vik+1=wvik+c1r1(pbest,i−xik)+c2r2(gbest−xik) v_{i}^{k+1} = w v_{i}^k + c_1 r_1 (p_{best,i} - x_{i}^k) + c_2 r_2 (g_{best} - x_{i}^k) vik+1​=wvik​+c1​r1​(pbest,i​−xik​)+c2​r2​(gbest​−xik​)

xik+1=xik+vik+1 x_{i}^{k+1} = x_{i}^k + v_{i}^{k+1} xik+1​=xik​+vik+1​

其中:

  • www:惯性权重,平衡全局与局部搜索能力
  • c1,c2c_1, c_2c1​,c2​:学习因子(通常取2)
  • r1,r2r_1, r_2r1​,r2​:[0,1][0,1][0,1]之间的随机数

2. 算法流程

  1. 初始化粒子群的位置和速度
  2. 计算每个粒子的适应度
  3. 更新个体极值和全局极值
  4. 更新速度和位置
  5. 判断终止条件,若未满足则返回第2步

三、经典应用问题:Sphere函数最小化

Sphere函数是优化算法测试中最常用的基准函数之一:

f(x)=∑i=1nxi2 f(x) = \sum_{i=1}^n x_i^2 f(x)=i=1∑n​xi2​

其中 xi∈[−5.12,5.12]x_i \in [-5.12, 5.12]xi​∈[−5.12,5.12],nnn 为变量维数。最优解为 x=(0,0,...,0)x = (0, 0, ..., 0)x=(0,0,...,0),此时 f(x)=0f(x) = 0f(x)=0。

Python伪代码示例

# ...粒子群算法主流程伪代码...
for each particle:
	update velocity
	update position
	evaluate fitness
	update pbest and gbest

完整代码示例

以Sphere函数最小化为例


import numpy as np  # 导入NumPy库,用于科学计算
import matplotlib.pyplot as plt  # 导入matplotlib的pyplot模块,用于绘图
# 设置matplotlib支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体为黑体
plt.rcParams['axes.unicode_minus'] = False    # 设置正常显示负号

# 定义Sphere函数,作为我们的目标函数
def sphere(x):  # 定义函数sphere,输入参数为x
	return np.sum(x ** 2)  # 返回x中所有元素平方和

# --- 粒子群算法参数设置 ---
num_particles = 30  # 设置粒子数量
dim = 2             # 设置问题维度
max_iter = 100      # 设置最大迭代次数
bound = 5.12        # 设置搜索空间的边界
w = 0.7             # 设置惯性权重
c1 = 1.5            # 设置个体学习因子
c2 = 1.5            # 设置社会学习因子

# --- 初始化粒子群 ---
# 在[-bound, bound]范围内随机初始化所有粒子的位置
pos = np.random.uniform(-bound, bound, (num_particles, dim))
# 在[-1, 1]范围内随机初始化所有粒子的速度
vel = np.random.uniform(-1, 1, (num_particles, dim))
pbest = pos.copy()  # 初始化个体最优位置为当前位置
# 计算每个粒子初始位置的适应度值
pbest_val = np.array([sphere(x) for x in pos])
gbest_idx = np.argmin(pbest_val)  # 找到初始全局最优值的索引
gbest = pbest[gbest_idx].copy()  # 初始化全局最优位置
gbest_val = pbest_val[gbest_idx]  # 初始化全局最优值

# 用于记录每次迭代的全局最优值,以便后续可视化
gbest_history = []

# --- 主循环:迭代更新粒子群 ---
for iter in range(max_iter):  # 循环迭代指定的次数
	r1 = np.random.rand(num_particles, dim)  # 生成随机数r1
	r2 = np.random.rand(num_particles, dim)  # 生成随机数r2
	# 根据公式更新每个粒子的速度
	vel = w * vel + c1 * r1 * (pbest - pos) + c2 * r2 * (gbest - pos)
	# 根据新速度更新每个粒子的位置
	pos = pos + vel
	# 对超出边界的粒子位置进行处理,限制在边界内
	pos = np.clip(pos, -bound, bound)
	# 计算更新后每个粒子位置的适应度值
	fitness = np.array([sphere(x) for x in pos])
	# --- 更新个体和全局最优解 ---
	# 找到当前适应度值优于个体历史最优值的粒子
	mask = fitness < pbest_val
	pbest[mask] = pos[mask]  # 更新这些粒子的个体最优位置
	pbest_val[mask] = fitness[mask]  # 更新这些粒子的个体最优值
	# 找到当前所有粒子中的最优值索引
	min_idx = np.argmin(pbest_val)
	# 如果当前最优值优于全局历史最优值
	if pbest_val[min_idx] < gbest_val:
		gbest = pbest[min_idx].copy()  # 更新全局最优位置
		gbest_val = pbest_val[min_idx]  # 更新全局最优值
	# 记录本次迭代的全局最优值
	gbest_history.append(gbest_val)

# --- 输出结果 ---
print(f"最优解:{gbest}, 最优值:{gbest_val}")  # 打印最终找到的最优解和最优值

# --- 可视化收敛曲线 ---
plt.plot(gbest_history)  # 绘制全局最优值的收敛曲线
plt.xlabel('迭代次数')  # 设置x轴标签
plt.ylabel('全局最优值')  # 设置y轴标签
plt.title('PSO求解Sphere函数收敛曲线')  # 设置图表标题
plt.grid()  # 显示网格
plt.show()  # 显示图表

四、总结

粒子群算法以其简单高效、参数少、易实现等优点,在连续优化领域有广泛应用。通过合理设置参数和改进策略,PSO可用于求解多种复杂优化问题。

粒子群优化算法python实现 粒子群优化算法(Particle Swarm Optimization, PSO)作为进化计算的一个分支,是由Eberhart和Kennedy于1995年提出的一种全局搜索算法,同时它也是一种模拟自然界的生物活动以及群体智能的随即搜索算法。 阅读详情

相关推荐

智能优化算法之粒子群算法(PSO)的实现(Python附源码)

使用Python编程语言实现粒子群算法用于优化问题的求解,分别从实现思路、算法步骤以及实例这三个部分展开介绍,附源码,操作简单,适合新手学习。

weixin_42051846的博客 7238

Python之粒子群算法(含代码实例)

Python粒子群算法(含代码实例)

m0_60307882的博客 3万+

python进阶教程:实现粒子群算法(PSO)详解

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要介绍了Python编程实现粒子群算法(PSO)详解,涉及粒子群算法的原理,过程,以及实现代码示例,具有一定参考价值,需要的朋友可以了解下。 文章目录1 .原理2.粒子群算法的过程3. 代码 1 .原理 粒子群算法是群智能一种,是基于对鸟群觅食行为的研究和模拟而来的。假设在鸟群觅食范围,只在一个地方有食物,所有鸟儿看不...

python基础学习教程 4741

粒子群算法python(含例程代码与详解)

1.粒子群算法简介 粒子群算法的思想源于对鸟类捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的。 设想这样的一个场景,一群鸟在随机的搜索食物,在某块区域里有一块食物, 2.算法流程图 ...

freeline的博客 3万+

使用Python实现粒子群算法及完整代码

使用Python实现粒子群算法及完整代码粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法。该算法通过模拟鸟群等生物个体的群体行为,从而寻找到最优解。本文将介绍如何使用Python实现粒子群算法,并提供完整源代码。

持续更新 1255

PSO粒子群代码手搓实现—代码详解版python

本文记录了,使用python自己手搓PSO粒子群算法的全过程,首先进行了问题的定义,其次给出了PSO算法的,参数表和流程图,之后提供了完成代码,和迭代曲线结果图,最后对代码中的一些关键技术点进行了详细的分析和介绍。

一个学长的博客 2249

【超参数寻优】粒子群算法(PSO) 超参数寻优的python实现

【寻优算法】粒子群算法(PSO) 参数寻优的python实现一、算法原理1、粒子群算法的名词解释2、粒子更新二、PSO算法参数寻优的python实现参考资料 粒子群优化算法(Particle swarm optimization,PSO)是模拟鸟群捕食行为的优化算法。不同于遗传算法(Genetic Alogrithm,GA),粒子群算法是有记忆的,之前迭代过程中的最优位置和最优方向都会保留下来并作...

Luqiang_Shi的博客 2万+

保姆级教程:在摩尔线程MTT S80上快速部署Ollama运行DeepSeek R1模型(附性能测试)

本文提供了一份详细的保姆级教程,指导用户在摩尔线程MTT S80显卡上部署Ollama并运行DeepSeek R1模型。内容涵盖从驱动安装、Docker环境配置到模型拉取、性能测试的全流程,并分享了实测数据与优化技巧,旨在帮助开发者快速在国产GPU平台上实现高效的大语言模型推理。

weixin_29091837的博客 523

粒子群算法(PSO)小白笔记——详解、易懂、附案例代码

本文从粒子群算法的基本思想出发,介绍了PSO的基本原理、数学模型以及算法的运行流程,最终通过可视化粒子群算法解决函数最值寻优问题,适用于小白学习入门。

坚持定有收获,感谢您的光临 7850

VTK 9.2.0 在 Windows 10 上编译全记录:从 CMake 配置到 VS2019 项目生成(附 Qt 环境变量避坑点)

本文详细记录了VTK 9.2.0在Windows 10上的编译全过程,从CMake配置到VS2019项目生成,特别强调了Qt环境变量的避坑点。通过实战步骤和调试技巧,帮助开发者顺利完成VTK编译,适用于三维可视化开发。

weixin_30082367的博客 365

DIC新手避坑指南:压缩实验中的应变测量常见错误与数据校验技巧

本文为DIC技术新手提供了压缩实验中应变测量的全面避坑指南。文章系统梳理了从试样尺寸录入、散斑质量到数据后处理中应变方向与符号混淆、数据插值对齐等常见错误,并分享了基于MATLAB的自动化数据校验与可视化对比技巧,帮助建立可靠的实验数据分析SOP,确保DIC测量结果的准确性。

weixin_29313423的博客 113

粒子群PSO优化算法学习笔记 及其python实现(附讲解如何使用python语言sko.PSO工具包)

本文首先讲解粒子群算法原理,接着讲解python粒子群工具包,最后通过一个函数极大值来手写实现粒子群算法(不调用工具包)。

总裁余(余登武)博客 3万+

SoC低功耗设计实战:28nm工艺下四核A7的Hierarchical Flow全流程解析

本文深入解析了在TSMC 28nm工艺上,采用Hierarchical Flow(层次化流程)实现四核Cortex-A7 SoC低功耗设计的全流程。文章从项目背景切入,详细探讨了基于UPF的电源规划、时钟树综合、接口时序收敛以及物理验证等关键环节,分享了使用Cadence Innovus等工具进行低功耗物理实现的实战经验与挑战。

weixin_29231263的博客 323

python-粒子群算法(PSO)的代码实现,附完整程序及例程

粒子群优化算法(Particle Swarm Optimization,PSO)属于进化算法的一种,通过迭代寻找最优解。 PSO算法包含以下部分: 价值函数y=f(x,a)y=f(x,a)y=f(x,a),其中aaa为模型参数,xxx为待求变量,我们希望求得令yyy最小的xxx NNN个粒子,每个粒子为一个矢量,其维数与待求变量一致 每个粒子有两个属性,速度vvv和位置xxx 粒子最优位置lbes...

ZhangYuq16的博客 7708

【Unity实战篇 】| Unity实现 文本框可以自适应大小,到达最大宽度之后再缩小字体

Unity实现 Text文本框可以自适应大小,到达最大宽度之后再缩小字体 需求:在文本框可以自适应大小拉伸的前提下,增加一个最大限制宽度,使其到达最大宽度后 再启用 Best Fit 实现自适应改变文字大小以适应文本框的大小。 在Unity中经常会用到文本组件的自适应大小功能,一般使用HorizontalLayoutGroup和ContentSizeFitter组件配合即可实现文本自适应的效果。

努力前行,总会成为自己心中的那道光 3万+

从零开始学习CANoe(十六)—— Graphics

Graphics是一种以时间轴为横坐标,符号值为纵坐标的显示分析方法,相对于Trace来说,更直观的观察出信号的跳变

蚂蚁小兵 9191

粒子群算法(PSO)简介及Python实现

一、概述   粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization) ,缩写为PSO.粒子群优化算法是一种进化计算技术(evolutionary computation),1995年由Eberhart博士和kennedy 博士提出,源于对鸟群捕食的行为研究。   该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演

brilliantZC的博客 2万+

ADS1115 0-10V高精度ADC模块原理图设计,已量产

在水质监测、智能气象站、环境感知等领域,0-10V 电压输出的传感器占据了重要地位。这类传感器输出信号稳定、抗干扰能力强,但对数据采集模块的精度、线性度和易用性提出了严苛要求。本文将深度解析一款专为 0-10V 传感器设计的高精度 ADC 模块,从硬件架构、性能指标到工程化实践,全面呈现其设计思路与核心价值。

不脱发的程序猿 276

粒子群算法原理及简单案例 [ python ]

参考博客:1.点击打开链接                 2.点击打开链接                 3.点击打开链接介绍    粒子群算法(Particle swarm optimization,PSO)是模拟群体智能所建立起来的一种优化算法,主要用于解决最优化问题(optimization problems)。1995年由 Eberhart和Kennedy 提出,是基于对鸟群觅食行为的...

小丁猫 2万+

智能筛选栏 SmartFilterBar 全面解析与实战指南

SmartFilterBar 把复杂的检索界面“模板化”,让开发者聚焦业务逻辑与后端数据质量,而非 UI 小细节。通过精准运用 CDS 注解与 OData 元数据,它能在几毫秒内拼装出专业级筛选体验;结合事件钩子与控制配置,又足以满足极端个性化需求。拥抱 SmartFilterBar,意味着在 Fiori 生态中以最少代码赢得最快价值交付——这正是现代企业应用开发追求的极致效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 404

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

粒子群算法(PSO)的Python实现(求解多元函数的极值)

PSO是寻优算法中比较简单的一种,本文用Python简单实现了PSO算法,用来求解一个五元函数的最大值,并与MATLAB的fmincon函数的运行结果做比较。

KI的博客 11万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

智能优化之粒子群算法(PSO)(Matlab,python,C++实现)

智能优化算法pso

weixin_52732185的博客 5603

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

PSO粒子群算法(python3.6实现与详解)

1、 学习代码源自:用python3实现粒子群优化算法(PSO)-by雨破尘 参考博文:[MATLAB] 经典智能算法1:粒子群优化算法PSO python粒子群算法的实现 by-winycg 此篇强推 粒子群优化算法(PSO)by森先生 2、算法思想 粒子运动思想(即鸟群捕食运动),同样是通过适应度来评...

quinn1994的博客 6006

Python 有约束的粒子群算法(PSO)的可视化动画

有(非线性)约束的粒子群算法,红色圆圈是约束 有约束的PSO(粒子群算法) 代码如下(参见 github): import numpy as np from sko.PSO import PSO def demo_func(x): x1, x2 = x return -20 * np.exp(-0.2 * np.sqrt(0.5 * (x1 ** 2 + x2 ** 2))) - np.exp( 0.5 * (np.cos(2 * np.pi * x1) + n

guofei9987的博客 4499

基于粒子群算法(PSO)的TSP(Python实现)

基于粒子群算法(Particle Swarm Optimization, PSO)的TSP(Traveling Salesman Problem,旅行商问题),求解方法源自对集体智慧的模拟,通过模拟鸟群在搜索食物时的协作行为,不断调整每个“粒子”的位置和速度,以寻找全局最优解。在TSP问题中,粒子代表可能的路径解,通过不断更新粒子的位置,寻找一条最短的路径来访问所有城市。

博主关注人工智能、强化学习、嵌入式等||985高校A+学科研究生、猿龄六年||优快云博客专家、2024年博客之星TOP33、华为云享专家、人工智能领域优质创作者。 1806

睿智的智能优化算法1——粒子群算法的python实现

睿智的智能优化算法1——粒子群算法的python实现什么是粒子群算法求解过程实现代码GITHUB下载连接 睿智的智能优化算法小课堂开课啦! 什么是粒子群算法 粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization,PSO)。由J. Kennedy和R. C. Eberhart等人于1995年提出。其属于进化算法的一种,也是从随机解出发,通过迭代寻找最...

Bubbliiiing的学习小课堂 1万+
上一篇: SPOOLING 系统详解
下一篇: 探索群体智慧:蚁群算法(ACO)从原理到实践——python实现
Ricky_Theseus
博客等级 码龄3年 126粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ricky_Theseus

感谢大家,祝您生活愉快

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值