您好,欢迎访问三七文档
1.模糊控制器的输入、输出变量分别为偏差、偏差的变化率和控制量的增量。实际论域e、ec、u[-30,30],[-24,24],[-36,36]。对应的模糊语言变量E、EC、UC的论域均为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}2.定义模糊子集及隶属函数对语言变量偏差E定义八个模糊集分别表示PL(正大),PM(正中),PS(正小),PZ(正零),NZ(负零),NS(负小),NM(负中),NL(负大)。语言变量偏差的变化率EC定义七个模糊集,分别表示PL,PM,PS,Z,NS,NM,NL。控制量的增量UC定义七个模糊集UC1,…,UC8,分别表示PL,PM,PS,Z,NS,NM,NL。隶属度函数分别如下面3张表。Ei的隶属函数表ECi的隶属函数表UCi的隶属函数表模糊控制规则如下表试计算控制表。计算结果如下;设已知输入为0x和0y,模糊化运算采用单点模糊集合,则相应的输入量模糊集合'A和'B分别为:000001,01''yyyyyxxxxxBA通过模糊推理方法及性质,可求得输出量的模糊集合'C为:561'561''561''561''561'''''iiiiBiAiiiiiiiiiiCCCCABCAACBABABABACiRR首先根据书上的表2-8、2-9、2-10如上面三个表所示,建立三个矩阵A、B、C分别对应三个表中的数据,为了便于计算表2-10的数据自行规定为:NB=1,NM=2,NS=3,NZ=4,PS=5,PM=6,PB=7。由于表中没有出现PZ,因此PZ不规定值。根据上面的算法对求得的输出量模糊集合求取加权平均值即可获得模糊控制表数值。附录程序:clearclc%偏差量E(A)偏差变化率EC(B)控制量U(C)隶属度的定义%E(A)矩阵行:从左向右[-6~6]列:从上到下[PL~-NL]0分为正零和负零%EC(B)、U(C)行:从左向右[-6~6]列:从上到下[PL~NL]E=xlsread('data.xlsx','sheet1');EC=xlsread('data.xlsx','sheet2');U=xlsread('data.xlsx','sheet3');%PL=1PM=2PS=3Z=4NS=5NM=6NL=7R=xlsread('rule.xlsx');u=[-6-5-4-3-2-10123456];Z=[];%%假设不同的输入开始fory=1:14;%E取-6y从-6..-0+0..+6forz=1:13;%EC取+6z从+6...0...-6%已知输入,遍历控制表,计算C开始C=zeros(1,13);forj=1:7;%规则表行fori=1:8;%规则表列c=U(R(j,i),:);a=E(9-i,:)';b=EC(j,:)';[m,n]=size(a);[p,q]=size(b);[r,s]=size(c);ford=1:1:m%求得R1fore=1:1:sR1(d,e)=min(a(d),c(e));endendford=1:1:p%求得R2fore=1:1:sR2(d,e)=min(b(d),c(e));endendA1=zeros(1,m);A1(y)=E(9-i,y);%求A'B1=zeros(1,p);B1(14-z)=EC(j,14-z);%求B'ford=1:1:s%求C1fore=1:1:mC1(e,d)=min(A1(e),R1(e,d));endendC1=max(C1);ford=1:1:s%求C2fore=1:1:pC2(e,d)=min(B1(e),R2(e,d));endendC2=max(C2);C=C+min(C1,C2);endend%已知输入遍历控制表,计算C结束z0=0;ford=1:1:sz0=C(d)*u(d)+z0;endifsum(C)==0Z(z,y)=0;elseZ(z,y)=z0/sum(C);endendend%%假设不同输入结束xlswrite('controlt.xlsx',Z);%计算的控制表导入control.xlsx文件结果:表1:数据图表2:规则图表3:控制表
本文标题:模糊控制器
链接地址:https://www.777doc.com/doc-4842053 .html