把剩下的两篇给你们贴出来吧。
5 l5 B0 B% T$ k* {5 f0 o- C0 x. x+ Z) ~" f% L+ x: E4 ^
+ E" w* H" h3 _) @3 ~4 b7 x都看过舞龙吧?一个张牙舞爪的龙头气咻咻地追逐着一个大绣球,龙身子扭来扭去,还时不时跳跃那么一两下。中国春节没有舞龙,就和洋人的圣诞节没有圣诞老人一样不可思议。想象一下,如果这是一条眼睛看不见的盲龙,只能通过一个人捏着龙尾巴在后面指挥,然后再通过龙身体里的人一个接一个地传递控制指令,最后使龙头咬住绣球。这显然是一个动态系统,龙身越长,人越多,动态响应越迟缓。如果只看龙头的位置,只操控龙尾巴,而忽略龙身子的动态,那就是所谓的输入-输出系统。经典控制理论就是建立在输入-输出系统的基础上的。对于很多常见的应用,这就足够了。
$ `5 W2 X6 y4 I, [0 @5 }
: B5 u# s' q' N
/ a5 E; @- p) t. h/ m3 b6 G
8 \3 Q) \3 f8 s5 m" S但是卡尔曼不满足于“足够”。龙头当然要看住,龙尾巴当然要捏住,但龙身体为什么就要忽略呢?要是能够看住龙身体,甚至操纵龙身体,也就是说,不光要控制龙尾巴,控制指令还要直接传到龙身体里的那些人,那岂不更好?这就是状态空间的概念:将一个系统分解为输入、输出和状态。输出本身也是一个状态,或者是状态的一个组合。在数学上,卡尔曼的状态空间方法就是将一个高阶微分方程分解成一个联立的一阶微分方程组,这样可以使用很多线形代数的工具,在表述上也比较简洁、明了。
- L" F1 ? }* `
* x, d; l! C3 O! w. a: U 3 L* S y/ |; L0 L* ?& O
3 k! n8 D2 b6 u
卡尔曼是一个数学家。数学家的想法就是和工程师不一样。工程师脑子里转的第一个念头就是“我怎么控制这劳什子?增益多少?控制器结构是什么样的?”数学家想的却是什么解的存在性、唯一性之类虚头八脑的东西。不过呢,这么说数学家也不公平。好多时候,工程师凭想象和“实干”,辛苦了半天,发现得出的结果完全不合情理,这时才想起那些“性”(不要想歪了啊,嘿嘿),原来那些存在性、唯一性什么的还是有用的。* [+ \2 t- o+ C+ o. u2 p- M
) l& G+ R' J1 c( E6 j8 `8 _/ S; o* Y9 l5 y
9 r3 L' S; w+ s6 U4 I. O
' J: T9 P& q$ |/ l/ c& l
还是回过来看这条龙。现在,龙头、龙尾巴、龙身体都要看,不光要看,还要直接操控龙头到龙尾的每一个人。但是,这龙不是想看就看得的,不是想舞就舞得的。说到“看”,直接能够测量/观测的状态在实际上是不多的,所谓看,实际上是估算。要是知道龙身体有多少节(就是有多少个人在下面撑着啦),龙身体的弹性/韧性有多少,那么捏住龙尾巴抖一抖,再看看龙头在哪里,是可以估算出龙身体每一节的位置的,这叫状态观测。那么,要是这龙中间有几个童子开小差,手不好好拉住,那再捏住龙尾巴乱抖也没用,这时系统中的部分状态就是不可观测的。如果你一声令下,部分童子充耳不闻,那这些状态就是不可控制的。卡尔曼从数学上推导出不可控和不可观的条件,在根本上解决了什么时候才不是瞎耽误工夫的问题。这是控制理论的一个重要里程碑。/ h, P6 h. A; f& v
4 T L4 v. V d
2 r1 `* ^2 n0 t; Y, ^3 Y
! d$ [4 }$ E$ Q% L" n0 s: e& ^再来看这条龙。如果要看这条龙整齐不整齐,排成纵列的容易看清楚;如果要清点人数,看每一个人的动作,排成横列的容易看清楚。但是不管怎么排,这条龙还是这条龙,只是看的角度不同。那时候中国人的春节舞龙还没有在美国的中国城里闹腾起来,不知道卡尔曼有没有看到过舞龙,反正他把数学上的线性变换和线性空间的理论搬到控制里面,从此,搞控制的人有了工具,一个系统横着看不顺眼的话,可以竖着看,兴趣来了,还可以斜着看、倒着看、拧着看,因为不管怎么看,系统的本质是一样的。但是不同的角度有不同的用处,有的角度设计控制器容易一点,有的角度分析系统的稳定性容易一点,诸如此类,在控制理论里就叫这个那个“标准型”。这是控制理论的又一个里程碑。" y7 E/ z) x& _2 L* I
) z! r- u% O: K
' m% k0 X. W; h' Q2 J# y$ a, x+ B+ j' X# V$ K& a0 W
观测状态的目的最终还是控制。只用输出的反馈叫输出反馈,经典控制理论里的反馈都可以归到输出反馈里,但是用状态进行反馈的就叫状态反馈了。输出反馈对常见系统已经很有效了,但状态反馈要猛得多。你想象,一个系统的所有状态都被牢牢地瞄住,所有状态都乖乖地听从调遣,那是何等的威风?台商大奶们的最高境界呀。) f9 Q) T9 i D4 d- m( c. ?7 S' o
- R- M7 [: W! j2 F; X 1 m2 A8 _6 ^* P- }
# x+ ]5 ?* v+ R; Q; v5 @2 {$ Z尽管学控制的人都要学现代控制理论,但大多数人记得卡尔曼还是因为那个卡尔曼滤波器(KalmanFilter)。说它是滤波器,其实是一个状态观测器(stateobserver),用来从输入和输出“重构”系统的状态。这重构听着玄妙,其实不复杂。不是有系统的数学模型吗?只要模型精确,给它和真实系统一样的输入,它不就乖乖地把系统状态给计算出来了吗?且慢:微分方程的解不光由微分方程本身决定,还有一个初始条件,要是初始条件不对,微分方程的解的形式是正确的,但是数值永远差一拍。卡尔曼在系统模型的微分方程后再加了一个尾巴,把实际系统输出和模型计算的理论输出相比较,再乘上一个比例因子,形成一个实际上的状态反馈,把状态重构的偏差渐进地消除,解决了初始条件和其他的系统误差问题。卡尔曼滤波器最精妙之处,在于卡尔曼推导出一个系统的方法,可以考虑进测量噪声和系统本身的随机噪声,根据信噪比来决定上述比例因子的大小。这个构型其实不是卡尔曼的独创,隆伯格(Luenburg)也得出了类似的结构,但是从系统稳定性角度出发,来决定比例因子。同样的结构大量用于各种“预测-校正”模型结构,在工业上也得到很多应用,比如聚合反应器的分子重量分布可以用反应器的温度、进料配比、催化剂等来间接计算,但不够精确,也无法把林林总总的无法测量的干扰因素统统包括进数学模型里,这时用实验室测定的真实值来定期校正,就可以结合数学模型及时地特点和实验室结果精确的特点,满足实时控制的要求,这或许可以算静态的卡尔曼滤波器吧。卡尔曼滤波器最早的应用还是在雷达上。所谓边扫描边跟踪,就是用卡尔曼滤波器估计敌机的位置,再由雷达的间隙扫描结果来实际校正。实际应用中还有一个典型的问题:有时候,对同一个变量可以有好几个测量值可用,比如有的比较直接但不精确,有的是间接的估算,有很大的滞后但精确度高,这时可以用卡尔曼滤波器把不同来源的数据按不同的信噪比加权“整合”起来,也算是民用版的“传感器融合”(sensorfusion)吧。
2 O8 H8 V, I. u& f6 {* ?6 @4 P# ^% t5 z
1 }) z, R6 T5 ~5 Y; M) T
7 W. K2 i1 [& C/ U5 H6 D
除了卡尔曼滤波器外,卡尔曼的理论在实际中用得不多,但是卡尔曼的理论在理论上建立了一个出色的框架,对理解和研究控制问题有极大的作用。
+ F3 v2 d, {& [: b" g) o6 |$ e" w1 [
6 o' C3 x8 Q( Z" v, I) S1 l " N0 N% [% k( L( w
/ i* S; ~9 v1 D) g7 e' X! E. F
顺便说一句,卡尔曼的理论基本局限于线形系统,也就是说,十块大洋买一袋米,二十块大洋就买两袋米,都是成比例的。实际系统中有很多非线性的,两千块大洋还能买两百袋米,但两千万大洋就要看米仓有没有货了,不是钱越多,买的米越多,有一个“饱和”的问题。另一方面,要是米仓有足够的货,两千万大洋的集团购买力强,或许就可以买三百万袋米了。这些只是非线性的简单例子。所有偏离线性问题的都是非线性,所以非线性的问题研究起来要复杂得多。实际系统还有其他特性,有的是所谓时变系统,像宇宙火箭,其质量随时间和燃料的消耗而变,系统特性当然也就变了。很多问题都是多变量的,像汽车转弯,不光方向盘是一个输入,油门和刹车也是输入变量。状态空间的理论在数学表述上为线性、非线性、单变量、多变量、时变、时不变系统提供了一个统一的框架,这是卡尔曼最大的贡献。
: Q$ i4 B; i* Z' h; Y( |. U! P3 I+ t0 u8 Q
. `& y! f6 z- {2 k/ e$ S
8 K% S* o! p, q最优控制
- O3 S, I- C q Q+ k5 o: x' K* q; d }6 G! B1 O
4 \2 L1 {0 O% [' l( L. m4 Q
( F# E' \$ V) X2 h5 s G
前面说到,搞控制有三拨人:电工出身的,化工出身的,和应用数学出身的。在卡尔曼之前,电工出身的占主导地位,数学家们好在象牙塔里打转转,化工出身则还对控制理论懵里懵懂,还在“实干”呢。卡尔曼之后,一大批数学出身的人,利用对数学工具的熟悉,转攻控制理论。一时间,控制理论的数学化似乎成了“天下大势,顺我者昌,逆我者亡”了。在状态空间的框架下,多变量没有太多的问题好研究,于是最优化成为控制理论的新时尚。# @9 u" r8 h" }2 u
S: O' R; j3 k! u+ F* T) Q @ ) \# R( ]" Y; p* b5 B( D) f2 y
7 }5 S1 B) n0 ?+ T. F6 R8 ]% D
对于一根给定的曲线,求一阶导数为零的点,就是这个曲线的极点;在对这一极点求二阶导数,大于零就是最小点,小于零就是最大点。这是牛顿老爷子就整明白的东东,现在高中或大一人人都学过的东西。但是动态系统是一个微分方程,对微分方程求一阶导数为零,就导致变分法和所谓欧拉方程。但这个东西用起来不方便。实际的最优控制不大直接使用变分。
- |8 o% g" o$ g& \) v. X5 q" A7 j, R1 s# K
0 Q8 I. Y) l, P1 C, Z \2 ~) z; O
2 x4 H! J4 _3 p5 d+ D, U- |2 p俄罗斯是一个奇怪的地方。老毛子们要么蔫蔫的,要么疯狂的。俄罗斯的悲剧电影看得你也郁闷得想去自杀。但是老毛子要是搭错筋整出一个喜剧呢?那你要么跟着疯狂,要么被逼疯狂。就是这么一个地方,除了无数托尔斯泰、柴可夫斯基、普希金、屠格涅夫等文艺巨璧外,俄罗斯也盛产数学家,其中两个是庞特里亚京和学控制的人老惦记着的李亚普诺夫。
4 {; o3 \$ L9 }5 O3 e. e) E$ m/ K' G. p
" Z+ ?: E, P7 H: d7 T/ d
* G: s" e a9 W$ b7 Z! B6 U7 w庞特里亚京的极大值原理听起来吓人,其实说白了很简单。看见那山吗?山顶就是最高点(切,这还用说?);看见那山坡吗?要是在山腰划一道线,从山下往上爬,尽管山坡还在继续往上延伸,但是到线为止,不得逾越,那山腰上那道三八线就是最高点(切,这还用说?)。这就是庞特里亚京的极大值原理。当然啦,庞特里亚京是用精巧、深奥的数学语言表述的,要不然他在数学界里也别混了。不过呢,意思就是这么一个意思。
2 [% W {7 c y1 U4 i# H5 n+ q! [
0 l! P: P2 A: N+ C8 E
: u- ^# w# T* L% `: P2 r! c庞特里亚京极大值原理的一个典型应用就是所谓最速控制问题,或者叫时间最优控制(timeoptimalcontrol)问题,简单地说,就是给定最大马力和最大刹车功率,问题是怎么开汽车能够最快地从A点开到B点(什么转弯、上下坡、红绿灯,这种琐碎的事情也要拿来烦人?一点品味都没有!)。你可以用优美但繁琐的数学求证,或者用膝盖想想:最快的方法,就是一上来就加足马力,全速前进;然后在不到终点的某一地点,全力刹车,使慢下来的汽车在到达终点时正好停下来。这是最快的方法,不可能比这更快了。稍微发挥一点想象力,可以想象“梆”的一下,控制量的油门板一脚到底,再是“梆”的一下,刹车板一脚到底,控制任务就完成了。所以最速控制也叫“梆-梆”控制(bangbangcontrol)。) U+ O$ L: m4 v( l
( g: ^* ^( p9 r
% \+ q3 m. k% c' p8 @; {! G
3 x2 ^7 V7 B! l# t! O+ T4 X
最速控制在理论上是一个很有趣的问题,解法也是简洁、优美,但在实际中直接使用的例子实在是凤毛麟角,一般都是开始时用“梆-梆”,或者匀速上升到最大控制,以缓和控制的冲击力;到终点附近时,改用PID作闭环微调,以克服“梆-梆”对系统模型误差十分敏感的缺点。电梯控制就是这样一个例子。从一楼到四楼,电动机很快匀速上升到最高转速,一过三楼,电动机就下降到较低的转速,然后根据电梯实际位置和楼面之差,有控制地减速,直至停下来。要是控制参数调得好的话,一下子就稳稳当当地停下来;要是调的不够好,会在停下来之前上下晃荡几下。8 h% Y8 `! [# P
$ b L- Q8 `0 O1 a% U& g6 d
- B/ l# Y0 h* t3 u
4 R* V- e5 I- h8 ?; B+ W' o6 _$ _& l8 K% d! Q
最速控制问题是较早的最优控制问题,它提供了一个很有趣的思路,但这颗树上开花结果不多。相比之下,最优控制的另外一支枝繁叶茂,有生气得多了。这一支就是线型二次型最优控制(linearquadraticcontrol)。数学是有趣的,但数学也是盲目的。在数学上,最优化问题就是一个在曲面上寻找凸点的问题,只要你能把一个物理问题表述成一个曲面,数学是不理会姓无姓资的。既然如此,控制偏差的平方在时间上的累积就是很自然的选择,二次型就是平方在线性代数里的说法。线型系统的偏差平方有很好的性质,这山峰是一个馒头山,没有悬崖峭壁,没有沟坎,容易爬;一山只有一峰,不用担心找错地方。不过这山峰不能只包含控制偏差,还要包含控制量,原因有三个:& I& n" f" r. g' B
) X# ?4 ]1 W+ i3 H* x" F5 F! s0 E
" \% p; b0 u8 ]5 Y! B/ V. ^" g4 v- z* H6 r
1、如果不包括控制量,那最优控制的解是没有意义的,因为无穷大的控制量可以使累计平方偏差为最小,但无穷大的控制量是不现实的。
7 ^* i( T8 w( \; r k2 Q' D; u! Q# ~, l8 Q$ m/ P# ^# C1 y
5 j- }( ~; i$ c7 s! ] z, | P; N5 z! A, h# }! l1 G7 K9 F# O
2、控制量的大小通常和能量、物料的消耗连在一起,实际控制问题一般是“在最小能量、物料消耗小达到最高的控制精度”,所以在“山峰”中同时包含控制偏差和控制量是很自然的。
. C' n2 F0 V `4 ~: M8 G
0 P2 m- ?4 N5 j! {2 l& `' x5 l & h S1 a7 r9 R" ^
0 i0 j2 q% D8 F9 @$ U9 G
3、系统模型总是有误差的,误差“总是”在高频、大幅度控制作用下最突出,所以为了减低系统对模型误差的敏感性,也有必要限制控制量的大小。
+ k, p. [7 ~# A
( ~1 i4 @6 p9 P& P% ` g/ `0 H! n' x& m
" {; [. P1 J! D# W6 u: c
所以线性二次型最优控制的“目标函数”(也就是定义山峰形状的数学表述)是一个控制偏差和控制量各自平方的加权和的积分。积分当然就是“在时间上的累积”了,加权和其实就是在控制偏差的平方项和控制量的平方相前分别乘以比例因子,然后再相加。两个比例因子的相对大小决定了谁更重要。运用矩阵微分和线型代数工具,不难导出线性二次型控制律—一个基本的状态反馈控制律!只是反馈增益矩阵是按最优化的要求计算出来的。
( i6 K2 r' ]; p V; |
1 p' k4 `+ S4 T8 a( E# M( j u / c$ \; X$ C% v& D" }% o# |$ A4 `
3 J* @1 b/ J4 }: y$ V$ _, a5 P
线型二次型最优控制开创了一整个新的控制领域,很快从状态空间走出来,进入其他领域,子孙繁衍,人丁兴旺。这一支是当今最优控制在应用中的主体。 A+ w: X7 e( M c; _
$ ~1 A: B! }3 q4 V& t, w ! T0 O t( P) G+ Z5 O$ H) q
8 \- p& S( N" l; b. [" y
线性二次型控制具有各种各样的优点,但是,线性二次型没有回答一个最基本的控制问题:这个闭环系统是不是稳定。这里,我们的饱受牵记的李亚普诺夫同志出场了。李亚普诺夫也是一个脑子搭错筋的人,一百多年前,玩微分方程玩出了瘾,整出两个稳定性(或者叫收敛性)的定理,前一个没有什么太了不起的,把非线性系统线性化,就是把一根曲线用很多一小段、一小段的直线近似,然后按直线来分析。后一个就有点邪门了。老李琢磨出一个定理,说是对于任意一个系统,如果能找到一个自我耗散的能量函数(数学说法是正定函数),也就是其数值永远为正,但随时间渐进地趋向零,或者说这个能量函数对时间的导数永远为负,那这个系统就是稳定的。据说定理的证明是一个天才的杰作,我等凡人只有频频点头的份。不过想想也对,系统的能量耗散没了,系统不也就安分下来了吗?当然就稳定喽。4 P! Z0 q' C5 P" n4 S$ @
8 p7 u' z% Y& V, k u9 F# |
4 U O' I, A. e) U- {
# H+ V9 Y* u, P# z+ E李亚普诺夫比卡尔曼还要数学家,他的定理只给出“如果存在……就……”,怎么找这个自我耗散的能量函数他没说,这个函数一般是什么样他也没说。这难不倒搞自动控制的广大革命群众。不是要正定函数吗?不是没有限制什么形式的正定函数吗?那就用控制偏差的平方吧。说干就干,但是干着干着,好玩的事情出现了,对偏差平方(或二次型)的求导,导出了和线性二次型最优控制推导过程中同样出现的一个所谓黎卡蒂方程(Riccatiequation),感情这是殊途同归呀。换句话说,线性二次型控制总是稳定的。这是线性二次型控制的一个重要贡献:把最优性和稳定性连到一起。8 j9 b9 P3 O3 |3 N V; ~
. {, M7 u7 k) c5 O, E6 U
7 z# C/ ~( e7 ]- C1 ^
& q& _) E6 E+ {8 U- ?" p6 z( }
再扯一句李亚普诺夫,他的第二个定理非常威猛,但是有点像一个奇形怪状的大锤,到现在人们还在找合适的钉子,好用这把大锤砸几下。线性二次型控制是已知的仅有的几个钉子之一,另一个是变结构控制,也可以用李亚普诺夫方法,这是题外话了。
) @, q% D/ Z/ Y( \! q& c$ H5 t# o) c* i. o, m( |; u) b
5 c' m2 U' W" A1 [
0 N; k) X! Y0 O& X N
数字控制
! K" [" C8 ~) h8 Q. w: ]$ U2 C! s; `. I
2 w0 L+ r. ?, x' L3 P
" o; N& G. l6 Y2 y; `都说瓦特的蒸汽机后,计算机是影响人类进程最大的发明,计算机当然也对自动控制带来深刻的影响。如前所述,控制理论基本上都是围绕微分方程转的,所以在“本质”上是连续的。但是数字计算机是离散的,也就是说,数字控制器的眼睛不是一直盯着被控对象看的,而是一眨一眨的。数字控制器的“手脚”也不是一刻不停地连续动作的,而是一顿一顿的。这是数字计算机的天性使然。于是,传统的控制理论全部“翻译”到离散时间领域,微分方程变成了差分方程,所有方法、结论都有了连续、离散两套,不尽相同,但是大同小异。& i, ~4 o I/ ]2 {" {" M
" N. [1 v9 v' ?6 M! R 8 H5 r: ?3 `5 X: V& K. U
- K$ U1 y1 ^0 I0 Z9 ~# p, Z# l
要是数字控制就是简单的连续系统离散化,计算机控制也就没有什么了不起。离散控制带来了一些连续控制所不可能具备的新特点,这就是:差分方程用清晰界定的时刻之间的关系来描述动态过程。回到洗热水澡的例子,如果热水龙头不在跟前,而是在村外一里地的小锅炉房里,你只能用电话遥控,那水温或许可以表示为' B7 T# t8 J/ m9 ~2 Q2 Q7 i, s
* t5 Z+ h: o! }
8 n, B- p. x) ?' O F1 T" ], `, d5 [# }- {
下一分钟水温=0.7*现在水温+0.2*上一分钟水温+0.1*再上一分钟水温+0.4*(5分钟前锅炉房龙头开度-6分钟前锅炉房龙头开度)
4 {. j$ J7 P+ }0 S: w, u/ q
5 v: ? U- O2 S7 j8 K 5 x- x% f6 E1 E# x: |: Y
! i5 O" B: s9 N5 }' F+ l
显然,下一分钟的水温受现在水温的影响比上一分钟和再上一分钟的水温的影响要大,但锅炉房龙头开度要是不变,现在、上一分钟、再上一分钟水温都一样的话,下一分钟的水温也应该和现在的水温一样。为什么用5分钟前锅炉房的龙头开度呢?那是因为热水从村外流到洗澡房要有一定的时间,这个时间就是滞后。要是把时间向前推,那现在的龙头开度就会影响5分钟后的水温。这说明了离散模型的一个重要特质:预估能力。所有预报模型都是建立在离散模型的这个预估能力上,不管是天气预报,还是经济预测,还是自动控制里对有滞后的过程的控制。' M1 _; ]$ e5 Z* _ ]
2 F9 Q: c" T5 s# L/ j5 z. m; N
2 C- k: ^% z2 R8 G4 K$ ?) }# J
5 S6 m) R7 s8 B* \9 i数字控制的另一特质是可以实施一些不可能在连续时间实现的控制规律。工业上常有控制量的变化需要和当前的实际值有关的情况。比如对于不同的产品,反应器的转化率总是大体在88-92%之间,没有太大的变化,但是催化剂可以在0.5到35ppm之间变化,采用常规的PID的话,增益就非常难设,对一个情况合适了,对另一个情况就不合适。所以催化剂需要按百分比变化率调整,而不是简单地按偏差比例调整。比如说,转化率偏离1%时,催化剂要是在0.5ppm,应该调整0.05ppm;但是在15ppm的时候,就应该是1.5ppm。这样,控制律就可以表示为
! t8 X4 p/ c* V+ F1 O% u h
1 X$ \5 D2 U+ J" r# e
7 d' _" J" e; u
4 W" Q6 m0 Z1 e" c2 P/ O ~: t当前的控制量=上一步的控制量*(设定值/当前的测量值)6 D# D9 }) D& b+ R- q
! Z0 g5 k) Y& M: Q5 y : M6 e3 N: E: G( b" [9 r
: c* O, c9 _+ Q! p2 n% ]也就是说,在被控变量高于设定值10%的情况下,控制量也增加10%;测量值和设定值一样时,控制量不再变化。实际使用时,谁除以谁要根据测量值上升你是要控制量上升还是下降来决定,控制律也要稍微修改一下,成为/ C6 ], P8 r1 P9 P- f2 \
. k7 a4 [7 K1 m' g/ G& H$ ^
0 s. e) u. c& a2 J0 e' W# Q ^0 {# V* F
当前的控制量=上一步的控制量*(当前的测量值/设定值)^k
( T$ o* ^: {& E- @" k" c! Y* `% K0 I( `
1 C- q; m9 x) H2 V9 [0 g7 Y' V4 @) Z+ _
k次方是用来调整控制律对“偏差”(这是已经不是差值,而是比值了,严格地说,应该叫“偏比”?)的灵敏度,相当于比例增益。这个控制律实际上相当于对数空间的纯积分控制,要是有兴趣,对很多常见的非线性过程有相当不错的效果,实现也简单。然而,这是一个本质离散的控制律,在连续时间里无法实现。
4 l, M) t: p0 Q0 ?3 a1 H2 E' h l1 s9 T
/ _% N( X4 n) Z K, k" N
; d' _3 i8 Z. N0 r6 {1 t离散控制可以“看一步、走一步”的特性,是连续控制很难模仿的,也是在实际中极其有用的。
P" x! x) @& X. m: a) F- k# c# G+ ]7 a* b" ?$ R
6 y) T9 X+ V* G+ X8 ~8 o
3 F7 U6 u0 O$ a: J, b* a
辨识
: E+ e0 ^6 q$ \0 u; F8 {1 l/ s. W" _. F: R6 z
* o$ e8 G$ p' G) B T# w9 U. n7 H
. ^* k* p8 k6 P* O
形形色色的控制理论再牛,没有被控过程的数学模型,照样抓瞎。前面的洗澡水温就是一个数学模型。这个模型是杜撰的,当然可以很容易地给它所有模型参数。但在实际中,模型参数不会从天上掉下来。多少科学家毕生致力于建立某一特定的物理、生物、化学或别的学科的数学模型,基本机制已经清楚的模型都不容易建立,更不用说很多过程的基本机制或深层机制并不清楚。所以靠机理推导被控过程的数学模型是可能的,但对日常的控制问题来说,并不实际。这就是控制理论的另一个分支—辨识—一显身手的地方了。+ J9 [0 d2 w# p4 x2 K D
% Z7 M' p. u! B2 |' e: f
6 e: i( m" q- T+ p/ D$ m
6 G. j0 }8 W$ k: }' r4 L$ g* k
如果给定一个模型,也就是一个数学公式,给它一组输入数据,模型就可以计算出对应的输出数据。比如说,给定模型y=2*x+1,再给出x=1,2,3,4,那y就等于3,5,7,9,就这么很简单。辨识的问题反过来,先给定一个模型结构,在这里就是y=a*x+b,已知输入-输出数据是x=1,2时y=3,5,要求计算出a和b。显然,这是一个二元一次方程,谁都会解。在实际中,输入-输出的观察数据含有测量噪声,这对参数估计的精度不利;但通常积累观察的数据量远远超过未知参数的个数,不说数学,感觉上这就应该对克服测量噪声有利,关键是怎么利用这“多余”的数据。一个办法是把数据组两两配对,借众多的二元一次方程,然后对解出来的a和b作平均。还有一个办法就是有名的最小二乘法了,说穿了,就是以a和b为最优化的“控制量”,使模型输出和实际观测值之间的累积平方误差为最小。
+ x; d6 t2 m3 C/ `7 N1 S, d1 k+ C* Q: h' L( K
# N. ?. ~4 R- I! G. X9 z' V2 V2 g3 Z r
实际工业过程大多有多年的运行经验,大量的数据不成问题。对于大多数常见过程,模型的基本结构和定性性质也可以猜一个八九不离十,有了如此有力的数学“大锤”,那么应该可以砸开一切建模的硬核桃啦。且慢,世上没有真正的“神奇子弹”,一个问题解决了,另一个同等难度的问题又会出现。对于辨识来说,问题有好几个。
/ H& G" y( s9 N3 ]5 l8 i8 P& ^
1 b/ I4 d" b4 T8 m, y: @- O
" G" N; u/ ^, t7 e6 o
/ g. m+ b/ S: a第一个问题是工业数据的闭环性。大多数重要参数都有闭环回路控制。如果没有闭环回路控制,那要么就是过程特性实在太复杂,简单回路控制不了;要么就是这个参数其实不重要,飘移一点没人在乎。然而,一旦闭环,系统地输入和输出就是相关的了。这一相关不要紧,输入-输出数据之间的因果性就全乱了:输出通过被控过程本身和输入相关(这是好的,辨识就是要测算出这个相关关系,输出要是和输入不相关,也没有控制或辨识什么事了),输入通过反馈和输出相关;输入-输出成为一个闭合系统,你可以用任意多条定理或方法证明同样的事:由于因果不分,闭环辨识是不可能的,除非另外加入“新鲜”的激励,比如使劲变设定值,或者在闭环回路里额外施加独立于输入、输出的激励信号,比如“莫名其妙”地把阀门动几下。弄到最后,工业数据到底能用多少,就不是一个简单的回答。有的过程常年稳定操作,像乙烯装置,只有小范围的微调。这倒不是人家懒或者不求上进,而是这些装置早已高度优化,常年操作在极其接近极限的位置,但原料和产品单一,所以工艺状况不怎么大变。这种系统的闭环数据用起来很吃力,常常必须做一定的开环试验。有的过程经常在不同的状态之间转换(transition),或者由于不同的原料,如“吃”得很杂的炼油厂,或者由于不同的产品,如聚乙烯装置,这实际上就是“使劲变设定值”,是新鲜的激励。这种系统的闭环数据比较好用,但有别的问题,下面要谈到。
$ Z* _8 o- N# L3 ^9 m1 K0 q0 y2 _$ `8 J4 F( p+ @6 d. i
2 O! `1 j* A8 {& u" H. a
6 j/ U( A4 f+ n+ W% e7 A第二个问题是动态和稳态。动态模型的作用有两个:一是描述需要多少时间输出才能达到某一数值;二是输出最终能够达到什么数值。用股票市场举一个例子,你需要知道两件事:一是这支股票最后会升到多少,二是需要多少时间才能升到那里,只知道其中一个对你并没有太大的用处。当然为了简化,这里假定这支股票一路飙升,不来忽升忽降(也就是非线性)或跌买涨卖(也就是闭环影响)的名堂。这就要求输入-输出数据必须包含充分的动态和稳态信息,过于偏颇其中一方面对另一方面会不利。所以,长期稳定运行的过程中可能包含足够的稳态数据,但动态不足;常年不怎么稳定的过程可能包含足够的动态数据,但稳态不足。用PID控制打比方,精确的稳态数据有助于计算正确的比例控制增益,精确的动态数据有助于计算正确的积分和微分增益,显然,把比例增益整对了更为重要。为了获得精确的稳态,在辨识中常常需要等过程开环稳定下来才进行下一步,但是问题是,实际过程有时时间常数很长,几个精馏塔一串联,时间常数几个小时是客气的,一、两天都是可能的。这样一来,一个不太大的模型,十来个变量,开环试验一做就是一、两个星期或者更长。要是一个装置能够两个星期开环,那也不需要什么控制了。! E- m; D* } @" X' J
' x- @+ Q, J' M7 p" K, f
! m( l" B( X2 \- O' g7 E/ ^
( ?' E# E, c( g8 c% |) X第三个问题是激励的信噪比。都说人类活动是二氧化碳和温室效应的主要原因,但要是你去生一堆篝火,再去高空大气层去测一测二氧化碳和温室效应,肯定什么也测不出来,本来多少,现在还是多少。为什么呢?不是因为这堆篝火没有效果,而是环境中的自然的变化远远超过了篝火的作用,换句话说,就是噪声远远超过了信号。工业测试也是一样,信号一定要有一定的强度,否则是白耽误工夫。信号强度应该使过程达到严重失稳的边缘,这样才好获得在大范围内都精确的模型,以便控制器不光在“风平浪静”的情况下可以正常工作,在“惊涛骇浪”的情况下也能使系统恢复稳定。然而,工厂以生产为主,在一切都“斤斤计较”的今天,如此大范围的测试所带来的产品损失甚至对设备的可能的危害,都是工厂极不愿意见到的。理论家们设计了一个伪随机信号,用一连串宽窄不等的方波信号,作为激励过程的输入,在理论上可以使过程参数的平均值不致偏离设定值太多,但ISO9000不仅要求产品质量的平均值要保证,产品质量的一致性也要保证。再说,伪随机信号的脉宽不好确定,太窄了,稳态数据不够;太宽了,和常规的阶跃信号也没有什么两样。所以伪随机信号在实际上用得很少。8 s6 \, e6 |( ?% y' x
' M# N' ? I' S" x3 u6 _
% t0 {, `+ o' T: g
) v* }4 [) N0 S; _1 m" `. b$ ~/ X
第四个问题是输入的相关性。实际工业过程到了要用辨识来确定模型的时候,都是单回路对付不了了,所以都是多变量过程。在理论上,多个输入变量可以同时变化,只要输入变量的变化是相互独立的,数学上容许多个输入变量同时变化,而辨识可以正确地辨别模型。然而,在使用实际过程的历史数据时,常常遇到多个输入变量并不相互独立的问题。比如说,在制作巧克力的过程中,香草巧克力比较“苦”,或者说不太甜,而牛奶巧克力比较甜。问题是做牛奶巧克力时,不光加糖,还要加牛奶(废话,不加牛奶那还是牛奶巧克力吗?)由于两者总是同时出现,从纯数学角度来说,在甜度模型里,就难以辨别甜度是由于加糖的关系,还是由于加牛奶的关系。有的时候可以根据对具体过程的认识,人工地限制辨识的过程,来消除这种影响,有的时候,就不太容易了,只好不用历史数据,专门做试验,用各自独立的输入,便是模型。
$ \% g$ p+ u. u; i: u" H" O+ n! J
' o0 S; P; n2 [4 i* e9 h' W
y3 }7 O& m$ @* L
- f v# J. v2 _ N5 ?8 V第五个问题是模型结构。模型结构包括两个方面,一是模型的阶数,二是剔除在物理上不可能的模型。辨识的模型归根结蒂还是差分方程,这就有一个如何预设阶数的问题。数学上有很多验前和验后的检验方法,在工业上,人们偷一个懒,改用非参数模型,也就是用一条响应曲线而不是一个方程来表述一个模型,这样就可以绕过阶数的问题。但是剔出不现实的模型还是一个手工活,需要对每一个模型仔细研究,以确定模型所描述的动态关系是否合理。数学方法还是不够可靠。
& W/ C( P/ v1 T( P) ~5 I4 S: ^
) J, `! _+ t C ; a$ M8 U( Z f0 u5 F
9 X# ?! H2 ?" c0 u
在搞模型的人中间,常常会听到黑箱、白箱和灰箱的说法。黑箱模型就是不理会实际过程的物理、化学等性质,纯粹从数学出发,假设一个模型结构,然后用种种数学方法找出一个最好的模型。白箱反其道而行之,从物理、化学等性质出发,建立机理模型。黑箱模型的好处是“放之四海而皆准”,不需要对具体过程有深入的了解。黑箱模型是一种削足适履的作法,但是如果履本身就做得比较好,具有相当的灵活性和适应性,就并不需要削太多的足。由于黑箱模型可以自由假设模型结构,黑箱模型的处理和使用都比较方便。黑箱模型是经验主义的,数据里没有包含的情况,黑箱模型无法预测。白箱模型则是“量身度造”的,反映了过程的物理、化学等性质,对实际过程的数据依赖较少,对数据中不包含的情况也能可靠地预测。但是白箱模型的结构由具体问题决定,得出的模型不一定容易使用。在实际中,人们经常在假设一个模型结构的时候考虑进大大简化的过程机理,所以模型结构不是凭空拍脑袋出来,而是粗略地抓住了过程的基本特质,然后再用黑箱方法的“数据绞肉机”,将简化模型没有能够捕捉的细微末节一网打尽。这种模型结合了黑箱和白箱的特点,所以称为灰箱。实际建模中,纯粹黑箱或白箱的成功例子很少,灰箱的成功机会就要多得多。4 O6 ~, F3 F- L% v% M8 z
$ u. i5 V& w( I
3 N, {: |3 C6 `: i7 s) Z6 e0 }; \6 _
不管什么箱,最后还是有一个如何辨识实际过程的问题。闭环辨识的好处不用多说了,问题是如何从闭环辨识中获得有用的模型。工业上有一个办法,没有一个“官名”,但实际上是一个开环-反馈过程。具体做法是这样的:先用粗略的过程知识构造一个简单的多变量控制器,其任务不是精确控制被控过程,而是将被控变量维持在极限之内,一旦逼近或超过极限,就采取动作将其“赶”回极限内;但只要在极限内,就按部就班地作阶跃扰动,测试过程特性。测试的结果用来改进控制器的模型,然后再来一遍。几遍(一般两遍就够了)之后,模型精度应该很不错了。这个方法比较好地解决了辨识精度和过程稳定性的要求。1 o: \+ _! G' S E/ }
( }7 j3 Z- Q0 b/ q2 F$ q7 f' f 9 v# }+ H/ E3 _4 k- S% D
5 T& |0 g8 {4 D+ M自适应0 P7 Y$ _, ^$ g( Z$ g
6 T( \; l9 O; Q5 D, e& _' V
# N! @4 N: ^* Y+ j0 X! u+ a7 w4 i& @: t1 {/ U5 u$ L x6 N9 c
西游记里最好看的打斗是孙悟空大战二郎神那一段。孙悟空打不过就变,二郎神则是“敌变我变”,紧追不舍,最后把个无法无天的顽皮猴子擒拿归案。用控制理论的观点看,这“敌变我变”的本事就是自适应控制控制器结构根据被控过程的变化自动调整、自动优化。
% L$ P4 _% F6 \3 Z, E- }2 s4 y4 h/ M: c2 E! V) @8 ?
1 E8 `- C1 }% ~& \$ _& ^. Z, `2 @8 R6 ~3 n1 Y* U/ `
自适应控制有两个基本思路,一是所谓模型跟踪控制,二是所谓自校正控制。模型跟踪控制也叫模型参考控制,在概念上对人们并不陌生。毛主席那阵子,经常树立各种榜样,目的就是要在党发出号召时,普通人们比照榜样的行为,尽量调整自己的行为,使我们的行为和榜样的行为接近。这就是模型跟踪控制的基本思路。模型跟踪控制在航空和机电上用得比较多,在过程控制中很少使用。( Z) X' G9 |+ c0 h; j# f8 r' M
2 Z* Q) M% W+ f0 Y
0 J6 V9 t, Q" N) }, H0 k0 X+ \$ y" O# ^1 H8 R+ U
自校正控制的思路更接近人们对自适应的理解。自校正控制是一个两步走的过程,首先对被控过程作实时辨识,然后再辨识出来的模型的基础,实时地重新构造控制器。思路简单明了,实施也不算复杂,但自校正控制在一开始的欢呼后,并没有在工业上取得大范围的成功,原因何在呢?2 \* |# j9 |4 \- p$ G C
; X" Z& r F) \: H; J
) P" D' c" O- A5 @% x0 h9 o
: @6 R' v+ _+ M9 M4 _1 z' L原因之一是闭环辨识。虽然自校正控制不断改变控制器的参数,在一定程度上打破了固定增益反馈控制对输入、输出带来的因果关系,但是因果关系还是存在,还是相当强烈,对辨识模型的质量带来影响。
0 r% I) A+ X9 u3 e" h& y6 O8 W* f% O" Q1 i( Z5 c3 w+ O
' P* X O, z' o& j0 s8 w" [2 R: y
5 g, k7 H; [0 y9 d1 }# f原因之二是所谓“协方差爆炸”。数学上当然有严格的说法,但简单地说,就是自校正控制器的目的当然还是使系统稳定下来,但是在系统越来越稳定的过程中,自校正控制器对偏差和扰动的敏感度越来越高,最后到“万籁俱静”的时候,敏感度在理论上可以达到无穷大,然而,这时如果真的扰动来了,控制器一下子就手足无措了。& c. I% P2 l/ S3 ?
- u! g4 O$ \! G M' p
^5 D5 C1 t; t# u. {. d3 ?" R0 F/ y( I1 y; M" c
原因之三是实际过程的复杂性。在辨识实际过程时,最重要的步骤不是后面的“数学绞肉机”,而是对数据的筛选,必须把各种异常数据剔除出去,否则就是“垃圾进来,垃圾出去”。但是,要实时、自动地剔除异常数据,这个要求非同小可,比设计、投运一个自校正控制器费事多了。这是自校正控制在实际中成功例子有限的最大原因。
- z. J! z! u$ K: I7 C2 q4 K- e
' f8 H9 Z$ Y9 c. X' O; l7 D* x5 G2 a+ c8 \& F0 f# a. A3 }
模型预估控制
" \2 \$ u; `* V! C
9 B' Q% r E0 p. S: K' N- ~& ~ 6 S0 N6 k1 o" T% {3 U; B
: v1 W9 _) s/ K% O自动控制从一开始就是以机电控制为主导的。60年代数学派主导了一段时间后,70年代化工派开始“小荷才露尖尖角”。自校正控制已经有很多化工的影子,但化工派的正式入场之作是模型预估控制(modelpredictivecontrol,MPC)。这是一个总称,其代表作是动态矩阵控制(dynamicmatrixcontrol,DMC)。DMC是CharlieCuttler的PhD论文,最先在壳牌石油公司获得应用,以后Cuttler自立门户,创办DMC公司,现在是AspenTechnology公司的一部分。
/ i" u& q& q) |% ?. H! v" N3 f$ P) C* L3 Z
& ^ { e& f" d6 I4 p5 o( {
数学控制理论非常优美,放之四海而皆准,但是像老虎一样,看起来威猛,却是干不得活的,干活毕竟靠老牛。DMC的成功之处在于应用伪理论,将一些本来不相干的数学工具一锅煮,给一头老老实实的老牛披上一张绚烂的老虎皮,在把普罗大众唬得一愣一愣的时候,悄悄地把活干了。 |