粒子群算法介绍

article/2025/9/18 15:27:37

优化算法——粒子群优化介绍

1. 基本概念

粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优解.
PSO的优势:在于简单容易实现并且没有许多参数的调节。

2. 算法分析

2.1 基本思想

粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解,粒子群中的所有粒子根据自己找到的当前个体极值和整个粒子群共享的当前全局最优解来调整自己的速度和位置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 更新规则

PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。
( 1 ) v i = v i + c 1 × rand ⁡ ( ) × ( p b e s t i − x i ) + c 2 × r a n d 0 × ( g b e s t i − x i ) (1) v_{i}=v_{i}+c_{1} \times \operatorname{rand}() \times\left(p b e s t_{i}-x_{i}\right)+c_{2} \times r a n d 0 \times\left(g b e s t_{i}-x_{i}\right) 1vi=vi+c1×rand()×(pbestixi)+c2×rand0×(gbestixi)

( 2 ) x i = x i + v i (2)x_{i}=x_{i}+v_{i} 2xi=xi+vi

式子中,i=1,2,3…N,N是此群中的粒子数量。rand()是介于(0,1)的随机数。 c 1 c_1 c1 c 2 c_2 c2是学习因子,通常=2.

公式(1)的第一部分称为【记忆项】,表示上次速度大小和方向的影响;公式(1)的第二部分称为【自身认知项】,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;公式(1)的第三部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。以上面两个公式为基础,形成了PSO的标准形式。
v i = ω × v i + c 1 × rand ⁡ ( ) × ( p best  i − x i ) + c 2 × rand ⁡ ( ) × ( gbest  i − x i ) v_{i}=\omega \times v_{i}+c_{1} \times \operatorname{rand}() \times\left(p \text { best }_{i}-x_{i}\right)+c_{2} \times \operatorname{rand}() \times\left(\text { gbest }_{i}-x_{i}\right) vi=ω×vi+c1×rand()×(p best ixi)+c2×rand()×( gbest ixi)
ω \omega ω叫做惯性因子,其值非负。值较大,全局寻优能力强,局部寻优能力弱;值较小,全局寻优能力弱,局部寻优能力强。动态 ω \omega ω可以获得更好的寻优结果。目前采用较多的是线性递减权值策略。

2.3 流程图、伪代码

在这里插入图片描述

3. 量子粒子群算法

3.1 PSO算法的缺点:

1、需要设定的参数(惯性因子 ω \omega ω ,局部学习因子 c 1 c_1 c1 和全局学习因子 c 2 c_2 c2 )太多,不利于找到待优化模型的最优参数。
2、粒子位置变化缺少随机性,容易陷入局部最优的陷阱。

3.2 量子粒子群算法

量子粒子群优化(Quantum Particle Swarm Optimization,QPSO)算法取消了粒子的移动方向属性,粒子位置的更新跟该粒子之前的运动没有任何关系,这样就增加了粒子位置的随机性。

量子粒子群算法中引入的新名词:
mbest:表示pbest的平均值,即平均的粒子历史最好位置。
量子粒子群算法的粒子更新步骤:

  1. 计算mbest

M b e s t = 1 M ∑ i = 1 M p b e s t − i M_{b e s t}=\frac{1}{M} \sum_{i=1}^{M} p_{b e s t_{-} i} Mbest=M1i=1Mpbesti

其中M表示粒子群的大小, p b e s t _ i p_{{best}\_i} pbest_i 表示当前迭代中的第 i i i p b e s t pbest pbest

  1. 粒子位置更新

KaTeX parse error: Expected '}', got '_' at position 33: … p_{\text {best_̲i}}+(1-\phi) \t…

其中 g b e s t gbest gbest 表示当前全局最优粒子, P i P_i Pi 用于第 i i i 个粒子位置的更新。
粒子位置更新公式为:
x i = P i ± α ∣ M b e s t − x i ∣ ln ⁡ ( 1 u ) x_{i}=P_{i} \pm \alpha\left|M_{b e s t}-x_{i}\right| \ln \left(\frac{1}{u}\right) xi=Pi±αMbestxiln(u1)
其中 x i x_i xi 表示第 i i i 个粒子的位置, α \alpha α 为创新参数, ϕ \phi ϕ u u u 为(0,1)上的均匀分布数值。取+和−的概率为0.5。

由上所示,QPSO算法中只有一个创新参数 α \alpha α 设置,一般 α \alpha α 不大于1。


转载请注明:Daniel的博客


http://chatgpt.dhexx.cn/article/TVpCLSXU.shtml

相关文章

Python实现VRP常见求解算法——离散量子行为粒子群算法(DQPSO)

基于python语言,实现经典离散量子行为粒子群算法(DQPSO)对车辆路径规划问题(CVRP)进行求解。 目录 优质资源1. 适用场景2. 求解效果3. 问题分析4. 数据格式5. 分步实现6. 完整代码参考 优质资源 python实现6种智能算法…

回归预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM、BiLSTM多输入单输出回归预测

回归预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM、BiLSTM多输入单输出回归预测 目录 回归预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM、BiLSTM多输入单输出回归预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.Matlab实现QPSO-BiLSTM、PSO-BiLSTM、BiLSTM神经…

云模型量子粒子群算法

云模型量子粒子群算法 量子粒子群推导过程: 量子粒子群算法(Quantum-behaved Particle Swarm Optimization,QPSO)具有进化方程简单、控制参数少、收敛速度快、运算量少等特点。QPSO从量子动力学运动方程出发,通过蒙特卡洛逆变换法定格某时刻…

【配电网重构】基于粒子群算法求解配电网重构问题附matlab代码

1 内容介绍 随着大规模,跨区域的配电网不断发展,对配电网运行的经济性和可靠性要求越来越高,在配电网发生大范围停电事故后,需要对配电网的拓扑结构进行重新组合,从而达到恢复供电的目的,这个重新组合配电网拓扑结构的过程即为配电网恢复重构.配电网恢复重构是一个多目标非线性…

回归预测 | MATLAB实现基于QPSO-GRU、PSO-GRU、GRU多变量回归预测

回归预测 | MATLAB实现基于QPSO-GRU、PSO-GRU、GRU多变量回归预测 目录 回归预测 | MATLAB实现基于QPSO-GRU、PSO-GRU、GRU多变量回归预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.Matlab实现QPSO-GRU、PSO-GRU和GRU门控循环单元多变量回归预测; 2.输…

回归预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU多变量回归预测

回归预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU多变量回归预测 目录 回归预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU多变量回归预测效果一览基本描述程序设计参考资料 效果一览 基本描述 1.Matlab实现QPSO-BiGRU、PSO-BiGRU和BiGRU双向门控循环单元多变量回归…

QPSO---收缩扩张系数的选择方案(未完待续)

一、理论基础 平均最优位置: 其中,P代表第i个粒子的最优位置,即局部最优位置,mbest为平均最优位置。对于多维粒子而言,每一维上的最优位置等于全部粒子在该维度上的平均值。 其中小写的p代表每个粒子的局部吸引子,它的…

组合预测模型 | 基于QPSO-LSTM、PSO-LSTM、LSTM单输入单输出时序预测(Matlab程序)

组合预测模型 | 基于QPSO-LSTM、PSO-LSTM、LSTM单输入单输出时序预测(Matlab程序) 目录 组合预测模型 | 基于QPSO-LSTM、PSO-LSTM、LSTM单输入单输出时序预测(Matlab程序)预测结果基本介绍程序设计参考资料预测结果

时序预测 | MATLAB实现基于QPSO-GRU、PSO-GRU、GRU时间序列预测

时序预测 | MATLAB实现基于QPSO-GRU、PSO-GRU、GRU时间序列预测 目录 时序预测 | MATLAB实现基于QPSO-GRU、PSO-GRU、GRU时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 MATLAB实现基于QPSO-GRU、PSO-GRU、GRU时间序列预测。 1.Matlab实现QPSO-GRU、PSO-GRUG…

时序预测 | MATLAB实现基于QPSO-LSTM、PSO-LSTM、LSTM时间序列预测

时序预测 | MATLAB实现基于QPSO-LSTM、PSO-LSTM、LSTM时间序列预测 目录 时序预测 | MATLAB实现基于QPSO-LSTM、PSO-LSTM、LSTM时间序列预测效果一览基本描述程序设计参考资料 效果一览 基本描述 MATLAB实现基于QPSO-LSTM、PSO-LSTM、LSTM时间序列预测。 1.Matlab实现QPSO-LSTM…

回归预测 | MATLAB实现基于QPSO-LSTM、PSO-LSTM、LSTM多输入单输出回归预测

回归预测 | MATLAB实现基于QPSO-LSTM、PSO-LSTM、LSTM多输入单输出回归预测 目录 回归预测 | MATLAB实现基于QPSO-LSTM、PSO-LSTM、LSTM多输入单输出回归预测效果一览基本描述模型描述程序设计参考资料 效果一览 基本描述 1.Matlab实现QPSO-LSTM、PSO-LSTM和LSTM神经网络时间序…

QPSO Algorithm

QPSO Algorithm C#语言.NetFramwork4.6.1平台实现(需了解QPSO算法原理,可参考清华大学孙俊教授编写的教材《量子行为粒子群优化原理及其应用》) using System; using System.Collections.Generic; using System.Linq; using System.Text; u…

微信小程序使用ECharts的示例详解

目录 安装 ECharts 组件使用 ECharts 组件图表延迟加载 echarts-for-weixin 是 ECharts 官方维护的一个开源项目,提供了一个微信小程序组件(Component),我们可以通过这个组件在微信小程序中使用 ECharts 绘制图表。 echarts-fo…

微信小程序案例---本地生活

文章目录 首页效果以及实现步骤接口地址新建项目并梳理项目结构配置导航栏效果配置 tabBar 效果实现轮播图效果实现九宫格效果实现图片布局 本地生活(列表页面)演示页面效果以及主要功能列表页面的 API 接口页面导航并传参获取并渲染列表数据上拉触底时加…

微信小程序--操作示例2

微信小程序--商城首页 我们首先有一个商城的接口 调用商城中首页所需要的一些数据 例如: onLoad: function () {var that this;//请求服务器时间戳wx.request({url: http://www.tp.com/index.php?mApi&cBase&agetServerTime, //请求地址success: fu…

微信小程序官方示例

微信小程序官方示例 下载微信客户端版本号:6.3.27 及以上,只有小程序绑定的开发者有权限扫码体验。下载源码 版本20161010

什么是云开发?小程序实例超详细演示~

学习视频: 八分钟读懂云开发_哔哩哔哩_bilibili小姐姐带你30分钟创建并上线小程序项目【云开发实战】_哔哩哔哩_bilibili 参考资料: 微信开放文档 (qq.com)云开发_百度百科 (baidu.com) 推荐阅读: 云原生推动全云开发与实践 - 知乎 (zhihu.co…

微信小程序入门教程+案例demo

微信小程序入门教程案例demo 尊重原创,转载请注明出处:原文查看惊喜更多 http://blog.csdn.net/qq137722697 首先摆在好姿态,——微信小程序开发也就那么回事。你只需要一点点css(真的只要一点点)的基础就可以了。 认清…

微信小程序开发 | API应用案例(下)

API应用案例(下) 6.1【案例5】模拟时钟6.1.1 案例分析6.1.2 前导知识6.1.3 钟表页面布局6.1.4 钟表页面绘制 6.2【案例6】罗盘动画6.2.1 案例分析6.2.2 前导知识6.2.3 设计罗盘页面布局6.2.4 手指触摸旋转罗盘6.2.5 单击按钮操作罗盘 6.3【案例7】文件上…

使用微信小程序开发弹出框应用实例详解

1 2 3 4 5 view class"container" class"zn-uploadimg"> <button type"primary"bindtap"showok">消息提示框</button> <button type"primary"bindtap"modalcnt">模态弹窗</button&g…