自適應控制改變控制參數的依據是什麼?

感覺是把控制演算法和系統辨識揉在一起,文獻動不動就來一個Adaptive Control,式子動不動就特別長,感覺國內的人寫東西都是為了說明自己有多高的水平,生怕別人看懂,寫文章發表這樣我可以理解,但是寫書也這樣就太殘暴了吧?問題有點寬泛,可以說一個最簡單的最基本或者說最初自適應控制是怎麼用的,不用加入什麼神經網路之類的東西,多謝各位高手


Adaptive Control主要是為了在模型參數不確定的情況下保證系統的穩定性
特點是參數隨時間可變。設計思路主要是湊李雅普諾夫(Lyapunov)函數!當然也有些具體問題的調節辦法。下面給的鏈接第6章里介紹了估計參數的一些實際方法,比如 @冷哲 提到的model reference control。許多Adaptive控制的式子看起來非常複雜,其實都是「湊出來」的,不用太糾結細節,只要知道每種辦法想要湊成的Lyapunov函數就行了。

如果你學過一點Lyapunov理論,下面這個例子應該是很容易看懂的。
考慮簡單一階系統:dot{x} = ax+u,
如果我們知道a的值,那隻要加一個簡單負反饋u=-(a+1)x,系統就穩定了(dot x = -x)。
但萬一不知道a的具體值域,我們可以用參數k來估計a的值,並且讓參數k隨時間變化:
u = -(k+1)x, dot k = x^2.
把這個控制器帶入系統原方程得到:
dot x = (a-k-1)x, dot k = x^2
後面會證明系統穩定。

你可能會想,這個dot k = x^2是怎麼來的?從原理上說,這麼設計的意思是這樣的:我們想讓x穩定,即x趨於0,需要(a-k-1)為負。所以k越大系統越穩定。
萬一系統不穩定,那麼 (i) x^2會隨時間變得很大,(ii) 需要增加k的值使得系統穩定。
我們把兩個問題結合起來,讓k的變化率決定於x^2。這樣k在系統不穩定的時候快速增大,就能保證系統的穩定性。
但這只是原理,同樣的原理你可以把dot k設計成比如|x|, x^4, sqrt{|x|}甚至e^{|x|}
為什麼大家喜歡用平方呢?因為有個很常用的二階Lyapunov函數把這種設計的穩定性證明了。

嘗試如下Lyapunov函數,
V(x,k) = frac{(a-k)^2}{2} + frac{x^2}{2}
求導得到dot V = -x^2,所以系統穩定。不僅如此,結合Lasalle"s invariant principle還可以證明k會穩定的估計未知參數a的值。

很多調節的方法也都是湊出來的。
另外樓主說的國內教材問題我真是給32個贊。國內控制論教科書基本寫得亂七八糟,跟國外的教材完全不能比。Adaptive control入門可以參考Danial Liberzon的課件,寫得很清晰。
http://liberzon.csl.illinois.edu/teaching/13ece517notes.pdf


自適應控制毫無疑問是系統與控制中最technique-oriented的研究領域。五花八門的自適應律,各種複雜痛苦的推導,往往看不出內在的物理含義,也沒有優美可言。看到包含各種normalization, projection等」特殊技巧「的自適應律,第一個反應是各種驚恐。這些」特殊技巧「傳達出的信息是」adaptive control is a "bag of tricks"",僅僅是用以證明穩定性,在不使用它們的情況下系統是否穩定、穩定/或不穩定的機理是是什麼,這些問題也常常說不清楚。


Willsky在1981年CDC大會報告上關於自適應控制,一段備爭議的評論時隔三十多年在今天看來依舊如此。

It is my opinion that adaptive control is the most technique-oriented research direction in decision and control. Perhaps this is the best way to approach adaptive problems and perhaps the fundamental ideas are absolutely clear to many who work in the field. However, I for one get uneasy when I see the forms of algorithms dictated by the desire to use a particular tool (the positive real lemma) for proof of convergence. Maybe this is fundamental. If it is and the reasons are clear, I"d like to see them exposed. If this is an open question, I"d like to see it exposed as such.
--- A. Willsky

言歸正傳,自適應參數估計率的設計目標是,在保證所有狀態有界的前提下讓輸出誤差 e(t) 最夠小,最直觀的就是沿著 -partial e^2(t)/partial 	ilde{	heta}(t) 方向去搜索。這個方向計算結果很多時候包含一些未知的函數,因此就看我們能否選擇距離這個梯度方向很近的方向進行搜索,這取決於誤差方程動力學。看一些早期關於線性系統MRAC的結果,會對自適應的機理和物理含義有更深入的理解。

問題中提到的」控制演算法和系統辨識揉在一起「,這種直覺是對的,目前最主流的思路還是把一個參數化的控制器和一個估計器(estimator, tuner, adaptive law...)連接到一起,儘管自適應估計誤差不一定能收斂到0。設計中估計部分動力學用較低的增益,在分析系統動力學時認為參數估計值是」frozen"的,這也是今天最廣為熟知的確定性等價(certainty equivalent)的設計哲學。這種低增益的設計會在動態性能上存在一些問題,所以 L_1 自適應控制中主張提高增益改善動態性能,但L_1 理論上卻飽受質疑。


@ 阿成 寫得很詳細了。沒錯就是湊出來的,把Lyapunov函數里搞不明白的那一項的係數弄成零,硬給它消掉。

補充一點,自適應控制和系統辨識沒有任何關係。自適應控制也不能代替系統辨識。在自適應控制的式子里,你也能得到一個「看上去很像辨識出的參數」的這麼一個數字,但這個數很多時候根本不會收斂到參數的真實值,甚至有時候系統狀態穩定,但這個參數發散。用它直接來做系統辨識就是大錯特錯了。(當然某些特殊情況下,這個數字是能收斂到參數真實值的,這就得具體情況具體分析了。)


自適應控制可分為直接自適應控制和間接自適應控制。

————————————————————————————————————————

直接自適應控制是說控制增益直接通過誤差計算獲得。這種方案在線性控制系統上比較常見。因為這有明確可以遵循的設計方法。你可以把它理解為對控制系統的控制。換言之控制系統使輸出量收斂到指定值,而整個自適應系統則使得輸出量的收斂過程收斂到某一組指定的參數。這種方法的好處是可以從數學上保證穩定和收斂。缺點在於非線性系統上非常難以設計。

對於這種演算法來說,控制參數改變的依據在於輸出量收斂過程與預期收斂過程的差異。

就類似於,對PID控制系統調參的時候,發現輸出信號的上升時間太長,就把P增益調高一點。

————————————————————————————————————————

間接自適應控制是說設計一種控制器,其中用到了系統參數,而參數則通過參數辨識演算法計算獲得。因此控制增益並不直接被調整,而是通過辨識得到的參數間接調整。這種方法優點在於設計比較簡單,控制器設計和參數辨識都有很成熟的方法,兩相綜合即可。缺點在於常常難以從數學上證明穩定和收斂。

這種自適應控制器調整控制增益的依據在於辨識獲得的系統模型參數(控制增益是基於這些參數的函數)。


K.J. Astrom, Adaptive control around 1960 IEEE Xplore Abstract

裡面介紹了最初怎麼用的,初期怎麼一步步發展的。而且是確實在用,理論與工程相輔相成。


@阿成,你舉的這個例子有些錯誤,k-a並不會收斂到零,只是有界罷了。


自適應控制的控制律及自適應律是怎麼設計的? - 戎佩琰的回答 - 知乎 以前有寫過一個類似的回答


有很多依據,但這些依據多是有問題的。

什麼意思呢,回到一個不是自適應的系統,其實有沒有一個絕對客觀的依據,判斷控制器設計的好壞。如誤差的平方和這一指標吧(也包括誤差的絕對值和等等),指標小的,反而效果可能好。因為這效果跟指標的聯繫本來就是為了量化而強加的。L1 norm,L2 norm等等,乃至加權,乃至特徵值,乃至頻域的誤差及其種種,好像都有道理,但仔細想好像也都沒道理。

因此導致很多自動調參、自整定的方法效果不好。優化方法有很多,乃至學習方法也有很多,但問題出在了指標上,出在了依據上。

自適應控制也是如此~


先搬運維基自適應控制,要明了自適應解決的是什麼一個問題:是被控對象參數具有不確定性,或隨時間發生變化時,如何保證控制性能的問題;進而也要區分魯棒控制和自適應控制兩種解決方案的優劣。


「自適應控制 (en:Adaptive control)是一種對系統參數的變化具有適應能力的控制方法。在一些系統中,系統的參數具有較大的不確定性,並可能在系統運行期間發生較大改變……雖然傳統控制方法(即基於時不變假設Non-Time-Variant Assumption的控制方法)具有一定的對抗系統參數變化的能力,但是當系統參數發生較大變化時,傳統控制方法的性能就會出現顯著的下降,甚至產生髮散。」

最簡單的例子就是:對象本身的增益增大了K倍,那控制器的增益就應該變成原來的1/K。但如何知道對象本身的增益變化呢?就演變成了 @冷哲 提到的兩種基本方案:一種叫模型參考自適應控制,不論你對象本身如何,控制器是讓被控對象始終跟隨參考模型輸出;一種是對被控對象進行辨識,估計出其增益變化。

我不知道你說的書是什麼,但是一般基礎的自適應控制書籍都是從這兩種最基本的講開,數學也並不算複雜。而任何控制有關的,穩定性證明都是重中之重,數學多是再正常不過。@冷哲 回答中提到了自適應控制器就是對控制器的控制,實際上就是有兩重閉環,其穩定性分析自然會更複雜一些。當然有不少書也就是文獻匯總類的,或者作者本身high level的理解能力有限,不能抓住問題本質,化繁為簡,這些人許多也能寫出很多公式的文章,不過嘛...不繼續吐槽了


還有個Adaptive Switching Control,也應該算是Adaptive Control吧。對非線性模型的幾個相互靠近的工作點分別設計控制器,然後根據各個模型和實際對象的輸出差值的某個範數的進行控制器切換。剛剛入行,讀的論文還不多,只能大致地這麼說了。 弱弱地問下@冷哲冷大大覺得我說的是不是靠譜……


如果是為了發論文,那麼就根據Lyapunov函數湊參數估計律,典型的書有《Nonlinear and adaptive control design》,1995年出版的;如果是實際應用,PID調參才是王道。


個人理解,其實很多自適應控制方法里的參數估計器只是一個對誤差的積分器,跟參數辨識一般沒啥硬關係。不嚴謹的論述的話,就是引入積分環節可以消除穩態誤差,而這類控制器一般都具有pi或者pid結構,裡面i的增益就是設計的自適應增益,所以所謂的參數估計值不用收斂到真值也可實現無外干擾下的漸近穩定,這個其實也是這類自適應控制方法的一個缺點


推薦閱讀:

如何用PID演算法控制電流或者電壓使得功率穩定在定值附近?
如何看待 2016 年 4 月 8 日 SpaceX 成功發射並在海上回收 Falcon9 一級火箭?
機器學習,神經網路在控制科學中的前景和應用大嗎?為什麼?

TAG:自動化 | 自動控制 | 控制理論 |