前几日写了一篇PID算法学习笔记,并幻想了一个场景进行算法仿真。经过不断探索后,博主发现,PID算法的精髓不在算法逻辑,而在于PID三个参数的值。本篇随笔将延续上次的仿真实验进行调试,总结PID调参的规律和方法。


一、调参口诀

  先看看百度找到的调参口诀。

参数整定找最佳, 从小到大顺序查。①
先是比例后积分, 最后再把微分加。②
曲线振荡很频繁, 比例度盘要放大。③
曲线漂浮绕大弯, 比例度盘往小扳。④
曲线偏离回复慢, 积分时间往下降。⑤
曲线波动周期长, 积分时间再加长。⑥
曲线振荡频率快, 先把微分降下来。⑦
动差大来波动慢, 微分时间应加长。⑧
理想曲线两个波, 前高后低四比一。⑨
一看二调多分析, 调节质量不会低。⑩
 

二、调参实战

  口诀①,从小到大。根据${PID}$公式可知,积分常数${I}$越大,对输出值影响越小,而比例常数和微分常数越大,对输出值影响越大。

  因此,以${(P,I,D)=(5,500,0)}$为初始值,其仿真曲线为

  口诀②,先比例。先调节${P}$,分别为5,25,50。

  如上图,比例系数越大,曲线越快接近设定值,${P}$为50时,效果最佳。

  后积分。后调${I}$,分别为50, 5, 0.5

  如上图,积分常数P越小,曲线越快达到设定值。当${P}$为0.5时效果最佳

  再微分。再调${D}$,分别为0.005,  0.05,  0.5

  如上图,${D}$值变大,曲线并没有明显变化。通过上面几次调节,暂时得到一组较优的PID值,为

${PID_{s}=(50,500,0)}$

  进一步研究,以该值为基准,改变其中的值。

  (1)改变P值,改变为500,发现曲线很快超出了设定值,但是如果不考虑稳定性的话,该曲线能更快接近设定值。

  (2)改变I值,改变为0.02,发现曲线也会很快超出设定值,后缓慢抖动接近设定值,抖动频率小于曲线(1),根据口诀⑨,这样的曲线可以称作“理想曲线”

  (3)改变${D}$值,改变为0.0.75,曲线剧烈抖动。根据口诀⑦可知,积分系数过大,需要减小。


三、总结

  我的数学模型存在很多缺陷,并不能完全模仿真实环境。进行简单的调参后可以发现,P系数调节可能出现“一劳永逸”的情况。而I调节可以减弱P的某些过激行为,比如剧烈抖动变为缓慢震荡,D调节则增强这种行为。本实验中,D系数的作用并不明显,还应在以后的实验中多多观察。

  最后,如果调成平均值会发生什么呢?

  看,它是不是变得非常强大了……

  我,不是说了我不是标题党吗?

我,不是说了PID要平均值吗?的更多相关文章

  1. HDU 2376 树形dp|树上任意两点距离和的平均值

    原题:http://acm.hdu.edu.cn/showproblem.php?pid=2376 经典问题,求的是树上任意两点和的平均值. 这里我们不能枚举点,这样n^2的复杂度.我们可以枚举每一条 ...

  2. 记录一个多核CPU负载不均衡问题(动态绑定进程到指定cpu:taskset -pc $CPU $PID)

    昨晚和一位读者朋友讨论了一个问题:在一台多核 CPU 的 Web 服务器上,存在负载不均衡问题,其中 CPU0 的负载明显高于其它 CPUx,进一步调查表明 PHP-FPM 的嫌疑很大.话说以前我曾经 ...

  3. 漫谈PID——实现与调参

    闲话: 作为一个控制专业的学生,说起PID,真是让我又爱又恨.甚至有时候会觉得我可能这辈子都学不会pid了,但是经过一段时间的反复琢磨,pid也不是很复杂.所以在看懂pid的基础上,写下这篇文章,方便 ...

  4. SIMATIC PID温度控制

    SIMATIC PID温度控制 // VAR_INPUT ------------------------------------------------------------------- #if ...

  5. 移动端测试===PROC系列之---/proc/pid/stat 如何准确取cpu的值【转】

         /proc/ /stat 包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻. [root@localhost ~]# cat /proc/6873/stat 68 ...

  6. 自整定模糊PID算法的理论

    模糊控制系统的构成与与常规的反馈控制系统的主要区别在于控制器主要是由模糊化,模糊推理机和精确化三个功能模块和知识库(包括数据库和规则库)构成的.具体实现过程如下所示: (1)预处理: 输入数据往往是通 ...

  7. PID控制算法的C语言实现

    参考: PID控制器开发笔 浅谈位置式PID 专家PID控制在快速系统中的仿真及应用(这篇了论文介绍的积分分离PID.专家PID(脚本实现和simulink实现)很详细) PID控制算法的C语言实现一 ...

  8. C语言 · 整数平均值

    编写函数,求包含n个元素的整数数组中元素的平均值.要求在函数内部使用指针操纵数组元素,其中n个整数从键盘输入,输出为其平均值. 样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以 ...

  9. 80 端口被占用 pid=4

    80端口被pid=4的系统进程给占用的解决方法: 一般开发的时候我们都会安装sqlserver ,也会把Sql server Reporting Services 安装上去.原因就是这个服务占用了80 ...

随机推荐

  1. PHP 构造方法 __construct()

    PHP 构造方法 __construct() PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法. 构造方法 构造方法是类中的一个特殊方法.当使用 new 操作符创建一 ...

  2. CG-CTF(1)

    CG-CTF CG-CTF题目网址:https://cgctf.nuptsast.com/challenges#Web 第一题:签到题 查看页面源代码,得到flag(干杯~): 第二题:md5 col ...

  3. QT bug ig9icd64.dll

    QT bug ig9icd64.dll bugintel ig9icd64.dll 处有未经处理的异常 遇到了一个 奇奇怪怪的bug, 一般的QT程序中 在main.cpp 中初始化一个窗口进行显示后 ...

  4. PostgreSQL 10.0 preview 性能增强 - 分区表性能增强(plan阶段加速)

    标签 PostgreSQL , 10.0 , 分区表 , 子表 , 元信息搜索性能增强 背景 PostgreSQL 10.0 增强了分区表的子表搜索性能,对于涉及分区表包含子表特别多的QUERY,可以 ...

  5. TCP链接的三次握手与四次断开

    一直总觉得三次握手和四次断开,之前老师讲的有问题,经过自己再次琢磨,发现是的,老师讲的没毛病,这次也把自己的理解总结一下,让对这个知识模糊的小伙伴再换种思路去理解 首先看一下TCP三次握手发生了哪些: ...

  6. 微软Project Online落地中国

    1月18日,微软中国宣布,从即日起,Project Online服务将正式落地中国,通过由世纪互联运营的Office 365向中国用户提供卓越的项目组合管理(PPM)联机解决方案,助力团队迅速启动项目 ...

  7. 2019年 ICPC亚洲区预赛(上海赛区)总结

    首先,我要说,我输了,输给了自己的无知,输给了自己的心态与实力. 上海区域赛,打铁而归,最终还是没有比过自己SLG的朋友.要说什么呢?实力的差距,还是说给自己的失败找借口?不能进入金牌区,为什么铜牌区 ...

  8. 图论--差分约束--POJ 3159 Candies

    Language:Default Candies Time Limit: 1500MS   Memory Limit: 131072K Total Submissions: 43021   Accep ...

  9. CentOS7 安装boost

    (1)到这个网址www.boost.org下载相应的代码包,我下载的是目前最新的版本boost_1_59_0.tar.bz2 (2)进入目录执行解压操作:tar -jxvf boost_1_59_0. ...

  10. ansible roles 自动化安装

    例:  ansible roles 自动化安装memcached 文件目录结构如下: cat memcached_role.yml - hosts: memcached remote_user: ro ...