您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 离散论域模糊控制表的离线计算
离散论域模糊控制表的离线计算一、题目已知单变量两维输入,一维输出模糊控制器,其两维输入为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-10123456NB1.00.80.60.40.200000000NM0.20.61.00.60.200000000NS000.30.71.00.70.3000000NZ00000.10.61.0000000PZ0000001.00.60.10000PS0000000.30.71.00.70.300PM000000000.20.61.00.60.2PB000000000.20.40.60.81.0表2变量EC和I的隶属度函数表-6-5-4-3-2-10123456NB1.00.60.20000000000NM0.20.61.00.60.200000000NS000.20.61.00.60.2000000ZE00000.20.61.00.60.20000PS0000000.20.61.00.60.200PM000000000.20.61.00.60.2PB00000000000.20.61.0表3控制规则表NBNMNSZEPSPMPBNBNBNBNBNBNMZEZENMNBNBNBNBNMZEZENSNMNMNMNMZEPSPSNZNMNMNSZEPSPMPMPZNMNMNSZEPSPMPMPSNSNSZEPMPMPMPMPMZEZEPMPBPBPBPBPBZEZEPMPBPBPBPB表4输出控制表(e,ec,i均为清晰量)-6-5-4-3-2-10123456-6-5.4444-5.3750-4.7917-4.2963-4.0000-4.0000-3.4063-2.9714-1.7813-1.0286-0.59380.00000.0000-5-5.2857-5.2857-4.5500-4.3077-4.0000-4.0000-3.3214-3.0000-1.7500-1.0000-0.67860.00000.0000-4-5.4444-5.3750-4.7917-4.2963-3.7500-3.4815-2.8611-2.5128-0.52500.00000.42501.12501.0588-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.444450.00000.00000.67861.00001.75003.00003.32144.00004.00004.30774.55005.28575.285760.00000.00000.59381.02861.78132.97143.40634.00004.00004.29634.79175.37505.4444eiecECIE二、基本原理这是一个二输入、单输出的模糊控制器的设计,主要包括输入模糊化、模糊推理、解模糊等基本过程,现在叙述如下:1、输入模糊化在本实验实际过程中采用单点模糊集合的方法实现输入的模糊化,例如e为离散论域E={-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},则x*=,0的输入模糊集合可表示为:00000010000006543210123456A2、模糊推理设某一时刻偏差为e*,偏差变化量为ec*,则可根据由各条规则给出的模糊蕴含关系进行合成推理运算,得到相应的输出控制量的模糊值:*****111**1(){()}{()[()]}{[()][()]}mnmnmnllllllllmnlllllUeandecReandecReandecAandBCeACecBC其中,m和n分别表示e和ec的论域所划分的模糊自己的个数,在本实验中,m=8,n=7,对应着本题目中规定的56条控制规则。控制器设计的核心就是对上式进行编程。3、解模糊本实验采用加权平均的方式解模糊,其精确值的计算公式如下:101()niiiniizkzdfzk三、实验程序:实验最终采用的程序如文件program中fuc1.m所示,fuc1_1.m和fuc1_2.m为了说明程序优化使用。就本题目而言,三个程序都可以解决问题。Maxmin.m是最大最小合成函数,供fuc1_1.m运行时调用。各个excel表格说明如下:Input1_Terms_Membership.xlsx、Input2_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');%语言规则录入%如果论域长度和隶属度函数列数不同,程序报错iflength(e_domain)~=size(Input1_Terms_Membership,2)fprintf('Error!Pleaseinputthemembershipofinput1again!')endiflength(ec_domain)~=size(Input2_Terms_Membership,2)fprintf('Error!Pleaseinputthemembershipofinput2again!')endiflength(u_domain)~=size(Output_Terms_Membership,2)fprintf('Error!Pleaseinputthemembershipofoutputagain!')endform=1:length(ec_domain)fork=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));fori=1:size(Input1_Terms_Membership,1)forj=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));fors=1:size(e,1)fort=1:size(R1,2)U1a(s,t)=max(min(e(s,:),R1(:,t)'));endendfors=1:size(ec,1)fort=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所示,各个精确量保留四位小数。四、程序优化及讨论1、此程序中各个变量表的输入都是通过excel实现的。让MATLAB通过程序从excel表中读入数组到工作空间中,同时为了方便查看结果,又将结果写到excel表中。这样,我们在设计一个二输入单输出的模糊控制器时,只需要在四个excel表中输入相应的数值,而不需要进行程序的修改,唯一需要修改的就是各个变量的论域。整个程序的适应性还是比较强的,具有通用性。但付出的代价就是计算时间的延长,而时间延长的主要部分就花费在读取excel表上:tic;Input1_Terms_Membership=xlsread('Input1_Terms_Membership.xlsx');tocElapsedtimeis0.708815seconds.可以看出,每读一个excel表,就要花费约0.7s的时间。然而,这对一些数据量比较多的隶属度函数表来说是有利的,我们可以将隶属度函数表以excel的表格储存起来,直接调用,从而免去了在每次执行程序的时候在程序中修改输入量或者计算一个模糊控制器就新建一个新程序,这样对提高工作效率和程序的通用性还是有很大帮助的。同时,我们也不需要担心输出的结果在MATLAB关闭以后就丢失,可以直接储存在excel表中。本实验采用的程序时间复杂度如下:tic;fuc1;toc;Elapsedtimeis7.668543seconds.此外,其中求56条规则的并采用在循环中每一次都与上一次求并,并且用此次的计算值冲掉上一次的计算值,这样就节省了硬件上RA
本文标题:离散论域模糊控制表的离线计算
链接地址:https://www.777doc.com/doc-7105695 .html