模糊控制规则表生成程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

模糊控制规则表生成程序

%偏差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.0

0.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.0 0.0 0.2 0.7 1.0 0.7 0.3 0.1 0.0

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.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.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.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.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.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.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 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.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.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.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.0 0.0 0.0 0.3 0.7 1.0];

%推理语言规则表

gz=[ 1 1 1 1 2 4 4

1 1 1 1

2 4 4

2 2 2 2 4 5 5

2 2

3

4

5

6 6

2 2

3

4

5

6 6

3 3

4 6 6 6 6

4 4 6 7 7 7 7

4 4 6 7 7 7 7 ];

i=1;

for gzh=1:8

for gzl=1:7

a=E(gzh,:); %取E 的赋值表的莫一行,并赋值给a

a=a'; %a 取专置

b=Ec(gzl,:); %取Ec 的赋值表的莫一行,并赋值给b

% T E Ec •

for m=1:13

for n=1:13

if a(m,1)>=b(1,n)

r(m,n)=b(1,n);

else

r(m,n)=a(m,1);

end

end

end

% 把T E Ec •得到的矩阵变为行向量

k=1;

for m=1:13

for n=1:13

Ei_Eci(1,k)=r(m,n);

k=k+1;

end

end

Ei_Eci=Ei_Eci'; %把刚才得到的行向量变为列向量,方便与U 的行向量相乘

m=gz(gzh,gzl); %取U 的某一行

U=u(m,:);

%T E Ec U •⨯

for m=1:169

for n=1:13

if Ei_Eci(m,1)>=U(1,n)

Rii(m,n)=U(1,n);

else

Rii(m,n)= Ei_Eci(m,1);

end

end

end

%得到一条规则的Ri ,并且把Ri 变成行向量,以方便程序实现1n i R Ri ==U k=1;

for m=1:169

for n=1:13

Ri(i,k)=Rii(m,n);

k=k+1;

end

end

i=i+1;

end

end

%1n i R Ri

==U

Ri=Ri';

for m=1:2197

for n=1:i-1

if Ri(m,1)>=Ri(m,n)

Ri(m,1)=Ri(m,1);

else

Ri(m,1)=Ri(m,n);

end

end

end

%得到R

k=1;

for m=1:169

for n=1:13

R(m,n)=Ri(k,1);

k=k+1;

end

end

%()[()()]U k E k Ec k R =⨯o

相关文档
最新文档