1 / 6
文档名称:

C实现模糊控制算法.doc

格式:doc   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C实现模糊控制算法.doc

上传人:n22x33 2015/10/31 文件大小:0 KB

下载得到文件列表

C实现模糊控制算法.doc

相关文档

文档介绍

文档介绍:!输入e表示输出误差,ec表示误差变化率,经过测试具有很好的控制效果,对于非线性系统和数学模型难以建立的系统来说有更好的控制效果!现将其公开供大家学****研究!
#include <>
#include""
#define PMAX    100   
#define PMIN    -100  
#define DMAX    100    
#define DMIN    -100          
#define FMAX    100       /*语言值的满幅值*/
int PFF[4]={0,12,24,48};
/*输入量D语言值特征点*/
int DFF[4]={0,16,32,64};
/*输出量U语言值特征点*/
int UFF[7]={0,15,30,45,60,75,90};
/*采用了调整因子的规则表,大误差时偏重误差,小误差时偏重误差变化*/
/*a0=,a1=,a2=,a3=   */  
int rule[7][7]={
//误差变化率-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)   /*模糊运算引擎*/
{
int    U;           /*偏差,偏差微分以及输出值的精确量*/
unsigned int   PF[2],DF[2],UF[4];   /*偏差,偏差微分以及输出值的隶属度*/
int    Pn,Dn,Un[4];
long   temp1,temp2;      
/*隶属度的确定*/
/*根据PD的指定语言值获得有效隶属度*/
if(P>-PFF[3] && P<PFF[3])
{
    if(P<=-PFF[2])    
{
   Pn=-2;
   PF[0]=FMAX*((float)(-PFF[2]-P)/(PFF[3]-PFF[2]));
}
    else if(P<=-PFF[1])  
   {
    Pn=-1;
   
PF[0]=FMAX*((float)(-PFF[1]-P)/(PFF[2]-PFF[1]));
   }
    else if(P<=PFF[0