做网站鼠标移动 链接变颜色,网站构建的一般流程是什么,wordpress没人用,网站手机自动跳转目录
前言
Q1#xff1a;惯性权重ω如何设置比较好#xff1f;学习因子C1和C2如何设置#xff1f;
Q2#xff1a;迭代速度边界设定一定能够遍历#xff08;/覆盖#xff09;整个PID参数二维空间范围吗#xff1f;还是说需要与迭代次数相关#xff1f;迭代次数越高惯性权重ω如何设置比较好学习因子C1和C2如何设置
Q2迭代速度边界设定一定能够遍历/覆盖整个PID参数二维空间范围吗还是说需要与迭代次数相关迭代次数越高范围越大
Q3PID位置边界是一致比较方便寻优吗如果我设置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_1start2.5C_1end0.5 C_2start0.5C_2end2.5
对称反余弦学习因子 C_1start2.5C_1end0.5 C_2start0.5C_2end2.5
非对称反余弦学习因子 C_1start2.75C_1end1.25
)
C_2start0.5C_2end2.25 以及不用惯性权重而用收缩因子收缩因子K比起惯性权重更能有效地控制约束粒子飞行速度增强了算法局部搜索能力。
那么原来速度公式要变为 其中。 Q2迭代速度边界设定一定能够遍历/覆盖整个PID参数二维空间范围吗还是说需要与迭代次数相关迭代次数越高范围越大
A2
首先速度边界的设定Vmax和Vmin为大小相等的相反数
其次速度边界的设定没有固定就是某一个值的说法速度边界设定与位置边界设定有关如果Vmax过大粒子可能飞过较好解反之如果Vmax过小则粒子可能无法探测完整个解空间所以要设置一个合适的速度边界
最后迭代次数肯定和覆盖整个二维空间有关迭代次数越高覆盖完整的几率更高但是你得考虑自己电脑的算力和计算时间的问题。 Q3PID位置边界是一致比较方便寻优吗如果我设置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当Xmax10时则Vmax1。
同样是在这一篇文章中也指出粒子群的粒子个数最大不要超过50个粒子不管是对于多峰函数问题还是单峰函数问题。
While when it is larger than 50, PSO is not sensitive to the population size.
“当PSO大于50时PSO对种群大小不敏感。”
这是原文就算你超过了50个粒子也对其不敏感只是增加你matlab程序的时间。 尾声
希望我这些天的困惑解答会对同为研究相关问题的你有帮助
不明白清楚的也可以在评论区积极探讨呀