赛博物理系统的控制和控制理论
柏舟 新冠4年 04-04
我们是否需要/有能力控制一个系统?很多东西不需要控制,比如考试的分数。有一些东西我们没有能力控制,比如踢出去的足球,别人的心情,外部的环境。
假如系统的物理方程是已知的,可控的,那么已知输入就已知输出,求输入到输出的函数的逆就可以得到系统的开环控制。系统闭环控制的必要性来自于系统的结构未知,测量结果不准确和外在环境干扰。这是因为,一方面制造每个产品不可能完全一致,实际的参数和预定的参数有误差,另一方面外部环境有额外的干扰或者测量有误差,这些都会影响预定目标的实现。为了达到控制目标,就必须引入闭环控制修正误差。
误差、目标的相关问题
系统的数学模型重要的原因是:假如有一个灯泡给5V就发光,如果不知道系统模型,可能通电10V就炸了。对于灯泡、电机这些简单的控制对象,你可以通过试验的方法推测系统的参数,那么核电站呢?物理系统的模型是容易确定的,建立常微分方程组,只要可以求解就可以对控制输出进行分析。
相对而言,最大的问题是如何量化误差和损失函数。或者说需要建立一个标准评价系统是否达到目标,以及达成目标过程的质量。比如,控制一个电机的转速,那么误差就是当前转速减去目标转速。而目标就难以定义——比如超调量和调节时间,一个是无量纲参数,一个单位是时间。很难构造一个损失函数来量化多目标多需求,从而评价这套控制律的优劣。
物理系统的误差相对而言比较容易建模。假设你的目标是写一个好文章,如果没有达到好的标准就继续修改,你怎么定义误差函数?当对一个难以量化的问题进行建模时,你唯一能做的只有改进,很难找到一个方法来判断你和目标的距离,同样的,你也很难分析达成目标的过程是好是坏。
此外,还有能力相关的问题,你能够输入的能量越大,那么你潜在的控制能力就强,但是如果你输入的能量不够,你就没有办法控制。
物理系统
物理系统一般是连续的,输入输出是双向的。向一个物体输入一个力,那么就会受到一个反作用力;输入的电流等于输出的电流。对于这些连续的系统,可以建立微分方程,求出和时间相关的数值解,进而分析结果是否满足要求。
物理系统潜在的问题是微分方程过于复杂,不一定算得出来,所以往往就是将非定常模型定常化,非线性模型线性化。这也是PID在小范围内好用的原因,因为连续函数可以麦克劳林级数展开,高阶小项当误差处理,你根据这个线性的方程做一个PID就完了。但是一旦超过小范围,高级小项就不再小了,PID就控不住了。
此外,物理系统往往存在非线性结构,比如继电器、多足机器人的移动。当系统存在非线性结构,线性控制方式就不一定能用了。还有混沌问题,但是我能力不够就不写了。
赛博系统
与物理系统不同,基于信息的赛博系统的特点是输入是单向的,输入一个信号、一个命令,并不一定有对应的影响。比如,我需要UDP定时发包,我也可以像传统控制一样,基于发包时间做一个PI控制。但是,如果我需要严格控制误差的话,就需要sleep略小于发包时间然后做一个自旋锁,你能用传统方法分析这种控制吗?
评价赛博系统的性能与物理系统相差非常大,赛博系统的约束和未知往往来自于人为的设计,来自于硬件/物理的约束较少。比如UDP发包,评价的方式往往是发包时间准确性,和算法的时间复杂度。在实现方式上,大量使用开环控制,往往可以通过分层设计将控制的复杂度屏蔽在底层,比如让操作系统内部实现自旋锁。
赛博系统的性质与物理系统类似,比如对系统的了解程度越高(信息熵越高),那么潜在的控制能力就越强。但是,为了降低系统复杂度,会屏蔽一些技术细节。在99%的情况下,系统的抽象足够完成任务,但是1%必须要深入细节控制,这时候就彻底完蛋。比如,UDP这种网络层协议就没法做数据链路层的拥塞控制,如果你想要设计一个像QUIC一样的协议用到拥塞控制怎么办?所以,很多时候好的设计不一定是在所有情况下正确的设计。所有情况下正确的设计一定不是简单的设计。
总结
在系统设计阶段,需要辨识哪些部分是需要控制的,并且有能力控制的。
控制中最重要的是辨识系统以及找到误差函数和衡量过程优劣的标准(损失函数),基本问题就解决了一大半。
赛博系统和物理系统存在极大的差异,从控制理论和思维方式上有很大区别。
赛博物理系统交互没写。有机会可以介绍一下模糊逻辑,对于难以量化的目标的控制。