模糊算法的研究和C語言實現(xiàn)--包宇驊_第1頁
模糊算法的研究和C語言實現(xiàn)--包宇驊_第2頁
模糊算法的研究和C語言實現(xiàn)--包宇驊_第3頁
模糊算法的研究和C語言實現(xiàn)--包宇驊_第4頁
模糊算法的研究和C語言實現(xiàn)--包宇驊_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、模糊算法的研究和C語言實現(xiàn)- 模糊算法是通過對現(xiàn)實對象的分析,處理數(shù)據(jù)并構(gòu)建模糊型數(shù)學(xué)模型。用隸屬關(guān)系將數(shù)據(jù)元素集合靈活成模糊集合,確定隸屬函數(shù),進行模糊統(tǒng)計多依據(jù)經(jīng)驗和人的心理過程,它往往是通過心理測量來進行的,它研究的是事物本身的模糊性。 近年來,智能控制理論和方法的研究受到國內(nèi)外眾多專家和學(xué)者的高度重視,并取得了許多成功的實例。目前,對于工業(yè)過程控制,實用的智能控制方法主要有兩種:專家式控制和模糊控制,它們的特點是基于“專家”經(jīng)驗設(shè)計控制器,而無需考慮工業(yè)對象具體物理模型,尤其是后一種方法,由于它利用了模糊推理,已形成了一套較為規(guī)范的設(shè)計程序,且成功實例較多,故目前模糊控制算法的研究較為

2、活躍。模糊控制的特點適用于不易獲得精確數(shù)學(xué)模型的被控對象;是一種語言變量控制器;從屬于智能控制的范疇。該系統(tǒng)尤其適于非線性,時變,滯后系統(tǒng)的控制;抗干擾能力強,響應(yīng)速度快,并對系統(tǒng)參數(shù)的變化有較強的魯棒性。模糊控制的原理把由各種傳感器測出的精確量轉(zhuǎn)換成為適于模糊運算的模糊量,然后將這些量在模糊控制器中加以運算, 最后再將運算結(jié)果中的模糊量轉(zhuǎn)換為精確量, 以便對各執(zhí)行器進行具體的操作控制,在模糊控制中, 存在著一個模糊量和精確量之間相互轉(zhuǎn)化的問題。 s:系統(tǒng)的設(shè)定值;x1, x2:模糊控制的輸入(精確量);X1 , X2:模糊量化處理后的模糊量;U:經(jīng)過模糊控制規(guī)則和近似推理后得出的模糊控制量;

3、u:經(jīng)模糊判決后得到的控制量(精確量);y:對象的輸出。也可以表示成:工作步驟:輸入量模糊化、建立模糊規(guī)則、進行模糊推理、輸出量反模糊。模糊控制的優(yōu)點:傳統(tǒng)的自動控制控制器的綜合設(shè)計都要建立在被控對象準確的數(shù)學(xué)模型(即傳遞函數(shù)模型或狀態(tài)空間模型)的基礎(chǔ)上,但是在實際中,很多系統(tǒng)的影響因素很多,油氣混合過程、缸內(nèi)燃燒過程等) ,很難找出精確的數(shù)學(xué)模型。這種情況下,模糊控制的誕生就顯得意義重大。因為模糊控制不用建立數(shù)學(xué)模型不需要預(yù)先知道過程精確的數(shù)學(xué)模型。模糊算法的應(yīng)用基于遺傳算法的模糊滑模控制器設(shè)計及其在直流伺服系統(tǒng)中的應(yīng)用 滑??刂埔蚱湓O(shè)計簡單,對控制對象參數(shù)變化及外擾動的不變性等優(yōu)點而被廣泛

4、用于工業(yè)生產(chǎn)過程,尤其在伺服系統(tǒng)的控制中取得了成功的應(yīng)用13,但是傳統(tǒng)滑??刂拼嬖谝粋€突出的缺點,即抖振。為解決這一問題出現(xiàn)了模糊滑??刂?,5,通過在邊界層內(nèi)根據(jù)滑動模變量s的模糊量,決定控制量u,進而實現(xiàn)對u的“柔化”,以消弱抖動。但是上述模糊滑??刂品桨鸽y以保證邊界層內(nèi)滑動模態(tài)的可達性,因而也就失去了滑模控制不變性的優(yōu)點6。本文提出一種新的模糊滑??刂破髟O(shè)計方法,可充 分保證滑動模態(tài)的可達性。由于模糊控制量與滑模變量之間無直接對應(yīng)關(guān)系,按照專家經(jīng)驗采用啟發(fā)式設(shè)計方案難度較大,而且難以保證設(shè)計參數(shù)的最優(yōu)性,為此,本文通過采用遺傳算法對控制器模糊項參數(shù)進行尋優(yōu)設(shè)計??紤]如下動態(tài)系統(tǒng)x(n)=

5、f(x,,,x(n-1))+bub0(1)其中狀態(tài)向量(x,,,x(n-1))=XT,假設(shè)f(.)=(.)+f(.)(2)其中是f的估計值,f為模型的不確定性,F(xiàn)是f的上界函數(shù),即f(.)F(.)(3)為討論方便,先假設(shè)b=1,u為系統(tǒng)輸入,控制目標是在系統(tǒng)存在不確定性的情況下,使系統(tǒng)狀態(tài)向量跟蹤預(yù)先選定的軌跡Xr,XTr=(xr,r,,x(n-1)r)。定義誤差向量(4)于是系統(tǒng)(1)可以表示成如下狀態(tài)方程(5)在傳統(tǒng)SMC設(shè)計中,首先定義一個滑動平面(6)這里CT=(c1,c2,cn)是滑動平面系數(shù),滿足霍爾維茲多項式,不失一般性,取cn=1。滑??刂频囊粋€基本思想是要求通過等價控制量ue

6、q保持狀態(tài)在滑動平面上,由Te-f(xTr-eT)-u+x(n)r=0(7)這里=(0,c1,c2,cn-1),得到等價控制量ueq(8)可以保證系統(tǒng)狀態(tài)到達滑動平面后,保持在滑動平面上,為實現(xiàn)滑動模態(tài)的存在及可達,還要求存在一不連續(xù)控制分量(9)以實現(xiàn)s.0,即滿足可達性條件,因此整個控制量為u=ueq+ud(10)然而,由于系統(tǒng)具有不確定性,ueq難以精確獲得,因此考慮不確定性后有ueq=Te-(xTr-eT)+x(n)r(11)把式(9),式(11)代入式(6)得(12)由s.0(13)考慮一般性,b1,且b具有不確定性,假設(shè)-1/b(14)其中為b的估計值,大于或等于1,那么取式(10

7、)控制律為u=-1(ueq+ud)=eq+d(15)進而得到ud=(F(.)+)+(-1)eqsgn(s)(16)令Q=(F(.)+)+(-1)eq,由前面有關(guān)參數(shù)的定義可知Q0,若不考慮參數(shù)的不確定性,即=1,F(xiàn)(.)=0,則Q=。由分析可知,Q過小將影響非滑動模態(tài)到滑動模態(tài)的過渡時間或難以滿足可達性條件;Q過大,將導(dǎo)致大的抖振??紤]參數(shù)不確定性,在僅知道參數(shù)上下界的情況下,會使Q取值過大,不可避免產(chǎn)生大的抖振。為盡量消除抖振現(xiàn)象,文獻4,5提出在邊界層內(nèi)根據(jù)s的模糊值對Q值進行模糊調(diào)節(jié),這一方法雖可以在邊界層內(nèi)起到柔化控制量u的作用,但由于參數(shù)的不確定性,對Q值的調(diào)節(jié)難以保證s.0在邊界層

8、內(nèi)成立,因為此時沒有考慮的變化情況。本文提出一種模糊滑模控制器,該控制器根據(jù)滑模函數(shù)s及其導(dǎo)數(shù)的模糊值決定Q的變化量Q。當(dāng)s與符號相反時Q取值小于或等于零,當(dāng)s與同號時,Q適當(dāng)取正以使s.0成立。Q的模糊取值根據(jù)如下規(guī)則。RiIf s is Ai and is Bi then Qi is yi規(guī)則中Ai,Bi表示模糊集,則規(guī)則集輸出Q與模糊規(guī)則之間可通過模糊推理機建立如下關(guān)系。(17)Ri表示第i條模糊規(guī)則,m表示模糊規(guī)則數(shù),且有i=Ai(s)Bi()(18)(19)Ai、Bi是s、的隸屬度函數(shù),定義如下(20)對i、i、i有如下定義(21)式中i0,i0,i0表示i、i、i的初值,可結(jié)合一定

9、的經(jīng)驗知識給出。從以上對模糊控制器的結(jié)構(gòu)分析可以發(fā)現(xiàn),s和的隸屬度函數(shù)參數(shù)i、i、i與規(guī)則輸出參數(shù)yi影響著模糊量Q的值。而由式(21)可知,在i0,i0,i0等初值給定情況下,i,i,i是由i, i決定的。所以對i, i,yi尋優(yōu)即可以實現(xiàn)模糊控制器參數(shù)優(yōu)化設(shè)計。但是僅進行參數(shù)優(yōu)化設(shè)計還難以實現(xiàn)真正的控制器優(yōu)化,因為參數(shù)優(yōu)化是在模糊集劃分一定的情況下進行的,過多的模糊集劃分將造成規(guī)則冗余,冗余的模糊規(guī)則必然會占用過多的存儲空間,增大控制器決策時間。因此,對模糊集的劃分同樣需要尋優(yōu),以實現(xiàn)模糊控制器從結(jié)構(gòu)到參數(shù)的最優(yōu)設(shè)計。2.柴油機轉(zhuǎn)速模糊控制的一種算法及其實現(xiàn)轉(zhuǎn)速模糊控制算法及實現(xiàn)僅考慮轉(zhuǎn)速

10、閉環(huán)時,柴油機轉(zhuǎn)速模糊控制系統(tǒng)框圖如圖1 所示.圖1 中, R 為轉(zhuǎn)速給定值; Y 為系統(tǒng)輸出(實際轉(zhuǎn)速值) ; E = Y - R 為轉(zhuǎn)速偏差; EC 為轉(zhuǎn)速偏差的變化率; A 為E 經(jīng)模糊化處理后,論域為X 的模糊集; B 為EC 經(jīng)模糊化處理后,論域為Y 的模糊集; C為論域為Z 的控制量模糊集;u 為C 經(jīng)模糊判決后的控制增量;u*為清晰化計算出的實際控制增量.2. 1 輸入變量的模糊化考慮到本文研究的轉(zhuǎn)速控制系統(tǒng)被控對象是一臺6135 型柴油機,最高轉(zhuǎn)速為1 500 r/ min ,最低穩(wěn)定轉(zhuǎn)速為750 r/ min ,因此X 的論域可取為 - 1 500 ,1 500 , y =

11、- 1 500 ,1 500 . 取轉(zhuǎn)速偏差E 的論域為 - 750 ,750 ,隸屬函數(shù)取梯形2三角形式(見圖2) .轉(zhuǎn)速偏差的語言變量E 在X 中取11 個語言值. 由圖2 可見,每個模糊子集均可用以下兩式表示:( x) = ax + b (1)( x ) = - cx + d (2)顯然,對任意轉(zhuǎn)速偏差輸入,在進行模糊化過程中,只屬于兩個模糊子集,對其它模糊子集的隸屬度為零,如此處理可簡化計算,減少內(nèi)存和時間開銷. 其中,轉(zhuǎn)速偏差分為5 個區(qū)域,即0 , 10 , 10 , 110 ,110 ,210 , 210 ,310 , 310 ,750 ,每個區(qū)域的隸屬度按(1) 式和(2) 式

12、計算,區(qū)別僅在于系數(shù)a , b , c , d各不相同,由于( x) 軸的左半部曲線與右半部取為完全軸對稱,因此當(dāng)轉(zhuǎn)速偏差為負值時,其計算程序上與上述程序相同.2. 2 模糊規(guī)則及模糊推理考慮最簡單的情況,模糊控制器采用一維結(jié)構(gòu)時,其控制規(guī)則如下:If E is ZE then u is ZEIf E is PS then u is PSIf E is PM then u is PMIf E is PB then u is PBIf E is PVB then u is PVB其中: u 為模糊控制量的增量值, 當(dāng)轉(zhuǎn)速偏差E 為負值時, 規(guī)則同上, 只是u 的符號相應(yīng)改變(u的符號與E 的符號

13、一致) ; ZE ,S ,M ,B ,VB 分別表示輸出增量u 為“零, 小, 中等, 大, 很大”, P 表示“Positive”,N 表示“Negative”.由以上分析可見,雖然模糊控制規(guī)則共有9 條,但由于轉(zhuǎn)速偏差E 符號不同時,其控制規(guī)則是對稱的,因此在實施模糊推理時,只用到了5 條規(guī)則. 此外,由于任意轉(zhuǎn)速偏差E 只可能屬于兩個模糊子集,因此在實際運算時,對應(yīng)每個采樣周期的轉(zhuǎn)速偏差輸入只可能激活兩條規(guī)則,這樣處理的結(jié)果是大大簡化了計算,保證了實時控制對微處理器運算速度的需要.模糊推理采用近似推理法則. 對于一條被激活的規(guī)則, 控制增量u 的隸屬度按Mamdani 合成推理方法計算,

14、即由于此處只考慮轉(zhuǎn)速誤差E 作為模糊輸入變量,因此輸出增量u 的隸屬度與輸入變量的隸屬度相同.2. 3 清晰化計算對應(yīng)于每個采集周期的轉(zhuǎn)速偏差值E ,由上述模糊決策過程激活2 條控制規(guī)則(當(dāng)E 小于10 r/min 時僅激活一條規(guī)則) , 并可求出每條規(guī)則中模糊輸出增量u 的隸屬度值. u*的隸屬函數(shù)取單值線函數(shù), 即一系列的離散值(見圖3) .輸出控制量是執(zhí)行器閉環(huán)控制的給定值, 其論域為0 , 100 % , 則輸出增量u*的論域取值為 - 100 % ,100 % .對于求出的模糊輸出增量,采用重心法計算其精確輸出增量值,即:當(dāng)采用一維模糊控制器時,對于上述的輸入變量模糊隸屬度函數(shù)的模糊

15、推理方法,不難證明因此上式的計算量很小,易于在單片機中實現(xiàn).結(jié)論在以80C196 KC 嵌入式16 位單片機為核心的柴油機數(shù)字調(diào)速系統(tǒng)中,根據(jù)上述算法設(shè)計了控制軟件,并在6135 型柴油機上進行了實機試驗. 圖4 和圖5 表示了柴油機低速空車接排時轉(zhuǎn)速和齒桿位移變化的動態(tài)過程. 由圖可見,在接排的瞬間,柴油機的轉(zhuǎn)速急劇下降,與此同時,齒桿位移量幾乎是呈直線增加到100 % ,說明控制器控制動作的快速性已達到極限. 事實上,通過一系列性能測試,以本文提出的模糊控制算法為基本控制策略的柴油機轉(zhuǎn)速控制系統(tǒng)具有良好的動態(tài)性能,但若僅采用模糊控制,系統(tǒng)的穩(wěn)態(tài)性能達不到一級調(diào)速精度. 可采用多種控制策略來

16、改善系統(tǒng)的穩(wěn)態(tài)性能,其中Fuzzy- PID 復(fù)合控制是提高系統(tǒng)控制精度的有效途徑。模糊控制算法的C語言實現(xiàn)#include #includemath.h #define PMAX 100 #define PMIN -100 #define DMAX 100 #define DMIN -100 #define FMAX 100 /*語言值的滿幅值*/ int PFF4=0,12,24,48;/*輸入量D語言值特征點*/ int DFF4=0,16,32,64;/*輸出量U語言值特征點*/ int UFF7=0,15,30,45,60,75,90;/*采用了調(diào)整因子的規(guī)則表,大誤差時偏重誤差,小

17、誤差時偏重誤差變化*/ /*a0=0.3,a1=0.55,a2=0.74,a3=0.89 */ int rule77= /誤差變化率 -3,-2,-1, 0, 1, 2, 3 / 誤差 -6,-6,-6,-5,-5,-5,-4, / -3 -5,-4,-4,-3,-2,-2,-1, / -2 -4,-3,-2,-1, 0, 1, 2, / -1 -4,-3,-1, 0, 1, 3, 4, / 0 -2,-1, 0, 1, 2, 3, 4, / 1 1, 2, 2, 3, 4, 4, 5, / 2 4, 5, 5, 5, 6, 6, 6; / 3/*/int Fuzzy(int P,int D)

18、 /*模糊運算引擎*/ int U; /*偏差,偏差微分以及輸出值的精確量*/ unsigned int PF2,DF2,UF4; /*偏差,偏差微分以及輸出值的隸屬度*/ int Pn,Dn,Un4; long temp1,temp2; /*隸屬度的確定*/ /*根據(jù)PD的指定語言值獲得有效隸屬度*/ if(P-PFF3 & PPFF3) if(P=-PFF2) Pn=-2; PF0=FMAX*(float)(-PFF2-P)/(PFF3-PFF2); else if(P=-PFF1) Pn=-1; PF0=FMAX*(float)(-PFF1-P)/(PFF2-PFF1); else if

19、(P=PFF0) Pn=0; PF0=FMAX*(float)(-PFF0-P)/(PFF1-PFF0); else if(P=PFF1) Pn=1; PF0=FMAX*(float)(PFF1-P)/(PFF1-PFF0); else if(P=PFF2) Pn=2; PF0=FMAX*(float)(PFF2-P)/(PFF2-PFF1); else if(P=PFF3) Pn=3; PF0=FMAX*(float)(PFF3-P)/(PFF3-PFF2); else if(P=PFF3) Pn=3; PF0=0; PF1=FMAX-PF0;if(D-DFF3 & DDFF3) if(D=

20、-DFF2) Dn=-2;DF0=FMAX*(float)(-DFF2-D)/(DFF3-DFF2); else if(D=-DFF1) Dn=-1; DF0=FMAX*(float)(-DFF1-D)/(DFF2-DFF1); else if(D=DFF0) Dn=0; DF0=FMAX*(float)(-DFF0-D)/(DFF1-DFF0); else if(D=DFF1) Dn=1; DF0=FMAX*(float)(DFF1-D)/(DFF1-DFF0); else if(D=DFF2) Dn=2; DF0=FMAX*(float)(DFF2-D)/(DFF2-DFF1); else

21、 if(D=DFF3) Dn=3; DF0=FMAX*(float)(DFF3-D)/(DFF3-DFF2); else if(D=DFF3) Dn=3; DF0=0; DF1=FMAX-DF0;/*使用誤差范圍優(yōu)化后的規(guī)則表rule77*/ /*輸出值使用13個隸屬函數(shù),中心值由UFF7指定*/ /*一般都是四個規(guī)則有效*/ Un0=rulePn-1+3Dn-1+3; Un1=rulePn+3Dn-1+3; Un2=rulePn-1+3Dn+3; Un3=rulePn+3Dn+3; if(PF0=DF0) UF0=PF0;else UF0=DF0; if(PF1=DF0) UF1=PF1;else UF1=DF0; if(PF0=DF1) UF2=PF0; else UF2=DF1; if(PF1UF1) UF1=0; else UF0=0; if(Un0=Un2) if(UF0UF2) UF2=0; else UF0=0; if(Un0=Un3) if(UF0UF3) UF3=0; else UF0=0; if(Un1=Un2) if(UF1UF2) UF2=0; else UF1=0; if(Un1=Un3) if(UF1UF3) UF3=0; else UF1=0; if(Un2=Un3) if(UF2UF3) UF3=0;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論