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

基于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:

首先,速度边界的设定,VmaxVmin大小相等的相反数

其次,速度边界的设定没有固定就是某一个值的说法,速度边界设定与位置边界设定有关,如果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实现的数字时间上下切换显示时间的效果&#xff0c;有参考相关设计&#xff0c;思路比较难&#xff0c;代码其实很简单 效果 代码实现 必要的样式 <style>* {padding: 0;margin: 0;}.content{/* text-align: center; */display: flex;align-items: center;justif…...

[CSS] 浮动布局的深入理解与应用

文章目录 浮动的简介元素浮动后的特点解决浮动产生的影响浮动后的影响解决浮动产生的影响 浮动相关属性实际应用示例示例1&#xff1a;图片与文字环绕示例2&#xff1a;多列布局示例3&#xff1a;响应式布局 总结 浮动布局是CSS中一种非常强大的布局方式&#xff0c;最初设计用…...

Linux云计算 |【第一阶段】ENGINEER-DAY2

主要内容&#xff1a; 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间 KVM虚拟化 实操前骤&#xff1a; 1&#xff09;添加一块硬盘&#xff08;磁盘&#xff09;&#xff0c;需要关机才能进行操作&#xff0c;点击左下角【添加硬件】 2&#xff09;选择2…...

9.11和9.9哪个大?

没问题 文心一言 通义千问...

学懂C语言(十二):C语言中的二进制原理及应用

目录 1. 二进制原理 1.1 什么是二进制&#xff1f; 1.2 如何在C语言中表示二进制&#xff1f; 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):显示数据的中…...

优化教学流程和架构:构建高效学习环境的关键步骤

在教育领域&#xff0c;设计和优化教学流程和架构是提高学习效果和学生参与度的关键。本文将探讨如何通过合理的教学流程和有效的架构来构建一个高效的学习环境。 ### 1. 理解教学流程和架构的重要性 教学流程指的是教学活动的组织和顺序&#xff0c;而教学架构则是指支持教学…...

js | this 指向问题

https://juejin.cn/post/6844904083707396109 任何函数运行的时候&#xff0c;都会创建一个context对象&#xff0c;context对象有一个this对象&#xff0c;在运行的时候决定。任何函数都对应一个reference类结构体&#xff08;具体叫啥有点忘了&#xff09;&#xff0c;简单就…...

《昇思 25 天学习打卡营第 15 天 | 基于MindNLP+MusicGen生成自己的个性化音乐 》

《昇思 25 天学习打卡营第 15 天 | 基于MindNLPMusicGen生成自己的个性化音乐 》 活动地址&#xff1a;https://xihe.mindspore.cn/events/mindspore-training-camp 签名&#xff1a;Sam9029 MusicGen概述 MusicGen是由Meta AI的Jade Copet等人提出的一种基于单个语言模型&…...

Gitee 使用教程1-SSH 公钥设置

一、生成 SSH 公钥 1、打开终端&#xff08;Windows PowerShell 或 Git Bash&#xff09;&#xff0c;通过命令 ssh-keygen 生成 SSH Key&#xff1a; ssh-keygen -t ed25519 -C "Gitee SSH Key" 随后摁三次回车键&#xff08;Enter&#xff09; 2、查看生成的 SSH…...

理解Cookie、Session和Token

在现代Web开发中&#xff0c;用户身份认证和会话管理是至关重要的部分。理解Cookie、Session和Token的区别和应用场景&#xff0c;有助于我们设计出更加安全和高效的Web应用。本文将详细探讨这三者的工作原理、优缺点以及使用场景。 1. Cookie 1.1 什么是Cookie&#xff1f; …...

概率论原理精解【1】

文章目录 测度概述集类笛卡尔积定义例子 多集合的笛卡尔积定义计算方法注意事项 有限笛卡尔积的性质1. 定义2. 性质2.1 基数性质2.2 空集性质2.3 不满足交换律2.4 不满足结合律2.5 对并和交运算满足分配律 3. 示例4. 结论 参考链接 测度 概述 所谓测度&#xff0c;通俗的讲就…...

数据结构(二叉树-1)

文章目录 一、树 1.1 树的概念与结构 1.2 树的相关术语 1.3 树的表示 二、二叉树 2.1 二叉树的概念与结构 2.2特殊的二叉树 满二叉树 完全二叉树 2.3 二叉树的存储结构 三、实现顺序结构二叉树 3.1 堆的概念与结构 3.2 堆的实现 Heap.h Heap.c 默认初始化堆 堆的销毁 堆的插入 …...

巴黎奥运会倒计时 一个非常不错的倒计时提醒

巴黎奥运会还有几天就要开幕了&#xff0c;大家应该到处都可以看到巴黎奥运会的倒计时&#xff0c;不管是电视上&#xff0c;还是网络里&#xff0c;一搜索奥运会&#xff0c;就会看到。倒计时其实是一个我们在生活中很常用的一个方法&#xff0c;用来做事情的提醒&#xff0c;…...

【Python】使用库 -- 详解

库就是别人已经写好了的代码&#xff0c;可以让我们直接拿来用。 一个编程语言能不能流行起来&#xff0c;一方面取决于语法是否简单方便容易学习&#xff0c;一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库&#xff0c;来应对各种各样的场景。在…...

Web3D:WebGL为什么在渲染性能上输给了WebGPU。

WebGL已经成为了web3D的标配&#xff0c;市面上有N多基于webGL的3D引擎&#xff0c;WebGPU作为挑战者&#xff0c;在渲染性能上确实改过webGL一头&#xff0c;由于起步较晚&#xff0c;想通过这个优势加持&#xff0c;赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…...

SpringBoot面试高频总结01

1. 什么是SpringBoot&#xff1f; SpringBoot是一个基于Spring框架的快速开发框架&#xff0c;它采用约定大于配置&#xff0c;自动装配的方式&#xff0c;可以快速地创建独立的&#xff0c;生产级别的&#xff0c;基于Spring的应用程序。 相比于传统的Spring框架&#xff0c;S…...

Linux 工作队列(Workqueue):概念与实现

目录 一、工作队列的概念1.1 什么是工作队列1.2 为什么使用工作队列 二、工作队列的实现2.1 定义和初始化工作队列2.2 工作队列API 三、工作队列的应用3.1 延迟执行任务3.2 处理复杂的中断任务 四、工作队列的类型4.1 普通工作队列4.2 高优先级工作队列 五、总结 在Linux内核中…...

前端页面是如何禁止被查看源码、被下载,被爬取,以及破解方法

文章目录 1.了解禁止查看,爬取原理1.1.JS代码,屏蔽屏蔽键盘和鼠标右键1.2.查看源码时,通过JS控制浏览器窗口变化2.百度文库是如何防止抓包2.1.HTPPS2.2. 动态加载为什么看不到?如何查看动态加载的内容?3.禁止复制,如果解决3.1.禁止复制原理3.2.如何破解1.了解禁止查看,爬…...

51单片机嵌入式开发:14、STC89C52RC 之HX1838红外解码NEC+数码管+串口打印+LED显示

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示 STC89C52RC 之HX1838红外解码NEC数码管串口打印LED显示1 概述2 硬件电路2.1 遥控器2.2 红外接收器电路2.3 STC89C52单…...

在不同环境中,Java应用程序和MySQL等是如何与Docker进行交互和操作的?

1. 本地开发环境 在本地开发环境中&#xff0c;可以使用Docker Compose来管理和运行Java应用程序容器和MySQL容器。通常&#xff0c;会创建一个docker-compose.yml文件&#xff0c;定义需要的服务及其配置。 以下是一个示例docker-compose.yml文件: version: 3 services:app…...

《DRL》P10-P15-损失函数-优化(梯度下降和误差的反向传播)

文章目录 损失函数交叉熵损失多类别分类任务概述真实标签的独热编码交叉熵损失函数 L p 范式 \mathcal{L}_{p}\text{ 范式} Lp​ 范式均方误差平均绝对误差 优化梯度下降和误差的反向传播 简介 本文介绍了神经网络中的损失函数及其优化方法。损失函数用于衡量模型预测值与真实值…...

Spring Boot项目的404是如何发生的

问题 在日常开发中&#xff0c;假如我们访问一个Sping容器中并不存在的路径&#xff0c;通常会返回404的报错&#xff0c;具体原因是什么呢&#xff1f; 结论 错误的访问会调用两次DispatcherServlet&#xff1a;第一次调用无法找到对应路径时&#xff0c;会给Response设置一个…...

<数据集>手势识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2400张 标注数量(xml文件个数)&#xff1a;2400 标注数量(txt文件个数)&#xff1a;2400 标注类别数&#xff1a;5 标注类别名称&#xff1a;[fist, no_gesture, like, ok, palm] 序号类别名称图片数框数1fist597…...

【Vue3】选项式 API

【Vue3】选项式 API 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。…...

2、如何发行自己的数字代币(truffle智能合约项目实战)

2、如何发行自己的数字代币&#xff08;truffle智能合约项目实战&#xff09; 1-Atom IDE插件安装2-truffle tutorialtoken3-tutorialtoken源码框架分析4-安装openzeppelin代币框架&#xff08;代币发布成功&#xff09; 1-Atom IDE插件安装 正式介绍基于web的智能合约开发 推…...

百日筑基第二十三天-23种设计模式-创建型总汇

百日筑基第二十三天-23种设计模式-创建型总汇 前言 设计模式可以说是对于七大设计原则的实现。 总体来说设计模式分为三大类&#xff1a; 创建型模式&#xff0c;共五种&#xff1a;单例模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式。结构型模式&#xff0c;共…...

网站建设专业/营业推广是什么意思

在c语言当中解决字符串当中某个字符或者数字时,经常用到sscanf,的确也比较好用,大部分正则问题都能解决,官方使用方法介绍如下: 函数语法 int sscanf( const char *buffer, const char *format, [ argument ] ... ); 参数编辑 播报 buffer  存储的数据 format…...

教育校园网站建设方案/推广效果最好的平台

做软件到一定层次了&#xff0c;就要考虑到设计了&#xff0c;设计了很久&#xff0c;就是不系统&#xff0c;系统的设计需要一个记录&#xff0c;记录就用文档&#xff0c;那么对项目所有包括技术上的设计都记录下来&#xff0c;我们就可以理解为软件的概要设计了。 在需求明确…...

网站开发行业怎么样/全国各大新闻网站投稿

综述 最近跑项目linux用的比较多 在使用vi编辑器时出现了一些问题 特别是在进入vi后 方向键变ABCD删除键失效 有人说可以安装一些强版本的vim&#xff1b;但是&#xff0c;这里给出另一种解决方案 echo "set nocompatible">>~/.vimrc更改配置信息 echo &quo…...

做网站开发的商标注册/百度网站权重查询

本节所用命令的帮助入口&#xff1a; :help helptags:help taglist.txt 使用下面的命令生成帮助标签 :helptags ~/.vim/doc 下面介绍常用的taglist配置选项&#xff0c;你可以根据自己的习惯进行配置&#xff1a; - Tlist_Ctags_Cmd选项用于指定你的Exuberant ctags程序的位置…...

京伦科技做的网站如何/百度一下你就知道官方网站

当一个函数返回一个对象时&#xff0c;我们称之他为 工厂函数(factory function)。 function createJelly() {return {type: jelly,colour: redscoops: 3}; }组合工厂函数 function createJelly() {return {type: jelly,colour: red,scoops: 3}; }function createIceCream(flav…...

微信小程序一站式开发/快速优化seo

早先关注我们的朋友可能对《国外开发者尝试在树莓派3上运行Windows 10桌面版》有印象。本文转自 amatfan.com&#xff0c;文末视频来自 daveb778(感谢柠栀和刺分享)&#xff0c;给出了如何在树莓派3B上安装Windows10 ARM版&#xff0c;是的&#xff0c;这次并非IoT版&#xff0…...