R_C1 = reshape(R_C',13*13,1);%转置成169*1的列向量 %形成单条控制语句的模糊关系的隶属度函数R1 for i = 1:13*13 for j = 1:13
if R_C1(i) > C(j)
R1(i,j) = C(j);%得到R1是169*13的矩阵 else
R1(i,j) = R_C1(i); end end end
%将R1合成为整个模糊关系的隶属度函数R,R是169*13的矩阵 for i = 1:169 for j = 1:13
if R(i,j) < R1(i,j) R(i,j) = R1(i,j); end end end end end
%计算控制量U1=(A1×B1)T2。R,T2表示前面矩阵转化成行向量 for iii = 1:13 forjjj = 1:13
%求E的量化值对应的语言值的所对应的行向量 temp_maxA = E(1,iii); line_no = ones(3,1);
for k = 1:7
if(temp_maxA< E(k,iii)) temp_maxA = E(k,iii);
line_no(1) = k; end end
A1 = E(line_no(1),:);
%求EC的量化值对应的语言值的所对应的行向量 temp_maxB = EC(1,jjj);
for k = 1:7 if(temp_maxB< EC(k,jjj)) temp_maxB = EC(k,jjj);
line_no(2) = k; end
end
B1 = EC(line_no(2),:);
%求(A1×B1),并转置为行向量 for ii = 1:13 forjj = 1:13
if A1(ii) > B1(jj) Temp(ii,jj) = B1(jj); else
Temp(ii,jj) = A1(ii); end end end
Temp_T= reshape(Temp',169,1)'; %求出控制量 U1 = zeros(1,13); for ii = 1:13 forjj = 1:169
%将矩阵乘法中对应的项先取小,然后在取大,等到新的控制行向量 U1(ii) = max(min(Temp_T(jj),R(jj,ii)),U1(ii)); end end
temp_maxU1 = U1(1);
%xx,学号SY1107xxx为奇数ID,用最大隶属度方法去模糊化,求得可量化的值
for k = 1:13 if(temp_maxU1 < U1(k))
temp_maxU1 = U1(k); line_no(3) = k; end end
U(iii,jjj) = line_no(3)-7;%将结果从(1,13)匹配到(-6,6) end end
计算最终结果
控制量U = EC -6 E -5 -6 -6 -6 -6 -4 -4 -4 -4 -2 -2 0 0 0 -4 -6 -6 -6 -6 -4 -4 -4 -4 -2 -2 0 0 0 -3 -6 -6 -6 -6 -4 -4 -4 -4 -2 -2 0 0 0 -2 -6 -6 -6 -6 -4 -4 -2 -2 0 0 4 4 4 -1 -6 -6 -6 -6 -4 -4 -2 -2 0 0 4 4 4 0 -6 -6 -6 -6 -4 -4 0 0 4 4 6 6 6 1 -6 -6 -6 -6 -4 -4 0 0 4 4 6 6 6 2 -4 -4 -4 -4 0 0 2 2 4 4 6 6 6 3 -4 -4 -4 -4 0 0 2 2 4 4 6 6 6 4 0 0 0 0 2 2 4 4 4 4 6 6 6 5 0 0 0 0 2 2 4 4 4 4 6 6 6 6 0 0 0 0 2 2 4 4 4 4 6 6 6 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 -6 -6 -6 -6 -4 -4 -4 -4 -2 -2 0 0 0