基于PSO算法优化PID参数的一些问题
目录
前言
Q1:惯性权重ω如何设置比较好?学习因子C1和C2如何设置?
Q2:迭代速度边界设定一定能够遍历(/覆盖)整个PID参数二维空间范围吗?还是说需要与迭代次数相关?迭代次数越高,范围越大?
Q3:PID位置边界是一致比较方便寻优吗?如果我设置Kp范围为[0,100],而Ki和Kd的范围为[0,1],这样子的设置对寻优有很大影响吗?
Q4:如果PID位置边界我都设置为[0,10],速度边界怎么设置更好?[-1,1],[-5,5],[-10,10],速度边界的设置与迭代找到最优解的计算机求解速度有关联吗?
尾声
前言
当我再一次想要认认真真研究一下PSO粒子群算法优化PID参数的时候,准备去matlab中文论坛发帖子讨论,没想到这个论坛已经停止运营了...
下面我将提出四个非常重要的问题,并对这四个问题做出回答。这是我在做研究的时候想找寻“所以然”的一个结果。
在开始之前首先非常推荐一本书,有条件的可以去图书馆借来看看:《粒子群优化算法》李丽、牛奔,相信这本书可以解决你绝大部分疑惑。

PSO粒子群算法两个分常重要的公式:
速度公式:
![]()
位置公式:
![]()
Q1:惯性权重ω如何设置比较好?学习因子C1和C2如何设置?
A1:在我的那篇呈现线性递减惯性权重的PSO-PID代码的文章中(🚪👉线性递减权重的PSO-PID算法),可以知道设置的惯性权重ω是从0.9随着迭代此时而线性递减到0.4的,而个人学习因子C1和社会学习因子C2设置的为一个定值,等于2。
其实,为了让粒子前期尽可能地搜索整个空间,后期更好地收敛到某一个点,加快仿真时间,我们可以设置惯性权重前期大后期小,这样前期惯性大主要还是靠自己的飞行速度,而后期惯性小就利于收敛;同理,对于个人学习因子C1,前期要大,后期要小;对于社会学习因子则反之。ω范围0.4~0.9(不一定是这个数),C1和C2的范围0.1~2。
下面我分别给出常见的惯性权重和学习因子设置的公式:
惯性权重:
以下的ωstart都为0.9,ωend都为0.4
固定惯性权重
(C在0.4~0.9区间,这里取0.68比较好)
典型线性递减惯性权重
![]()
线性微分递减惯性权重
![]()
随机变化惯性权重
![]()
非线性动态惯性权重
(k取3比较好)
基于正切函数的惯性权重
(k取0.6比较好)
基于反切函数的惯性权重
(k取0.4比较好)
学习因子:
固定学习因子
(C1和C2在1~2.5区间)
线性变换学习因子
![]()
C_1start=2.5,C_1end=0.5
![]()
C_2start=0.5,C_2end=2.5
对称反余弦学习因子

C_1start=2.5,C_1end=0.5

C_2start=0.5,C_2end=2.5
非对称反余弦学习因子

C_1start=2.75,C_1end=1.25
)
C_2start=0.5,C_2end=2.25
以及不用惯性权重而用收缩因子,收缩因子K比起惯性权重,更能有效地控制约束粒子飞行速度,增强了算法局部搜索能力。
那么原来速度公式要变为:
![]()
![]()
其中
。
Q2:迭代速度边界设定一定能够遍历(/覆盖)整个PID参数二维空间范围吗?还是说需要与迭代次数相关?迭代次数越高,范围越大?
A2:
首先,速度边界的设定,Vmax和Vmin为大小相等的相反数;
其次,速度边界的设定没有固定就是某一个值的说法,速度边界设定与位置边界设定有关,如果Vmax过大,粒子可能飞过较好解;反之,如果Vmax过小,则粒子可能无法探测完整个解空间,所以要设置一个合适的速度边界;
最后,迭代次数肯定和覆盖整个二维空间有关,迭代次数越高,覆盖完整的几率更高,但是你得考虑自己电脑的算力和计算时间的问题。
Q3:PID位置边界是一致比较方便寻优吗?如果我设置Kp范围为[0,100],而Ki和Kd的范围为[0,1],这样子的设置对寻优有很大影响吗?
A3:
我认为按照实际情况来设置不同的寻优范围就可以了,Kp、Ki和Kd可以设置不同的寻优范围,没有必要三个范围一致。比如本来实际Kd的数值就比较小,你让PSO算法在10~100的范围里面去寻找Kd的最优解,是无效的。
Q4:如果PID位置边界我都设置为[0,10],速度边界怎么设置更好?[-1,1],[-5,5],[-10,10],速度边界的设置与迭代找到最优解的计算机求解速度有关联吗?
A4:
在我另外一篇文章里面(🚪👉:PSO-PID算法迭代的PID值为什么变化范围那么小?)我也尝试过,只改变速度边界的大小进行对照试验,发现对于求解的结果是没有什么影响的,计算机求解速度的话每一次都会有些许差别,这个我当时仿真的时候没有进行计算。
其实速度边界和位置边界是有相关对于关系的:
![]()
根据这篇文章,Optimal choice of parameters for particle swarm optimization浙江大学学报,γ最佳范围在0.01~1,对于寻优目标函数为多峰函数(multimodel function),γ取0.5最好,对于单峰函数(unimodel function),γ取0.05最好。也就是说若取γ=0.1,当Xmax=10时,则Vmax=1。
同样是在这一篇文章中,也指出粒子群的粒子个数,最大不要超过50个粒子,不管是对于多峰函数问题还是单峰函数问题。
"While when it is larger than 50, PSO is not sensitive to the population size."
“当PSO大于50时,PSO对种群大小不敏感。”
这是原文,就算你超过了50个粒子,也对其不敏感,只是增加你matlab程序的时间。
尾声
希望我这些天的困惑解答会对同为研究相关问题的你有帮助!!!👍
不明白清楚的也可以在评论区积极探讨呀!😊
相关文章:
基于PSO算法优化PID参数的一些问题
目录 前言 Q1:惯性权重ω如何设置比较好?学习因子C1和C2如何设置? Q2:迭代速度边界设定一定能够遍历(/覆盖)整个PID参数二维空间范围吗?还是说需要与迭代次数相关?迭代次数越高&a…...
什么是决策树?
1. 什么是决策树? 决策树(Decision Tree)是一种常用的机器学习算法,用于解决分类和回归问题。它通过构建树结构来表示决策过程,分支节点表示特征选择,叶节点表示类别或回归值。 2. 决策树的组成部分 决策…...
ASP 快速参考
ASP 快速参考 概述 ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,用于动态网页设计和开发。它允许开发者创建和运行动态交互性网页,如访问数据库、发送电子邮件等。ASP页面通常以.asp为文件扩展名,并…...
(二)原生js案例之数码时钟计时
原生js实现的数字时间上下切换显示时间的效果,有参考相关设计,思路比较难,代码其实很简单 效果 代码实现 必要的样式 <style>* {padding: 0;margin: 0;}.content{/* text-align: center; */display: flex;align-items: center;justif…...
[CSS] 浮动布局的深入理解与应用
文章目录 浮动的简介元素浮动后的特点解决浮动产生的影响浮动后的影响解决浮动产生的影响 浮动相关属性实际应用示例示例1:图片与文字环绕示例2:多列布局示例3:响应式布局 总结 浮动布局是CSS中一种非常强大的布局方式,最初设计用…...
Linux云计算 |【第一阶段】ENGINEER-DAY2
主要内容: 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间 KVM虚拟化 实操前骤: 1)添加一块硬盘(磁盘),需要关机才能进行操作,点击左下角【添加硬件】 2)选择2…...
9.11和9.9哪个大?
没问题 文心一言 通义千问...
学懂C语言(十二):C语言中的二进制原理及应用
目录 1. 二进制原理 1.1 什么是二进制? 1.2 如何在C语言中表示二进制? 2. 二进制的表示 2.1 二进制和其他进制的转换 2.2 C语言中的二进制表示 3. 二进制运算 3.1 位运算符 3.2 计算过程示例 4. 应用示例 4.1 使用位运算实现开关 5. 总结 C语…...
科研绘图系列:R语言雨云图(Raincloud plot)
介绍 雨云图(Raincloud plot)是一种数据可视化工具,它结合了多种数据展示方式,旨在提供对数据集的全面了解。雨云图通常包括以下几个部分: 密度图(Density plot):表示数据的分布情况,密度图的曲线可以展示数据在不同数值区间的密度。箱线图(Box plot):显示数据的中…...
优化教学流程和架构:构建高效学习环境的关键步骤
在教育领域,设计和优化教学流程和架构是提高学习效果和学生参与度的关键。本文将探讨如何通过合理的教学流程和有效的架构来构建一个高效的学习环境。 ### 1. 理解教学流程和架构的重要性 教学流程指的是教学活动的组织和顺序,而教学架构则是指支持教学…...
js | this 指向问题
https://juejin.cn/post/6844904083707396109 任何函数运行的时候,都会创建一个context对象,context对象有一个this对象,在运行的时候决定。任何函数都对应一个reference类结构体(具体叫啥有点忘了),简单就…...
《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》
《昇思 25 天学习打卡营第 15 天 | 基于MindNLPMusicGen生成自己的个性化音乐 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 MusicGen概述 MusicGen是由Meta AI的Jade Copet等人提出的一种基于单个语言模型&…...
Gitee 使用教程1-SSH 公钥设置
一、生成 SSH 公钥 1、打开终端(Windows PowerShell 或 Git Bash),通过命令 ssh-keygen 生成 SSH Key: ssh-keygen -t ed25519 -C "Gitee SSH Key" 随后摁三次回车键(Enter) 2、查看生成的 SSH…...
理解Cookie、Session和Token
在现代Web开发中,用户身份认证和会话管理是至关重要的部分。理解Cookie、Session和Token的区别和应用场景,有助于我们设计出更加安全和高效的Web应用。本文将详细探讨这三者的工作原理、优缺点以及使用场景。 1. Cookie 1.1 什么是Cookie? …...
概率论原理精解【1】
文章目录 测度概述集类笛卡尔积定义例子 多集合的笛卡尔积定义计算方法注意事项 有限笛卡尔积的性质1. 定义2. 性质2.1 基数性质2.2 空集性质2.3 不满足交换律2.4 不满足结合律2.5 对并和交运算满足分配律 3. 示例4. 结论 参考链接 测度 概述 所谓测度,通俗的讲就…...
数据结构(二叉树-1)
文章目录 一、树 1.1 树的概念与结构 1.2 树的相关术语 1.3 树的表示 二、二叉树 2.1 二叉树的概念与结构 2.2特殊的二叉树 满二叉树 完全二叉树 2.3 二叉树的存储结构 三、实现顺序结构二叉树 3.1 堆的概念与结构 3.2 堆的实现 Heap.h Heap.c 默认初始化堆 堆的销毁 堆的插入 …...
巴黎奥运会倒计时 一个非常不错的倒计时提醒
巴黎奥运会还有几天就要开幕了,大家应该到处都可以看到巴黎奥运会的倒计时,不管是电视上,还是网络里,一搜索奥运会,就会看到。倒计时其实是一个我们在生活中很常用的一个方法,用来做事情的提醒,…...
【Python】使用库 -- 详解
库就是别人已经写好了的代码,可以让我们直接拿来用。 一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在…...
Web3D:WebGL为什么在渲染性能上输给了WebGPU。
WebGL已经成为了web3D的标配,市面上有N多基于webGL的3D引擎,WebGPU作为挑战者,在渲染性能上确实改过webGL一头,由于起步较晚,想通过这个优势加持,赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…...
SpringBoot面试高频总结01
1. 什么是SpringBoot? SpringBoot是一个基于Spring框架的快速开发框架,它采用约定大于配置,自动装配的方式,可以快速地创建独立的,生产级别的,基于Spring的应用程序。 相比于传统的Spring框架,S…...
Tempera风格+古典画框+羊皮纸基底=高转化商业图?:电商视觉团队实测ROI提升210%的紧急部署方案
更多请点击: https://intelliparadigm.com 第一章:Tempera风格古典画框羊皮纸基底高转化商业图?:电商视觉团队实测ROI提升210%的紧急部署方案 在Q3大促前72小时,某头部服饰品牌视觉中台紧急启用Tempera风格渲染管线&a…...
AI智能体记忆系统设计:基于文件优先与智能压缩的生产级解决方案
1. 项目概述:一个为AI智能体设计的生产级记忆系统如果你正在构建一个需要长期记忆和上下文管理的AI智能体,比如一个能帮你写代码的编程助手,或者一个能处理复杂任务的自动化工作流,那么你肯定遇到过“上下文窗口”这个头疼的问题。…...
Buzz音频转录工具故障快速定位:5大紧急级别终极排查指南 [特殊字符]
Buzz音频转录工具故障快速定位:5大紧急级别终极排查指南 🚨 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz…...
AgentVault Memory:构建本地AI编码记忆库,实现跨工具语义搜索与知识管理
1. 项目概述:为什么我们需要一个统一的AI编码记忆库如果你和我一样,每天的工作流里塞满了各种AI编码助手——Claude Code在终端里处理一个项目,Cursor在IDE里开着,偶尔切到OpenCode或者Codex处理点零碎任务。每次对话都充满了宝贵…...
2026年录音转换文字的软件推荐:从微信小程序到专业工具的实用对比
做视频或音频素材处理的时候,经常卡在这几个环节:转出来的文字有错别字需要反复核对、处理一个长视频得等半天、格式导出后没法直接用到其他软件。这些都是常见的痛点。本文会从实际应用出发,先重点讲一个相对高效的方案——微信小程序提词匠…...
VSCode毛玻璃效果实现:CSS backdrop-filter原理与性能调优指南
1. 项目概述:当代码编辑器遇上毛玻璃美学如果你和我一样,每天有超过8小时的时间是在Visual Studio Code(以下简称VSCode)中度过的,那么你肯定不止一次地折腾过它的主题和外观。从默认的深色主题到各种炫酷的Material D…...
QFN测试插座技术解析与应用实践
1. QFN测试插座的技术挑战与解决方案在半导体测试领域,QFN封装器件的测试一直是个棘手问题。这种无引线四方扁平封装虽然节省空间、散热优异,但恰恰因为缺少传统引脚,使得测试接触变得异常困难。我经手过不少QFN测试项目,最头疼的…...
Alph:一键统一配置AI编程助手MCP服务器的命令行工具
1. 项目概述:告别手动配置的混乱时代 如果你和我一样,日常开发中同时用着 Cursor、Claude Code、Gemini CLI 这些 AI 编程助手,那你一定对下面这个场景深恶痛绝:每次想给它们接入一个新的 MCP 服务器,都得像个考古学家…...
AI赋能二进制安全:BinAIVulHunter项目实战与逆向工程集成
1. 项目概述与核心价值最近在安全圈里,一个名为BinAIVulHunter的开源项目引起了我的注意。这个项目名直译过来就是“二进制AI漏洞猎人”,光看名字就能猜到它的核心玩法:利用人工智能技术,来自动化分析二进制文件,挖掘其…...
2025届学术党必备的五大降重复率方案横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下知网已然上线了AI检测功能,会针对论文里疑似人工智能生成的内容展开识别。为…...
