把剩下的兩篇給你們貼出來吧。
. |' M+ W% W1 J! I7 R9 R% \
! h9 l8 x# y0 u' @0 P ?6 \1 r& S9 H- s4 ?8 f4 H- o* k
都看過舞龍吧?一個張牙舞爪的龍頭氣咻咻地追逐著一個大繡球,龍身子扭來扭去,還時不時跳躍那么一兩下。中國春節沒有舞龍,就和洋人的圣誕節沒有圣誕老人一樣不可思議。想象一下,如果這是一條眼睛看不見的盲龍,只能通過一個人捏著龍尾巴在后面指揮,然后再通過龍身體里的人一個接一個地傳遞控制指令,最后使龍頭咬住繡球。這顯然是一個動態系統,龍身越長,人越多,動態響應越遲緩。如果只看龍頭的位置,只操控龍尾巴,而忽略龍身子的動態,那就是所謂的輸入-輸出系統。經典控制理論就是建立在輸入-輸出系統的基礎上的。對于很多常見的應用,這就足夠了。
+ {9 T8 Q& g4 P* a0 @$ @( q& g' o* a. z% }
/ A+ }* m3 a3 `9 f6 ~/ I* d7 n. k
7 P# B* n4 b4 _8 ~! C" v5 l但是卡爾曼不滿足于“足夠”。龍頭當然要看住,龍尾巴當然要捏住,但龍身體為什么就要忽略呢?要是能夠看住龍身體,甚至操縱龍身體,也就是說,不光要控制龍尾巴,控制指令還要直接傳到龍身體里的那些人,那豈不更好?這就是狀態空間的概念:將一個系統分解為輸入、輸出和狀態。輸出本身也是一個狀態,或者是狀態的一個組合。在數學上,卡爾曼的狀態空間方法就是將一個高階微分方程分解成一個聯立的一階微分方程組,這樣可以使用很多線形代數的工具,在表述上也比較簡潔、明了。
) V3 G; `# e0 n+ F0 B: X! m* \( i. f6 i1 e: ? N
& k. G' ?: h( ~/ }
/ t: V6 y# \* ?
卡爾曼是一個數學家。數學家的想法就是和工程師不一樣。工程師腦子里轉的第一個念頭就是“我怎么控制這勞什子?增益多少?控制器結構是什么樣的?”數學家想的卻是什么解的存在性、唯一性之類虛頭八腦的東西。不過呢,這么說數學家也不公平。好多時候,工程師憑想象和“實干”,辛苦了半天,發現得出的結果完全不合情理,這時才想起那些“性”(不要想歪了啊,嘿嘿),原來那些存在性、唯一性什么的還是有用的。! H F3 C# [! f; B5 e5 i: E
1 e- |2 y5 e8 |/ _; V 7 v6 b' `( c# n+ e# ^) j" Z
+ u( d- {4 |2 b# K2 H. G+ K
還是回過來看這條龍。現在,龍頭、龍尾巴、龍身體都要看,不光要看,還要直接操控龍頭到龍尾的每一個人。但是,這龍不是想看就看得的,不是想舞就舞得的。說到“看”,直接能夠測量/觀測的狀態在實際上是不多的,所謂看,實際上是估算。要是知道龍身體有多少節(就是有多少個人在下面撐著啦),龍身體的彈性/韌性有多少,那么捏住龍尾巴抖一抖,再看看龍頭在哪里,是可以估算出龍身體每一節的位置的,這叫狀態觀測。那么,要是這龍中間有幾個童子開小差,手不好好拉住,那再捏住龍尾巴亂抖也沒用,這時系統中的部分狀態就是不可觀測的。如果你一聲令下,部分童子充耳不聞,那這些狀態就是不可控制的。卡爾曼從數學上推導出不可控和不可觀的條件,在根本上解決了什么時候才不是瞎耽誤工夫的問題。這是控制理論的一個重要里程碑。
+ P3 P( O& I; ~+ @1 e& c: R1 R- y- F) W' ~" z3 t; P
* }& T) p9 U, v' T& m+ q4 s" L+ l
再來看這條龍。如果要看這條龍整齊不整齊,排成縱列的容易看清楚;如果要清點人數,看每一個人的動作,排成橫列的容易看清楚。但是不管怎么排,這條龍還是這條龍,只是看的角度不同。那時候中國人的春節舞龍還沒有在美國的中國城里鬧騰起來,不知道卡爾曼有沒有看到過舞龍,反正他把數學上的線性變換和線性空間的理論搬到控制里面,從此,搞控制的人有了工具,一個系統橫著看不順眼的話,可以豎著看,興趣來了,還可以斜著看、倒著看、擰著看,因為不管怎么看,系統的本質是一樣的。但是不同的角度有不同的用處,有的角度設計控制器容易一點,有的角度分析系統的穩定性容易一點,諸如此類,在控制理論里就叫這個那個“標準型”。這是控制理論的又一個里程碑。/ z2 W& D% P0 p$ b+ [9 J, \
2 ]- u" x& Q* H1 a; b3 O
* j* Q2 l# g- O! I
. R, S4 `: T& L$ Y: ~" c; H
觀測狀態的目的最終還是控制。只用輸出的反饋叫輸出反饋,經典控制理論里的反饋都可以歸到輸出反饋里,但是用狀態進行反饋的就叫狀態反饋了。輸出反饋對常見系統已經很有效了,但狀態反饋要猛得多。你想象,一個系統的所有狀態都被牢牢地瞄住,所有狀態都乖乖地聽從調遣,那是何等的威風?臺商大奶們的最高境界呀。+ w) n( v O. Y: S- W! o
1 n- d4 S: k8 \
" y$ x5 W, L$ } t# l( e& D
% q7 g& k" i/ \5 z: y9 A盡管學控制的人都要學現代控制理論,但大多數人記得卡爾曼還是因為那個卡爾曼濾波器(KalmanFilter)。說它是濾波器,其實是一個狀態觀測器(stateobserver),用來從輸入和輸出“重構”系統的狀態。這重構聽著玄妙,其實不復雜。不是有系統的數學模型嗎?只要模型精確,給它和真實系統一樣的輸入,它不就乖乖地把系統狀態給計算出來了嗎?且慢:微分方程的解不光由微分方程本身決定,還有一個初始條件,要是初始條件不對,微分方程的解的形式是正確的,但是數值永遠差一拍。卡爾曼在系統模型的微分方程后再加了一個尾巴,把實際系統輸出和模型計算的理論輸出相比較,再乘上一個比例因子,形成一個實際上的狀態反饋,把狀態重構的偏差漸進地消除,解決了初始條件和其他的系統誤差問題。卡爾曼濾波器最精妙之處,在于卡爾曼推導出一個系統的方法,可以考慮進測量噪聲和系統本身的隨機噪聲,根據信噪比來決定上述比例因子的大小。這個構型其實不是卡爾曼的獨創,隆伯格(Luenburg)也得出了類似的結構,但是從系統穩定性角度出發,來決定比例因子。同樣的結構大量用于各種“預測-校正”模型結構,在工業上也得到很多應用,比如聚合反應器的分子重量分布可以用反應器的溫度、進料配比、催化劑等來間接計算,但不夠精確,也無法把林林總總的無法測量的干擾因素統統包括進數學模型里,這時用實驗室測定的真實值來定期校正,就可以結合數學模型及時地特點和實驗室結果精確的特點,滿足實時控制的要求,這或許可以算靜態的卡爾曼濾波器吧。卡爾曼濾波器最早的應用還是在雷達上。所謂邊掃描邊跟蹤,就是用卡爾曼濾波器估計敵機的位置,再由雷達的間隙掃描結果來實際校正。實際應用中還有一個典型的問題:有時候,對同一個變量可以有好幾個測量值可用,比如有的比較直接但不精確,有的是間接的估算,有很大的滯后但精確度高,這時可以用卡爾曼濾波器把不同來源的數據按不同的信噪比加權“整合”起來,也算是民用版的“傳感器融合”(sensorfusion)吧。
( _1 P8 `4 }7 M/ d N
- r" O- F0 T2 g
9 M$ K, C/ D+ L( ]# d$ f5 O8 p4 X, ]
除了卡爾曼濾波器外,卡爾曼的理論在實際中用得不多,但是卡爾曼的理論在理論上建立了一個出色的框架,對理解和研究控制問題有極大的作用。
/ @/ }' L% I" I# w
# g$ S0 _! I! |$ h, W 1 V2 R- Q' U- g0 C/ M3 N! e) r" n/ X
O4 B% q1 q' c3 R5 K% z+ o順便說一句,卡爾曼的理論基本局限于線形系統,也就是說,十塊大洋買一袋米,二十塊大洋就買兩袋米,都是成比例的。實際系統中有很多非線性的,兩千塊大洋還能買兩百袋米,但兩千萬大洋就要看米倉有沒有貨了,不是錢越多,買的米越多,有一個“飽和”的問題。另一方面,要是米倉有足夠的貨,兩千萬大洋的集團購買力強,或許就可以買三百萬袋米了。這些只是非線性的簡單例子。所有偏離線性問題的都是非線性,所以非線性的問題研究起來要復雜得多。實際系統還有其他特性,有的是所謂時變系統,像宇宙火箭,其質量隨時間和燃料的消耗而變,系統特性當然也就變了。很多問題都是多變量的,像汽車轉彎,不光方向盤是一個輸入,油門和剎車也是輸入變量。狀態空間的理論在數學表述上為線性、非線性、單變量、多變量、時變、時不變系統提供了一個統一的框架,這是卡爾曼最大的貢獻。
0 Q* y5 ?5 _$ Q4 t& j6 k
. ^5 f/ c' _1 K8 ]7 E( k# F
" V e8 ^2 f/ T! N5 J* K' n" m+ o3 C e( I* y
最優控制
) { N8 o3 N. [' U0 r9 _2 A: q& D- n* R* P5 F
$ l( ^' M; T' M6 Y
- Y9 D0 j; K5 K$ J' \( ~
前面說到,搞控制有三撥人:電工出身的,化工出身的,和應用數學出身的。在卡爾曼之前,電工出身的占主導地位,數學家們好在象牙塔里打轉轉,化工出身則還對控制理論懵里懵懂,還在“實干”呢。卡爾曼之后,一大批數學出身的人,利用對數學工具的熟悉,轉攻控制理論。一時間,控制理論的數學化似乎成了“天下大勢,順我者昌,逆我者亡”了。在狀態空間的框架下,多變量沒有太多的問題好研究,于是最優化成為控制理論的新時尚。
3 p8 R- f9 X; i3 N! ]- k. m+ u2 z& f" x, i# ^/ ] l8 {- R
8 K0 Q3 b/ S5 S; P; W/ H* p0 }$ V2 J# j
對于一根給定的曲線,求一階導數為零的點,就是這個曲線的極點;在對這一極點求二階導數,大于零就是最小點,小于零就是最大點。這是牛頓老爺子就整明白的東東,現在高中或大一人人都學過的東西。但是動態系統是一個微分方程,對微分方程求一階導數為零,就導致變分法和所謂歐拉方程。但這個東西用起來不方便。實際的最優控制不大直接使用變分。0 b. p! j- G( E% m! Z
( y7 w: o6 S' m( w: u' P F+ H8 r! O
' l, f* |* D% b1 o5 D5 M5 C
) Q j7 f; V$ |% s) F! \2 M俄羅斯是一個奇怪的地方。老毛子們要么蔫蔫的,要么瘋狂的。俄羅斯的悲劇電影看得你也郁悶得想去自殺。但是老毛子要是搭錯筋整出一個喜劇呢?那你要么跟著瘋狂,要么被逼瘋狂。就是這么一個地方,除了無數托爾斯泰、柴可夫斯基、普希金、屠格涅夫等文藝巨璧外,俄羅斯也盛產數學家,其中兩個是龐特里亞京和學控制的人老惦記著的李亞普諾夫。; { H h8 T0 K. I6 h1 X- O% t( h. j
3 m& i2 y3 q9 q5 l# A
+ p& @& _3 ?& a1 J" L+ H
3 J8 U% F& r! w, H+ I" d) Q龐特里亞京的極大值原理聽起來嚇人,其實說白了很簡單。看見那山嗎?山頂就是最高點(切,這還用說?);看見那山坡嗎?要是在山腰劃一道線,從山下往上爬,盡管山坡還在繼續往上延伸,但是到線為止,不得逾越,那山腰上那道三八線就是最高點(切,這還用說?)。這就是龐特里亞京的極大值原理。當然啦,龐特里亞京是用精巧、深奧的數學語言表述的,要不然他在數學界里也別混了。不過呢,意思就是這么一個意思。
1 ~5 B# c. w( h" q; B
: ]8 [ w: b+ e' F ( ]9 U/ D& X, N) I, f" ^! w
. x* m. j+ x6 b7 {( D" \+ t1 c
龐特里亞京極大值原理的一個典型應用就是所謂最速控制問題,或者叫時間最優控制(timeoptimalcontrol)問題,簡單地說,就是給定最大馬力和最大剎車功率,問題是怎么開汽車能夠最快地從A點開到B點(什么轉彎、上下坡、紅綠燈,這種瑣碎的事情也要拿來煩人?一點品味都沒有!)。你可以用優美但繁瑣的數學求證,或者用膝蓋想想:最快的方法,就是一上來就加足馬力,全速前進;然后在不到終點的某一地點,全力剎車,使慢下來的汽車在到達終點時正好停下來。這是最快的方法,不可能比這更快了。稍微發揮一點想象力,可以想象“梆”的一下,控制量的油門板一腳到底,再是“梆”的一下,剎車板一腳到底,控制任務就完成了。所以最速控制也叫“梆-梆”控制(bangbangcontrol)。
7 Y7 M. k3 y/ V' y6 ~/ |1 |' E. \/ c
8 q7 q# v! `1 `0 h
% [ a6 T; }$ l7 F最速控制在理論上是一個很有趣的問題,解法也是簡潔、優美,但在實際中直接使用的例子實在是鳳毛麟角,一般都是開始時用“梆-梆”,或者勻速上升到最大控制,以緩和控制的沖擊力;到終點附近時,改用PID作閉環微調,以克服“梆-梆”對系統模型誤差十分敏感的缺點。電梯控制就是這樣一個例子。從一樓到四樓,電動機很快勻速上升到最高轉速,一過三樓,電動機就下降到較低的轉速,然后根據電梯實際位置和樓面之差,有控制地減速,直至停下來。要是控制參數調得好的話,一下子就穩穩當當地停下來;要是調的不夠好,會在停下來之前上下晃蕩幾下。
3 x6 ?- H* w- X8 N6 F$ I% G) }7 t) H% [+ h& K2 Z
' A$ Q( R6 C) W( t/ n' j g
9 [3 c+ f& E1 w9 V. }
. {% H# n& a9 ?' {# g# v最速控制問題是較早的最優控制問題,它提供了一個很有趣的思路,但這顆樹上開花結果不多。相比之下,最優控制的另外一支枝繁葉茂,有生氣得多了。這一支就是線型二次型最優控制(linearquadraticcontrol)。數學是有趣的,但數學也是盲目的。在數學上,最優化問題就是一個在曲面上尋找凸點的問題,只要你能把一個物理問題表述成一個曲面,數學是不理會姓無姓資的。既然如此,控制偏差的平方在時間上的累積就是很自然的選擇,二次型就是平方在線性代數里的說法。線型系統的偏差平方有很好的性質,這山峰是一個饅頭山,沒有懸崖峭壁,沒有溝坎,容易爬;一山只有一峰,不用擔心找錯地方。不過這山峰不能只包含控制偏差,還要包含控制量,原因有三個:
) U% n: a8 w! G2 O; ?- R2 ~
4 p6 Y( f8 l6 F1 H+ u# n3 _
( q% u! U5 s8 @$ `& S$ |$ E
% Y h4 n* N" v4 M3 [" e1、如果不包括控制量,那最優控制的解是沒有意義的,因為無窮大的控制量可以使累計平方偏差為最小,但無窮大的控制量是不現實的。
+ h) Y: @+ l: g% s
3 O8 }' n8 `1 B0 D9 ^ 6 m+ {$ \4 s. o, S( n6 C
, O5 o5 T+ \& ?! {/ m
2、控制量的大小通常和能量、物料的消耗連在一起,實際控制問題一般是“在最小能量、物料消耗小達到最高的控制精度”,所以在“山峰”中同時包含控制偏差和控制量是很自然的。4 V7 ?: P; o* |
; S- e, c/ T) }. j" g6 h
. u$ b7 X2 Z( Z/ G
8 b# }" ~8 s: U t i. r2 i, \4 I" N# F0 H+ K
3、系統模型總是有誤差的,誤差“總是”在高頻、大幅度控制作用下最突出,所以為了減低系統對模型誤差的敏感性,也有必要限制控制量的大小。$ E$ v6 {( H; o# D- ^' F
/ |" N# I+ P J/ P) C& T) J
. C; n( b" U% R2 T- S5 y) Z9 ~) H$ a0 O) O9 f5 n( f( }9 W8 m
所以線性二次型最優控制的“目標函數”(也就是定義山峰形狀的數學表述)是一個控制偏差和控制量各自平方的加權和的積分。積分當然就是“在時間上的累積”了,加權和其實就是在控制偏差的平方項和控制量的平方相前分別乘以比例因子,然后再相加。兩個比例因子的相對大小決定了誰更重要。運用矩陣微分和線型代數工具,不難導出線性二次型控制律—一個基本的狀態反饋控制律!只是反饋增益矩陣是按最優化的要求計算出來的。
/ t7 u+ {, L5 a0 I3 A8 x
- N) T; W- J7 R5 T, i
. d" Y+ p5 V; q$ D8 y: f5 {! H7 F; g6 E& b8 ~
線型二次型最優控制開創了一整個新的控制領域,很快從狀態空間走出來,進入其他領域,子孫繁衍,人丁興旺。這一支是當今最優控制在應用中的主體。2 |4 ]7 s, \2 c+ U
A( C$ }( _9 H: q5 u
& H R; S$ q7 k( N
. w$ c4 V# E, h- v, S# v! F線性二次型控制具有各種各樣的優點,但是,線性二次型沒有回答一個最基本的控制問題:這個閉環系統是不是穩定。這里,我們的飽受牽記的李亞普諾夫同志出場了。李亞普諾夫也是一個腦子搭錯筋的人,一百多年前,玩微分方程玩出了癮,整出兩個穩定性(或者叫收斂性)的定理,前一個沒有什么太了不起的,把非線性系統線性化,就是把一根曲線用很多一小段、一小段的直線近似,然后按直線來分析。后一個就有點邪門了。老李琢磨出一個定理,說是對于任意一個系統,如果能找到一個自我耗散的能量函數(數學說法是正定函數),也就是其數值永遠為正,但隨時間漸進地趨向零,或者說這個能量函數對時間的導數永遠為負,那這個系統就是穩定的。據說定理的證明是一個天才的杰作,我等凡人只有頻頻點頭的份。不過想想也對,系統的能量耗散沒了,系統不也就安分下來了嗎?當然就穩定嘍。2 R) F" l- f7 T$ k3 V' a
! I R$ T# E7 U, q6 i * o" @& V# W5 H% ?
) z( u5 M1 }; d' v
李亞普諾夫比卡爾曼還要數學家,他的定理只給出“如果存在……就……”,怎么找這個自我耗散的能量函數他沒說,這個函數一般是什么樣他也沒說。這難不倒搞自動控制的廣大革命群眾。不是要正定函數嗎?不是沒有限制什么形式的正定函數嗎?那就用控制偏差的平方吧。說干就干,但是干著干著,好玩的事情出現了,對偏差平方(或二次型)的求導,導出了和線性二次型最優控制推導過程中同樣出現的一個所謂黎卡蒂方程(Riccatiequation),感情這是殊途同歸呀。換句話說,線性二次型控制總是穩定的。這是線性二次型控制的一個重要貢獻:把最優性和穩定性連到一起。
P& t- P& [. Z2 `+ s* }( L8 c- \0 J) @9 d4 f$ g
$ z- U- T" W9 w" i i$ Y/ S* L
* `5 M0 ~9 l' s F0 q+ ]2 K再扯一句李亞普諾夫,他的第二個定理非常威猛,但是有點像一個奇形怪狀的大錘,到現在人們還在找合適的釘子,好用這把大錘砸幾下。線性二次型控制是已知的僅有的幾個釘子之一,另一個是變結構控制,也可以用李亞普諾夫方法,這是題外話了。9 l/ t9 D! t6 R& U {9 i" h
5 x4 C, U! n) k2 S% c& s
/ Y$ T' Z% d! W: ^ T7 V! j* {; K' ?- E9 X/ C: T1 N
數字控制: W& L) V2 e- i4 F3 N9 W, ^$ q( I+ ]
/ U W) y+ }9 l7 H d, ]# Y4 u
6 [: S0 L# K+ D. D
1 c# o3 ^: p; b4 \% R. M都說瓦特的蒸汽機后,計算機是影響人類進程最大的發明,計算機當然也對自動控制帶來深刻的影響。如前所述,控制理論基本上都是圍繞微分方程轉的,所以在“本質”上是連續的。但是數字計算機是離散的,也就是說,數字控制器的眼睛不是一直盯著被控對象看的,而是一眨一眨的。數字控制器的“手腳”也不是一刻不停地連續動作的,而是一頓一頓的。這是數字計算機的天性使然。于是,傳統的控制理論全部“翻譯”到離散時間領域,微分方程變成了差分方程,所有方法、結論都有了連續、離散兩套,不盡相同,但是大同小異。* c0 x2 g- L/ B. S K
7 F8 l/ V$ y: V/ k P
9 `) I- K6 O: }8 M% t$ T5 h
! g' t' G6 h( p7 a* }要是數字控制就是簡單的連續系統離散化,計算機控制也就沒有什么了不起。離散控制帶來了一些連續控制所不可能具備的新特點,這就是:差分方程用清晰界定的時刻之間的關系來描述動態過程。回到洗熱水澡的例子,如果熱水龍頭不在跟前,而是在村外一里地的小鍋爐房里,你只能用電話遙控,那水溫或許可以表示為' k+ O) j0 i m
3 m K0 M$ L: B" K- g$ g
) A2 S; E0 c; E
9 s$ ]* [5 V( M3 c1 Q7 ^下一分鐘水溫=0.7*現在水溫+0.2*上一分鐘水溫+0.1*再上一分鐘水溫+0.4*(5分鐘前鍋爐房龍頭開度-6分鐘前鍋爐房龍頭開度)
- ?( p+ D# e; }' m5 \# S
- g& L) L. C( j' [ ( i( C( v5 H3 M2 d/ s+ h
1 J( H; ]9 u) r7 I: L9 F
顯然,下一分鐘的水溫受現在水溫的影響比上一分鐘和再上一分鐘的水溫的影響要大,但鍋爐房龍頭開度要是不變,現在、上一分鐘、再上一分鐘水溫都一樣的話,下一分鐘的水溫也應該和現在的水溫一樣。為什么用5分鐘前鍋爐房的龍頭開度呢?那是因為熱水從村外流到洗澡房要有一定的時間,這個時間就是滯后。要是把時間向前推,那現在的龍頭開度就會影響5分鐘后的水溫。這說明了離散模型的一個重要特質:預估能力。所有預報模型都是建立在離散模型的這個預估能力上,不管是天氣預報,還是經濟預測,還是自動控制里對有滯后的過程的控制。
! E W& z" x. Y( x* U9 ^* |! \. D/ P/ f/ h
+ w2 G/ p! |& y
: a( {) B; b" a8 w6 Y數字控制的另一特質是可以實施一些不可能在連續時間實現的控制規律。工業上常有控制量的變化需要和當前的實際值有關的情況。比如對于不同的產品,反應器的轉化率總是大體在88-92%之間,沒有太大的變化,但是催化劑可以在0.5到35ppm之間變化,采用常規的PID的話,增益就非常難設,對一個情況合適了,對另一個情況就不合適。所以催化劑需要按百分比變化率調整,而不是簡單地按偏差比例調整。比如說,轉化率偏離1%時,催化劑要是在0.5ppm,應該調整0.05ppm;但是在15ppm的時候,就應該是1.5ppm。這樣,控制律就可以表示為
( K: `8 @& {# t
: x$ z# c& ^* ]+ D. l+ e
( a ^" n* x/ e0 L9 K$ A H, q7 `+ J2 e$ C6 x5 d
當前的控制量=上一步的控制量*(設定值/當前的測量值)* H5 U! s! [6 j5 k" _) \5 F
8 g5 [! N7 z4 A8 Y* o a* L 7 a+ r1 Z5 x/ o
5 C7 \* b4 C4 \# B/ K) T
也就是說,在被控變量高于設定值10%的情況下,控制量也增加10%;測量值和設定值一樣時,控制量不再變化。實際使用時,誰除以誰要根據測量值上升你是要控制量上升還是下降來決定,控制律也要稍微修改一下,成為
9 y' Z7 o% o9 k1 M& x# a; s. Q' q4 c5 a+ v) O3 X7 _
& \2 w% A) t, B; x9 x7 \3 K+ j( O8 u: A# A
當前的控制量=上一步的控制量*(當前的測量值/設定值)^k
6 C; u% F) n9 P! P
( A7 H* S; o1 F/ `) j9 W* ? % f$ J' o. ^6 W1 W
! M# t3 D `) N5 ^# g2 A+ C6 Gk次方是用來調整控制律對“偏差”(這是已經不是差值,而是比值了,嚴格地說,應該叫“偏比”?)的靈敏度,相當于比例增益。這個控制律實際上相當于對數空間的純積分控制,要是有興趣,對很多常見的非線性過程有相當不錯的效果,實現也簡單。然而,這是一個本質離散的控制律,在連續時間里無法實現。3 u( {, J! C* V3 \" W8 i/ q3 F
7 A$ y$ v3 c* l9 C \; w+ I5 X5 J / A+ X1 G! n3 N) `6 P1 c' E
! d! r) w( o; ^+ x7 u
離散控制可以“看一步、走一步”的特性,是連續控制很難模仿的,也是在實際中極其有用的。6 a2 v3 I2 N$ D2 u2 T7 k3 Z
# M9 c, s6 V/ D. f
; u5 W% `) E& f' ?
; W. h6 d s& [3 u9 Z9 E+ p' |; Y8 ^辨識4 o9 ~; e" @4 y, P( r' M
|3 W; \2 ^: {- Z
; s3 n) E: {5 ]7 U7 f0 N& \6 \; z$ e8 j8 c a
形形色色的控制理論再牛,沒有被控過程的數學模型,照樣抓瞎。前面的洗澡水溫就是一個數學模型。這個模型是杜撰的,當然可以很容易地給它所有模型參數。但在實際中,模型參數不會從天上掉下來。多少科學家畢生致力于建立某一特定的物理、生物、化學或別的學科的數學模型,基本機制已經清楚的模型都不容易建立,更不用說很多過程的基本機制或深層機制并不清楚。所以靠機理推導被控過程的數學模型是可能的,但對日常的控制問題來說,并不實際。這就是控制理論的另一個分支—辨識—一顯身手的地方了。
b1 F4 t8 S! k: V M) S7 ~
2 x, Y! P0 Q- M8 M9 W( C/ c + ^" E: O0 r4 W9 t0 ?
h9 U4 F P& b4 N5 |$ t1 e如果給定一個模型,也就是一個數學公式,給它一組輸入數據,模型就可以計算出對應的輸出數據。比如說,給定模型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為最優化的“控制量”,使模型輸出和實際觀測值之間的累積平方誤差為最小。
4 W/ d: b& a# S5 b d& ]
8 T# [& ?. C& M& z- E# n % M! \0 i' ^; _; B
+ V3 H& G2 y9 \/ a; I
實際工業過程大多有多年的運行經驗,大量的數據不成問題。對于大多數常見過程,模型的基本結構和定性性質也可以猜一個八九不離十,有了如此有力的數學“大錘”,那么應該可以砸開一切建模的硬核桃啦。且慢,世上沒有真正的“神奇子彈”,一個問題解決了,另一個同等難度的問題又會出現。對于辨識來說,問題有好幾個。
1 Z+ L" R9 L2 v: S& Z) ]
+ _# r5 M4 ]" m3 N% ?! Z# z 5 A+ [9 s4 Q5 ?
! ~2 V# q0 _/ d6 Z/ d
第一個問題是工業數據的閉環性。大多數重要參數都有閉環回路控制。如果沒有閉環回路控制,那要么就是過程特性實在太復雜,簡單回路控制不了;要么就是這個參數其實不重要,飄移一點沒人在乎。然而,一旦閉環,系統地輸入和輸出就是相關的了。這一相關不要緊,輸入-輸出數據之間的因果性就全亂了:輸出通過被控過程本身和輸入相關(這是好的,辨識就是要測算出這個相關關系,輸出要是和輸入不相關,也沒有控制或辨識什么事了),輸入通過反饋和輸出相關;輸入-輸出成為一個閉合系統,你可以用任意多條定理或方法證明同樣的事:由于因果不分,閉環辨識是不可能的,除非另外加入“新鮮”的激勵,比如使勁變設定值,或者在閉環回路里額外施加獨立于輸入、輸出的激勵信號,比如“莫名其妙”地把閥門動幾下。弄到最后,工業數據到底能用多少,就不是一個簡單的回答。有的過程常年穩定操作,像乙烯裝置,只有小范圍的微調。這倒不是人家懶或者不求上進,而是這些裝置早已高度優化,常年操作在極其接近極限的位置,但原料和產品單一,所以工藝狀況不怎么大變。這種系統的閉環數據用起來很吃力,常常必須做一定的開環試驗。有的過程經常在不同的狀態之間轉換(transition),或者由于不同的原料,如“吃”得很雜的煉油廠,或者由于不同的產品,如聚乙烯裝置,這實際上就是“使勁變設定值”,是新鮮的激勵。這種系統的閉環數據比較好用,但有別的問題,下面要談到。- g6 ~7 L& g/ v8 i" X( k' @
% S- D! x" P9 y0 [2 T * Q: [4 C/ b3 C1 |( ^
# h; I1 O/ j/ }2 D% d8 m/ c第二個問題是動態和穩態。動態模型的作用有兩個:一是描述需要多少時間輸出才能達到某一數值;二是輸出最終能夠達到什么數值。用股票市場舉一個例子,你需要知道兩件事:一是這支股票最后會升到多少,二是需要多少時間才能升到那里,只知道其中一個對你并沒有太大的用處。當然為了簡化,這里假定這支股票一路飆升,不來忽升忽降(也就是非線性)或跌買漲賣(也就是閉環影響)的名堂。這就要求輸入-輸出數據必須包含充分的動態和穩態信息,過于偏頗其中一方面對另一方面會不利。所以,長期穩定運行的過程中可能包含足夠的穩態數據,但動態不足;常年不怎么穩定的過程可能包含足夠的動態數據,但穩態不足。用PID控制打比方,精確的穩態數據有助于計算正確的比例控制增益,精確的動態數據有助于計算正確的積分和微分增益,顯然,把比例增益整對了更為重要。為了獲得精確的穩態,在辨識中常常需要等過程開環穩定下來才進行下一步,但是問題是,實際過程有時時間常數很長,幾個精餾塔一串聯,時間常數幾個小時是客氣的,一、兩天都是可能的。這樣一來,一個不太大的模型,十來個變量,開環試驗一做就是一、兩個星期或者更長。要是一個裝置能夠兩個星期開環,那也不需要什么控制了。
& b, X p7 |, z( L& J l( h, B l3 w* }2 q6 i7 F6 D% u9 @" t
* {) H) Y/ J$ c/ n$ \7 t
' V6 Q4 S8 s9 p) w) L1 A# M第三個問題是激勵的信噪比。都說人類活動是二氧化碳和溫室效應的主要原因,但要是你去生一堆篝火,再去高空大氣層去測一測二氧化碳和溫室效應,肯定什么也測不出來,本來多少,現在還是多少。為什么呢?不是因為這堆篝火沒有效果,而是環境中的自然的變化遠遠超過了篝火的作用,換句話說,就是噪聲遠遠超過了信號。工業測試也是一樣,信號一定要有一定的強度,否則是白耽誤工夫。信號強度應該使過程達到嚴重失穩的邊緣,這樣才好獲得在大范圍內都精確的模型,以便控制器不光在“風平浪靜”的情況下可以正常工作,在“驚濤駭浪”的情況下也能使系統恢復穩定。然而,工廠以生產為主,在一切都“斤斤計較”的今天,如此大范圍的測試所帶來的產品損失甚至對設備的可能的危害,都是工廠極不愿意見到的。理論家們設計了一個偽隨機信號,用一連串寬窄不等的方波信號,作為激勵過程的輸入,在理論上可以使過程參數的平均值不致偏離設定值太多,但ISO9000不僅要求產品質量的平均值要保證,產品質量的一致性也要保證。再說,偽隨機信號的脈寬不好確定,太窄了,穩態數據不夠;太寬了,和常規的階躍信號也沒有什么兩樣。所以偽隨機信號在實際上用得很少。 b6 O" o) A- ^. o. O; `
3 B, e: n5 y6 f
4 V# M) W5 A) Z6 U6 ^% `' z [
第四個問題是輸入的相關性。實際工業過程到了要用辨識來確定模型的時候,都是單回路對付不了了,所以都是多變量過程。在理論上,多個輸入變量可以同時變化,只要輸入變量的變化是相互獨立的,數學上容許多個輸入變量同時變化,而辨識可以正確地辨別模型。然而,在使用實際過程的歷史數據時,常常遇到多個輸入變量并不相互獨立的問題。比如說,在制作巧克力的過程中,香草巧克力比較“苦”,或者說不太甜,而牛奶巧克力比較甜。問題是做牛奶巧克力時,不光加糖,還要加牛奶(廢話,不加牛奶那還是牛奶巧克力嗎?)由于兩者總是同時出現,從純數學角度來說,在甜度模型里,就難以辨別甜度是由于加糖的關系,還是由于加牛奶的關系。有的時候可以根據對具體過程的認識,人工地限制辨識的過程,來消除這種影響,有的時候,就不太容易了,只好不用歷史數據,專門做試驗,用各自獨立的輸入,便是模型。
& o1 W( W T: _3 E! K9 V+ x* ?' N2 O/ S, A
0 ]+ O4 b) ]) K! j
/ t' l6 a8 S( _ b' Y% n
第五個問題是模型結構。模型結構包括兩個方面,一是模型的階數,二是剔除在物理上不可能的模型。辨識的模型歸根結蒂還是差分方程,這就有一個如何預設階數的問題。數學上有很多驗前和驗后的檢驗方法,在工業上,人們偷一個懶,改用非參數模型,也就是用一條響應曲線而不是一個方程來表述一個模型,這樣就可以繞過階數的問題。但是剔出不現實的模型還是一個手工活,需要對每一個模型仔細研究,以確定模型所描述的動態關系是否合理。數學方法還是不夠可靠。
: n- K; \& f5 O) m/ x6 H: }6 E; p+ `
; m* ^. ]4 w/ }
) p; i( F9 N2 b i在搞模型的人中間,常常會聽到黑箱、白箱和灰箱的說法。黑箱模型就是不理會實際過程的物理、化學等性質,純粹從數學出發,假設一個模型結構,然后用種種數學方法找出一個最好的模型。白箱反其道而行之,從物理、化學等性質出發,建立機理模型。黑箱模型的好處是“放之四海而皆準”,不需要對具體過程有深入的了解。黑箱模型是一種削足適履的作法,但是如果履本身就做得比較好,具有相當的靈活性和適應性,就并不需要削太多的足。由于黑箱模型可以自由假設模型結構,黑箱模型的處理和使用都比較方便。黑箱模型是經驗主義的,數據里沒有包含的情況,黑箱模型無法預測。白箱模型則是“量身度造”的,反映了過程的物理、化學等性質,對實際過程的數據依賴較少,對數據中不包含的情況也能可靠地預測。但是白箱模型的結構由具體問題決定,得出的模型不一定容易使用。在實際中,人們經常在假設一個模型結構的時候考慮進大大簡化的過程機理,所以模型結構不是憑空拍腦袋出來,而是粗略地抓住了過程的基本特質,然后再用黑箱方法的“數據絞肉機”,將簡化模型沒有能夠捕捉的細微末節一網打盡。這種模型結合了黑箱和白箱的特點,所以稱為灰箱。實際建模中,純粹黑箱或白箱的成功例子很少,灰箱的成功機會就要多得多。$ ~) q/ ?3 j, n0 ~7 N
$ _; S, m1 }) b& w6 w- i( ~: F7 ~
) Q4 D( ?0 Z: P' ?
2 ^5 y2 K9 L8 D- C3 c
不管什么箱,最后還是有一個如何辨識實際過程的問題。閉環辨識的好處不用多說了,問題是如何從閉環辨識中獲得有用的模型。工業上有一個辦法,沒有一個“官名”,但實際上是一個開環-反饋過程。具體做法是這樣的:先用粗略的過程知識構造一個簡單的多變量控制器,其任務不是精確控制被控過程,而是將被控變量維持在極限之內,一旦逼近或超過極限,就采取動作將其“趕”回極限內;但只要在極限內,就按部就班地作階躍擾動,測試過程特性。測試的結果用來改進控制器的模型,然后再來一遍。幾遍(一般兩遍就夠了)之后,模型精度應該很不錯了。這個方法比較好地解決了辨識精度和過程穩定性的要求。
- x0 l$ @+ @7 I K/ V$ M. U" ~+ `5 @6 c( Y5 R: u8 @) Z% U, @
2 H3 p# c6 x- _9 t5 J2 P6 U
1 c; I$ [& L7 M8 l# a( u
自適應
0 H; R: T; [. d% A! y
; c9 j1 i: J+ `4 H5 x% \. l 1 G6 }$ E% X! j E+ L8 h. V
: o5 Q* l8 B7 }* F3 d& |9 [- k, M& e
西游記里最好看的打斗是孫悟空大戰二郎神那一段。孫悟空打不過就變,二郎神則是“敵變我變”,緊追不舍,最后把個無法無天的頑皮猴子擒拿歸案。用控制理論的觀點看,這“敵變我變”的本事就是自適應控制控制器結構根據被控過程的變化自動調整、自動優化。
7 F" o# `6 P1 O- L# N! _9 Z- I3 v3 K6 @& R% u
6 ~1 U7 F% R2 C$ v2 }" N: l, _
% h! ~- o& c4 o9 I/ [* o0 `& N自適應控制有兩個基本思路,一是所謂模型跟蹤控制,二是所謂自校正控制。模型跟蹤控制也叫模型參考控制,在概念上對人們并不陌生。毛主席那陣子,經常樹立各種榜樣,目的就是要在黨發出號召時,普通人們比照榜樣的行為,盡量調整自己的行為,使我們的行為和榜樣的行為接近。這就是模型跟蹤控制的基本思路。模型跟蹤控制在航空和機電上用得比較多,在過程控制中很少使用。
6 h$ \7 v; F' q+ X" x
1 K- \+ V% t, ^4 ?+ B " V2 f2 i5 p# g) y O+ m. B. I
) B% t2 I" n+ b6 m: ]2 n& [* o1 d自校正控制的思路更接近人們對自適應的理解。自校正控制是一個兩步走的過程,首先對被控過程作實時辨識,然后再辨識出來的模型的基礎,實時地重新構造控制器。思路簡單明了,實施也不算復雜,但自校正控制在一開始的歡呼后,并沒有在工業上取得大范圍的成功,原因何在呢?
) m) D+ `4 l5 q4 D* h
2 D' i- j" H, Z2 r+ N8 R
5 ^( C% v. ~0 P: r8 H$ e+ K% i
) f$ d6 v$ E1 l原因之一是閉環辨識。雖然自校正控制不斷改變控制器的參數,在一定程度上打破了固定增益反饋控制對輸入、輸出帶來的因果關系,但是因果關系還是存在,還是相當強烈,對辨識模型的質量帶來影響。4 N+ v( ^* G. t: @
3 O% I G2 X0 C y l( l
: S9 m% u1 r4 j9 q3 q' ^0 `2 R
$ C5 c% t0 g7 g7 {原因之二是所謂“協方差爆炸”。數學上當然有嚴格的說法,但簡單地說,就是自校正控制器的目的當然還是使系統穩定下來,但是在系統越來越穩定的過程中,自校正控制器對偏差和擾動的敏感度越來越高,最后到“萬籟俱靜”的時候,敏感度在理論上可以達到無窮大,然而,這時如果真的擾動來了,控制器一下子就手足無措了。
: o: |- R! Y" d) v2 c- j0 c
) _0 C: v( p0 {5 h8 _
. h& y$ Z5 E6 o8 @9 ]+ A- T' w4 D' B
原因之三是實際過程的復雜性。在辨識實際過程時,最重要的步驟不是后面的“數學絞肉機”,而是對數據的篩選,必須把各種異常數據剔除出去,否則就是“垃圾進來,垃圾出去”。但是,要實時、自動地剔除異常數據,這個要求非同小可,比設計、投運一個自校正控制器費事多了。這是自校正控制在實際中成功例子有限的最大原因。
+ F# j: H+ ^! h) ?1 e! @* o; j2 |; a# f$ p2 U
& o+ u4 i( \, R$ a( E9 u) }) A
+ N$ A0 U+ F- P o! Q* F( p- }& I模型預估控制0 g" U4 u& U- L& S- D% p! }7 L
% B6 Q' ]' S, H# B# D & Z0 A3 C: {4 y" a/ b; @- v2 M
! h; o, v ~8 z& R自動控制從一開始就是以機電控制為主導的。60年代數學派主導了一段時間后,70年代化工派開始“小荷才露尖尖角”。自校正控制已經有很多化工的影子,但化工派的正式入場之作是模型預估控制(modelpredictivecontrol,MPC)。這是一個總稱,其代表作是動態矩陣控制(dynamicmatrixcontrol,DMC)。DMC是CharlieCuttler的PhD論文,最先在殼牌石油公司獲得應用,以后Cuttler自立門戶,創辦DMC公司,現在是AspenTechnology公司的一部分。
0 ~- @9 U& J- M4 v+ A+ [. q' ?; u9 ^$ [+ W6 P
1 }) n8 ^! E3 D( F) K數學控制理論非常優美,放之四海而皆準,但是像老虎一樣,看起來威猛,卻是干不得活的,干活畢竟靠老牛。DMC的成功之處在于應用偽理論,將一些本來不相干的數學工具一鍋煮,給一頭老老實實的老牛披上一張絢爛的老虎皮,在把普羅大眾唬得一愣一愣的時候,悄悄地把活干了。 |