0 引言
控制器的參數整定是通過對PID控制器參數(KP,KI,KD)的調整,使得系統的過渡過程達到滿意的質量指標要求。PID參數的整定一般需要經驗豐富的工程技術人員來完成,既耗時又耗力,加之實際系統千差萬別,又有滯后非線性等因素,使PID參數的整定有一定的難度,致使許多PID控制器沒能整定的很好;這樣的系統自然無法工作在令人滿意的狀態(tài),為此人們提出了自整定PID控制器。將過程動態(tài)性能的確定和PID控制器參數的計算方法結合起來就可實現PID控制器的自整定[1,2]。
筆者設計出一種基于CMAC小腦模型神經網絡的PID參數自整定的控制系統,從而實現PID參數的快速整定,并且使得PID的參數整定達到一定的精度。
1 CMAC神經網絡
CMAC(Cerebellar model articulation controller)是J. S. Albus在1975年提出的一種模擬小腦功能的神經網絡模型。CMAC是一種聯想網絡,對每一輸出只有小部分神經元(由輸入決定)與之相關,它的聯想具有局部泛化能力,即相似的輸入將產生相似的輸出,而遠離的輸入產生幾乎獨立的輸出。CMAC與感知器比較相似,雖然從每個神經元看其關系是一種線性關系,但從結果總體看,它適合一種非線性的映射,因而可以把CMAC看作一個用于表達非線性映射(函數)的表格系統[3]。由于它的自適應調節(jié)(學習)是在線性映射部分,所以其學習算法是簡單的 算法,收斂速度比BP快得多,且不存在局部極小問題[4]。CMAC神經網絡結構如圖1所示。
圖1 CMAC結構
2 系統原理
系統的工作原理為:當閉環(huán)控制系統受到擾動時,對系統誤差 的時間特性進行模式識別,首先得出系統誤差曲線的峰值及時間,如圖2所示。
圖2 給定值階躍變化時的誤差e(t)曲線
再根據以下公式得出該過程響應曲線的多個特征參數ei(i=1,2,3)分別為:超調量σ,阻尼比ζ和衰減振蕩周期T。
將識別出的三個特征參數作為輸入送入CMAC參數整定網絡,經計算后得出相應的PID參數的變化量( ),再將所得參數送入PID控制器,從而實現PID參數的自整定。PID參數自整定系統如圖3所示。
圖3 PID參數自整定控制系統
在本CMAC神經網絡中,獲取系統誤差特性曲線中的三個特征參數,每個特征參數根據表的劃分,成為一個特征參數等級。當每個區(qū)域的特征參數大小都確定時,就組成了一個特征參數模式。當獲取的特征值發(fā)生變化時,相應的模式也發(fā)生變化。因而本文建立的CMAC網絡的輸入是一個3個分量組成的向量,即選取的三個特征值(阻尼比 ,超調量百分比 ,衰減振蕩周期 )也可稱為特征參數模式。由于PID控制器需整定的參數為3個,所以,CMAC網絡的輸出為3個分量組成的向量。每一個元素與PID控制器中的一個待整定參數相對應。
3 CMAC神經網絡的改進與實現[5]
1)基函數的布置和總數
2)高階基函數
當初始CMAC網絡使用二值基函數時,它的輸出是分段連續(xù)的,即在每個網格內是連續(xù)的,在輸入軸節(jié)點處是間斷的。要使網絡有連續(xù)的輸出,必須要求基函數的輸出在其定義域的邊界上為0。本設計中,用表示距離,表示單變量函數,采用無窮大泛數基函數實現連續(xù)輸出。
并利用無窮大泛數計算距離時,可以使基函數在定義域邊界的輸出為0,在定義域中心的輸出為1/ρ。在一維情況下,其他輸出值是在這兩個極值間的線性插值。在二維輸入空間中,基函數輸出呈“金字塔”型。
3)內存雜散技術
CMAC網絡對內存的需求量正比于 的指數倍,所以它是很大的。對高維輸入 ,基函數的數量 可以由公式(5)近似地計算出來。由于要求基函數的數量要小于網格的數量(p<<p‘,p‘是CMAC網絡中網格的數量),所以一般的算法只適用于維數較低或者適中的網絡輸入,如果維數較高,就要使用內存雜散技術。內存雜散技術是將分布稀疏、占用較大存儲空間的數據作為一個偽隨機發(fā)生器的變量,產生一個占用空間較小的隨機地址,而在這個隨機地址內就存放著占用大量內存空間地址內的數據,這就完成了由多到少的映射。
4 ) CMAC神經網絡的編程實現
CMAC神經網絡的算法主要函數是由C語言編程實現的。本設計中的代碼是在Visual C++平臺上調試實現的。int allocate_cmac(int num_state, int *qnt_state, int num_cell, int memory, int field_shape, int collision_flag); allocate函數用指定的參數為CMAC網絡在內存中分配空間。num_state是輸入向量的維數; *qnt_state是指向 維數組的指針,這個數組定義了每一維輸入向量的量化精度;num_cell是泛化系數ρ; memory占用內存空間的數量; field_shape設置基函數的類型;collision_flag訓練沖突標記,若沖突發(fā)生返回TRUE,反之為FALSE。
MATLAB中的編譯與調用時,采用MEX技術來完成MATLAB中調用CMAC網絡算法的C語言代碼
4 CMAC神經網絡訓練
CMAC神經網絡的主要參數有:輸入變量的量化精度、泛化參數以及基函數的種類。對CMAC神經網絡的三個輸入分別進行量化,阻尼比ζ分為23級,超調量百分比σ分為12個等級,衰減振蕩周期Tc分為20個等級,共有23*12*20=5520種訓練模式。
在所有5520種訓練模式中選取2000種,作為CMAC參數整定網絡的選練樣本。再在2000組特征參數模式中選取1620組特征參數模式作為訓練集對網絡進行訓練。
建立輸入到物理存儲空間的映射,同時建立了物理存儲空間與輸出的關系。泛化參數 選為32,學習算法采用了誤差糾正算法。學習率β為0.6,采用樣條函數SPLINE替代傳統的ALBUS函數作為CMAC神經網絡的基函數。ALBUS函數的輸出只有0和1,因此輸出的曲線分段連續(xù),僅在內節(jié)點之間連續(xù),在內節(jié)點的分界處往往是不連續(xù)的。而樣條函數則可以較好的解決這個問題。相應的內存使用量為300。
訓練收斂后,權值體現了特征參數與PID控制器的待整定參數的關系。圖4所示為CMAC神經網絡對1620組特征參數模式的訓練誤差曲線。
圖4 CMAC訓練誤差曲線
Fig.4 Training error curve of CMAC
圖5所示為1620組訓練數據送入CMAC神經網絡訓練后,訓練數據在各個誤差區(qū)間中的個數,可看出超過90%的訓練數據具有較高的誤差精度,即誤差精度<0.1。
圖5 訓練數據在各誤差區(qū)間中的個數
Fig.5 Numbers of training data in different section of error
把選取的2000種特征參數模塊中剩下的380組作為測試集,對訓練后的CMAC參數整定網絡進行測試。輸出的控制參數變化值與學習樣本期望結果進行對比,錯誤率為7.8%,說明CMAC網絡訓練比較成功,具有一定的泛化能力。圖6所示為CMAC神經網絡的測試誤差曲線。圖7所示為測試數據在各誤差區(qū)間中的個數。
圖6 CMAC測試誤差曲線
Fig.6 Testing error curve of CMAC
圖7 測試數據在各誤差區(qū)間中的個數
Fig.7 Numbers of testing data in different section of error
5 仿真結果
選取被控對象為: ,原控制器對此對象的控制性能達到要求,階躍擾動曲線如圖8中線1所示。當進行PID參數自整定,整定后的響應曲線為圖8中線2,把特征參量送入CMAC參數整定網絡,整定后參數為。從仿真圖中,我們可以看出PID參數的整定效果比較理想,且CMAC神經網絡的達到穩(wěn)定的訓練時間也比較短。
圖8 整定前后的響應曲線
6 結論
仿真結果表明,CMAC神經網絡的特性使其適合在PID參數自整定中使用。CMAC神經網絡權值的調整是局部的,學習速度快,收斂性好,而且PID參數的整定效果也滿足整定要求。文章的創(chuàng)新點:在基于模式識別的PID參數自整定系統中,直接利用CMAC網絡獲取整定規(guī)則,避免了傳統的大量專家整定經驗的建立。