C實現(xiàn)模糊控制算法(共6頁)_第1頁
C實現(xiàn)模糊控制算法(共6頁)_第2頁
C實現(xiàn)模糊控制算法(共6頁)_第3頁
C實現(xiàn)模糊控制算法(共6頁)_第4頁
C實現(xiàn)模糊控制算法(共6頁)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上由于項目需要,需要模糊控制算法,之前此類知識為0,經(jīng)過半個多月的研究,終于有的小進展。開始想從強大的互聯(lián)網(wǎng)上搜點c代碼來研究下,結(jié)果搜遍所有搜索引擎都搜不到,以下本人從修改的模糊控制代碼,經(jīng)過自己修改后可在vc6.0,運行!輸入e表示輸出誤差,ec表示誤差變化率,經(jīng)過測試具有很好的控制效果,對于非線性系統(tǒng)和數(shù)學模型難以建立的系統(tǒng)來說有更好的控制效果!現(xiàn)將其公開供大家學習研究!#include <stdio.h>#include"math.h" #define PMAX    100  &

2、#160; #define PMIN    -100   #define DMAX    100     #define DMIN    -100           #define FMAX    100       /*語言值的滿幅值*/ int PFF4

3、=0,12,24,48;/*輸入量D語言值特征點*/ int DFF4=0,16,32,64;/*輸出量U語言值特征點*/ int UFF7=0,15,30,45,60,75,90;/*采用了調(diào)整因子的規(guī)則表,大誤差時偏重誤差,小誤差時偏重誤差變化*/ /*a0=0.3,a1=0.55,a2=0.74,a3=0.89   */   int rule77= /誤差變化率 -3,-2,-1, 0, 1, 2, 3     / 誤差        &#

4、160;  -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, 

5、0; /    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  

6、; Fuzzy(int P,int D)   /*模糊運算引擎*/ int    U;           /*偏差,偏差微分以及輸出值的精確量*/ unsigned int   PF2,DF2,UF4;   /*偏差,偏差微分以及輸出值的隸屬度*/ int    Pn,Dn,Un4; long   temp1,temp2;   

7、;    /*隸屬度的確定*/ /*根據(jù)PD的指定語言值獲得有效隸屬度*/ if(P>-PFF3 && P<PFF3)     if(P<=-PFF2)        Pn=-2;   PF0=FMAX*(float)(-PFF2-P)/(PFF3-PFF2);     else if(P<=-PFF1)        

8、0; Pn=-1;    PF0=FMAX*(float)(-PFF1-P)/(PFF2-PFF1);       else if(P<=PFF0)          Pn=0;    PF0=FMAX*(float)(-PFF0-P)/(PFF1-PFF0);       else if(P<=PFF1)     

9、     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

10、*(float)(PFF3-P)/(PFF3-PFF2);                         else if(P<=-PFF3)          Pn=-2;   PF0=FMAX;   else if(P>=PFF3)  

11、;        Pn=3;   PF0=0;   PF1=FMAX-PF0;  if(D>-DFF3 && D<DFF3)     if(D<=-DFF2)        Dn=-2;DF0=FMAX*(float)(-DFF2-D)/(DFF3-DFF2);     else if(D<=-DFF1)  

12、        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<

13、=DFF1)          Dn=1;    DF0=FMAX*(float)(DFF1-D)/(DFF1-DFF0);       else if(D<=DFF2)          Dn=2; DF0=FMAX*(float)(DFF2-D)/(DFF2-DFF1);       else if(D<=DFF

14、3)          Dn=3; DF0=FMAX*(float)(DFF3-D)/(DFF3-DFF2);          else if(D<=-DFF3)          Dn=-2;     DF0=FMAX;   else if(D>=DFF3)       &

15、#160; 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) &

16、#160; UF1=PF1;else    UF1=DF0; if(PF0<=DF1)   UF2=PF0; else    UF2=DF1; if(PF1<=DF1)   UF3=PF1; else    UF3=DF1;/*同隸屬函數(shù)輸出語言值求大*/    if(Un0=Un1)   if(UF0>UF1)    UF1=0;   else     UF

17、0=0; if(Un0=Un2)   if(UF0>UF2)    UF2=0;   else     UF0=0; if(Un0=Un3)   if(UF0>UF3)    UF3=0;   else    UF0=0; if(Un1=Un2)   if(UF1>UF2)    UF2=0;   else&#

18、160;   UF1=0; if(Un1=Un3)   if(UF1>UF3)    UF3=0;   else     UF1=0; if(Un2=Un3)   if(UF2>UF3)    UF3=0;   else     UF2=0; /*重心法反模糊*/ /*Un原值為輸出隸屬函數(shù)標號,轉(zhuǎn)換為隸屬函數(shù)值*/ if(Un0>=0)  

19、; Un0=UFFUn0;else    Un0=-UFF-Un0; if(Un1>=0)   Un1=UFFUn1;else    Un1=-UFF-Un1; if(Un2>=0)   Un2=UFFUn2;else   Un2=-UFF-Un2; if(Un3>=0)   Un3=UFFUn3;else    Un3=-UFF-Un3;    temp1=UF0*Un0+UF1*Un1+UF2*Un2+UF3*Un3; temp2=UF0+UF1+UF2+UF3; U=temp1/temp2;return U; void main() int a=0,e,ec;/*int nowpoint,p1,p2=1;FILE *in,*out;in=fopen("in.txt","r");out=fopen("out.txt","w");*/while(!feof(in)while(1)     /fscanf(in,"%d

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論