⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fuzzy_rule_generation.m

📁 模糊规则生成
💻 M
字号:
% Fuzzy control table generation



%Defination of input and output
% two inputs, one output.argument area:[-6,6]

Input1=[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6];
Input2=[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6];
Output=[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6];

%Input and output ligustic terms : NB, NM, NS, ZO, PS,PM,PB

Input1_Terms=[1,2,3,4,5,6,7];
Input2_Terms=[1,2,3,4,5,6,7];
output_Terms=[1,2,3,4,5,6,7];

%Membership of terms, triangle function

Input1_Terms_Membership=[1,0.5,0,0,0,0,0,0,0,0,0,0,0;
                         0,0.5,1,0.5,0,0,0,0,0,0,0,0,0;
                         0,0,0,0.5,1,0.5,0,0,0,0,0,0,0;
                         0,0,0,0,0,0.5,1,0.5,0,0,0,0,0;
                         0,0,0,0,0,0,0,0.5,1,0.5,0,0,0;
                         0,0,0,0,0,0,0,0,0,0.5,1,0.5,0;
                         0,0,0,0,0,0,0,0,0,0,0,0.5,1];
Input2_Terms_Membership=Input1_Terms_Membership;
Output_Terms_Membership=Input1_Terms_Membership;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Fuzzy Relations generation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Fuzzy rule table, row:Input1; Column: Input2; Value:Output

Rule=[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;
      3,3,4,6,6,6,6;
      4,4,6,7,7,7,7;
      4,4,6,7,7,7,7];
  
 % Relations generation
 for i=1:169
     for j=1:13
         R(i,j)=0;
     end
 end
 
 for Input1_Terms_Index=1:7
     for Input2_Terms_Index=1:7
          Output_Terms_Index=Rule(Input1_Terms_Index,Input2_Terms_Index );
          A=Input1_Terms_Membership(Input1_Terms_Index,:);
          B=Input2_Terms_Membership(Input2_Terms_Index,:);
          C=Output_Terms_Membership(Output_Terms_Index,:);
          for i=1:13
              for j=1:13
                  R1(i,j)=min(A(i),B(j));
              end
          end
          R2=[ ];
          for k=1:13
              R2=[R2;R1(k,:)'];
          end
          for i=1:169
              for j=1:13
                  R3(i,j)=min(R2(i),C(j));
              end
          end          
          R=max(R,R3);          
     end
 end
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Fuzzy inference, Max-min method
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 for Input1_value_index=1:13
     for Input2_value_index=1:13
         % Using Ad as actual input1 term, Bd as actual input2 term, Cd as actual output term  
         Input1_value_membership=Input1_Terms_Membership(:,Input1_value_index);
         [Max_Input1_value,Max_Input1_index]=max(Input1_value_membership);
         Ad=Input1_Terms_Membership(Max_Input1_index,:);
         %%
         Input2_value_membership=Input2_Terms_Membership(:,Input2_value_index);
         [Max_Input2_value,Max_Input2_index]=max(Input2_value_membership);
         Bd=Input2_Terms_Membership(Max_Input2_index,:);
         %%% inference
         for i=1:13
             for j=1:13
                 Rd1(i,j)=min(Ad(i),Bd(j));
             end
         end
         Rd2=[ ];
         for k=1:13
             Rd2=[Rd2,Rd1(k,:)];
         end
         for j=1:13
              Cd(j)=max(min(Rd2',R(:,j)));
          end
         %%%%%%%%%%%%
         %Unfuzzification: Centroid
         %%%%%%%%%%%%%%%%%%%%%
         sum1=0;
         sum2=0;
         for i=1:13
             sum1=sum1+Cd(i);
             sum2=sum2+Cd(i)*Output(i);
         end
	OUT=round(sum2/sum1);
        %%%%%%%%%Fuzzy control table%%%%%%%%%%%
        Fuzzy_Table(Input1_value_index,Input2_value_index)=OUT;
                             
     end
 end
 


 
 
 
 
 
  
  
  
  
                     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -