資源描述:
《基于某bp神經網絡地自適應pid控制器設計》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。
1、實用標準文案基于BP神經網絡的自適應PID控制器設計一.基于BP神經網絡的自適應PID控制器的原理PID控制是最早發(fā)展起來的、應用領域至今仍然廣泛的控制策略之一,它是基于對象數學模型的方法,尤其適用于可建立精確數學模型的確定性控制系統(tǒng)。其優(yōu)點是算法簡單、魯棒性好和可靠性高。但是,由于實際工業(yè)生產過程往往具有非線性,許多非線性系統(tǒng)難以確定精確的數學模型,常規(guī)的PID控制器就不能達到理想的控制效果,由于受到參數整定方法煩雜的困擾,參數往往整定不良、性能欠佳。神經網絡所具有的任意非線性表達能力,可以通
2、過對系統(tǒng)性能的學習來實現(xiàn)具有最佳組合的PID控制?;贐P網絡的自適應PID控制器,通過BP神經網絡調整自身權系數,對PID控制參數進行調節(jié),以達到某種性能指標的最優(yōu)。二.基于BP神經網絡的自適應PID控制器的控制器結構i基于BP神經網絡的PID控制系統(tǒng)結構圖如圖1所示:圖1BP網絡結構jk此控制器由兩部分組成:(1)經典的PID控制器,直接對被控對象進行閉環(huán)控制,并且三個參數,,為在線調整方式;精彩文檔實用標準文案(2)神經網路,根據系統(tǒng)的運行狀態(tài),調節(jié)PID控制器的參數,以期達到某種性能指標
3、的最優(yōu)化,是輸出層神經元的輸出狀態(tài)對應于PID控制器的一個可調參數,,。通過神經網絡的自學習、加權系數調整,使神經網絡輸出對應于某種最優(yōu)控制率下的PID控制器參數?;贐P神經網絡的自適應PID控制器的控制器如圖2所示:NNPIDPLANTrinyouterror+_圖2基于BP神經網絡的自適應PID控制器的控制器結構該控制器的算法如下:(1)確定BP神經網絡的結構,即確定輸入節(jié)點數M和隱含層節(jié)點數Q,并給各層加權系數的初值和,選定學習速率和慣性系數,此時k=1;(2)采樣得到rin(k)和yo
4、ut(k),計算該時刻誤差error(k)=rin(k)-yout(k);(3)計算神經網絡NN各層神經元的輸入、輸出,NN輸出層的輸出即為PID控制器的三個可調參數,,;(4)根據經典增量數字PID的控制算法(見下式)計算PID控制器的輸出u(k);(5)進行神經網絡學習,在線調整加權系數和實現(xiàn)PID控制參數的自適應調整;(6)置k=k+1,返回到(1)。精彩文檔實用標準文案一.仿真程序%BPbasedPIDControlclearall;closeall;xite=0.25;alfa=0.0
5、5;S=1;%SignaltypeIN=4;H=5;Out=3;%NNStructureifS==1%StepSignalwi=[-0.6394-0.2696-0.3756-0.7023;-0.8603-0.2013-0.5024-0.2596;-1.07490.5543-1.6820-0.5437;-0.3625-0.0724-0.6463-0.2859;0.14250.0279-0.5406-0.7660];%wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=
6、wi;wo=[0.75760.26160.5820-0.1416-0.1325;-0.11460.29490.83520.22050.4508;0.72010.45660.76720.49620.3632];%wo=0.50*rands(Out,H);wo_1=wo;wo_2=wo;wo_3=wo;endifS==2%SineSignalwi=[-0.28460.2193-0.5097-1.0668;-0.7484-0.1210-0.47080.0988;-0.71760.8297-1.6000
7、0.2049;精彩文檔實用標準文案-0.08580.1925-0.63460.0347;0.43580.2369-0.4564-0.1324];%wi=0.50*rands(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=[1.04380.54780.86820.14460.1537;0.17160.58111.12140.50670.7370;1.00630.74281.05340.78240.6494];%wo=0.50*rands(Out,H);wo_1=wo;wo_2=
8、wo;wo_3=wo;endx=[0,0,0];u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y_1=0;y_2=0;y_3=0;Oh=zeros(H,1);%OutputfromNNmiddlelayerI=Oh;%InputtoNNmiddlelayererror_2=0;error_1=0;ts=0.001;fork=1:1:6000time(k)=k*ts;ifS==1rin(k)=1.0;elseifS==2rin(k)=sin(1*2*pi*k*ts);end%Unli