




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、切換式模糊控制器一.前言 本篇文章提出一種具有切換能力的模糊控制器架構,藉由不同的切換區域,使模糊控制器能在不同的目標區域中,切換到適當的輸入輸出比例因數(Scaling factors),使系統達到滿意的響應,即小的超越量(overshoot),小的穩態誤差(steady state error ),與快速的上升時間(rise time).二.切換式模糊控制器的架構圖1.切換式模糊控制器(1)參數說明:k:取樣間隙s:設定點,追蹤目標值e(k):誤差量ce(k):誤差變化量cce(k):誤差變化量的變化量u(k):控制輸入訊號cu(k):增加的控制輸入訊號:比例因數u(k)=u(k-1)+c
2、u(k)Plant:(2)模糊控制器模糊化界面: 圖2.(a) 為e,ce,cce前提部之歸屬函數.模糊控制規則:(圖2.Table 1) IF e is Ei and ce is CEi and cce is CCEi THEN cu is Cui解模糊化界面: vi為結論部之值如圖2.(b) 為圖2.(2)切換器設計: 由受控程序輸出y(k)與設定目標s的距離大小設定了五個切換區域如下:(1) y(k)<0.2s (大加速區)(2) 0.2s<y(k)<0.5s (小加速區)(3) 0.5s<y(k)<0.7s (大減速區)(4) 0.7s<y(k)&l
3、t;0.9s (小減速區)(5) 0.9s<y(k) (穩定區)並由Table 2,Table 3.得到控制器的輸入Ke,Kce,Kcce與輸出Kcu ,4個比例參數.三.模擬結果圖3.依照本篇提供的所有參數表所得結果圖4.將Table 3.的設定值s換成誤差e所得結果 觀察圖3.與圖4.的結果有些不同,因為由Table 3.可知在s=0時,Ku=0,cu(k)=0,不能反映真正的誤差,輸出所要求的值到Plant的輸入,所以將Table 3.設定值s換成誤差e ,可得與本篇較相同的模擬結果.圖2.模擬結果之t,u,y,e數據如下所示tuye0002010.8891726.71E-0519
4、.99993217.090068.60843111.39157319.8409818.485751.514254420.0009420.29544-0.29544519.7707520.40507-0.40507619.6047120.21366-0.21366719.5305920.08165-0.08165819.5055920.02365-0.02365919.4994620.00432-0.004321019.4988219.999670.0003341119.4991919.999230.0007691219.4995219.999560.0004411319.4997119.999
5、790.000211419.4997619.999972.67E-051519.4997619.999972.67E-051619.4997619.999972.67E-051719.4997619.999972.67E-051819.4997619.999972.67E-051919.4997619.999972.67E-052019.4997619.999972.67E-052119.0274419.99994-19.9999228.77845115.51663-15.5166233.0017676.833609-6.83361240.7548322.327366-2.32737250.0
6、872590.573206-0.5732126-0.042020.060828-0.0608327-0.02964-0.034670.034665280.001973-0.016120.016117290.0060520.004046-0.00405300.0031690.004826-0.00483310.001210.002501-0.0025320.0003490.000941-0.00094336.34E-050.000268-0.0002734-5.08E-064.69E-05-4.69E-0535-1.10E-05-4.98E-064.98E-0636-1.81E-06-7.15E
7、-067.15E-06371.68E-06-1.55E-071.55E-07381.09E-061.39E-06-1.39E-06394.63E-078.61E-07-8.61E-07401.50E-073.62E-07-3.62E-07411.7783430.00013439.999874234.1801217.2168622.783144339.6819536.97153.0285034440.0018740.59089-0.590894539.5371140.80677-0.806774639.2071540.42382-0.423824739.0603340.16153-0.16153
8、4839.0109540.04665-0.046654938.9988840.00845-0.008455038.9976539.99930.000698穩態誤差小於1E-45138.9983939.998470.001534穩態誤差小於1E-45238.9990539.999130.0008745338.9994339.999580.0004165438.9995239.999955.34E-055538.9995239.999955.34E-055638.9995239.999955.34E-055738.9995239.999955.34E-055838.9995239.999955.3
9、4E-055938.9995239.999955.34E-056038.9995239.999955.34E-056138.0548739.99988-39.99996217.556931.03326-31.0333636.00353413.66722-13.6672641.5096644.654731-4.65473650.1745191.146412-1.1464166-0.084040.121655-0.1216667-0.05928-0.069330.06933680.003947-0.032230.032234690.0121030.008093-0.00809700.0063390
10、.009651-0.00965四.結論 本篇的切換式模糊控制器在誤差很大時,能有較大的輸出,且在誤差很小時,也能反應較小輸出到Plant,而達到更佳的性能.本篇文章提到未來研究方向,是如何找到最佳的參數使控制器有更好的效果.主要程式列表:/-/定義歸屬函數圖形/enum Shape Triangle,ShoulderR,ShoulderL,Singleton,Gaussian,NoShape;/* | (p1,1) |/ Triangle: +- 中心值p1, 展幅:p1-begin,end-p1, begin<p1<end begin end |_(p1,1) ShoulderR
11、:| begin=-00(d)< 轉折點 p1 <end +- end |(p1,1)_ ShoulderL:| / begin< 轉折點 p1< end=00(d) +-/- begin (p1,1) | . | | Singleton: +-+- begin=end=0 , p1 單點 (p1,1) | . | | | 展幅約 2倍 sigma /if sigma=1 then (2,0.018315)(3,0.000123409) Gaussian: +-/-+- begin=sigma, p1 中心值 */class FuzzySet protected: Sh
12、ape MbsFun;/歸屬函數形狀Membership public: float Begin,P1,End; AnsiString LgV; /Linguistic Variables 語言變數 void IniSet(AnsiString lgv,Shape Mbsfun,float begin,float p1,float end);/設定歸屬函數的語言.形狀.開始點.p1.結束點 float Fuzzifier(float Input);/計算輸入值之歸屬度輸出至MbsValue float MbsValue;/歸屬值;void FuzzySet:IniSet(AnsiString
13、lgv,Shape Mbsfun,float begin,float p1,float end) LgV=lgv; MbsFun=Mbsfun; Begin=begin; P1=p1; End=end;float FuzzySet:Fuzzifier(float Input) switch(MbsFun) case Triangle: if( (Begin>Input)|(Input>End) ) MbsValue=0;break; if( (Begin<=Input)&&(Input<=P1) ) if (Begin=P1) MbsValue=1; e
14、lse MbsValue=(Input-Begin)/(P1-Begin);break; if( (P1<Input)&&(Input<=End) ) if (End=P1) MbsValue=1; else MbsValue=(Input-End)/(P1-End);break; break; case ShoulderR: if(Input<P1) MbsValue=1;break; if( (P1<Input)&&(Input<=End) ) MbsValue=(Input-End)/(P1-End);break; if(En
15、d<Input)MbsValue=0;break; break; case ShoulderL: if(P1<Input) MbsValue=1;break; if( (Begin<Input)&&(Input<P1) ) MbsValue=(Input-Begin)/(P1-Begin);break; if(Input<Begin)MbsValue=0;break; break; case Singleton: if( (P1-TOLERANCE)<=Input)&&(Input<=(P1+TOLERANCE) ) M
16、bsValue=1;else MbsValue=0; break; case Gaussian: MbsValue=exp(-1*(Input-P1)*(Input-P1)/(Begin*Begin); break; return(MbsValue);class FuzzyController /容納一組Fuzzy Set 的控制器 protected: FuzzySet *Fuzzy1; FuzzySet *Fuzzy2; FuzzySet *Fuzzy3; float *U13; float *U23; float *U33; float RuleValue333; float MbsSu
17、m; float Output; public: void IniSet(FuzzySet *fuzzy1,FuzzySet *fuzzy2,FuzzySet *fuzzy3,float (*u1)3,float (*u2)3,float (*u3)3); float Compute(float Input1,float Input2,float Input3);void FuzzyController:IniSet(FuzzySet *fuzzy1,FuzzySet *fuzzy2,FuzzySet *fuzzy3,float (*u1)3,float (*u2)3,float (*u3)3
18、) Fuzzy1=fuzzy1; Fuzzy2=fuzzy2; Fuzzy3=fuzzy3; for(int i=0;i<3;i+) *(U1+i)=*(u1+i); for(int i=0;i<3;i+) *(U2+i)=*(u2+i); for(int i=0;i<3;i+) *(U3+i)=*(u3+i); for(int i=0;i<3;i+) for(int j=0;j<3;j+) RuleValue0ij=U1ji; for(int i=0;i<3;i+) for(int j=0;j<3;j+) RuleValue1ij=U2ji; for
19、(int i=0;i<3;i+) for(int j=0;j<3;j+) RuleValue2ij=U3ji;float FuzzyController:Compute(float Input1,float Input2,float Input3) float Mbs1,Mbs2,Mbs3,Mbs,ResultSum=0,Result; MbsSum=0; for(int i=0;i<3;i+) for(int j=0;j<3;j+) for(int k=0;k<3;k+) Mbs1=Fuzzy12-i.Fuzzifier(Input1); Mbs2=Fuzzy2
20、2-j.Fuzzifier(Input2); Mbs3=Fuzzy3k.Fuzzifier(Input3); /if (Mbs1>Mbs2) Mbs=Mbs2;else Mbs=Mbs1; /Mbs=(Mbs1+Mbs2)/2;/( 2-(Mbs1+Mbs2+Mbs1*Mbs2) ); Mbs=(Mbs1*Mbs2*Mbs3); Result=Mbs*RuleValueijk; ResultSum+=Result; MbsSum+=Mbs; Output=ResultSum/MbsSum; return(Output);/-float _fastcall TForm1:f_1(float
21、 t,float x1,float x2,float x3)return(x2);float _fastcall TForm1:f_2(float t,float x1,float x2,float x3) return(x3);float _fastcall TForm1:f_3(float t,float x1,float x2,float x3) return(-6.3383*x3-27.6256*x2-40.6229*x1);/void _fastcall TForm1:StartRun() AnsiString str4; GridToArray3(u1Grid,u1a); Grid
22、ToArray3(u2Grid,u2a); GridToArray3(u3Grid,u3a); Controller.IniSet(e,ce,cce,u1a,u2a,u3a); ResultSeries->Clear(); RSeries->Clear(); eSeries->Clear(); uSe->Clear(); float ek,cek,ccek; float ek_1,cek_1,y; float sek,scek,sccek,scuk,cuk,uk,uk_1; float eSum=0; uk=0;uk_1=0;ek_1=0;cek_1=0; y=0; c
23、ek=0; ccek=0; float t,dt,x1=0,x2=0,x3=0,h=0.01,u; float k43; float Int_t=0; ResultGrid->RowCount=2; dt=0.96; for(t=0;t<70;t+=h) u=uk; k00=f_1(t,x1,x2,x3); k01=f_2(t,x1,x2,x3); k02=f_3(t,x1,x2,x3)+41.665*u; k10=f_1(t+h/2,x1+h*k00/2,x2+h*k01/2,x3+h*k02/2); k11=f_2(t+h/2,x1+h*k00/2,x2+h*k01/2,x3+
24、h*k02/2); k12=f_3(t+h/2,x1+h*k00/2,x2+h*k01/2,x3+h*k02/2)+41.665*u; k20=f_1(t+h/2,x1+h*k10/2,x2+h*k11/2,x3+h*k12/2); k21=f_2(t+h/2,x1+h*k10/2,x2+h*k11/2,x3+h*k12/2); k22=f_3(t+h/2,x1+h*k10/2,x2+h*k11/2,x3+h*k12/2)+41.665*u; k30=f_1(t+h,x1+h*k20,x2+h*k21,x3+h*k22); k31=f_2(t+h,x1+h*k20,x2+h*k21,x3+h*
25、k22); k32=f_3(t+h,x1+h*k20,x2+h*k21,x3+h*k22)+41.665*u; x1=x1+(k00+2*k10+2*k20+k30)/6*h; x2=x2+(k01+2*k11+2*k21+k31)/6*h; x3=x3+(k02+2*k12+2*k22+k32)/6*h; y=x1; /y=Plant(uk); SwitchType(y,Ym(t-dt)-y); ek=Ym(t-dt)-y; cek=(ek-ek_1); ek_1=ek; ccek=(cek-cek_1); cek_1=cek; sek=ek/Ke; scek=cek/Kce; sccek=
26、ccek/Kcce; scuk=Controller.Compute(sek,scek,sccek); cuk=scuk*Kcu; uk=uk_1+cuk; uk_1=uk; ResultSeries->AddXY(t,y,"",clTeeColor); RSeries->AddXY(t,Ym(t),"",clTeeColor); if (t<dt) eSeries->AddXY(t,20,"",clTeeColor); else eSeries->AddXY(t,ek,"",clTe
27、eColor); if( (Int_t-0.01)<t)&&(t<(Int_t+0.01) ) ) str0=FloatToStr(Int_t); str1=FloatToStr(uk_1); str2=FloatToStr(y); str3=FloatToStr(ek); Result.LinesAdd(4,str); Int_t+; uSe->AddXY(t,uk_1,"",clTeeColor); / cuSe->AddXY(t,cuk,"",clTeeColor); / scukSe->AddXY(t,scuk,"&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海市靜安區、青浦區2024-2025學年高三下學期入學考試題生物試題文試題含解析
- 吉林省五地六市聯盟2025屆高三下學期第二次高考模擬語文試題含解析
- 江西省撫州市臨川2024-2025學年初三下學期一模考試數學試題含解析
- 吉林省白城市洮北區第一中學2025屆高考診斷性測試物理試題含解析
- 溫州市蒼南縣重點中學2024-2025學年初三第五次調研考試語文試題含解析
- 云南省昆明市晉寧縣2025屆數學四下期末預測試題含解析
- 山東省臨沂市蘭山區2025屆初三第二次教學質量檢測試題語文試題含解析
- 米蘭家居全屋定制合同范本
- 吉林省通化市梅河口五中2025屆高三上學期12月月考-物理試題(含答案)
- 員工股權激勵合同
- AQ 2001-2018 煉鋼安全規程(正式版)
- 醫院護理培訓課件:《安全注射》
- 2024年415全民國家安全教育日知識競賽及答案
- 再生資源消防安全培訓
- 高考地理二輪復習課件專題3S技術
- 安全生產治本攻堅三年行動主要任務
- 2024年濟南城市發展集團投資開發有限公司招聘筆試參考題庫含答案解析
- 2024年贛州市章貢區文化旅游發展集團有限公司招聘筆試參考題庫附帶答案詳解
- 同等學力申碩-同等學力(政治學)筆試(2018-2023年)真題摘選含答案
- 親子鑒定報告樣本
- 六年級下冊數學應用題練習100題及答案
評論
0/150
提交評論