粒子群算法(PSO)整定/优化PID参数

        摘要:PID参数整定,这玩意没什么特别好的方法,按工程方法将模型化为典型I系统,II系统,实际中也不太好用,要依赖模型的精确参数。计算得到PI参数,也会因为建模的过程的简化,带来误差。而且超调量,响应时间,抗扰能力这些指标用公式表示出来也麻烦。
   最最重要的是,TMD,各种性能指标是耦合的,例如超调量小,响应时间往往会长,有点拆了东墙补西墙,来回调,很麻烦。所以一般情况是,先计算个大概,再试凑调参。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。

       碎嘴:看论文看的想睡觉,更一个粒子群参数优化。(知识面较窄,不对的地方轻喷)与其他的算法一样这只是一个优化算法而已,本文实现的是最原始的粒子群进行PI整定.有容易陷入局部最优等确定。更牛逼的!改进PSO,多目标PSO(MPSO)有时间再折腾。(这些不是我的主要研究方向,仅锻炼代码能力,实现一些小的研究,更多是兴趣爱好,以及搞钱哈哈哈)
       代码自己逐段研究过,检查每次种群有没有跟新,位置是不是在限定范围内等,我都检验过一遍。注释写的详细,怕自己用的时候看不懂。
       先来给同学们看一波结果。

         粒子群算法(PSO)整定/优化PID参数_第1张图片粒子群算法(PSO)整定/优化PID参数_第2张图片

图1 代码、结果展示

粒子群流程图、伪代码如下

粒子群算法(PSO)整定/优化PID参数_第3张图片 算法流程图
粒子群算法(PSO)整定/优化PID参数_第4张图片 粒子群算法伪代码

Step0 序章

       PID参数整定,这玩意没什么特别好的方法,按工程方法将模型化为典型I系统,II系统,实际中也不太好用,要依赖模型的精确参数。计算得到PI参数,也会因为建模的过程的简化,带来误差。而且超调量,响应时间,抗扰能力这些指标用公式表示出来也麻烦。

       最最重要的是,TMD,各种性能指标是耦合的,例如超调量小,响应时间往往会长,有点拆了东墙补西墙,来回调,很麻烦。所以一般情况是,先计算个大概,再试凑调参。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。

Step 1 测试案例

       这里以被控对象的传递函数为1/(s^2+10s+1)为例(随便选的一个),利用离散控制器(更符合实际系统)控制被控对象,检验其对阶跃函数的跟踪性能(研究者均统一使用阶跃函数检验)。目标函数使用ITAE,绝对时间误差乘积,以该误差为目标函数优化出来的超调量和误差较小。

        由于这个被控模型我随便捏造的,不知道选择合适的参数去控制,于是一来我就直接,上代码!!!结果给我整蒙了,超调量虽然很小,响应时间到了4秒,一度让我怀疑哪个步骤不对。冷静下来思考后,觉得应该是,先手动调参,看看结果,确定一个大概的搜索范围。原来就是之前的搜索范围太小了,所以怎么也得不到好结果。

        正如某个伟人说的(不是鲁迅),一天都在做实验,那你什么时候思考呢!(原理本质,永远是第一位的。)

粒子群算法(PSO)整定/优化PID参数_第5张图片 图2 测试模型

       完成10次迭代,结果如下:(可以自己根据需求,运行10次代码,每次迭代50次,取每次运行结果的平均值,一般来说会更好,这部分代码也已写好,因为仅作演示,为了节省时间,注释掉该部分。这里只搜索了PI参数,要D参数也很简单,各位同学可以自己根据需要修改)                   

     粒子群算法(PSO)整定/优化PID参数_第6张图片    粒子群算法(PSO)整定/优化PID参数_第7张图片

图3 (a)运行历时 (b)适应度曲线

粒子群算法(PSO)整定/优化PID参数_第8张图片 图4 响应曲线

   响应时间和超调量,感官上看着还行,无静差。

   Step2 接入自己的模型

      测试成功后,接下来优化自己的转速、电流双闭环电机模型,下面参数是书上和论文上计算出来的。

   表1 优化电流环前后PI控制参数

Kpq

Kiq

Kpd

Kid

优化前

13.2000

1053.8

5.7750

1053.8

优化后

100

128.6785

21.70046

128.6785

                    粒子群算法(PSO)整定/优化PID参数_第9张图片粒子群算法(PSO)整定/优化PID参数_第10张图片

图5电流环PI参数优化

       别看优化的不多,但是这至少是没有恶化动态抗扰性能,电流环转速环,整个模型有5个参数,这里只选择了其中3个进行优化。

      接下来转速环、电流环5个参数同时优化,代码运行10次,取结果均值。历时24424.804355 秒,6.78个小时,睡一觉起来刚刚好。

表2 转速环、电流环优化前后PI参数

Kp

Ki

Kpq

Kiq

Kpd

Kid

优化前

0.14

0.14*50

13.2000

1053.8

5.7750

1053.8

优化后

2

10

47.1089

1026.5246

61.177

1026.5246

粒子群算法(PSO)整定/优化PID参数_第11张图片 图6 转速环、电流环PI参数优化前后转速曲线

图6 转速环、电流环PI参数优化前后转速曲线

        可以看出,优化后的结果,不论是超调量还是动态抗扰性能均大大提升。性能指标响应时间更慢了(非常细微,放大图形才看的出),值得指出的是,优化后的转速曲线进入稳态更慢,0.1~0.3s可以明显看出正在逐渐逼近设定值1000。(上述性能指标这里不量化计算(麻烦),但做产品,做研究,需要科学的评估系统的性能指标,设计与理论相符。)

       生有涯,知无涯。既要不断学习,也要有所取舍,有些东西仅作了解即可,学不完根本学不完(大哭)!

点赞+评论+留邮箱,发step1的模型和源代码(白送)

技术咨询,定制模型(money)

Step3参考资料

    袁雷——现代永磁同步电机控制原理及MATLAB仿真

    https://zhuanlan.zhihu.com/p/265205643

    粒子群优化算法(Particle Swarm Optimization, PSO)的详细解读 - 知乎 (zhihu.com)

你可能感兴趣的:(PID,matlab,经验分享)