模糊控制算法c程序_第1页
模糊控制算法c程序_第2页
模糊控制算法c程序_第3页
模糊控制算法c程序_第4页
模糊控制算法c程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上    由于项目需要,需要模糊控制算法,之前此类知识为0,经过半个多月的研究,终于有的小进展。开始想从强大的互联网上搜点c代码来研究下,结果搜遍所有搜索引擎都搜不到,以下本人从修改的模糊控制代码,经过自己修改后可在vc6.0,运行!输入e表示输出误差,ec表示误差变化率,经过测试具有很好的控制效果,对于非线性系统和数学模型难以建立的系统来说有更好的控制效果!现将其公开供大家学习研究!#include <stdio.h>#include"math.h" #define PMAX  

2、0; 100    #define PMIN    -100   #define DMAX    100     #define DMIN    -100           #define FMAX    100       /

3、*语言值的满幅值*/ int PFF4=0,12,24,48;/*输入量D语言值特征点*/ int DFF4=0,16,32,64;/*输出量U语言值特征点*/ int UFF7=0,15,30,45,60,75,90;/*采用了调整因子的规则表,大误差时偏重误差,小误差时偏重误差变化*/ /*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,

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

6、 3/*/int   Fuzzy(int P,int D)   /*模糊运算引擎*/ int    U;           /*偏差,偏差微分以及输出值的精确量*/ unsigned int   PF2,DF2,UF4;   /*偏差,偏差微分以及输出值的隶属度*/ int    Pn,Dn,Un4; long   temp1,temp

7、2;       /*隶属度的确定*/ /*根据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)        &#

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

11、t;=PFF3)          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<

12、=-DFF1)          Dn=-1;    DF0=FMAX*(float)(-DFF1-D)/(DFF2-DFF1);       else if(D<=DFF0)          Dn=0;     DF0=FMAX*(float)(-DFF0-D)/(DFF1-DFF0);     &

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

14、; else if(D<=DFF3)          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;/*使用误差范围优化后的规则表rule77*/ /*输出值使用13个隶属函数,中心值由UFF7指定*/ /*一般都是四个规则有效*/ 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(

16、PF1<=DF0)   UF1=PF1;else    UF1=DF0; if(PF0<=DF1)   UF2=PF0; else    UF2=DF1; if(PF1<=DF1)   UF3=PF1; else    UF3=DF1;/*同隶属函数输出语言值求大*/    if(Un0=Un1)   if(UF0>UF1)    UF1=0;   else &#

17、160;   UF0=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;

18、   else    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原值为输出隶属函数标号,转换为隶属函数值*/ if(Un

19、0>=0)   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,"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论