1、模糊控制规则表生成程序%偏差 E 的赋值表E=1.0 0.8 0.7 0.4 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.3 0.7 1.0 0.7 0.2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.6 1.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 1.0 0.6 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.
2、0 0.0 0.2 0.7 1.0 0.7 0.3 0.1 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.4 0.7 0.8 1.0;%偏差变换率EC的赋值表Ec=1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.
3、0 0.00.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0;%输出U的赋值表u=1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0
4、0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0;%推理语言规则表gz= 1 1 1 1 2
5、 4 41 1 1 1 2 4 42 2 2 2 4 5 52 2 3 4 5 6 62 2 3 4 5 6 63 3 4 6 6 6 6 4 4 6 7 7 7 74 4 6 7 7 7 7 ;i=1;for gzh=1:8for gzl=1:7a=E(gzh,:); %取E的赋值表的莫一行,并赋值给aa=a; %a取专置b=Ec(gzl,:); %取Ec的赋值表的莫一行,并赋值给b% TEcfor m=1:13for n=1:13if a(m,1)=b(1,n)r(m,n)=b(1,n);elser(m,n)=a(m,1);endendend% 把 得到的矩阵变为行向量TEck=1;for
6、 m=1:13for n=1:13Ei_Eci(1,k)=r(m,n);k=k+1;endendEi_Eci=Ei_Eci; %把刚才得到的行向量变为列向量,方便与U的行向量相乘m=gz(gzh,gzl); %取U的某一行U=u(m,:);% TEcUfor m=1:169for n=1:13if Ei_Eci(m,1)=U(1,n)Rii(m,n)=U(1,n);elseRii(m,n)= Ei_Eci(m,1);endendend%得到一条规则的Ri,并且把 Ri变成行向量,以方便程序实现 1niRk=1;for m=1:169for n=1:13Ri(i,k)=Rii(m,n);k=k+
7、1;endendi=i+1;endend% 1niRRi=Ri;for m=1:2197for n=1:i-1if Ri(m,1)=Ri(m,n)Ri(m,1)=Ri(m,1);elseRi(m,1)=Ri(m,n);endendend%得到Rk=1;for m=1:169for n=1:13R(m,n)=Ri(k,1);k=k+1;endend% ()()UkEckRfor ii=1:13aa=0 0 0 0 0 0 0 0 0 0 0 0 0 ; %对 E ,Ec采用单点集for j=1:13bbb=0 0 0 0 0 0 0 0 0 0 0 0 0 ;aa(1,ii)=1;bbb(1,j
8、)=1;a=aa;b=bbb;k=1;% ()Ekcfor m=1:13for n=1:13if a(m,1)=b(1,n)d(1,k)=b(1,n);k=k+1;elsed(1,k)=a(m,1);k=k+1;endendend%()EkcRfor m=1:13for n=1:169if d(1,n)=R(n,m)g(1,n)=R(n,m);elseg(1,n)=d(1,n);endendfor n=1:169if g(1,1)=g(1,n)g(1,1)=g(1,1);elseg(1,1)=g(1,n);endendf(j,m)=g(1,1);end%利用加权平均法得到 ui=-6;z=0;
9、k=0;for m=1:13z=f(j,m)*i+z;k=f(j,m)+k;i=i+1;endbb=z/k;u(ii,j)=bb; %u为控制表的矩阵endend附录二 实验二控制规则表控制规则表 2.1NB NM NS Z PS PM PB PB Z Z NM NM NM NB NB PM PS Z NS NM NM NM NBPS PS PS Z NS NS NM NM Z PM PM PS Z NS NM NMNS PM PM PM PS Z NS NSNM PB PB PM PS PS Z NSNB PB PB PM PM PS Z Z控制规则表 2.2(黑体字表示该处的规则修改情况)NB NM NS Z PS PM PB PB NB NB NM NB NB NB NB PM Z Z NM NB NB NB NBPS PS PS Z NM NM NM NM Z PM PM PS Z NS NM NMNS PM PM PM PM Z NS NSNM PB PB PB PB PM Z ZNB PB PB PB PB PM Z ZEC输出UEEC输出UE