PID算法的收敛性

首先给出PID控制系统框图

在这里插入图片描述

对于离散PID算法,其中控制量
u k = K p e k + K i ∑ j = 0 k − 1 e j + K d ( e k − e k − 1 ) (1) u_k=K_pe_k+K_i\sum_{j=0}^{k-1}e_j+K_d(e_k-e_{k-1}) \tag {1} uk=Kpek+Kij=0k1ej+Kd(ekek1)(1)
对于PID算法,系统输出往往是控制量u的积分,数学表示为
y k = ∑ j = 0 k − 1 ( u j − c ) (2) y_k=\sum_{j=0}^{k-1}(u_j-c) \tag {2} yk=j=0k1(ujc)(2)
对于PI控制器( K d = 0 K_d=0 Kd=0),其阶跃响应有误差
e k =   r k − y k =   1 − ∑ j = 0 k − 1 ( u j − c ) =   1 − ∑ j = 0 k − 1 ( K p e j + K i ∑ i = 0 j − 1 e i − c ) (3) \begin{array}{l} e_k=\ r_k-y_k\\ =\ 1-\sum_{j=0}^{k-1}(u_j-c)\\ =\ 1-\sum_{j=0}^{k-1}(K_pe_j+K_i\sum_{i=0}^{j-1}e_i-c) \end{array} \tag {3} ek= rkyk= 1j=0k1(ujc)= 1j=0k1(Kpej+Kii=0j1eic)(3)
误差e的k替换为k-1,相减整理得
e k + ( K p − 1 ) e k − 1 + K i ∑ j = 0 k − 2 e j = c (4) e_k+(K_p-1)e_{k-1}+K_i\sum_{j=0}^{k-2}e_j=c \tag {4} ek+(Kp1)ek1+Kij=0k2ej=c(4)
再次以k-1替换k,相减整理
e k + ( K p − 2 ) e k − 1 + ( 1 − K p + K i ) e k − 2 = 0 (5) e_k+(K_p-2)e_{k-1}+(1-K_p+K_i)e_{k-2}=0 \tag {5} ek+(Kp2)ek1+(1Kp+Ki)ek2=0(5)
该齐次微分方程的两个特征值分别为
α = − ( K p − 2 ) + ( K p − 2 ) 2 − 4 ( 1 − K p + K i ) 2 (6) \alpha=\frac{-(K_p-2)+\sqrt{(K_p-2)^2-4(1-K_p+K_i)}}{2} \tag {6} α=2Kp2+(Kp2)24(1Kp+Ki) (6)

β = − ( K p − 2 ) − ( K p − 2 ) 2 − 4 ( 1 − K p + K i ) 2 (7) \beta=\frac{-(K_p-2)-\sqrt{(K_p-2)^2-4(1-K_p+K_i)}}{2} \tag {7} β=2Kp2(Kp2)24(1Kp+Ki) (7)
要使PI控制器收敛,就要使两个特征根的模小于1,计算可知,PI算法的收敛域为
{ K i < K p K i > 2 K p − 4 K i , K p > 0 (8) \left\{ \begin{array}{l} K_i<K_p\\ K_i>2K_p-4\\ K_i,K_p>0 \end{array} \right. \tag {8} Ki<KpKi>2Kp4Ki,Kp>0(8)
以下是不同 K p K_p Kp K i K_i Ki 参数下的PI控制器的收敛情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在使用Matlab中的粒子群优化(PSO)算法进行PID参数优化时出现不收敛的问题,可能有以下几个可能的原因: 1. 初始参数设置不合适:PID控制器的初始参数设置对于收敛能具有重要影响。如果初始参数离最优解很远,PSO算法可能需要更长的迭代次数才能找到最优解。因此,可以尝试调整初始参数的范围和分布,使其更接近最优解。 2. 适应度函数定义不准确:适应度函数的设计对于粒子群算法能至关重要。如果适应度函数的定义不准确,可能会导致PSO算法收敛困难。可以尝试修改适应度函数的定义,使其更能准确地描述系统的优化目标。 3. 粒子群算法参数设置不当:PSO算法有一些需要设置的参数,例如粒子数量、惯权重、加速因子等。这些参数的选择对于算法能具有重要影响。一般需要进行一定的参数调优才能达到较好的收敛能。可以尝试调整这些参数的值,进行参数敏感分析,从而找到更合适的参数设置。 4. 问题的复杂度:有些问题的搜索空间非常复杂,PSO算法可能需要更多的迭代次数才能达到最优解。如果问题的复杂度较高,可以尝试增加迭代次数,或者尝试其他更强大的优化算法来解决该问题。 综上所述,当使用Matlab中的PSO算法进行PID参数优化时,如果发现不收敛的情况,可以考虑调整初始参数、适应度函数定义、算法参数设置以及问题的复杂度等方面的优化策略。 ### 回答2: 在MATLAB中使用粒子群优化(PSO)算法来优化PID控制器时,如果结果不收敛,可能由以下几个方面的原因引起: 1. 参数设置不合理:在使用PSO算法时,需要合理设置粒子数量、迭代次数和参数范围等。如果选择的参数范围过大或者迭代次数太少,可能导致算法无法找到最优解。解决办法是根据实际情况进行参数设置,并进行多次实验找到更接近最优解的设置。 2. 初始种群不合适:初始种群的设置对算法收敛有较大影响。如果初始种群过于分散或者过于集中,可能导致算法陷入局部最优解而无法收敛到全局最优解。可以尝试使用随机生成的初始种群,或者使用其他优化算法得到较好的初始种群,来改善收敛。 3. 非凸优化问题:PID控制器优化问题可能是一个非凸优化问题,即存在多个局部最优解。PSO算法对于非凸优化问题的收敛较差。解决办法是考虑使用其他优化算法,如遗传算法或模拟退火算法,来寻找更好的最优解。 4. 目标函数设计不合理:在使用PSO算法时,需要合理设计目标函数来评估控制器的能。如果目标函数设计不合理,可能导致算法无法找到最优解。可以考虑使用更合理的目标函数,如最小化误差平方和或最小化控制器响应时间等。 总之,当MATLAB中使用PSO算法优化PID控制器时,如果不收敛,需要仔细检查参数设置、初始种群、优化问题的质和目标函数的设计等方面的问题,找到问题的所在,并进行相应的调整和改进。 ### 回答3: MATLAB中的PSO算法是一种优化算法,用于求解最优化问题。在使用PSO算法优化PID参数时,如果不收敛可能是由以下几个原因造成的: 1. 初始解的选择不合适:PSO算法对初始解比较敏感,如果初始解离最优解较远,可能导致算法无法收敛。可以尝试使用其他的初始解生成方法,如随机生成等。 2. 粒子数量设置不合理:PSO算法能与粒子数量有关,过少的粒子数量可能会陷入局部最优解而无法收敛,而过多的粒子数量则会导致计算复杂度增加。可以尝试调整粒子数量来改善收敛能。 3. 适应度函数设计不合理:适应度函数的设计需要考虑目标函数的特,合理地构造适应度函数可以提高算法收敛。可能需要重新评估适应度函数的设计,以确保其具有较好的收敛。 4. 算法参数调整不当:PSO算法有一些参数需要调整,如学习因子、惯因子等。不同的参数选择可能会对算法收敛产生影响。可以尝试使用不同的参数组合来调整算法收敛。 总之,PSO算法优化PID参数不收敛可能是由于初始解选择、粒子数量、适应度函数设计或算法参数调整等因素造成的。需要对这些因素进行合理的调整和优化,以提高算法收敛

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今朝无言

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值