当前位置:文档之家› 二维模糊控制表的离线计算及m文件实现

二维模糊控制表的离线计算及m文件实现

离散论域模糊控制表的离线计算一、题目已知单变量两维输入,一维输出模糊控制器,其两维输入为 E , EC ,一维输出为I ,论域均为 E , EC ,I ∈ {-6 , -5 , -4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 , 4 ,5 , 6} , E 的论域划分为 {NB , NM , NS , NZ , PZ , PS , PM , PB} ,共 8个模糊子集,其各自的隶属度函数如表 1 所示。

EC 和 I 的论域划分为 {NB , NM ,NS , ZE , PS , PM , PB} ,共 7 个模糊子集,它们的隶属度函数都如表 2 所示。

已知控制规则表如表 3 所示,试求解输出控制表(如当 e=-6 , ec=-6 时,求输出i= ?,最终输出的控制表格式如如表 4 所示)。

其中输入采用单点模糊法,输出清晰量采用加权平均法进行解模糊,可以用 MATLAB 编程计算。

各变量的隶属度函数以及控制规则表如下:表 1 输入变量 E 的隶属度函数表E -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6NB 1.0 0.8 0.6 0.4 0.2 0 0 0 0 0 0 0 0 NM 0.2 0.6 1.0 0.6 0.2 0 0 0 0 0 0 0 0NS 0 0 0.3 0.7 1.0 0.7 0.3 0 0 0 0 0 0NZ 0 0 0 0 0.1 0.6 1.0 0 0 0 0 0 0PZ 0 0 0 0 0 0 1.0 0.6 0.1 0 0 0 0PS 0 0 0 0 0 0 0.3 0.7 1.0 0.7 0.3 0 0 PM 0 0 0 0 0 0 0 0 0.2 0.6 1.0 0.6 0.2 PB 0 0 0 0 0 0 0 0 0.2 0.4 0.6 0.8 1.0表 2 变量 EC 和 I 的隶属度函数表-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6NB 1.0 0.6 0.2 0 0 0 0 0 0 0 0 0 0 NM 0.2 0.6 1.0 0.6 0.2 0 0 0 0 0 0 0 0NS 0 0 0.2 0.6 1.0 0.6 0.2 0 0 0 0 0 0ZE 0 0 0 0 0.2 0.6 1.0 0.6 0.2 0 0 0 0PS 0 0 0 0 0 0 0.2 0.6 1.0 0.6 0.2 0 0 PM 0 0 0 0 0 0 0 0 0.2 0.6 1.0 0.6 0.2 PB 0 0 0 0 0 0 0 0 0 0 0.2 0.6 1.0表 3 控制规则表NBNMNSZEPSPMPBNB NB NB NB NB NM ZE ZE NM NB NB NB NB NM ZE ZE NS NM NM NM NM ZE PS PS NZ NM NM NS ZE PS PM PM PZ NM NM NS ZE PS PM PM PS NS NS ZE PM PM PM PM PM ZE ZE PM PB PB PB PB PB ZE ZE PM PB PB PB PB表 4 输出控制表( e , ec , i 均为清晰量)-6-5-4-3-2-1123456-6-5.4444 -5.3750 -4.7917 -4.2963 -4.0000 -4.0000 -3.4063 -2.9714 -1.7813 -1.0286 -0.59380.0000 0.0000 -5-5.2857 -5.2857 -4.5500 -4.3077 -4.0000 -4.0000 -3.3214 -3.0000 -1.7500 -1.0000 -0.6786 0.0000 0.0000 -4---------0.00.41.11.05.4 444 5.37504.79174.29633.75003.48152.86112.51280.5250000 250 250 588-3 -5.2857 -5.2857-4.5500-4.3077-3.7083-3.0000-2.3750-2.0000-0.20450.92591.35422.00002.0000-2 -5.4444 -5.3750-4.7917-4.2963-3.4000-2.5641-0.8696-0.42550.27501.48942.09762.87502.9412-1 -5.2857 -5.2857-4.5500-4.3077-3.3077-2.0000-0.33330.92591.75002.34782.91894.30774.30770 -4.9091 -4.8000-3.4688-3.2000-2.5833-1.57450.00001.57452.58333.20003.46884.80004.90911 -4.3077 -4.3077-2.9189-2.3478-1.7500-0.92590.33332.00003.30774.30774.55005.28575.28572 -2.9412 -2.8750-2.0976-1.4894-0.27500.42550.86962.56413.40004.29634.79175.37505.44443 -2.0000 -2.0000-1.3542-0.92590.20452.00002.37503.00003.70834.30774.55005.28575.28574 -1.0588 -1.1250-0.42500.00000.52502.51282.86113.48153.75004.29634.79175.37505.44445 0.0000 0.00000.67861.00001.75003.00003.32144.00004.00004.30774.55005.28575.28576 0.0000 0.00000.59381.02861.78132.97143.40634.00004.00004.29634.79175.37505.4444二、基本原理这是一个二输入、单输出的模糊控制器的设计,主要包括输入模糊化、模糊推理、解模糊等基本过程,现在叙述如下:1 、输入模糊化在本实验实际过程中采用单点模糊集合的方法实现输入的模糊化,例如 e 为离散论域 E ={ -6 , -5 , -4 , -3 , -2 , -1,0 , 1 , 2 , 3 , 4 , 5 , 6} ,则 x * = ,0 的输入模糊集合可表示为:2 、模糊推理设某一时刻偏差为 e * ,偏差变化量为 ec * ,则可根据由各条规则给出的模糊蕴含关系进行合成推理运算,得到相应的输出控制量的模糊值:其中, m 和 n 分别表示 e 和 ec 的论域所划分的模糊自己的个数,在本实验中,m=8 , n=7 ,对应着本题目中规定的 56 条控制规则。

控制器设计的核心就是对上式进行编程。

3 、解模糊本实验采用加权平均的方式解模糊,其精确值的计算公式如下:三、实验程序:实验最终采用的程序如文件 program 中 fuc1.m 所示, fuc1_1.m 和 fuc1_2.m 为了说明程序优化使用。

就本题目而言,三个程序都可以解决问题。

Maxmin.m 是最大最小合成函数,供 fuc1_1.m 运行时调用。

各个 excel 表格说明如下:Input1_Terms_Membership.xlsx 、 Input 2 _Terms_Membership.xlsx 、 Output_Terms_Membership.xlsx 分别为两个输入变量以及输出变量的隶属度函数表,用于在 MATLAB 执行程序的时候读入, Output_Result.xlsx 为程序运行结果。

本实验采用的程序如下:% 离散论域模糊控制表的离线计算e_domain=-6:6;ec_domain=e_domain;u_domain=e_domain;% 隶属度函数读入Input1_Terms_Membership=xlsread( 'Input1_Terms_Membership.xlsx' ); Input2_Terms_Membership=xlsread( 'Input2_Terms_Membership.xlsx' ); Output_Terms_Membership=xlsread( 'Output_Terms_Membership.xlsx' ); Rule=xlsread( 'Rule.xlsx' ); % 语言规则录入% 如果论域长度和隶属度函数列数不同,程序报错if length(e_domain)~=size(Input1_Terms_Membership,2)fprintf( 'Error!Please input the membership of input1 again!' )endif length(ec_domain)~=size(Input2_Terms_Membership,2)fprintf( 'Error!Please input the membership of input2 again!' )endif length(u_domain)~=size(Output_Terms_Membership,2)fprintf( 'Error!Please input the membership of output again!' )endfor m=1:length(ec_domain)for k=1:length(e_domain)% 单点模糊化ec=zeros(1,length(ec_domain));ec(m)=1;e=zeros(1,length(e_domain));e(k)=1;Uo=zeros(1,length(u_domain));for i=1:size(Input1_Terms_Membership,1)for j=1:size(Input2_Terms_Membership,1)a=Input1_Terms_Membership(i,:);b=Input2_Terms_Membership(j,:);c=Output_Terms_Membership(Rule(i,j),:);A1=a'*ones(size(c));B1=ones(size(a'))*c;R1=min(A1,B1);A2=b'*ones(size(c));B2=ones(size(b'))*c;R2=min(A2,B2);% 最大 - 最小合成运算U1a=zeros(size(e,1),size(R1,2));U1b=zeros(size(ec,1),size(R2,2));for s=1:size(e,1)for t=1:size(R1,2)U1a(s,t)=max(min(e(s,:),R1(:,t)'));endendfor s=1:size(ec,1)for t=1:size(R2,2)U1b(s,t)=max(min(ec(s,:),R2(:,t)'));endendU1=min(U1a,U1b);Uo=max(Uo,U1);endend% 解模糊U(m,k)=sum(u_domain.*Uo)/sum(Uo);endendxlswrite( 'Output_Result.xlsx' ,U); % 将结果以 excel 表格的形式给出运行结果如题目中的表格 4 所示,各个精确量保留四位小数。

相关主题