您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 2基于MATLAB的位置跟踪系统模糊控制仿真
实验二基于MATLAB的位置跟踪系统模糊控制仿真一、实验目的及要求1.能针对某系统(如二阶系统),设计出能够跟踪某一位置曲线的模糊控制器;2.能够用MATLAB软件中的M文件实现模糊控制器;3.能够用MATLAB软件的Simulink工具实现位置跟踪系统,其中控制器由M文件实现的模糊控制器提供。二、仪器、设备微型计算机(安装有MATLAB软件)1台三、实验任务针对一个二阶系统s50s400)(2+=sG试设计模糊控制器,实现其控制输出为正弦信号0.8sin(10t)。四、利用MATLAB的Simulink模块实现位置跟踪系统的模糊控制五、利用MATLAB的M文件实现位置跟踪系统的模糊控制器仿真1.模糊控制器的设计步骤1)模糊控制器的结构二输入、单输出的模糊控制器是最常见的结构形式。Systemfuzzf:2inputs,1outputs,49rulese(7)ec(7)u(7)fuzzf(mamdani)49rules图2-1模糊控制器的结构示意图2)定义输入输出模糊集对误差E、误差变化EC及控制量u的模糊集及其论域定义如下:E、EC和u的模糊集均为:{}PBPMPSZNSNMNB,,,,,,E、EC的论域均为:{-3,-2,-1,0,1,2,3}u的论域为:{-4.5,-3,-1.5,0,1,3,4.5}3)定义输入输出隶属函数模糊变量误差E、误差变化EC及控制量u的模糊集和论域确定后,需对模糊语言变量确定隶属函数,确定论域内元素对模糊语言变量的隶属度。4)建立模糊控制规则根据人的经验,根据系统输出的误差及误差的变化趋势来设计模糊控制规则。模糊控制规则语句构成了描述众多被控过程的模糊模型。5)建立模糊控制表模糊控制规则可采用模糊规则表2-1来描述,共49条模糊规则,各个模糊语句之间是或的关系,由第一条语句所确定的控制规则可以计算出u1。同理,可以由其余各条语句分别求出控制量u2,…,u49,则控制量为模糊集合U可表示为4921uuuu+++=L表2-1模糊规则表euNBNMNSZOPSPMPBNBNBNBNMNMNSNSZONMNBNMNMNSNSZOPSEcNSNMNMNSNSZOPSPSZONMNSNSZOPSPSPMPSNSNSZOPSPSPMPMPMNSZPSPSPMPMPBPBZOPSPSPMPMPBPB6)模糊推理模糊推理是模糊控制的核心,它利用某种模糊推理算法和模糊规则进行推理,得出最终的控制量。在仿真时,模糊推理系统可由命令plotfis(a2)得到。系统的输入输出隶属度函数如图2-2至图2-4所示。-3-2-1012300.20.40.60.81eDegreeofmembershipNBNMNSZPSPMPB图2-2偏差隶属度函数-3-2-1012300.20.40.60.81ecDegreeofmembershipNBNMNSZPSPMPB图2-3偏差变化率隶属度函数-4-3-2-10123400.20.40.60.81uDegreeofmembershipNBNMNSZPSPMPB图2-4控制器输出隶属度函数7)反模糊化通过模糊推理得到的结果是一个模糊集合。但在实际模糊控制中,必须要有一个确定值才能控制或驱动执行机构。将模糊推理结果转化为精确值的过程称为反模糊化。通过运行showrule(a),可得到用于描述模糊系统的49条模糊规则。用MATLAB软件实现模糊控制器程序,由命令plotfis(a2)得到模糊推理系统,并将该控制器保存在a2之中。六、实验记录1.记录下表中,该二阶系统在不同的模糊控制器的作用下,得到的最大输出幅值是多少?表2-2实验记录反模糊化方法系统的最大输出幅值z最大隶属度函数法重心法三角形隶属度高斯型函数c,10=δ()七、问答题1、隶属度函数的变化是否引起系统输出的变化?2、反模糊化方法的变化是否引起系统输出的变化?3、改变控制规则,模糊系统的输出是否受到影响?附录程序:%FuzzyControllerDesignclearall;closeall;a=newfis('fuzzf');f1=1;a=addvar(a,'input','e',[-3*f1,3*f1]);%Parameterea=addmf(a,'input',1,'NB','zmf',[-3*f1,-1*f1]);a=addmf(a,'input',1,'NM','trimf',[-3*f1,-2*f1,0]);a=addmf(a,'input',1,'NS','trimf',[-3*f1,-1*f1,1*f1]);a=addmf(a,'input',1,'Z','trimf',[-2*f1,0,2*f1]);a=addmf(a,'input',1,'PS','trimf',[-1*f1,1*f1,3*f1]);a=addmf(a,'input',1,'PM','trimf',[0,2*f1,3*f1]);a=addmf(a,'input',1,'PB','smf',[1*f1,3*f1]);f2=1;a=addvar(a,'input','ec',[-3*f2,3*f2]);%Parametereca=addmf(a,'input',2,'NB','zmf',[-3*f2,-1*f2]);a=addmf(a,'input',2,'NM','trimf',[-3*f2,-2*f2,0]);a=addmf(a,'input',2,'NS','trimf',[-3*f2,-1*f2,1*f2]);a=addmf(a,'input',2,'Z','trimf',[-2*f2,0,2*f2]);a=addmf(a,'input',2,'PS','trimf',[-1*f2,1*f2,3*f2]);a=addmf(a,'input',2,'PM','trimf',[0,2*f2,3*f2]);a=addmf(a,'input',2,'PB','smf',[1*f2,3*f2]);f3=1.5;a=addvar(a,'output','u',[-3*f3,3*f3]);%Parameterua=addmf(a,'output',1,'NB','zmf',[-3*f3,-1*f3]);a=addmf(a,'output',1,'NM','trimf',[-3*f3,-2*f3,0]);a=addmf(a,'output',1,'NS','trimf',[-3*f3,-1*f3,1*f3]);a=addmf(a,'output',1,'Z','trimf',[-2*f3,0,2*f3]);a=addmf(a,'output',1,'PS','trimf',[-1*f3,1*f3,3*f3]);a=addmf(a,'output',1,'PM','trimf',[0,2*f3,3*f3]);a=addmf(a,'output',1,'PB','smf',[1*f3,3*f3]);rulelist=[11111;%Editrulebase12111;13211;14211;15311;16311;17411;21111;22211;23211;24311;25311;26411;27511;31211;32211;33311;34311;35411;36511;37511;41211;42311;43311;44411;45511;46511;47611;51311;52311;53411;54511;55511;56611;57611;61311;62411;63511;64511;65611;66611;67711;71411;72511;73511;74611;75611;76711;77711];a=addrule(a,rulelist);%showrule(a)%Showfuzzyrulebasea1=setfis(a,'DefuzzMethod','mom');%Defuzzywritefis(a1,'fuzzf');%savetofuzzyfilefuzz.fiswhichcanbe%simulatedwithfuzzytoola2=readfis('fuzzf');disp('-------------------------------------------------------');disp('fuzzycontrollertable:e=[-3,+3],ec=[-3,+3]');disp('-------------------------------------------------------');Ulist=zeros(7,7);fori=1:7forj=1:7e(i)=-4+i;ec(j)=-4+j;Ulist(i,j)=evalfis([e(i),ec(j)],a2);endendUlist=ceil(Ulist)figure(1);plotfis(a2);figure(2);plotmf(a,'input',1);figure(3);plotmf(a,'input',2);figure(4);plotmf(a,'output',1);
本文标题:2基于MATLAB的位置跟踪系统模糊控制仿真
链接地址:https://www.777doc.com/doc-5690480 .html