久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3834|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

模糊控制程序開源,模糊PID C語言實現(xiàn)及調(diào)模糊規(guī)則表方法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:280056 發(fā)表于 2021-4-20 09:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
開源一下自己的模糊控制代碼,只需要給出偏差量,偏差范圍,偏差變化率范圍和你想要控制的量的范圍(比如P參數(shù)的變化范圍),再有一個合適的模糊規(guī)則就可使用,無需關(guān)心引擎內(nèi)部邏輯,安安心心的調(diào)表就行。

關(guān)于如何調(diào)表:拿智能車比賽舉例,使用模糊控制后發(fā)現(xiàn)某一段線路跑的不好(即某一條模糊規(guī)則不理想),讀取此時的e_cache與ec_cache就能定位到模糊規(guī)則表的位置,修改該位置的表就行,注意,修改一處位置(可能為1個量,2個量或者4個量)后會導(dǎo)致周圍的規(guī)則變化,即發(fā)現(xiàn)其他線路跑法變了,畢竟控制本身就是個魚與熊掌不可兼得的事嘛。
歡迎大家討論使用,才疏學(xué)淺,不能保證毫無BUG,如發(fā)現(xiàn)BUG一定要反饋給我,我看到后會修正它。

源程序如下:
  1. /*******!!! 該宏定義不可修改 !!!******/
  2. #define NB 1
  3. #define NM 2
  4. #define NS 3
  5. #define ZO 4
  6. #define PS 5
  7. #define PM 6
  8. #define PB 7
  9. /*** 不可修改內(nèi)容結(jié)束 ****/
  10. //N為negative,P為positive,B為big,M為middle,S為small,ZO為zero

  11. int8 DirectionError[2][3]={0};//-128~127,這里儲存偏差量,注意數(shù)字范圍
  12. #define E_MAX 120    //偏差E的最大值(預(yù)設(shè)),程序會自動分割成正負對稱數(shù)列
  13. #define EC_MAX 60    //偏差變化EC的最大值(預(yù)設(shè)),程序會自動分割成正負對稱數(shù)列
  14. #define P_MAX  10    //方向環(huán)P參數(shù)的最大值(預(yù)設(shè)),若不需要負數(shù)列,請修改下面的自動分割邏輯
  15. #define D_MAX  10    //方向環(huán)D參數(shù)的最大值(預(yù)設(shè)),若不需要負數(shù)列,請修改下面的自動分割邏輯
  16. int8 E_NB,E_NM,E_NS,E_ZO,E_PS,E_PM,E_PB;                      //E的界限值
  17. float E_NB_D,E_NM_D,E_NS_D,E_ZO_D,E_PS_D,E_PM_D,E_PB_D;       //用于保存E的隸屬度
  18. int8 EC_NB,EC_NM,EC_NS,EC_ZO,EC_PS,EC_PM,EC_PB;               //EC的界限值
  19. float EC_NB_D,EC_NM_D,EC_NS_D,EC_ZO_D,EC_PS_D,EC_PM_D,EC_PB_D;//用于保存EC的隸屬度
  20. float E_EC_NB_D,E_EC_NM_D,E_EC_NS_D,E_EC_ZO_D,E_EC_PS_D,E_EC_PM_D,E_EC_PB_D;//用于保存E_EC的隸屬度
  21. float P_NB,P_NM,P_NS,P_ZO,P_PS,P_PM,P_PB;                     //輸出P的界限值
  22. float P_NB_D,P_NM_D,P_NS_D,P_ZO_D,P_PS_D,P_PM_D,P_PB_D;       //用于保存P的隸屬度
  23. float D_NB,D_NM,D_NS,D_ZO,D_PS,D_PM,D_PB;                     //輸出D的界限值
  24. float D_NB_D,D_NM_D,D_NS_D,D_ZO_D,D_PS_D,D_PM_D,D_PB_D;       //用于保存D的隸屬度
  25. float P_out,D_out;                                            //用于保存最后的P,D輸出

  26. int16 Direction_PID;                  //用于保存方向PID的輸出(直接加在速度環(huán)的輸入上,此時速度環(huán)必需指定基準速度)

  27. float Fuzzy_a,Fuzzy_b,Fuzzy_c,Fuzzy_d;
  28. void Fuzzy_Preprocess(void)//用于自動處理預(yù)設(shè)數(shù)據(jù)
  29. {
  30.         //自動等分,只需運行一次
  31.         Fuzzy_a=E_MAX/4;
  32.         Fuzzy_b=EC_MAX/4;
  33.         Fuzzy_c=P_MAX/4;
  34.         Fuzzy_d=D_MAX/4;
  35.         E_NB = -E_MAX+Fuzzy_a,E_NM = -E_MAX+Fuzzy_a*2,E_NS = -E_MAX+Fuzzy_a*3,E_ZO=E_MAX-Fuzzy_a*4,E_PS = E_MAX-Fuzzy_a*3,E_PM = E_MAX-Fuzzy_a*2,E_PB = E_MAX-Fuzzy_a;
  36.         EC_NB = -EC_MAX+Fuzzy_b,EC_NM = -EC_MAX+Fuzzy_b*2,EC_NS = -EC_MAX+Fuzzy_b*3,EC_ZO=EC_MAX-Fuzzy_b*4,EC_PS = EC_MAX-Fuzzy_b*3,EC_PM = EC_MAX-Fuzzy_b*2,EC_PB = EC_MAX-Fuzzy_b;
  37.         P_NB = -P_MAX+Fuzzy_c,P_NM = -P_MAX+Fuzzy_c*2,P_NS = -P_MAX+Fuzzy_c*3,P_ZO=P_MAX-Fuzzy_c*4,P_PS = P_MAX-Fuzzy_c*3,P_PM = P_MAX-Fuzzy_c*2,P_PB = P_MAX-Fuzzy_c;
  38.         D_NB = -D_MAX+Fuzzy_d,D_NM = -D_MAX+Fuzzy_d*2,D_NS = -D_MAX+Fuzzy_d*3,D_ZO=D_MAX-Fuzzy_d*4,D_PS = D_MAX-Fuzzy_d*3,D_PM = D_MAX-Fuzzy_d*2,D_PB = D_MAX-Fuzzy_d;
  39.         //用于保存預(yù)處理好的范圍數(shù)據(jù)
  40.         int8 E_scope[9]={-E_MAX,E_NB,E_NM,E_NS,E_ZO,E_PS,E_PM,E_PB,E_MAX};//誤差范圍
  41.         int8 EC_scope[9]={-EC_MAX,EC_NB,EC_NM,EC_NS,EC_ZO,EC_PS,EC_PM,EC_PB,EC_MAX};//誤差變化范圍
  42.         int8 P_scope[9]={-P_MAX,P_NB,P_NM,P_NS,P_ZO,P_PS,P_PM,P_PB,P_MAX};//P范圍
  43.         int8 D_scope[9]={-D_MAX,D_NB,D_NM,D_NS,D_ZO,D_PS,D_PM,D_PB,D_MAX};//D范圍
  44. }
  45. //用于保存模糊規(guī)則    EC  NB NM NS ZO PS PM PB
  46. int8 Fuzzy_Rule[7*4][7]={{PB,PB,PB,PB,PB,PB,PB},//模糊控制表
  47.                                                  {PB,PB,PB,PB,PM,PM,PS},//左邊為模糊規(guī)則,右邊保存預(yù)處理的輸出隸屬度
  48.                                                  {PM,PM,PM,PS,PS,ZO,ZO},//該表用于直接控制,即輸出為實際物理量
  49.                                                  {PM,PS,PS,ZO,NS,NM,NM},//該表可根據(jù)需要修改
  50.                                                  {ZO,NS,NS,NM,NM,NM,NB},
  51.                                                  {NS,NS,NM,NM,NM,NB,NB},
  52.                                                  {NM,NM,NB,NB,NB,NB,NB},
  53.                                         /*E*/
  54.                                    /*NB*/{PB,PB,PM,PM,PS,ZO,ZO},//模糊P規(guī)則表
  55.                                    /*NM*/{PB,PB,PM,PS,PS,ZO,NS},//左邊為模糊規(guī)則,右邊保存預(yù)處理的輸出隸屬度
  56.                                    /*NS*/{PM,PM,PM,PS,ZO,NS,NS},//該表用于控制PID的參數(shù)P,即輸出為P值或P值的變化量
  57.                                    /*ZO*/{PM,PM,PS,ZO,NS,NM,NM},//該表必須修改,不可直接使用
  58.                                    /*PS*/{PS,PS,ZO,NS,NS,NM,NM},
  59.                                    /*PM*/{PS,ZO,PS,NM,NM,NM,NB},
  60.                                    /*PB*/{ZO,ZO,NM,NM,NM,NB,NB},

  61.                                                  {NB,NB,NM,NM,NS,ZO,ZO},//模糊I規(guī)則表
  62.                                                  {NB,NB,NM,NS,NS,ZO,ZO},//左邊為模糊規(guī)則,右邊保存預(yù)處理的輸出隸屬度
  63.                                                  {NB,NM,NS,NS,ZO,PS,PS},//該表用于控制PID的參數(shù)I,即輸出為I值或I值的變化量
  64.                                                  {NM,NM,NS,ZO,PS,PM,PM},//該表必須修改,不可直接使用
  65.                                                  {NM,NS,ZO,PS,PS,PM,PB},
  66.                                                  {ZO,ZO,PS,PS,PM,PB,PB},
  67.                                                  {ZO,ZO,PS,PM,PM,PB,PB},

  68.                                                  {NB,NB,NB,NB,NB,NM,PS},//模糊D規(guī)則表
  69.                                                  {PS,NS,NB,NM,NM,NS,ZO},//左邊為模糊規(guī)則,右邊保存預(yù)處理的輸出隸屬度
  70.                                                  {ZO,NS,NM,NM,NS,NS,ZO},//該表用于控制PID的參數(shù)D,即輸出為D值或D值的變化量
  71.                                                  {ZO,NS,NS,NS,NS,NS,ZO},//該表必須修改,不可直接使用
  72.                                                  {ZO,ZO,ZO,ZO,ZO,ZO,ZO},
  73.                                                  {PB,ZO,PS,PS,PS,PS,PB},
  74.                                                  {PB,PM,PM,PM,PS,PS,PB},
  75. };

  76. //用于指引模糊判斷,臨時變量
  77. int8 e_cache=0;
  78. int8 ec_cache=0;
  79. void Fuzzy_Menbership(int E)//計算輸入隸屬度
  80. {
  81.         //記錄偏差
  82.         int EC;
  83.         EC=E-DirectionError[0][2];
  84.         for(uint8 i=0;i<2;i++)
  85.         {
  86.                 DirectionError[0][i]=DirectionError[0][i+1];//數(shù)據(jù)左移,低位扔掉
  87.         }
  88.         DirectionError[0][2]=E;
  89.         
  90.         //計算模糊輸入隸屬度
  91.         if(E <= E_NB)            E_NB_D=1,e_cache=0;
  92.         if(E > E_NB && E < E_NM) E_NB_D=(E_NM-E)/Fuzzy_a,E_NM_D=(E-E_NB)/Fuzzy_a,e_cache=1;
  93.         if(E > E_NM && E < E_NS) E_NM_D=(E_NS-E)/Fuzzy_a,E_NS_D=(E-E_NM)/Fuzzy_a,e_cache=2;
  94.         if(E > E_NS && E < E_ZO) E_NS_D=(E_ZO-E)/Fuzzy_a,E_ZO_D=(E-E_NS)/Fuzzy_a,e_cache=3;
  95.         if(E > E_ZO && E < E_PS) E_ZO_D=(E_PS-E)/Fuzzy_a,E_PS_D=(E-E_ZO)/Fuzzy_a,e_cache=4;
  96.         if(E > E_PS && E < E_PM) E_PS_D=(E_PM-E)/Fuzzy_a,E_PM_D=(E-E_PS)/Fuzzy_a,e_cache=5;
  97.         if(E > E_PM && E < E_PB) E_PM_D=(E_PB-E)/Fuzzy_a,E_PB_D=(E-E_PM)/Fuzzy_a,e_cache=6;
  98.         if(E >= E_PB)            E_PB_D=1,e_cache=7;
  99.         
  100.         if(EC <= EC_NB)              EC_NB_D=1,ec_cache=0;
  101.         if(EC > EC_NB && EC < EC_NM) EC_NB_D=(EC_NM-EC)/Fuzzy_b,EC_NM_D=(EC-EC_NB)/Fuzzy_b,ec_cache=1;
  102.         if(EC > EC_NM && EC < EC_NS) EC_NM_D=(EC_NS-EC)/Fuzzy_b,EC_NS_D=(EC-EC_NM)/Fuzzy_b,ec_cache=2;
  103.         if(EC > EC_NS && EC < EC_ZO) EC_NS_D=(EC_ZO-EC)/Fuzzy_b,EC_ZO_D=(EC-EC_NS)/Fuzzy_b,ec_cache=3;
  104.         if(EC > EC_ZO && EC < EC_PS) EC_ZO_D=(EC_PS-EC)/Fuzzy_b,EC_PS_D=(EC-EC_ZO)/Fuzzy_b,ec_cache=4;
  105.         if(EC > EC_PS && EC < EC_PM) EC_PS_D=(EC_PM-EC)/Fuzzy_b,EC_PM_D=(EC-EC_PS)/Fuzzy_b,ec_cache=5;
  106.         if(EC > EC_PM && EC < EC_PB) EC_PM_D=(EC_PB-EC)/Fuzzy_b,EC_PB_D=(EC-EC_PM)/Fuzzy_b,ec_cache=6;
  107.         if(EC >= EC_PB)              EC_PB_D=1,ec_cache=7;
  108. }

  109. //用于保存經(jīng)過預(yù)處理的輸出隸屬度
  110. float Fuzzy_MP[7*4][8]={0};
  111. //讀取規(guī)則并寫入融合隸屬度
  112. void Fuzzy_RD(int a,int b)//a:數(shù)據(jù)存儲模式 b:規(guī)則切換
  113. {
  114.         switch (a)
  115.         {
  116.                 case 1:switch(Fuzzy_Rule[e_cache][ec_cache])
  117.                 {
  118.                         case 1:E_EC_NB_D=E_EC_NB_D+Fuzzy_MP[e_cache+7*b][ec_cache];break;
  119.                         case 2:E_EC_NM_D=E_EC_NM_D+Fuzzy_MP[e_cache+7*b][ec_cache];break;
  120.                         case 3:E_EC_NS_D=E_EC_NS_D+Fuzzy_MP[e_cache+7*b][ec_cache];break;
  121.                         case 4:E_EC_ZO_D=E_EC_ZO_D+Fuzzy_MP[e_cache+7*b][ec_cache];break;
  122.                         case 5:E_EC_PS_D=E_EC_PS_D+Fuzzy_MP[e_cache+7*b][ec_cache];break;
  123.                         case 6:E_EC_PM_D=E_EC_PM_D+Fuzzy_MP[e_cache+7*b][ec_cache];break;
  124.                         case 7:E_EC_PB_D=E_EC_PB_D+Fuzzy_MP[e_cache+7*b][ec_cache];break;
  125.                 };break;
  126.                 case 2:switch(Fuzzy_Rule[e_cache][ec_cache])
  127.                 {
  128.                         case 1:E_EC_NB_D=E_EC_NB_D+Fuzzy_MP[e_cache-1+7*b][ec_cache];break;
  129.                         case 2:E_EC_NM_D=E_EC_NM_D+Fuzzy_MP[e_cache-1+7*b][ec_cache];break;
  130.                         case 3:E_EC_NS_D=E_EC_NS_D+Fuzzy_MP[e_cache-1+7*b][ec_cache];break;
  131.                         case 4:E_EC_ZO_D=E_EC_ZO_D+Fuzzy_MP[e_cache-1+7*b][ec_cache];break;
  132.                         case 5:E_EC_PS_D=E_EC_PS_D+Fuzzy_MP[e_cache-1+7*b][ec_cache];break;
  133.                         case 6:E_EC_PM_D=E_EC_PM_D+Fuzzy_MP[e_cache-1+7*b][ec_cache];break;
  134.                         case 7:E_EC_PB_D=E_EC_PB_D+Fuzzy_MP[e_cache-1+7*b][ec_cache];break;
  135.                 };break;
  136.                 case 3:switch(Fuzzy_Rule[e_cache][ec_cache])
  137.                 {
  138.                         case 1:E_EC_NB_D=E_EC_NB_D+Fuzzy_MP[e_cache+7*b][ec_cache-1];break;
  139.                         case 2:E_EC_NM_D=E_EC_NM_D+Fuzzy_MP[e_cache+7*b][ec_cache-1];break;
  140.                         case 3:E_EC_NS_D=E_EC_NS_D+Fuzzy_MP[e_cache+7*b][ec_cache-1];break;
  141.                         case 4:E_EC_ZO_D=E_EC_ZO_D+Fuzzy_MP[e_cache+7*b][ec_cache-1];break;
  142.                         case 5:E_EC_PS_D=E_EC_PS_D+Fuzzy_MP[e_cache+7*b][ec_cache-1];break;
  143.                         case 6:E_EC_PM_D=E_EC_PM_D+Fuzzy_MP[e_cache+7*b][ec_cache-1];break;
  144.                         case 7:E_EC_PB_D=E_EC_PB_D+Fuzzy_MP[e_cache+7*b][ec_cache-1];break;
  145.                 };break;
  146.                 case 4:switch(Fuzzy_Rule[e_cache][ec_cache])
  147.                 {
  148.                         case 1:E_EC_NB_D=E_EC_NB_D+Fuzzy_MP[e_cache-1+7*b][ec_cache-1];break;
  149.                         case 2:E_EC_NM_D=E_EC_NM_D+Fuzzy_MP[e_cache-1+7*b][ec_cache-1];break;
  150.                         case 3:E_EC_NS_D=E_EC_NS_D+Fuzzy_MP[e_cache-1+7*b][ec_cache-1];break;
  151.                         case 4:E_EC_ZO_D=E_EC_ZO_D+Fuzzy_MP[e_cache-1+7*b][ec_cache-1];break;
  152.                         case 5:E_EC_PS_D=E_EC_PS_D+Fuzzy_MP[e_cache-1+7*b][ec_cache-1];break;
  153.                         case 6:E_EC_PM_D=E_EC_PM_D+Fuzzy_MP[e_cache-1+7*b][ec_cache-1];break;
  154.                         case 7:E_EC_PB_D=E_EC_PB_D+Fuzzy_MP[e_cache-1+7*b][ec_cache-1];break;
  155.                 };break;
  156.         }        
  157. }

  158. //模糊引擎
  159. float Fuzzy_Engine(int8 a)//0:模糊控制 1:模糊P 2:模糊I 3:模糊D
  160. {
  161.         E_EC_NB_D=E_EC_NM_D=E_EC_NS_D=E_EC_ZO_D=E_EC_PS_D=E_EC_PM_D=E_EC_PB_D=0;//模糊輸出隸屬度預(yù)處理(清零)
  162.         switch(e_cache)
  163.         {
  164.                 case 0:
  165.                                 {
  166.                                         switch (ec_cache)
  167.                                         {
  168.                                                 case 0:Fuzzy_MP[e_cache+7*a][ec_cache]= E_NB_D*EC_NB_D,Fuzzy_RD(1,a);break;
  169.                                                 case 1:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NB_D*EC_NB_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NB_D*EC_NM_D,Fuzzy_RD(1,a);break;
  170.                                                 case 2:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NB_D*EC_NM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NB_D*EC_NS_D,Fuzzy_RD(1,a);break;
  171.                                                 case 3:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NB_D*EC_NS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NB_D*EC_ZO_D,Fuzzy_RD(1,a);break;
  172.                                                 case 4:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NB_D*EC_ZO_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NB_D*EC_PS_D,Fuzzy_RD(1,a);break;
  173.                                                 case 5:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NB_D*EC_PS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NB_D*EC_PM_D,Fuzzy_RD(1,a);break;
  174.                                                 case 6:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NB_D*EC_PM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NB_D*EC_PB_D,Fuzzy_RD(1,a);break;
  175.                                                 case 7:Fuzzy_MP[e_cache+7*a][ec_cache]= E_NB_D*EC_PB_D,Fuzzy_RD(1,a);break;
  176.                                         }
  177.                                 }break;
  178.                 case 1:
  179.                                 {
  180.                                         switch (ec_cache)
  181.                                         {
  182.                                                 case 0:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NB_D*EC_NB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NM_D*EC_NB_D,Fuzzy_RD(1,a);break;
  183.                                                 case 1:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NB_D*EC_NB_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NM_D*EC_NB_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NB_D*EC_NM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NM_D*EC_NM_D,Fuzzy_RD(1,a);break;
  184.                                                 case 2:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NB_D*EC_NM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NM_D*EC_NM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NB_D*EC_NS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NM_D*EC_NS_D,Fuzzy_RD(1,a);break;
  185.                                                 case 3:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NB_D*EC_NS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NM_D*EC_NS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NB_D*EC_ZO_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NM_D*EC_ZO_D,Fuzzy_RD(1,a);break;
  186.                                                 case 4:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NB_D*EC_ZO_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NM_D*EC_ZO_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NB_D*EC_PS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NM_D*EC_PS_D,Fuzzy_RD(1,a);break;
  187.                                                 case 5:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NB_D*EC_PS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NM_D*EC_PS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NB_D*EC_PM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NM_D*EC_PM_D,Fuzzy_RD(1,a);break;
  188.                                                 case 6:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NB_D*EC_PM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NM_D*EC_PM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NB_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NM_D*EC_PB_D,Fuzzy_RD(1,a);break;
  189.                                                 case 7:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NB_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NM_D*EC_PB_D,Fuzzy_RD(1,a);break;
  190.                                         }
  191.                                 }break;
  192.                 case 2:
  193.                                 {
  194.                                         switch (ec_cache)
  195.                                         {
  196.                                                 case 0:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NM_D*EC_NB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NS_D*EC_NB_D,Fuzzy_RD(1,a);break;
  197.                                                 case 1:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NM_D*EC_NB_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NS_D*EC_NB_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NM_D*EC_NM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NS_D*EC_NM_D,Fuzzy_RD(1,a);break;
  198.                                                 case 2:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NM_D*EC_NM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NS_D*EC_NM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NM_D*EC_NS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NS_D*EC_NS_D,Fuzzy_RD(1,a);break;
  199.                                                 case 3:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NM_D*EC_NS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NS_D*EC_NS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NM_D*EC_ZO_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NS_D*EC_ZO_D,Fuzzy_RD(1,a);break;
  200.                                                 case 4:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NM_D*EC_ZO_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NS_D*EC_ZO_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NM_D*EC_PS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NS_D*EC_PS_D,Fuzzy_RD(1,a);break;
  201.                                                 case 5:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NM_D*EC_PS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NS_D*EC_PS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NM_D*EC_PM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NS_D*EC_PM_D,Fuzzy_RD(1,a);break;
  202.                                                 case 6:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NM_D*EC_PM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_NS_D*EC_PM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NM_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NS_D*EC_PB_D,Fuzzy_RD(1,a);break;
  203.                                                 case 7:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NM_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_NS_D*EC_PB_D,Fuzzy_RD(1,a);break;
  204.                                         }
  205.                                 }break;
  206.                 case 3:
  207.                                 {
  208.                                         switch (ec_cache)
  209.                                         {
  210.                                                 case 0:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NS_D*EC_NB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_ZO_D*EC_NB_D,Fuzzy_RD(1,a);break;
  211.                                                 case 1:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NS_D*EC_NB_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_ZO_D*EC_NB_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NS_D*EC_NM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_ZO_D*EC_NM_D,Fuzzy_RD(1,a);break;
  212.                                                 case 2:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NS_D*EC_NM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_ZO_D*EC_NM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NS_D*EC_NS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_ZO_D*EC_NS_D,Fuzzy_RD(1,a);break;
  213.                                                 case 3:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NS_D*EC_NS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_ZO_D*EC_NS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NS_D*EC_ZO_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_ZO_D*EC_ZO_D,Fuzzy_RD(1,a);break;
  214.                                                 case 4:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NS_D*EC_ZO_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_ZO_D*EC_ZO_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NS_D*EC_PS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_ZO_D*EC_PS_D,Fuzzy_RD(1,a);break;
  215.                                                 case 5:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NS_D*EC_PS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_ZO_D*EC_PS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NS_D*EC_PM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_ZO_D*EC_PM_D,Fuzzy_RD(1,a);break;
  216.                                                 case 6:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_NS_D*EC_PM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_ZO_D*EC_PM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NS_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_ZO_D*EC_PB_D,Fuzzy_RD(1,a);break;
  217.                                                 case 7:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_NS_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_ZO_D*EC_PB_D,Fuzzy_RD(1,a);break;
  218.                                         }
  219.                                 }break;
  220.                 case 4:
  221.                                 {
  222.                                         switch (ec_cache)
  223.                                         {
  224.                                                 case 0:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_ZO_D*EC_NB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PS_D*EC_NB_D,Fuzzy_RD(1,a);break;
  225.                                                 case 1:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_ZO_D*EC_NB_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PS_D*EC_NB_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_ZO_D*EC_NM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PS_D*EC_NM_D,Fuzzy_RD(1,a);break;
  226.                                                 case 2:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_ZO_D*EC_NM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PS_D*EC_NM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_ZO_D*EC_NS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PS_D*EC_NS_D,Fuzzy_RD(1,a);break;
  227.                                                 case 3:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_ZO_D*EC_NS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PS_D*EC_NS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_ZO_D*EC_ZO_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PS_D*EC_ZO_D,Fuzzy_RD(1,a);break;
  228.                                                 case 4:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_ZO_D*EC_ZO_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PS_D*EC_ZO_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_ZO_D*EC_PS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PS_D*EC_PS_D,Fuzzy_RD(1,a);break;
  229.                                                 case 5:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_ZO_D*EC_PS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PS_D*EC_PS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_ZO_D*EC_PM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PS_D*EC_PM_D,Fuzzy_RD(1,a);break;
  230.                                                 case 6:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_ZO_D*EC_PM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PS_D*EC_PM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_ZO_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PS_D*EC_PB_D,Fuzzy_RD(1,a);break;
  231.                                                 case 7:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_ZO_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PS_D*EC_PB_D,Fuzzy_RD(1,a);break;
  232.                                         }
  233.                                 }break;
  234.                 case 5:
  235.                                 {
  236.                                         switch (ec_cache)
  237.                                         {
  238.                                                 case 0:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PS_D*EC_NB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PM_D*EC_NB_D,Fuzzy_RD(1,a);break;
  239.                                                 case 1:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PS_D*EC_NB_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PM_D*EC_NB_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PS_D*EC_NM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PM_D*EC_NM_D,Fuzzy_RD(1,a);break;
  240.                                                 case 2:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PS_D*EC_NM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PM_D*EC_NM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PS_D*EC_NS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PM_D*EC_NS_D,Fuzzy_RD(1,a);break;
  241.                                                 case 3:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PS_D*EC_NS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PM_D*EC_NS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PS_D*EC_ZO_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PM_D*EC_ZO_D,Fuzzy_RD(1,a);break;
  242.                                                 case 4:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PS_D*EC_ZO_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PM_D*EC_ZO_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PS_D*EC_PS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PM_D*EC_PS_D,Fuzzy_RD(1,a);break;
  243.                                                 case 5:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PS_D*EC_PS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PM_D*EC_PS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PS_D*EC_PM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PM_D*EC_PM_D,Fuzzy_RD(1,a);break;
  244.                                                 case 6:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PS_D*EC_PM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PM_D*EC_PM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PS_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PM_D*EC_PB_D,Fuzzy_RD(1,a);break;
  245.                                                 case 7:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PS_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PM_D*EC_PB_D,Fuzzy_RD(1,a);break;
  246.                                         }
  247.                                 }break;
  248.                 case 6:               
  249.                                 {
  250.                                         switch (ec_cache)
  251.                                         {
  252.                                                 case 0:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PM_D*EC_NB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_NB_D,Fuzzy_RD(1,a);break;
  253.                                                 case 1:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PM_D*EC_NB_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_NB_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PM_D*EC_NM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_NM_D,Fuzzy_RD(1,a);break;
  254.                                                 case 2:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PM_D*EC_NM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_NM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PM_D*EC_NS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_NS_D,Fuzzy_RD(1,a);break;
  255.                                                 case 3:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PM_D*EC_NS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_NS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PM_D*EC_ZO_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_ZO_D,Fuzzy_RD(1,a);break;
  256.                                                 case 4:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PM_D*EC_ZO_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_ZO_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PM_D*EC_PS_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_PS_D,Fuzzy_RD(1,a);break;
  257.                                                 case 5:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PM_D*EC_PS_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_PS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PM_D*EC_PM_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_PM_D,Fuzzy_RD(1,a);break;
  258.                                                 case 6:Fuzzy_MP[e_cache-1+7*a][ec_cache-1]= E_PM_D*EC_PM_D,Fuzzy_RD(4,a);Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_PM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PM_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_PB_D,Fuzzy_RD(1,a);break;
  259.                                                 case 7:Fuzzy_MP[e_cache-1+7*a][ec_cache]= E_PM_D*EC_PB_D,Fuzzy_RD(2,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_PB_D,Fuzzy_RD(1,a);break;
  260.                                         }
  261.                                 }break;
  262.                 case 7:        
  263.                                 {
  264.                                         switch (ec_cache)
  265.                                         {
  266.                                                 case 0:Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_NB_D,Fuzzy_RD(1,a);break;
  267.                                                 case 1:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_NB_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_NM_D,Fuzzy_RD(1,a);break;
  268.                                                 case 2:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_NM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_NS_D,Fuzzy_RD(1,a);break;
  269.                                                 case 3:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_NS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_ZO_D,Fuzzy_RD(1,a);break;
  270.                                                 case 4:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_ZO_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_PS_D,Fuzzy_RD(1,a);break;
  271.                                                 case 5:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_PS_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_PM_D,Fuzzy_RD(1,a);break;
  272.                                                 case 6:Fuzzy_MP[e_cache+7*a][ec_cache-1]= E_PB_D*EC_PM_D,Fuzzy_RD(3,a);Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_PB_D,Fuzzy_RD(1,a);break;
  273.                                                 case 7:Fuzzy_MP[e_cache+7*a][ec_cache]= E_PB_D*EC_PB_D,Fuzzy_RD(1,a);break;
  274.                                         }
  275.                                 }break;
  276.         }
  277. }

  278. int Fuzzy_PID(int E)//模糊調(diào)用函數(shù)示范
  279. {
  280.         Fuzzy_Preprocess();//用于自動處理預(yù)設(shè)數(shù)據(jù),只需運行一次
  281.         Fuzzy_Menbership(E);//計算輸入隸屬度
  282.         Fuzzy_Engine(1);//計算模糊P
  283.         //重心法解模糊
  284.         //計算本次需調(diào)節(jié)的量,其中PD可直接用,也可加在預(yù)設(shè)的基準值上,這取決于PD的變化范圍
  285.         P_out = E_EC_NB_D*P_NB + E_EC_NM_D*P_NM + E_EC_NS_D*P_NS + E_EC_ZO_D*P_ZO
  286.                   + E_EC_PS_D*P_PS + E_EC_PM_D*P_PM + E_EC_PB_D*P_PB;
  287.         Fuzzy_Engine(3);//計算模糊D
  288.         D_out = E_EC_NB_D*D_NB + E_EC_NM_D*D_NM + E_EC_NS_D*D_NS + E_EC_ZO_D*D_ZO
  289.                   + E_EC_PS_D*D_PS + E_EC_PM_D*D_PM + E_EC_PB_D*D_PB;
  290.         Direction_PID = P_out * (DirectionError[0][2] - DirectionError[0][1])
  291.                                   + D_out * (DirectionError[0][2] - 2*DirectionError[0][1] + DirectionError[0][0]);
  292.         return Direction_PID;
  293. }
復(fù)制代碼


以上程序原件下載(附件和本文中的一模一樣):
fuzzy.zip (3.61 KB, 下載次數(shù): 90)
.h文件自己寫吧

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:825831 發(fā)表于 2021-6-1 13:40 | 只看該作者
樓主,你的儲存偏差的數(shù)組只用了3個,但你設(shè)置了2維的6個啊,,,
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 伊色综合久久之综合久久 | 免费观看一级视频 | 久久一| 自拍视频精品 | 欧美成人a | 在线视频国产一区 | 91麻豆蜜桃一区二区三区 | 日韩欧美成人一区二区三区 | 91麻豆精品国产91久久久久久 | 国产成人精品免费视频大全最热 | 欧美中文字幕在线 | 国产精品jizz在线观看老狼 | 久久亚洲国产精品 | 欧美中文字幕一区 | 日日夜夜草 | 在线āv视频 | 天天操综合网站 | 国产亚洲一区二区三区在线观看 | 日日噜噜噜夜夜爽爽狠狠视频, | 黄网站免费观看 | 久久综合久久久 | 精品国产第一区二区三区 | 国产一级在线 | 狠狠操狠狠操 | 在线国产一区 | 精品国产欧美一区二区 | 一区二区三区日韩精品 | 99久久99| 精品福利一区二区三区 | 久久久精品国产 | 三极网站 | 亚洲午夜精品久久久久久app | 在线观看国产视频 | 色必久久| 日韩av第一页 | 天天曰天天曰 | 亚洲男人网 | 精品一区二区在线观看 | 精品区一区二区 | 国产91黄色 | 伊人精品一区二区三区 |