资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,模糊控制在,MATLAB,中的实现,1,、采用,MATLAB,语言根据具体的控制算法编程,2,、利用,MATLAB,提供的模糊逻辑工具箱函数,3,、利用模糊逻辑工具箱的图形界面与,Simulink,动态仿真环境,仿真方法:,简单,直观,复杂但灵活,MATLAB,工具箱提供的图形化工具:,模糊系统,FIS Editor,模糊推理系统编辑器,(Fuzzy),MF Editor,隶属度函数,编辑器,(,Mfedit),Rule Editor,模糊规则,编辑器,(Ruleedit),Rule Viewer,模糊规则,观察器,(Ruleview),Surface Viewer,输入输出面视图,(,Surfview,),例:小费问题,小费与服务及食物质量有关。,输入:,服务及食物质量,,2,个输入。,输出:,小费,,1,个输出。,语言值:,食物:差、好;,010,服务:差、好、很好;,010,小费:少、中等、高;,030,模糊规则:,1,、如果服务差或食物差,则小费少;,2,、如果服务中等,则小费中等;,3,、如果服务好或食物非常可口,则小费高。,在,matlab,工作窗口输入:,fuzzy+,回车或,fuzzy+,文件名(,.fis,),进入图形界面编辑,增加输入变量,输入,mfedit,或选择编辑隶属度函数菜单,输入服务的隶属度函数,输入,mfedit,或选择编辑隶属度函数菜单,输入食物的隶属度函数,输入,mfedit,,或选择编辑隶属度函数菜单,输出小费的隶属度函数,将修改保存到工作空间,输入,ruleedit,,或选择编辑,模糊规则,菜单,模糊规则:,1,、如果服务差,食物差,则小费少;,2,、如果服务好,则小费中等;,3,、如果服务好和食物非常可口,则小费高。,浏览模糊规则,模糊推理输入输出曲面视图,完成模糊推理系统的构建。,模糊推理系统的存储:,1,、选择,FileExport,菜单将创建的模糊推理系统,存成*,.fis,文件。,2,、选择,FileSave to Workspace as.,保存到,matlab,工作空间,输入变量名(英文命名)。,例:自适应模糊,PID,控制器,设计一模糊控制器,步骤,1.,确定,e,,,de,和,u,的论域,2.,e,,,de,和,u,语言变量的选取,3.,规则的制定,4.,推理方法的确定,假定被控对象的传递函数为:,利用,Simulink,动态仿真,1.,根据系统实际情况,选择,e,,,de,和,U(,Kp,,,Ki,,,Kd),的论域,e range:,-1 1,de range:,-0.1 0.1,u range:,0 2,2.,e,,,de,和,u,语言变量的选取,e 8,个:,NB,NM,NS,NZ,PZ,PS,PM,PB,de 7,个:,NB,NM,NS,Z,PS,PM,PB,U 7,个:,NB,NM,NS,Z,PS,PM,PB,利用,MATLAB,的,Toolbox,工具,偏差的隶属度函数,输入的隶属度函数,偏差变化的隶属度函数,输出的隶属度函数,Kp,,,Ki,,,Kd,根据以上规律得,Kp,、,Ki,、,Kd,的模糊规则表,根据设计经验,得出改变,PID,参数,Kp,,,Ki,,,Kd,的规律,当偏差较大时,,Kp=,较大(使系统响应加快),,Kd=,零或较小,Ki=0,(避免过大的超调),当偏差中等时,,Kp=,较小(使系统响应具有较小的超调),,Kd=,适当(对系统影响较大),Ki=,适当,当偏差较小时,,Kp=,较大(使系统具有良好的稳态性能),,Kd=,适当(避免在平衡点附近振荡),Ki=,较大(使系统具有良好的稳态性能),,3.,模糊规则确定,p65,4.,推理方法的制定,推理方法,:,采用,mamdani,方法,去模糊方法:,加权平均法,选择隶属函数的形式:,三角型,MATLAB,利用模糊逻辑工具箱的图形界面与,Simulink,动态仿真环境,模糊规则:,模糊规则:,0.1,1,-0.1,-1,0,2,用,surfview,菜单命令看模糊控制器的输出量,整定出的,Kp,,,Ki,,,Kd,代入,PID,算法的离散,差分公式,1,、双击,fuzzy contrller,,给模糊控制器命名,OK,2,、在,matlab,窗口中输入命令:,命名,=readfis(,变量名,.fis),将*,fis,文件导入,Simulink,模型中的步骤:,Scope 2,Scope 1,Scope 3,利用,MATLAB,提供的模糊逻辑工具箱函数,创建一个新的模糊推理系统(模糊控制器),输入输出的量化等级都为,7,级,e,、,ec,、,u=-3,-2,-1,0,1,2,3,各取,7,个语言值,可取:模糊子集:负大、负中、负小、零、正小、正中、正大,e,、,ec,的论域,=-3,3,u,的论域,=-4.5,4.5,隶属度函数任意确定。,%,模糊控制器设计,a=newfis(fuzzf);%,创建新的模糊推理系统,f1=1;,a=addvar(a,input,e,-3*f1,3*f1);,%,添加,e,的模糊语言变量,a=addmf(a,input,1,NB,zmf,-3*f1,-1*f1);,%,添加,e,的模糊语言变量的隶属度函数(,z,型),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);,%,添加,ec,的模糊语言变量,a=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);,%,添加,u,的模糊语言变量,a=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=1 1 1 1 1;%,编辑模糊规则,1 2 1 1 1;,1 3 1 1 1;,1 4 2 1 1;,1 5 2 1 1;,1 6 3 1 1;,1 7 4 1 1;,2 1 1 1 1;,2 2 2 1 1;,2 3 2 1 1;,2 4 2 1 1;,2 5 3 1 1;,2 6 4 1 1;,2 7 5 1 1;,e,ec,u,权系数,0-1,与“,1”,或“,0”,a=addrule(a,rulelist);%,添加模糊规则函数,showrule(a)%,显示模糊规则函数,a1=setfis(a,DefuzzMethod,centroid);%,设置模糊系统特性,writefis(a1,fuzzf);%,保存模糊系统,a2=readfis(fuzzf);%,从磁盘读出保存的模糊系统,disp(fuzzy Controller table:e=-3,+3,ec=,-3,+3);%,显示矩阵和数组内容,Ulist=zeros(7,7);%,全零矩阵,for i=1:7,for j=1:7,e(i)=-4+i;,ec(j)=-4+j;,Ulist(i,j)=evalfis(e(i),ec(j),a2);%,完成模糊推理计算,end,end,Ulist=ceil(Ulist)%,朝正无穷方向取整,figure(1);plotfis(a2);,figure(2);plotmf(a,input,1);,figure(3);plotmf(a,input,2);,figure(4);plotmf(a,output,1);,
展开阅读全文