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

文章讨论了PID参数整定的传统工程方法及其局限性,强调了模型精度对结果的影响。并通过粒子群优化算法尝试改进PID参数,尤其在多目标优化下观察到性能提升,但响应时间可能会变慢。作者分享了具体应用实例和参考资料链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

         

图1 代码、结果展示

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

算法流程图
粒子群算法伪代码

Step0 序章

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

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

Step 1 测试案例

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

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

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

图2 测试模型

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

         

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

图4 响应曲线

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

   Step2 接入自己的模型

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

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

Kpq

Kiq

Kpd

Kid

优化前

13.2000

1053.8

5.7750

1053.8

优化后

100

128.6785

21.70046

128.6785

                    

图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

图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控制器的研究 #### 实现方法概述 自适应粒子群算法(APSO)通过动态惯性权重和其他参数来提高传统粒子群算法的性能。对于模糊PID控制器而言,该方法旨在自动寻找最优的比例系数\( K_p \)、积分时间常数 \( T_i \) 和微分时间常数 \( T_d \),以及模糊逻辑系统的量化因子和比例因子。 在具体应用中,首先义目标函数用于评估不同组合下的控制系统表现;接着初始化一群代表潜在解空间中的候选方案——即“粒子”。这些粒子按照一规则更新速度与位置,在每次迭代过程中不断靠近全局最佳点直至收敛于理想配置[^1]。 #### 关键技术要点 - **自适应机制**:引入自适应策略使算法能够根据当前群体状态自行节关键参数,从而增强探索能力和开发效率。 - **多维搜索空间构建**:考虑到模糊PID涉及多个待变量,需建立高维度的可行域供粒子们自由穿梭探寻最优点位。 - **约束处理方式**:针对可能出现越界情况设合理的惩罚措施或修复手段确保最终得到合法有效的解决方案[^2]. ```python import numpy as np def adaptive_particle_swarm_optimization(objective_function, bounds, n_particles=30, max_iter=100): # 初始化种群及其属性 positions = ... velocities = ... for iteration in range(max_iter): # 更新个体极值和个人历史最好记录 personal_best_positions = update_personal_bests(positions, objective_function) # 计算全局最优并据此个群体的速度向量 global_best_position = find_global_best(personal_best_positions) # 动态修改某些超参以促进更快更准地位到优质区域 adapt_parameters(iteration, ...) # 移动至新坐标处继续考察其适配度高低 move_to_new_positions(...) ``` #### 应用场景探讨 此技术广泛适用于各类复杂工业过程自动化领域内需要精确稳控制的任务当中,比如化工生产装置温度压力控、电力系统频率电压管理等场合均可见其身影。此外,在交通工程方面也有着不俗的表现,例如前述提到过的高速铁路车辆悬挂减振系统就成功采用了类似的思路实现了良好的乘坐舒适性和安全性保障[^3]。
评论 168
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Michael Faraday

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

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

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

打赏作者

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

抵扣说明:

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

余额充值