把剩下的兩篇給你們貼出來吧。
6 D* o4 g5 a* H$ w' E2 \# p* Y$ ?) |4 @' h% u, y
' @/ q& a8 }! Q
都看過舞龍吧?一個張牙舞爪的龍頭氣咻咻地追逐著一個大繡球,龍身子扭來扭去,還時不時跳躍那么一兩下。中國春節(jié)沒有舞龍,就和洋人的圣誕節(jié)沒有圣誕老人一樣不可思議。想象一下,如果這是一條眼睛看不見的盲龍,只能通過一個人捏著龍尾巴在后面指揮,然后再通過龍身體里的人一個接一個地傳遞控制指令,最后使龍頭咬住繡球。這顯然是一個動態(tài)系統(tǒng),龍身越長,人越多,動態(tài)響應越遲緩。如果只看龍頭的位置,只操控龍尾巴,而忽略龍身子的動態(tài),那就是所謂的輸入-輸出系統(tǒng)。經(jīng)典控制理論就是建立在輸入-輸出系統(tǒng)的基礎上的。對于很多常見的應用,這就足夠了。5 W- v1 }7 [2 P& f& s
* z* D: t8 q$ @9 a. E
% c0 R) d8 m6 L* Z2 l
# `9 u1 V9 L) o# u2 T2 W; o' X
但是卡爾曼不滿足于“足夠”。龍頭當然要看住,龍尾巴當然要捏住,但龍身體為什么就要忽略呢?要是能夠看住龍身體,甚至操縱龍身體,也就是說,不光要控制龍尾巴,控制指令還要直接傳到龍身體里的那些人,那豈不更好?這就是狀態(tài)空間的概念:將一個系統(tǒng)分解為輸入、輸出和狀態(tài)。輸出本身也是一個狀態(tài),或者是狀態(tài)的一個組合。在數(shù)學上,卡爾曼的狀態(tài)空間方法就是將一個高階微分方程分解成一個聯(lián)立的一階微分方程組,這樣可以使用很多線形代數(shù)的工具,在表述上也比較簡潔、明了。
?4 N9 M0 J' ?" w) Q8 `$ j4 z! S
( Z2 ~! |7 H2 Q! |0 s
! f& ~4 k( U, n& d c/ L卡爾曼是一個數(shù)學家。數(shù)學家的想法就是和工程師不一樣。工程師腦子里轉(zhuǎn)的第一個念頭就是“我怎么控制這勞什子?增益多少?控制器結(jié)構(gòu)是什么樣的?”數(shù)學家想的卻是什么解的存在性、唯一性之類虛頭八腦的東西。不過呢,這么說數(shù)學家也不公平。好多時候,工程師憑想象和“實干”,辛苦了半天,發(fā)現(xiàn)得出的結(jié)果完全不合情理,這時才想起那些“性”(不要想歪了啊,嘿嘿),原來那些存在性、唯一性什么的還是有用的。$ k- l6 T/ P9 A. N3 c% W
+ c5 U3 O1 X$ @0 F
! y0 q: K3 B. b% ]2 C
5 b4 s2 E" n8 V7 Z還是回過來看這條龍,F(xiàn)在,龍頭、龍尾巴、龍身體都要看,不光要看,還要直接操控龍頭到龍尾的每一個人。但是,這龍不是想看就看得的,不是想舞就舞得的。說到“看”,直接能夠測量/觀測的狀態(tài)在實際上是不多的,所謂看,實際上是估算。要是知道龍身體有多少節(jié)(就是有多少個人在下面撐著啦),龍身體的彈性/韌性有多少,那么捏住龍尾巴抖一抖,再看看龍頭在哪里,是可以估算出龍身體每一節(jié)的位置的,這叫狀態(tài)觀測。那么,要是這龍中間有幾個童子開小差,手不好好拉住,那再捏住龍尾巴亂抖也沒用,這時系統(tǒng)中的部分狀態(tài)就是不可觀測的。如果你一聲令下,部分童子充耳不聞,那這些狀態(tài)就是不可控制的?柭鼜臄(shù)學上推導出不可控和不可觀的條件,在根本上解決了什么時候才不是瞎耽誤工夫的問題。這是控制理論的一個重要里程碑。- ^; [% Q9 S) z. |* y
+ F1 w9 y( C# n
, J' v; y; B5 W/ i- b9 H9 Y0 Q# u7 ~$ W7 b
再來看這條龍。如果要看這條龍整齊不整齊,排成縱列的容易看清楚;如果要清點人數(shù),看每一個人的動作,排成橫列的容易看清楚。但是不管怎么排,這條龍還是這條龍,只是看的角度不同。那時候中國人的春節(jié)舞龍還沒有在美國的中國城里鬧騰起來,不知道卡爾曼有沒有看到過舞龍,反正他把數(shù)學上的線性變換和線性空間的理論搬到控制里面,從此,搞控制的人有了工具,一個系統(tǒng)橫著看不順眼的話,可以豎著看,興趣來了,還可以斜著看、倒著看、擰著看,因為不管怎么看,系統(tǒng)的本質(zhì)是一樣的。但是不同的角度有不同的用處,有的角度設計控制器容易一點,有的角度分析系統(tǒng)的穩(wěn)定性容易一點,諸如此類,在控制理論里就叫這個那個“標準型”。這是控制理論的又一個里程碑。' Y" G @9 d7 c
$ h+ |6 v. j# C
6 R. N5 Q5 |; H
9 K4 D0 l' p' P觀測狀態(tài)的目的最終還是控制。只用輸出的反饋叫輸出反饋,經(jīng)典控制理論里的反饋都可以歸到輸出反饋里,但是用狀態(tài)進行反饋的就叫狀態(tài)反饋了。輸出反饋對常見系統(tǒng)已經(jīng)很有效了,但狀態(tài)反饋要猛得多。你想象,一個系統(tǒng)的所有狀態(tài)都被牢牢地瞄住,所有狀態(tài)都乖乖地聽從調(diào)遣,那是何等的威風?臺商大奶們的最高境界呀。" i- e5 g2 O. Q5 K
, x6 a) }' x3 B5 I6 m! M! w* U
8 u ^* b0 ~9 Y/ n" W% t
1 d! b0 K/ Y% C1 A# t盡管學控制的人都要學現(xiàn)代控制理論,但大多數(shù)人記得卡爾曼還是因為那個卡爾曼濾波器(KalmanFilter)。說它是濾波器,其實是一個狀態(tài)觀測器(stateobserver),用來從輸入和輸出“重構(gòu)”系統(tǒng)的狀態(tài)。這重構(gòu)聽著玄妙,其實不復雜。不是有系統(tǒng)的數(shù)學模型嗎?只要模型精確,給它和真實系統(tǒng)一樣的輸入,它不就乖乖地把系統(tǒng)狀態(tài)給計算出來了嗎?且慢:微分方程的解不光由微分方程本身決定,還有一個初始條件,要是初始條件不對,微分方程的解的形式是正確的,但是數(shù)值永遠差一拍。卡爾曼在系統(tǒng)模型的微分方程后再加了一個尾巴,把實際系統(tǒng)輸出和模型計算的理論輸出相比較,再乘上一個比例因子,形成一個實際上的狀態(tài)反饋,把狀態(tài)重構(gòu)的偏差漸進地消除,解決了初始條件和其他的系統(tǒng)誤差問題?柭鼮V波器最精妙之處,在于卡爾曼推導出一個系統(tǒng)的方法,可以考慮進測量噪聲和系統(tǒng)本身的隨機噪聲,根據(jù)信噪比來決定上述比例因子的大小。這個構(gòu)型其實不是卡爾曼的獨創(chuàng),隆伯格(Luenburg)也得出了類似的結(jié)構(gòu),但是從系統(tǒng)穩(wěn)定性角度出發(fā),來決定比例因子。同樣的結(jié)構(gòu)大量用于各種“預測-校正”模型結(jié)構(gòu),在工業(yè)上也得到很多應用,比如聚合反應器的分子重量分布可以用反應器的溫度、進料配比、催化劑等來間接計算,但不夠精確,也無法把林林總總的無法測量的干擾因素統(tǒng)統(tǒng)包括進數(shù)學模型里,這時用實驗室測定的真實值來定期校正,就可以結(jié)合數(shù)學模型及時地特點和實驗室結(jié)果精確的特點,滿足實時控制的要求,這或許可以算靜態(tài)的卡爾曼濾波器吧?柭鼮V波器最早的應用還是在雷達上。所謂邊掃描邊跟蹤,就是用卡爾曼濾波器估計敵機的位置,再由雷達的間隙掃描結(jié)果來實際校正。實際應用中還有一個典型的問題:有時候,對同一個變量可以有好幾個測量值可用,比如有的比較直接但不精確,有的是間接的估算,有很大的滯后但精確度高,這時可以用卡爾曼濾波器把不同來源的數(shù)據(jù)按不同的信噪比加權“整合”起來,也算是民用版的“傳感器融合”(sensorfusion)吧。. J8 b5 ]; Y9 C8 i1 I# g
( e \, }# x$ n7 O3 n/ W( n
) m( n; J+ Y0 g, h
8 ?; L4 Z- S, d! z% `除了卡爾曼濾波器外,卡爾曼的理論在實際中用得不多,但是卡爾曼的理論在理論上建立了一個出色的框架,對理解和研究控制問題有極大的作用。
6 w/ z& h8 }8 g
; d: O/ H& d# b( E M4 e ) ?& I* M7 Y! P: R4 |" [
9 p) h0 ]$ D& D l2 X) D) |4 b) ?+ Z
順便說一句,卡爾曼的理論基本局限于線形系統(tǒng),也就是說,十塊大洋買一袋米,二十塊大洋就買兩袋米,都是成比例的。實際系統(tǒng)中有很多非線性的,兩千塊大洋還能買兩百袋米,但兩千萬大洋就要看米倉有沒有貨了,不是錢越多,買的米越多,有一個“飽和”的問題。另一方面,要是米倉有足夠的貨,兩千萬大洋的集團購買力強,或許就可以買三百萬袋米了。這些只是非線性的簡單例子。所有偏離線性問題的都是非線性,所以非線性的問題研究起來要復雜得多。實際系統(tǒng)還有其他特性,有的是所謂時變系統(tǒng),像宇宙火箭,其質(zhì)量隨時間和燃料的消耗而變,系統(tǒng)特性當然也就變了。很多問題都是多變量的,像汽車轉(zhuǎn)彎,不光方向盤是一個輸入,油門和剎車也是輸入變量。狀態(tài)空間的理論在數(shù)學表述上為線性、非線性、單變量、多變量、時變、時不變系統(tǒng)提供了一個統(tǒng)一的框架,這是卡爾曼最大的貢獻。$ r) G; t4 Q; a( k( a) x1 L
2 u' Q2 @# ?* f: n3 [# t
2 z. E, O- q! ~' m
+ r0 ^, w; y! D$ J4 w3 J9 D最優(yōu)控制( h; r8 M A% V I+ j
@6 u7 |9 P# t& v+ S
8 B* J' e7 W- l" J/ c1 h
1 f2 N" m6 _9 w; p, x; T前面說到,搞控制有三撥人:電工出身的,化工出身的,和應用數(shù)學出身的。在卡爾曼之前,電工出身的占主導地位,數(shù)學家們好在象牙塔里打轉(zhuǎn)轉(zhuǎn),化工出身則還對控制理論懵里懵懂,還在“實干”呢?柭,一大批數(shù)學出身的人,利用對數(shù)學工具的熟悉,轉(zhuǎn)攻控制理論。一時間,控制理論的數(shù)學化似乎成了“天下大勢,順我者昌,逆我者亡”了。在狀態(tài)空間的框架下,多變量沒有太多的問題好研究,于是最優(yōu)化成為控制理論的新時尚。- S. o! i4 n( {7 a k/ i. ^- N
/ U+ ?9 ` j( p8 N' @
" w/ `4 w( B: D9 G5 c; z% L' b
& ~, _; F# H+ R' |" R對于一根給定的曲線,求一階導數(shù)為零的點,就是這個曲線的極點;在對這一極點求二階導數(shù),大于零就是最小點,小于零就是最大點。這是牛頓老爺子就整明白的東東,現(xiàn)在高中或大一人人都學過的東西。但是動態(tài)系統(tǒng)是一個微分方程,對微分方程求一階導數(shù)為零,就導致變分法和所謂歐拉方程。但這個東西用起來不方便。實際的最優(yōu)控制不大直接使用變分。+ P7 `4 _$ P, R
: V) X/ h% D1 g0 C % _+ e9 V$ l4 w: E& B
1 u1 E8 E# E0 \! Z1 v% V俄羅斯是一個奇怪的地方。老毛子們要么蔫蔫的,要么瘋狂的。俄羅斯的悲劇電影看得你也郁悶得想去自殺。但是老毛子要是搭錯筋整出一個喜劇呢?那你要么跟著瘋狂,要么被逼瘋狂。就是這么一個地方,除了無數(shù)托爾斯泰、柴可夫斯基、普希金、屠格涅夫等文藝巨璧外,俄羅斯也盛產(chǎn)數(shù)學家,其中兩個是龐特里亞京和學控制的人老惦記著的李亞普諾夫。
' I$ B1 t# y S- i5 p9 W* E5 a2 d/ b: u. R4 `& b2 [
1 K# ?' H; y. u+ P4 O* m P5 {" E" k
龐特里亞京的極大值原理聽起來嚇人,其實說白了很簡單?匆娔巧絾幔可巾斁褪亲罡唿c(切,這還用說?);看見那山坡嗎?要是在山腰劃一道線,從山下往上爬,盡管山坡還在繼續(xù)往上延伸,但是到線為止,不得逾越,那山腰上那道三八線就是最高點(切,這還用說?)。這就是龐特里亞京的極大值原理。當然啦,龐特里亞京是用精巧、深奧的數(shù)學語言表述的,要不然他在數(shù)學界里也別混了。不過呢,意思就是這么一個意思。
, l8 P% p, f K$ [) R t5 Y# |, o$ @9 o/ H
0 h3 Y/ F9 ~! N& ?
j: u' @. _( M# }6 }龐特里亞京極大值原理的一個典型應用就是所謂最速控制問題,或者叫時間最優(yōu)控制(timeoptimalcontrol)問題,簡單地說,就是給定最大馬力和最大剎車功率,問題是怎么開汽車能夠最快地從A點開到B點(什么轉(zhuǎn)彎、上下坡、紅綠燈,這種瑣碎的事情也要拿來煩人?一點品味都沒有。。你可以用優(yōu)美但繁瑣的數(shù)學求證,或者用膝蓋想想:最快的方法,就是一上來就加足馬力,全速前進;然后在不到終點的某一地點,全力剎車,使慢下來的汽車在到達終點時正好停下來。這是最快的方法,不可能比這更快了。稍微發(fā)揮一點想象力,可以想象“梆”的一下,控制量的油門板一腳到底,再是“梆”的一下,剎車板一腳到底,控制任務就完成了。所以最速控制也叫“梆-梆”控制(bangbangcontrol)。
2 ?7 y5 f7 P2 J4 f% @, X, s$ D [1 x1 [ L- w! m
& z3 ~8 j0 Q% i; q& J& K1 d$ r: c5 {4 v
最速控制在理論上是一個很有趣的問題,解法也是簡潔、優(yōu)美,但在實際中直接使用的例子實在是鳳毛麟角,一般都是開始時用“梆-梆”,或者勻速上升到最大控制,以緩和控制的沖擊力;到終點附近時,改用PID作閉環(huán)微調(diào),以克服“梆-梆”對系統(tǒng)模型誤差十分敏感的缺點。電梯控制就是這樣一個例子。從一樓到四樓,電動機很快勻速上升到最高轉(zhuǎn)速,一過三樓,電動機就下降到較低的轉(zhuǎn)速,然后根據(jù)電梯實際位置和樓面之差,有控制地減速,直至停下來。要是控制參數(shù)調(diào)得好的話,一下子就穩(wěn)穩(wěn)當當?shù)赝O聛;要是調(diào)的不夠好,會在停下來之前上下晃蕩幾下。
9 k z6 b) D5 [0 h/ e& D; ]3 W' g" ?( V
$ S) A; |2 a8 R7 N 7 I/ \+ `7 b/ q0 z+ w' ]
* I# f9 w: \$ d2 w( G; Y7 X最速控制問題是較早的最優(yōu)控制問題,它提供了一個很有趣的思路,但這顆樹上開花結(jié)果不多。相比之下,最優(yōu)控制的另外一支枝繁葉茂,有生氣得多了。這一支就是線型二次型最優(yōu)控制(linearquadraticcontrol)。數(shù)學是有趣的,但數(shù)學也是盲目的。在數(shù)學上,最優(yōu)化問題就是一個在曲面上尋找凸點的問題,只要你能把一個物理問題表述成一個曲面,數(shù)學是不理會姓無姓資的。既然如此,控制偏差的平方在時間上的累積就是很自然的選擇,二次型就是平方在線性代數(shù)里的說法。線型系統(tǒng)的偏差平方有很好的性質(zhì),這山峰是一個饅頭山,沒有懸崖峭壁,沒有溝坎,容易爬;一山只有一峰,不用擔心找錯地方。不過這山峰不能只包含控制偏差,還要包含控制量,原因有三個:% {5 L$ {+ `( c; T& F7 t7 ?5 G- P
& d4 L8 m( _# x* C3 o9 f- w
& z- r H9 a+ Q
- f$ X0 V, _. l. k1、如果不包括控制量,那最優(yōu)控制的解是沒有意義的,因為無窮大的控制量可以使累計平方偏差為最小,但無窮大的控制量是不現(xiàn)實的。
+ ^; _/ w6 C) Y8 F5 k; H7 D" b, q5 v
7 G2 z3 R# ?2 Z; |
, B$ Q, v2 a. A) \& @7 }2、控制量的大小通常和能量、物料的消耗連在一起,實際控制問題一般是“在最小能量、物料消耗小達到最高的控制精度”,所以在“山峰”中同時包含控制偏差和控制量是很自然的。
8 o n/ }4 g7 v: y
6 H, S# \! ]0 H2 |6 {% K 3 A, O+ Q4 g% y! X
/ e' U1 l2 v' b' x/ F3、系統(tǒng)模型總是有誤差的,誤差“總是”在高頻、大幅度控制作用下最突出,所以為了減低系統(tǒng)對模型誤差的敏感性,也有必要限制控制量的大小。* v+ r/ j+ m8 j
' y3 T+ z1 k. X( x5 d3 v3 X
, F! J `' f$ I% R% M9 g( L. O
0 ]5 S+ F% a3 w' m6 U% l所以線性二次型最優(yōu)控制的“目標函數(shù)”(也就是定義山峰形狀的數(shù)學表述)是一個控制偏差和控制量各自平方的加權和的積分。積分當然就是“在時間上的累積”了,加權和其實就是在控制偏差的平方項和控制量的平方相前分別乘以比例因子,然后再相加。兩個比例因子的相對大小決定了誰更重要。運用矩陣微分和線型代數(shù)工具,不難導出線性二次型控制律—一個基本的狀態(tài)反饋控制律!只是反饋增益矩陣是按最優(yōu)化的要求計算出來的。 W& k( Z1 T* h' ?# R4 x
, l x8 p$ z- @& _( {" o7 |! u
* H, ?7 s# O0 P; b9 h5 Y8 a; x2 c* S1 A; Y' J2 N F! `& w3 i7 O0 n+ B! x$ x
線型二次型最優(yōu)控制開創(chuàng)了一整個新的控制領域,很快從狀態(tài)空間走出來,進入其他領域,子孫繁衍,人丁興旺。這一支是當今最優(yōu)控制在應用中的主體。
o0 ^3 k0 o M/ D+ A g0 R8 g1 O8 h/ C4 z
4 `8 C- r: x- a* \9 m9 j* B* l0 y$ n: p; C+ ^. u( D; o' g' w
線性二次型控制具有各種各樣的優(yōu)點,但是,線性二次型沒有回答一個最基本的控制問題:這個閉環(huán)系統(tǒng)是不是穩(wěn)定。這里,我們的飽受牽記的李亞普諾夫同志出場了。李亞普諾夫也是一個腦子搭錯筋的人,一百多年前,玩微分方程玩出了癮,整出兩個穩(wěn)定性(或者叫收斂性)的定理,前一個沒有什么太了不起的,把非線性系統(tǒng)線性化,就是把一根曲線用很多一小段、一小段的直線近似,然后按直線來分析。后一個就有點邪門了。老李琢磨出一個定理,說是對于任意一個系統(tǒng),如果能找到一個自我耗散的能量函數(shù)(數(shù)學說法是正定函數(shù)),也就是其數(shù)值永遠為正,但隨時間漸進地趨向零,或者說這個能量函數(shù)對時間的導數(shù)永遠為負,那這個系統(tǒng)就是穩(wěn)定的。據(jù)說定理的證明是一個天才的杰作,我等凡人只有頻頻點頭的份。不過想想也對,系統(tǒng)的能量耗散沒了,系統(tǒng)不也就安分下來了嗎?當然就穩(wěn)定嘍。
+ {# x) a8 ^; [; Y1 n& @# A
3 s. ~; R) j) Y0 i # G& ~: ^2 `% J5 P- M
N" W- K+ p* ^$ N( H" L8 C9 g% m李亞普諾夫比卡爾曼還要數(shù)學家,他的定理只給出“如果存在……就……”,怎么找這個自我耗散的能量函數(shù)他沒說,這個函數(shù)一般是什么樣他也沒說。這難不倒搞自動控制的廣大革命群眾。不是要正定函數(shù)嗎?不是沒有限制什么形式的正定函數(shù)嗎?那就用控制偏差的平方吧。說干就干,但是干著干著,好玩的事情出現(xiàn)了,對偏差平方(或二次型)的求導,導出了和線性二次型最優(yōu)控制推導過程中同樣出現(xiàn)的一個所謂黎卡蒂方程(Riccatiequation),感情這是殊途同歸呀。換句話說,線性二次型控制總是穩(wěn)定的。這是線性二次型控制的一個重要貢獻:把最優(yōu)性和穩(wěn)定性連到一起。1 P4 a# `* f- c/ A; r) R
9 F* U: @( V8 I2 f4 l) m7 _! p
0 y* Q, l p1 s( I
$ W! B" L2 l& m( V; K
再扯一句李亞普諾夫,他的第二個定理非常威猛,但是有點像一個奇形怪狀的大錘,到現(xiàn)在人們還在找合適的釘子,好用這把大錘砸?guī)紫。線性二次型控制是已知的僅有的幾個釘子之一,另一個是變結(jié)構(gòu)控制,也可以用李亞普諾夫方法,這是題外話了。
' U- \' n, I6 p+ o3 x3 w- Q
8 v }' j- e& \* I9 p" b
" c+ v+ P' ?% M4 d
+ b- }8 L7 X5 J數(shù)字控制$ N& v2 U8 f% q2 O- V+ Z4 {/ }
! n/ R: {- G8 n6 I( F2 C
$ A5 t: w m4 r: \
- K& y( U; O' w! c都說瓦特的蒸汽機后,計算機是影響人類進程最大的發(fā)明,計算機當然也對自動控制帶來深刻的影響。如前所述,控制理論基本上都是圍繞微分方程轉(zhuǎn)的,所以在“本質(zhì)”上是連續(xù)的。但是數(shù)字計算機是離散的,也就是說,數(shù)字控制器的眼睛不是一直盯著被控對象看的,而是一眨一眨的。數(shù)字控制器的“手腳”也不是一刻不停地連續(xù)動作的,而是一頓一頓的。這是數(shù)字計算機的天性使然。于是,傳統(tǒng)的控制理論全部“翻譯”到離散時間領域,微分方程變成了差分方程,所有方法、結(jié)論都有了連續(xù)、離散兩套,不盡相同,但是大同小異。
0 H% t+ Y/ V. s/ H1 h
4 F" {9 C8 J2 j/ P: s
# g/ D- m* n8 M4 }
8 A* i8 H, Y9 c% K$ N9 E要是數(shù)字控制就是簡單的連續(xù)系統(tǒng)離散化,計算機控制也就沒有什么了不起。離散控制帶來了一些連續(xù)控制所不可能具備的新特點,這就是:差分方程用清晰界定的時刻之間的關系來描述動態(tài)過程。回到洗熱水澡的例子,如果熱水龍頭不在跟前,而是在村外一里地的小鍋爐房里,你只能用電話遙控,那水溫或許可以表示為9 K# K4 y3 o& R3 h: i
6 V( I8 T4 }! a# _5 L# Y# k
t% c5 M' L, P) l4 u0 K
4 S$ J3 s6 {1 f N4 O下一分鐘水溫=0.7*現(xiàn)在水溫+0.2*上一分鐘水溫+0.1*再上一分鐘水溫+0.4*(5分鐘前鍋爐房龍頭開度-6分鐘前鍋爐房龍頭開度)
# k' S3 J9 h% E) t6 F$ o8 y
3 Y/ V8 x1 W) Z* g2 P
7 M, q+ L" ^8 c: x3 t3 n4 p1 @ H6 m5 l c6 O
顯然,下一分鐘的水溫受現(xiàn)在水溫的影響比上一分鐘和再上一分鐘的水溫的影響要大,但鍋爐房龍頭開度要是不變,現(xiàn)在、上一分鐘、再上一分鐘水溫都一樣的話,下一分鐘的水溫也應該和現(xiàn)在的水溫一樣。為什么用5分鐘前鍋爐房的龍頭開度呢?那是因為熱水從村外流到洗澡房要有一定的時間,這個時間就是滯后。要是把時間向前推,那現(xiàn)在的龍頭開度就會影響5分鐘后的水溫。這說明了離散模型的一個重要特質(zhì):預估能力。所有預報模型都是建立在離散模型的這個預估能力上,不管是天氣預報,還是經(jīng)濟預測,還是自動控制里對有滯后的過程的控制。
4 d" }+ g* n0 X1 b0 a8 {9 R) r$ R; |5 e( } X- Y, \, y j# {% Q
$ U2 o/ z) \/ K$ J3 M
8 w" E$ E) c$ N1 _' z數(shù)字控制的另一特質(zhì)是可以實施一些不可能在連續(xù)時間實現(xiàn)的控制規(guī)律。工業(yè)上常有控制量的變化需要和當前的實際值有關的情況。比如對于不同的產(chǎn)品,反應器的轉(zhuǎn)化率總是大體在88-92%之間,沒有太大的變化,但是催化劑可以在0.5到35ppm之間變化,采用常規(guī)的PID的話,增益就非常難設,對一個情況合適了,對另一個情況就不合適。所以催化劑需要按百分比變化率調(diào)整,而不是簡單地按偏差比例調(diào)整。比如說,轉(zhuǎn)化率偏離1%時,催化劑要是在0.5ppm,應該調(diào)整0.05ppm;但是在15ppm的時候,就應該是1.5ppm。這樣,控制律就可以表示為- x" o& m( O: b) O& U
- g3 S. D+ k ^! {& R
+ i [0 I5 s% A1 R% o
: b/ i# Y4 }0 M4 d" R" v: [& L
當前的控制量=上一步的控制量*(設定值/當前的測量值)
/ _% H% z. \4 c) R+ [1 E- E6 H( B8 ~4 C# ~0 _" ]
! `3 Z) f" i6 J" `# r( k' T
! J4 @. I/ ~) H8 z5 w9 F
也就是說,在被控變量高于設定值10%的情況下,控制量也增加10%;測量值和設定值一樣時,控制量不再變化。實際使用時,誰除以誰要根據(jù)測量值上升你是要控制量上升還是下降來決定,控制律也要稍微修改一下,成為
# T( K0 o/ q) g8 B- ^3 E8 z+ T& a
5 L. d& F# Z+ y" a) Q/ L
) Q8 n' ]9 \, U5 g4 I& N2 S; z9 {& E- I2 j. f
當前的控制量=上一步的控制量*(當前的測量值/設定值)^k
8 p: a- q/ a" ?/ q) N* u' z
. ?/ F8 k+ E$ j+ p2 X. K, }% _0 `
& F( C! w7 p! x" z$ O4 d% N& z0 i8 X& L' a0 X! H4 r
k次方是用來調(diào)整控制律對“偏差”(這是已經(jīng)不是差值,而是比值了,嚴格地說,應該叫“偏比”?)的靈敏度,相當于比例增益。這個控制律實際上相當于對數(shù)空間的純積分控制,要是有興趣,對很多常見的非線性過程有相當不錯的效果,實現(xiàn)也簡單。然而,這是一個本質(zhì)離散的控制律,在連續(xù)時間里無法實現(xiàn)。
) m- n$ E7 X! i4 e& k% g s6 J; s: t7 w! }, A' a+ h# R7 N
( L. C0 u5 x0 m, u' x8 W/ t, b+ d
) d/ M! U6 M9 `- ]5 X+ l) K
離散控制可以“看一步、走一步”的特性,是連續(xù)控制很難模仿的,也是在實際中極其有用的。
W; a" P6 E: t* ]
& W' y) ~+ D) o5 U7 F
1 |! v0 e1 N( G1 f; W6 x9 Y- r- k$ r+ B7 C, c# Z+ z/ e
辨識
$ c; U+ C# x8 K) ` f8 M
" M, F7 K' Q8 G9 J9 j9 [5 c+ f5 Y
' p$ E; I3 H& S4 k( q7 `8 U% i7 R8 N, r' L7 S1 P, A
形形色色的控制理論再牛,沒有被控過程的數(shù)學模型,照樣抓瞎。前面的洗澡水溫就是一個數(shù)學模型。這個模型是杜撰的,當然可以很容易地給它所有模型參數(shù)。但在實際中,模型參數(shù)不會從天上掉下來。多少科學家畢生致力于建立某一特定的物理、生物、化學或別的學科的數(shù)學模型,基本機制已經(jīng)清楚的模型都不容易建立,更不用說很多過程的基本機制或深層機制并不清楚。所以靠機理推導被控過程的數(shù)學模型是可能的,但對日常的控制問題來說,并不實際。這就是控制理論的另一個分支—辨識—一顯身手的地方了。1 e& X+ {( F: N- J P
7 a6 ?' Q |' _; V7 p5 B% t$ ]
+ P) i' g/ `. D. y* {
1 f- [# b5 ~ I
如果給定一個模型,也就是一個數(shù)學公式,給它一組輸入數(shù)據(jù),模型就可以計算出對應的輸出數(shù)據(jù)。比如說,給定模型y=2*x+1,再給出x=1,2,3,4,那y就等于3,5,7,9,就這么很簡單。辨識的問題反過來,先給定一個模型結(jié)構(gòu),在這里就是y=a*x+b,已知輸入-輸出數(shù)據(jù)是x=1,2時y=3,5,要求計算出a和b。顯然,這是一個二元一次方程,誰都會解。在實際中,輸入-輸出的觀察數(shù)據(jù)含有測量噪聲,這對參數(shù)估計的精度不利;但通常積累觀察的數(shù)據(jù)量遠遠超過未知參數(shù)的個數(shù),不說數(shù)學,感覺上這就應該對克服測量噪聲有利,關鍵是怎么利用這“多余”的數(shù)據(jù)。一個辦法是把數(shù)據(jù)組兩兩配對,借眾多的二元一次方程,然后對解出來的a和b作平均。還有一個辦法就是有名的最小二乘法了,說穿了,就是以a和b為最優(yōu)化的“控制量”,使模型輸出和實際觀測值之間的累積平方誤差為最小。
/ r7 R7 u8 {0 m7 S3 _8 u: F( Z+ \$ b1 F1 m3 ^
4 Y' a- a, I/ n
& F6 h+ v5 T0 Q0 e
實際工業(yè)過程大多有多年的運行經(jīng)驗,大量的數(shù)據(jù)不成問題。對于大多數(shù)常見過程,模型的基本結(jié)構(gòu)和定性性質(zhì)也可以猜一個八九不離十,有了如此有力的數(shù)學“大錘”,那么應該可以砸開一切建模的硬核桃啦。且慢,世上沒有真正的“神奇子彈”,一個問題解決了,另一個同等難度的問題又會出現(xiàn)。對于辨識來說,問題有好幾個。
Y7 g& u+ k7 e
3 g9 s0 J: z/ {3 E . y& G2 L3 F; ^( \& ? b
& ?. X0 T# k! D
第一個問題是工業(yè)數(shù)據(jù)的閉環(huán)性。大多數(shù)重要參數(shù)都有閉環(huán)回路控制。如果沒有閉環(huán)回路控制,那要么就是過程特性實在太復雜,簡單回路控制不了;要么就是這個參數(shù)其實不重要,飄移一點沒人在乎。然而,一旦閉環(huán),系統(tǒng)地輸入和輸出就是相關的了。這一相關不要緊,輸入-輸出數(shù)據(jù)之間的因果性就全亂了:輸出通過被控過程本身和輸入相關(這是好的,辨識就是要測算出這個相關關系,輸出要是和輸入不相關,也沒有控制或辨識什么事了),輸入通過反饋和輸出相關;輸入-輸出成為一個閉合系統(tǒng),你可以用任意多條定理或方法證明同樣的事:由于因果不分,閉環(huán)辨識是不可能的,除非另外加入“新鮮”的激勵,比如使勁變設定值,或者在閉環(huán)回路里額外施加獨立于輸入、輸出的激勵信號,比如“莫名其妙”地把閥門動幾下。弄到最后,工業(yè)數(shù)據(jù)到底能用多少,就不是一個簡單的回答。有的過程常年穩(wěn)定操作,像乙烯裝置,只有小范圍的微調(diào)。這倒不是人家懶或者不求上進,而是這些裝置早已高度優(yōu)化,常年操作在極其接近極限的位置,但原料和產(chǎn)品單一,所以工藝狀況不怎么大變。這種系統(tǒng)的閉環(huán)數(shù)據(jù)用起來很吃力,常常必須做一定的開環(huán)試驗。有的過程經(jīng)常在不同的狀態(tài)之間轉(zhuǎn)換(transition),或者由于不同的原料,如“吃”得很雜的煉油廠,或者由于不同的產(chǎn)品,如聚乙烯裝置,這實際上就是“使勁變設定值”,是新鮮的激勵。這種系統(tǒng)的閉環(huán)數(shù)據(jù)比較好用,但有別的問題,下面要談到。
# r, G0 [; }0 y) O
: e* N0 W- m3 g; ?0 o' l
. l' ]* ~+ q. a' j3 @
0 i* n* q7 G$ s2 L& J# s, z第二個問題是動態(tài)和穩(wěn)態(tài)。動態(tài)模型的作用有兩個:一是描述需要多少時間輸出才能達到某一數(shù)值;二是輸出最終能夠達到什么數(shù)值。用股票市場舉一個例子,你需要知道兩件事:一是這支股票最后會升到多少,二是需要多少時間才能升到那里,只知道其中一個對你并沒有太大的用處。當然為了簡化,這里假定這支股票一路飆升,不來忽升忽降(也就是非線性)或跌買漲賣(也就是閉環(huán)影響)的名堂。這就要求輸入-輸出數(shù)據(jù)必須包含充分的動態(tài)和穩(wěn)態(tài)信息,過于偏頗其中一方面對另一方面會不利。所以,長期穩(wěn)定運行的過程中可能包含足夠的穩(wěn)態(tài)數(shù)據(jù),但動態(tài)不足;常年不怎么穩(wěn)定的過程可能包含足夠的動態(tài)數(shù)據(jù),但穩(wěn)態(tài)不足。用PID控制打比方,精確的穩(wěn)態(tài)數(shù)據(jù)有助于計算正確的比例控制增益,精確的動態(tài)數(shù)據(jù)有助于計算正確的積分和微分增益,顯然,把比例增益整對了更為重要。為了獲得精確的穩(wěn)態(tài),在辨識中常常需要等過程開環(huán)穩(wěn)定下來才進行下一步,但是問題是,實際過程有時時間常數(shù)很長,幾個精餾塔一串聯(lián),時間常數(shù)幾個小時是客氣的,一、兩天都是可能的。這樣一來,一個不太大的模型,十來個變量,開環(huán)試驗一做就是一、兩個星期或者更長。要是一個裝置能夠兩個星期開環(huán),那也不需要什么控制了。
O1 K1 F9 [% [1 G" o5 t4 z, t' F6 o& j3 G: `3 D% X
' G, U1 k; [, [: T& z9 q5 @- n2 m2 m9 p) c+ C0 P" _
第三個問題是激勵的信噪比。都說人類活動是二氧化碳和溫室效應的主要原因,但要是你去生一堆篝火,再去高空大氣層去測一測二氧化碳和溫室效應,肯定什么也測不出來,本來多少,現(xiàn)在還是多少。為什么呢?不是因為這堆篝火沒有效果,而是環(huán)境中的自然的變化遠遠超過了篝火的作用,換句話說,就是噪聲遠遠超過了信號。工業(yè)測試也是一樣,信號一定要有一定的強度,否則是白耽誤工夫。信號強度應該使過程達到嚴重失穩(wěn)的邊緣,這樣才好獲得在大范圍內(nèi)都精確的模型,以便控制器不光在“風平浪靜”的情況下可以正常工作,在“驚濤駭浪”的情況下也能使系統(tǒng)恢復穩(wěn)定。然而,工廠以生產(chǎn)為主,在一切都“斤斤計較”的今天,如此大范圍的測試所帶來的產(chǎn)品損失甚至對設備的可能的危害,都是工廠極不愿意見到的。理論家們設計了一個偽隨機信號,用一連串寬窄不等的方波信號,作為激勵過程的輸入,在理論上可以使過程參數(shù)的平均值不致偏離設定值太多,但ISO9000不僅要求產(chǎn)品質(zhì)量的平均值要保證,產(chǎn)品質(zhì)量的一致性也要保證。再說,偽隨機信號的脈寬不好確定,太窄了,穩(wěn)態(tài)數(shù)據(jù)不夠;太寬了,和常規(guī)的階躍信號也沒有什么兩樣。所以偽隨機信號在實際上用得很少。
# I9 | X; S T3 N8 C/ r! q3 W+ }8 X9 d
8 O) ^" E8 R: a8 I! y( L
& i7 t0 B8 C1 w( v' e- c G2 y+ y第四個問題是輸入的相關性。實際工業(yè)過程到了要用辨識來確定模型的時候,都是單回路對付不了了,所以都是多變量過程。在理論上,多個輸入變量可以同時變化,只要輸入變量的變化是相互獨立的,數(shù)學上容許多個輸入變量同時變化,而辨識可以正確地辨別模型。然而,在使用實際過程的歷史數(shù)據(jù)時,常常遇到多個輸入變量并不相互獨立的問題。比如說,在制作巧克力的過程中,香草巧克力比較“苦”,或者說不太甜,而牛奶巧克力比較甜。問題是做牛奶巧克力時,不光加糖,還要加牛奶(廢話,不加牛奶那還是牛奶巧克力嗎?)由于兩者總是同時出現(xiàn),從純數(shù)學角度來說,在甜度模型里,就難以辨別甜度是由于加糖的關系,還是由于加牛奶的關系。有的時候可以根據(jù)對具體過程的認識,人工地限制辨識的過程,來消除這種影響,有的時候,就不太容易了,只好不用歷史數(shù)據(jù),專門做試驗,用各自獨立的輸入,便是模型。. ], K. S1 ^3 v7 g
7 B2 B" R3 D) q2 F* S9 i
' V0 c3 Y0 w/ x0 L7 ?
! K! P- m1 r. i+ ~0 c9 [# Q n第五個問題是模型結(jié)構(gòu)。模型結(jié)構(gòu)包括兩個方面,一是模型的階數(shù),二是剔除在物理上不可能的模型。辨識的模型歸根結(jié)蒂還是差分方程,這就有一個如何預設階數(shù)的問題。數(shù)學上有很多驗前和驗后的檢驗方法,在工業(yè)上,人們偷一個懶,改用非參數(shù)模型,也就是用一條響應曲線而不是一個方程來表述一個模型,這樣就可以繞過階數(shù)的問題。但是剔出不現(xiàn)實的模型還是一個手工活,需要對每一個模型仔細研究,以確定模型所描述的動態(tài)關系是否合理。數(shù)學方法還是不夠可靠。
- L# ^2 D( T" D7 H& i. P' j! a8 L: {
8 ?3 H3 W4 {% ?- |8 Z. x
2 v& i( a6 p( e1 l/ ]在搞模型的人中間,常常會聽到黑箱、白箱和灰箱的說法。黑箱模型就是不理會實際過程的物理、化學等性質(zhì),純粹從數(shù)學出發(fā),假設一個模型結(jié)構(gòu),然后用種種數(shù)學方法找出一個最好的模型。白箱反其道而行之,從物理、化學等性質(zhì)出發(fā),建立機理模型。黑箱模型的好處是“放之四海而皆準”,不需要對具體過程有深入的了解。黑箱模型是一種削足適履的作法,但是如果履本身就做得比較好,具有相當?shù)撵`活性和適應性,就并不需要削太多的足。由于黑箱模型可以自由假設模型結(jié)構(gòu),黑箱模型的處理和使用都比較方便。黑箱模型是經(jīng)驗主義的,數(shù)據(jù)里沒有包含的情況,黑箱模型無法預測。白箱模型則是“量身度造”的,反映了過程的物理、化學等性質(zhì),對實際過程的數(shù)據(jù)依賴較少,對數(shù)據(jù)中不包含的情況也能可靠地預測。但是白箱模型的結(jié)構(gòu)由具體問題決定,得出的模型不一定容易使用。在實際中,人們經(jīng)常在假設一個模型結(jié)構(gòu)的時候考慮進大大簡化的過程機理,所以模型結(jié)構(gòu)不是憑空拍腦袋出來,而是粗略地抓住了過程的基本特質(zhì),然后再用黑箱方法的“數(shù)據(jù)絞肉機”,將簡化模型沒有能夠捕捉的細微末節(jié)一網(wǎng)打盡。這種模型結(jié)合了黑箱和白箱的特點,所以稱為灰箱。實際建模中,純粹黑箱或白箱的成功例子很少,灰箱的成功機會就要多得多。/ f5 h, G0 i5 J- X0 Y$ q
# j9 s/ o ]* }$ Z% w- A7 c
+ M9 Z9 ?: m2 b, n1 i; g3 V& V+ k
" U% |, }6 z, g! M0 E# s- M不管什么箱,最后還是有一個如何辨識實際過程的問題。閉環(huán)辨識的好處不用多說了,問題是如何從閉環(huán)辨識中獲得有用的模型。工業(yè)上有一個辦法,沒有一個“官名”,但實際上是一個開環(huán)-反饋過程。具體做法是這樣的:先用粗略的過程知識構(gòu)造一個簡單的多變量控制器,其任務不是精確控制被控過程,而是將被控變量維持在極限之內(nèi),一旦逼近或超過極限,就采取動作將其“趕”回極限內(nèi);但只要在極限內(nèi),就按部就班地作階躍擾動,測試過程特性。測試的結(jié)果用來改進控制器的模型,然后再來一遍。幾遍(一般兩遍就夠了)之后,模型精度應該很不錯了。這個方法比較好地解決了辨識精度和過程穩(wěn)定性的要求。
0 j- p% ^6 I, o% q! \% n1 o0 [: ]" P
% b- [+ P; e! Y8 d3 ]* l
3 F, ~& {3 S M# H* J9 L, F8 h自適應) Y- V6 }# U3 a6 R+ ]2 `) t
: z [( x$ O* u$ y. m
1 v7 a/ p8 I6 ^! \& Q
: V6 L/ }8 ^9 O7 r0 ]+ d' j西游記里最好看的打斗是孫悟空大戰(zhàn)二郎神那一段。孫悟空打不過就變,二郎神則是“敵變我變”,緊追不舍,最后把個無法無天的頑皮猴子擒拿歸案。用控制理論的觀點看,這“敵變我變”的本事就是自適應控制控制器結(jié)構(gòu)根據(jù)被控過程的變化自動調(diào)整、自動優(yōu)化。
3 ~2 z4 k) p9 P+ K7 f& U
* g2 S4 b4 \5 y* ~ + e4 T9 w6 C( f
( Z8 u) x% l2 Z9 u% K# Z自適應控制有兩個基本思路,一是所謂模型跟蹤控制,二是所謂自校正控制。模型跟蹤控制也叫模型參考控制,在概念上對人們并不陌生。毛主席那陣子,經(jīng)常樹立各種榜樣,目的就是要在黨發(fā)出號召時,普通人們比照榜樣的行為,盡量調(diào)整自己的行為,使我們的行為和榜樣的行為接近。這就是模型跟蹤控制的基本思路。模型跟蹤控制在航空和機電上用得比較多,在過程控制中很少使用。- j; u0 C1 }) z! ]- T
) h# d h' t2 d% ~+ z- @5 S5 b
B1 a9 H- n" _
9 `5 n/ v6 t6 i$ H* G
自校正控制的思路更接近人們對自適應的理解。自校正控制是一個兩步走的過程,首先對被控過程作實時辨識,然后再辨識出來的模型的基礎,實時地重新構(gòu)造控制器。思路簡單明了,實施也不算復雜,但自校正控制在一開始的歡呼后,并沒有在工業(yè)上取得大范圍的成功,原因何在呢?
7 v0 A2 ]/ r. S( g! i! N8 W/ H! H3 Y: N! ?) T2 E
& k6 C* A2 J3 e9 V1 o$ @9 x! B& x) D2 ~0 g
原因之一是閉環(huán)辨識。雖然自校正控制不斷改變控制器的參數(shù),在一定程度上打破了固定增益反饋控制對輸入、輸出帶來的因果關系,但是因果關系還是存在,還是相當強烈,對辨識模型的質(zhì)量帶來影響。
. L" V1 f' }+ J c- c
1 M9 R2 O& ~+ v* u! i# z ! S% f0 u3 X0 y4 X2 A
7 _3 A& @4 u3 j: Z& G0 N G; j
原因之二是所謂“協(xié)方差爆炸”。數(shù)學上當然有嚴格的說法,但簡單地說,就是自校正控制器的目的當然還是使系統(tǒng)穩(wěn)定下來,但是在系統(tǒng)越來越穩(wěn)定的過程中,自校正控制器對偏差和擾動的敏感度越來越高,最后到“萬籟俱靜”的時候,敏感度在理論上可以達到無窮大,然而,這時如果真的擾動來了,控制器一下子就手足無措了。
, v2 C4 I7 j `6 w
A# W `9 F& B7 u2 q; j
- H: n7 c# e4 }: Z2 ]5 l* \) V. n; h! w q2 q. T
原因之三是實際過程的復雜性。在辨識實際過程時,最重要的步驟不是后面的“數(shù)學絞肉機”,而是對數(shù)據(jù)的篩選,必須把各種異常數(shù)據(jù)剔除出去,否則就是“垃圾進來,垃圾出去”。但是,要實時、自動地剔除異常數(shù)據(jù),這個要求非同小可,比設計、投運一個自校正控制器費事多了。這是自校正控制在實際中成功例子有限的最大原因。
% n7 j! t1 g* N8 l/ a5 M5 P
7 Q7 h' }' T, L R# L5 | + c3 X9 u. M: y) Y4 o8 ]2 L
- f% R# @. b# |; C, {模型預估控制0 n9 |9 T7 E5 B) g
0 y3 n5 r/ M/ r) L/ g7 q5 u
: M+ Y) d, j( W+ S
) [9 X. r6 N- H+ t% a4 [自動控制從一開始就是以機電控制為主導的。60年代數(shù)學派主導了一段時間后,70年代化工派開始“小荷才露尖尖角”。自校正控制已經(jīng)有很多化工的影子,但化工派的正式入場之作是模型預估控制(modelpredictivecontrol,MPC)。這是一個總稱,其代表作是動態(tài)矩陣控制(dynamicmatrixcontrol,DMC)。DMC是CharlieCuttler的PhD論文,最先在殼牌石油公司獲得應用,以后Cuttler自立門戶,創(chuàng)辦DMC公司,現(xiàn)在是AspenTechnology公司的一部分。
4 ]$ I/ \' o% M# \) J& ?- _6 p2 R
E! s* _) n$ g) U/ Q4 a7 I6 f7 B' J( i
數(shù)學控制理論非常優(yōu)美,放之四海而皆準,但是像老虎一樣,看起來威猛,卻是干不得活的,干活畢竟靠老牛。DMC的成功之處在于應用偽理論,將一些本來不相干的數(shù)學工具一鍋煮,給一頭老老實實的老牛披上一張絢爛的老虎皮,在把普羅大眾唬得一愣一愣的時候,悄悄地把活干了。 |