模糊PID及其MATLAB仿真的細節補充

目錄

前言

1、數據的預處理

2、PID 參數整定問題

3、模糊控制

3.1 模糊控制規則的靜態特性——完備性

3.2 模糊控制規則的靜態特性——相容性

3.3 模糊控制規則的靜態特性——干涉性

 

前言

        以前寫過一篇模糊PID及其MATLAB仿真的blog,反響比較多,問題也比較多。這段時間也發現確實有些細節需要補充,尤其是在理論上的,現加上這篇,以方便大家對模糊PID理解深一些,這樣在設計仿真的時候也容易自定義功能和修改出錯的仿真結果。以下,分爲三個部分:數據預處理、PID參數整定和模糊控制。

1、數據的預處理

        這裏提到數據的預處理問題其實十分的重要,很多人的仿真控制算法時也是這裏最容易出錯。自己明明按照別人的搭建起來了,但是結果就是不對,帶進去自己的數據就報錯或者結果很難看。

        網上看到的很多控制系統都是做了標準化的處理,你也可以理解爲歸一化處理完之後的。一般爲了能夠適應不同的輸入輸出條件,常設計控制系統內部的數據爲 [-1,1] 之間或者 [0,1] 範圍內。這樣,控制系統的輸入和輸出只要做一下線性變換,變換到對應的範圍內,即可直接套用已經設計好的控制系統。

例:某恆溫箱,要求溫度從20℃室溫儘快調節到40℃。且已經給你了一個黑盒子,這個黑盒子就是網上那種例程,裏面是個已經設計好的模糊控制器,給了你一個輸入,一個輸出。那麼請問,你要直接把一個初值20,終值40的階躍信號給這個系統嗎?其實不少數人都是這麼做的。

        給定的黑盒子要求的輸入輸出實際上是[-1,1],你給人家弄個20輸入,人家最大隻能給你輸出個1,能不出問題嗎?

       所以說,不要拿來個例程就套自己的數據,看看內部是怎麼定義的。

2、PID 參數整定問題

        現在我們假設,你的數據全部都已經規範化處理了。

        PID的詳細方程就不做介紹了,這裏說一下這三個參數,某度搜一下“PID三個參數的作用”,上面有很多。

        之前那篇模糊PID算法只講了使用模糊控制在線整定PID的三個參數,其本質上還是個PID控制器,所以仍然需要你的系統模型(這裏不明白的去百度一下“模糊控制與傳統控制的區別”,關注對模型的需求)。不同的模型,PID的參數範圍是不同的,PID參數整定的方法大家最好找到相關文獻,比如Ziegler-Nichols 方法,然後根據你的傳遞函數模型,求出來各個參數範圍,這些參數的範圍將作爲模糊控制的論域,所以非常重要。

3、模糊控制

        假設你的PID參數的論域也準備好了,那麼才進入你的模糊控制內容,這裏我根據查到的資料詳細講一下,包括模糊控制中的理論基礎。坐好車,我們出發。

        在MATLAB裏面,模糊控制已經集成爲了工具箱,如下圖:

        圖中,紅色的兩個圈表示爲E,EC,分別爲模糊控制系統中要求的輸入誤差和誤差變化率,誤差和誤差變化率要求要在你的系統會產生的誤差和誤差變化率論域裏面,別再隨便看人家寫的[-6,6],你就寫這個範圍了。

         黑色圈的爲模糊控制的輸出,其各自的論域取決於之前確定的結果,你對那個已經確定的結果進行模糊子集的劃分,就可以了。

接下來我們講最有意思的模糊規則。

3.1 模糊控制規則的靜態特性——完備性

        完備性要求對於所有模糊控制輸入的誤差和誤差變化率都對應一個與之對應的控制量。

        完備性實際上就是你在設計模糊規則的時候,考慮到所有的誤差可能性,對於所有的誤差都需要有個對應的輸出,對於模糊PID控制來說,就是給定了任意處於論域內的E和EC,都能夠得到一組對應的PID三個參數。

        如果現在給定E=-1,其對應的模糊語言爲NL,EC=1其對應的模糊語言爲PL,那麼,模糊規則裏面不包含這個組合的輸出,那模糊系統就可能輸出錯誤的值,進而導致控制性能的惡化。一般這種情況很少出現,因爲對於7*7的模糊規則庫來說,完全可以通過窮舉的方式找到每個誤差和誤差變化率的輸出,直觀的說,就是你把那個7*7的表格填滿就行了。

3.2 模糊控制規則的靜態特性——相容性

        模糊規則的相容性對於控制器的性能影響比較大,這條是在控制系統的設計過程中最容易出現問題的地方。相容性要求你的模糊規則不要有相互矛盾的輸出,或者在輸入相差較小的情況下輸出不同。

舉一個書上的例子,對一個反應釜系統,有如下兩個模糊規則:

R1: 如果反應溫度較高,則減少進料流量,降低反應槽內溫度;

R2:如果反應轉化率較大,則增大進料量,升高反應槽內溫度。

這裏似乎兩條規則的錢體不同,因此採用了不同的控制方案,但通常反應釜內的溫度越高,反應的轉化率也越高,而控制方向卻是相反的。這會導致控制系統出現問題。

之前有個朋友問我他模糊控制怎麼不出來結果,我看了半天,原來就是他自己設計這個模糊規則,出現了這種相容性問題。

3.3 模糊控制規則的靜態特性——干涉性

        模糊控制規則的干涉性不太好理解,其大致意思是如果模糊規則相互干涉,那麼模糊輸出得到的控制量就不再等於你之前設定的那個東西了。干涉性來源於控制器的邏輯結構,如果用一個模糊關係的矩陣來表示模糊控制器,則不會存在這個干涉性問題。

        簡單且直觀地說,就是你在設計那個模糊隸屬度的函數時,兩個或多個的函數曲線別重疊的太過分。

如果你不是寫模糊控制方面的論文,那麼以上說的靜態特性那些概念沒什麼用,別在意,專心設計你的模糊規則庫就行了,如果實在不會設計,就找一篇SCI“抄一下”吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章