目前世界上使用最广的控制算法

开通VIP,畅享免费电子书等14项超值服

首页

好书

留言交流

下载APP

联系客服

2024.01.20浙江

PID(Proportional-Integral-Derivative)控制算法是一种经典的反馈控制方法,广泛应用于自动控制系统,例如温度控制、速度控制、位置控制等。

PID控制算法的核心包含三个部分:比例项(P),积分项(I),和微分项(D)。它们分别对系统的当前误差、过去误差的积累和误差的变化率进行响应。PID控制器的输出由这三部分的加权和组成。

其中,e就是当前误差,Kp、Ki和Kd分别是比例、积分和微分的调节系数。

大白话理解就是如下:

让我们结合一个简单的温度控制的案例来理解一下现实工程应用中如何实现PID控制。假设你有一个电热器,你想让它保持在40摄氏度。你可以用PID算法来调整它的加热功率。

让我们看一下如何用C语言实现PID控制。我们用C语言代码实现上面的让水温保持在40摄氏度的控制算法代码如下:

我们来解释一下代码,main函数中setpoint就是温度目标值,我们目标水温是40摄氏度,所以我们这里是40。current_value就是温度实际当前值。prev_error是记录上一次的温度误差。integral记录所有累积误差值。kp,ki和kd分别是三个控制项的权重比例系数,我们就是通过调节这三个参数来到较好的控制效果。dt是控制周期为1s。for循环次数变量i就是是控制周期次数,在这里我们只是简单给个10次。每一次循环我们都调用compute_pid函数来计算误差输出。compute_pid函数就是核心代码,实现了PID算法,下面我们来看看如何计算的,需要结合上面的数学公式理解:

第4行,doubleerror=setpoint-current_value;这是将目标值减去当前温度值得到的error是当前时刻的温度误差。

第9行,就是总输出计算,三个误差控制项分别乘以自己的权重比例系数,最终将三个误差控制项叠加输出。

第30行就是将本次周期的误差控制输出叠加到实际当前温度值,起到调节当前温度的目的。

到此我们就完全学会了通过C代码简单实现PID控制。

通过上面你可以知道,PID算法公式固定,其实代码实现工程中应用中也基本上是通用固定的,所以实现不难,难就难在如何调参?如何通过调整kp,ki,kd三个误差控制项的权重系统值,让你的控制效果达到最佳状态。

调整PID的三个参数就像是调整你做菜的火候一样,需要一些经验。这里有一些宝贵的通用调参思路:

下面我们结合曲线图来展示一下调参的大概过程。

1.这是上面C代码的默认参数,Kp=0.05,Ki=0.01,Kd=0.5,当前实际温度输出曲线如下:

图中红色水平线是目标值40,蓝色线是温度实际输出值,下面所有曲线图都一样。

我们可以看到Kp比例系数过小导致温度10个控制周期结束也未达到40摄氏度。

下面要加大kp。

2.将Kp=0.5,其他不变,Ki=0.01,Kd=0.5,曲线如下:

可以看到结果过冲了,第一个温度值直接大于40度了,后面一直震荡,这样肯定不行。

3.将Kp=0.3,其他不变,Ki=0.01,Kd=0.5,曲线如下:

可以看到这个比例调节响应就比较合适,而且快速稳步最终温度接近40。

4.Kp=0.3差不多,我们调整一下ki,Ki=调整为0.1,Kd=0.5,曲线如下:

可以看到明显积分项过于调整,其实上一次默认ki=0.01的时候,我们看到累积误差最后非常小,0.01这个值本身已经比较合适了,现在放大10倍积分项,一下子就过调了,让大家了解一下过调是什么样子的,这里我们将ki改回到0.01,ki就不做调整了。

5.Kp=0.3,Ki=0.01,下面我们看一下温度值在靠近40度的过程中,温度值的震荡非常大,这个应该是微分项权重过大,导致变化率影响过于敏感,我们减小点kd系数,调整为Kd=0.2;曲线如下:

可以看到Kd调小之后,效果好很多,整个响应曲线光滑很多,震荡非常小了。

当然到此,调参工作其实还是没结束,因为通过调节还能达到更好的效果,这里我就不继续下去了,以此几步调参基本给大家展示一下调参大概过程,相信通过以上过程大家对调参有个更加直观深刻的体会了。

控制领域有句话,控制算法工程就是调参大师,这句话虽然有点嘲讽但是是大实话,不过记住一点,调参能调到一个比较好的效果前提是你要深刻理解算法思想。

THE END
1.计算机10大经典算法计算机经典算法合并:将已排序的子数组合并成更大的有序数组,直到最终得到完全有序的数组。 性能分析 归并排序在性能方面表现出色: 适用场景 归并排序特别适用于以下场景: 处理大规模数据 需要进行外部排序(如大文件排序) 要求排序算法具有稳定性 代码实现 以下是使用Java实现归并排序的示例代码: https://blog.csdn.net/2401_86544677/article/details/143141716
2.无监督异常检测深度学习无监督算法有哪些知乎无监督异常检测深度学习 无监督算法有哪些 知乎 机器学习作为目前的热点技术广泛运用于数据分析领域,其理论和方法用于解决工程应用的复杂问题。然而在机器学习领域,没有算法能完美地解决所有问题(数据集的规模与结构、性能与便利度、可解释性等不可能三角),识别问题,选择合适的算法(可落地运用)是本文想讨论的问题。https://blog.51cto.com/u_16213619/8330213
3.SM2国密算法的SSL证书支持的浏览器有哪些?SM?2算法的SSL证书支持的浏览器有:密信浏览器、360国产浏览器、红莲花、目前除了这些,其他的浏览器暂不支持SM2国密算法的SSL证书。同时,请先确认服务器是否支持SM2国密算法的SSL证书。https://www.ihuandu.com/help/faq/169.html
4.大数据业务开发翼MapReduce常见问题操作类Kudu支持的压缩算法有哪些? Kudu目前支持的压缩算法有 snappy、lz4和zlib ,默认是 lz4。 如何查看Kudu日志? 1.登录集群的Master节点。 2.执行su - omm命令,切换到omm用户。 3.执行 cd /var/log/Bigdata/kudu/ 命令,进入到“/var/log/Bigdata/kudu/”目录,即可查看Kudu日志信息。 新建集群Kudu服务异常如何处https://www.ctyun.cn/document/10000070/10357870
5.AI将爆发哪些超级应用?二是智能汽车相当于“带轮子的机器人”,由于两者的技术难点(算法)和核心零部件(传感器、算力芯片)相似,智能汽车肩负着给人形机器人研发开路的使命。高度智能化的汽车也能在不同场景中学习,模型在迭代中不断提升自身驾驶决策的准确度。 智能驾驶就是最好的“用硬件跑AI”。全球不少企业都有技术积淀:国内的百度Apollohttps://finance.jrj.com.cn/2024/11/03191244882593.shtml
6.浩云科技:公司目前具有UWB相关算法模组标签基站和多行业解决方案每经AI快讯,有投资者在投资者互动平台提问:请问公司UWB技术是否已有应用于生物安全领域的案例?是否可以找领域总经销商或合作商大力推广此项业务?谢谢 浩云科技(300448.SZ)10月14日在投资者互动平台表示,公司目前具有UWB相关算法、模组、标签、基站和多行业解决方案的自主知识产权。UWB技术室内精准定位、信号穿透性强等https://finance.eastmoney.com/a/202110142139884275.html
7.数据挖掘论文的参考文献但是要求技术全面,编程、SQL,Linux,正则表达式,Hadoop,Spark,爬虫,机器学习模型等技术都要掌握一些。前后端可能是要求精深,数据挖掘更强调广博,有架构能力更好。 4.目前在学习机器学习,如果想找数据挖掘方面的工作应该学习哪些内容? 打基础是最重要的,学习一门数据挖掘常用的语言,比如Python,Scala,R;学习足够的Linux经https://www.yjbys.com/bylw/cankaowenxian/76866.html
8.目前主流的深度学习算法模型和应用案例虽然深度学习算法具有自学习表示,但它们依赖于反映大脑计算信息方式的人工神经网络。在训练过程中,算法使用输入分布中的未知元素来提取特征、对对象进行分组并发现有用的数据模式。就像训练机器进行自学一样,这发生在多个层次上,使用算法来构建模型。 下面介绍一下目前主流的深度学习算法模型和应用案例。 https://www.elecfans.com/d/2353942.html
9.你问沃答运营专栏问:沃尔玛美国站的商品排名算法有哪些影响因素? 答:沃尔玛美国站的商品排名会从多方面去综合考量,譬如listing quality,商品评论,价格,时效,售后等,详情可参考Seller help文件 问:沃尔玛后台可以设置优惠券或者自动定价的功能吗? 答:暂时没有优惠券和自动定价设定的功能 https://www.cifnews.com/article/99211
10.北京大学数学学院Q:感觉这个问题跟很多方向都有联系,比如统计物理? A:对,跟统计物理有联系,跟计算复杂性有联系, 跟统计推断也有一点联系。因为kSAT问题最坏的情形是非常难以计算的,那么我们可以转而考虑随机的kSAT问题,我们希望知道在哪些参数条件下是可以有有效算法来计算的,在哪些参数条件下应该是非常难以有有效算法的。我们解决的https://www.math.pku.edu.cn/xyxw/133705.htm
11.目前主要的加密算法有哪些?是说明其特点。目前主要的加密算法有: (1)对称密码算法:对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何https://easylearn.baidu.com/edu-page/tiangong/bgkdetail?id=98b6ee25bd64783e09122b24&fr=search
12.朱璘:ChatGPT背后是颠覆性技术,中国AI差距在哪澎湃新闻:国内AI产业的发展目前存在什么困难和阻碍,希望得到哪些支持? 朱璘:AI技术的发展离不开三件事——算法、算力和数据。算法主要取决于要有足够的工程师,算力则对资金投入、高算力的GPU都有要求,这方面我们也面临“卡脖子”的问题,需要得到政策上的支持。 https://m.thepaper.cn/rss_newsDetail_22016998
13.进阶之光笔记三垃圾标记算法 目前有两种垃圾标记算法:引用计数法和根搜索算法(可达路径法) java中有四种引用:强引用、软引用、弱引用和虚引用。 1.强引用:新建一个对象时就创建了一个具有强引用的对象,也就是new出来的对象,这种引用的对象,垃圾收集器绝不会回收它。 https://www.jianshu.com/p/94d7ccf4a684