模糊控制的Matlab仿真实例分析

合集下载

模糊控制的Matlab仿真实例

模糊控制的Matlab仿真实例

其他例子
模型Shower.mdl―淋浴温度调节模糊控制系统仿真; 模型slcp.mdl―单级小车倒摆模糊控制系统仿真; 模型 slcp1.mdl―变长度倒摆小车模糊控制系统仿
真; 模型 slcpp1.mdl—定长、变长二倒摆模糊控制系
统仿真; 模型slbb.mdl―球棒模糊控制系统仿真; 模型sltbu.mdl―卡车智能模糊控制倒车系统仿真; 模型sltank2.mdl ― 用子系统封装的水箱控制仿
为简单起见,我们直接利用系统里已经编辑好的 模糊推理系统,在它的基础上进行修改。这里我 们采用与tank . fis中输入输出变量模糊集合完 全相同的集合隶属度函数定义,只是对模糊规则 进行一些改动,来学习模糊工具箱与仿真工具的 结合运用。对于这个问题,根据经验和直觉很显 然可以得到如下的模糊度示 波器
冷水阀子系统
这个仿真模型的输出是用示波器来表示的,如 图所示。通过示波器上的图形我们可以清楚地 看到温度和水流量跟踪目标要求的性能。
水温示波器
水流示波器
水温偏差区间模糊划分及隶属度函数
水流量偏差区间模糊划分及隶属度函数
输出对冷水阀控制策略的模糊化分及隶属度函数
选Edit菜单,选择Rules, 弹出一新界面Rule Editor. 在底部的选择框内,选择相应的 IF…AND…THEN 规则,点击Add rule 键,上部 框内将显示相应的规则。本例中用9条左右的规 则,依次加入。如下图所示:
模糊逻辑工具箱仿真结果
模糊规则浏览器用于显示各条模糊控制规则对 应的输入量和输出量的隶属度函数。通过指定 输入量,可以直接的显示所采用的控制规则, 以及通过模糊推理得到相应输出量的全过程, 以便对模糊规则进行修改和优化。
这样的结果与实际情况还是有些不符。通常顾客都是给15%的 小费,只有服务特别好或特别不好的时候才有改变,也就是说, 希望在图形中间部分的响应平坦些,而在两端(服务好或坏) 有凸起或凹陷。这时服务与小费是分段线性的关系。例如,用 下面 MATLAB 语句绘出的下图的情况。

模糊控制在matlab中的实例

模糊控制在matlab中的实例

模糊控制在matlab中的实例
MATLAB 是一种广泛使用的数学软件,可以用于模糊控制的研究和应用。

以下是一些在 MATLAB 中的模糊控制实例:
1. 模糊控制器的设计:可以通过建立模糊控制器的数学模型,使用 MATLAB 进行建模和优化,以实现精确的控制效果。

2. 模糊控制应用于电动机控制:可以使用 MATLAB 对电动机进行模糊控制,以实现精确的速度和位置控制。

3. 模糊控制在工业过程控制中的应用:在工业过程中,可以使用模糊控制来优化生产过程,例如温度控制、流量控制等。

4. 模糊控制在交通运输中的应用:在交通运输中,可以使用模糊控制来优化车辆的行驶轨迹和速度,以提高交通运输的安全性和效率。

5. 模糊控制在机器人控制中的应用:可以使用模糊控制来优化机器人的运动和操作,以实现更准确和高效的操作。

这些实例只是模糊控制应用的一部分,MATLAB 作为一种强大的数学软件,可以用于各种模糊控制的研究和应用。

模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)

模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)

模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)2这个例子的程序百度文库里有很多版本,但我下了很多都有错误,运行不了。

以下程序我一字一字的敲出来的,已经成功运行,绝对无误。

仿真实例,被控对象为p G (s)=ss s 1047035.8752350023++ 采样时间为1ms ,采用模糊PID 控制进行阶跃响应,在第300个采样时间时控制器输出加1.0的干扰,相应的运行结果如图1~13所示。

仿真程序如下:将以下程序保存为fuzzypid.m 文件,即可得到仿真结果。

%fuzzy tunning PID controlclear all ;clear all ;a=newfis('fuzzpid');a=addvar(a,'input','e',[-3,3]); %parameter ea=addmf(a,'input',1,'NB','zmf',[-3,-1]);a=addmf(a,'input',1,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]);a=addmf(a,'input',1,'Z','trimf',[-2,0,2]);a=addmf(a,'input',1,'PS','trimf',[-1,1,3]);a=addmf(a,'input',1,'PM','trimf',[0,2,3]);a=addmf(a,'input',1,'PB','smf',[1,3]);a=addvar(a,'input','ec',[-3,3]); %parameter eca=addmf(a,'input',2,'NB','zmf',[-3,-1]);a=addmf(a,'input',2,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',2,'NS','trimf',[-3,-1,1]);a=addmf(a,'input',2,'Z','trimf',[-2,0,2]);a=addmf(a,'input',2,'PS','trimf',[-1,1,3]);a=addmf(a,'input',2,'PM','trimf',[0,2,3]);a=addmf(a,'input',2,'PB','smf',[1,3]);a=addvar(a,'output','kp',[-0.3,0.3]); %parameter kpa=addmf(a,'output',1,'NB','zmf',[-0.3,-0.1]);a=addmf(a,'output',1,'NM','trimf',[-0.3,-0.2,0]);a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]);a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]);a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]);a=addmf(a,'output',1,'PM','trimf',[0,0.2,0.3]);a=addmf(a,'output',1,'PB','smf',[0.1,0.3]);a=addvar(a,'output','ki',[-0.06,0.06]); %parameter ki a=addmf(a,'output',2,'NB','zmf',[-0.06,-0.02]);a=addmf(a,'output',2,'NM','trimf',[-0.06,-0.04,0]);a=addmf(a,'output',2,'NS','trimf',[-0.06,-0.02,0.02]); a=addmf(a,'output',2,'Z','trimf',[-0.04,0,0.04]);a=addmf(a,'output',2,'PS','trimf',[-0.02,0.02,0.06]);a=addmf(a,'output',2,'PM','trimf',[0,0.04,0.06]);a=addmf(a,'output',2,'PB','smf',[0.02,0.06]);a=addvar(a,'output','kd',[-3,3]); %parameter kda=addmf(a,'output',3,'NB','zmf',[-3,-1]);a=addmf(a,'output',3,'NM','trimf',[-3,-2,0]);a=addmf(a,'output',3,'NS','trimf',[-3,-1,1]);a=addmf(a,'output',3,'Z','trimf',[-2,0,2]);a=addmf(a,'output',3,'PS','trimf',[-1,1,3]);a=addmf(a,'output',3,'PM','trimf',[0,2,3]);a=addmf(a,'output',3,'PB','smf',[1,3]);rulelist=[1 1 7 1 5 1 1;1 2 7 1 3 1 1;1 3 62 1 1 1;1 4 62 1 1 1;1 5 5 3 1 1 1;1 6 4 42 1 1;1 7 4 4 5 1 1;2 1 7 1 5 1 1;2 2 7 13 1 1;2 3 6 2 1 1 1;2 4 53 2 1 1;2 5 53 2 1 1;2 6 4 43 1 1;2 734 4 1 1;3 1 6 14 1 1;3 2 6 2 3 1 1;3 3 6 3 2 1 1;3 4 5 3 2 1 1;3 54 4 3 1 1;3 6 3 5 3 1 1;3 7 3 54 1 1;4 1 6 2 4 1 1;4 2 6 2 3 1 1;4 35 3 3 1 1;4 4 4 4 3 1 1;4 5 3 5 3 1 1;4 6 2 6 3 1 1;4 7 2 6 4 1 1;35 1 5 2 4 1 1;5 2 5 3 4 1 1;5 3 4 4 4 1 1;5 4 3 5 4 1 1;5 5 3 5 4 1 1;5 6 2 6 4 1 1;5 7 2 7 4 1 1;6 1 5 47 1 1;6 2 4 4 5 1 1;6 3 3 5 5 1 1;6 4 2 5 5 1 1;6 5 2 6 5 1 1;6 6 27 5 1 1;6 7 1 7 7 1 1;7 1 4 4 7 1 1;7 2 4 4 6 1 1;7 3 2 5 6 1 1;7 4 2 6 6 1 1;7 5 2 6 5 1 1;7 6 1 7 5 1 1;7 7 1 7 7 1 1];a=addrule(a,rulelist);a=setfis(a,'DefuzzMethod','mom');writefis(a,'fuzzpid');a=readfis('fuzzpid');%PID controllerts=0.001;sys=tf(5.235e005,[1,87.35,1.047e004,0]); dsys=c2d(sys,ts,'tustin');[num,den]=tfdata(dsys,'v');u_1=0.0;u_2=0.0;u_3=0.0;y_1=0;y_2=0;y_3=0;x=[0,0,0]';4error_1=0;e_1=0.0;ec_1=0.0;kp0=0.40;kd0=1.0;ki0=0.0;for k=1:1:500time(k)=k*ts;rin(k)=1;%using fuzzy inference to tunning PIDk_pid=evalfis([e_1,ec_1],a);kp(k)=kp0+k_pid(1);ki(k)=ki0+k_pid(2);kd(k)=kd0+k_pid(3);u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3);if k==300 %adding disturbance(1.0v at time 0.3s)u(k)=u(k)+1.0;endif u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;endyout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;error(k)=rin(k)-yout(k);%%%%%%%%%%%%%%%%%%%%%%%%%return of pid parameters%%%%%%%%%%%%%%%%%%%%%%%% u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yout(k);5x(1)=error(k); %calculating Px(2)=error(k)-error_1; %calculating Dx(3)=x(3)+error(k); %calculating De_1=x(1);ec_1=x(2);error_2=error_1;error_1=error(k);endshowrule(a)figure(1);plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel( 'rin,yout');figure(2);plot(time,error,'r');xlabel('time(s)');ylabel( 'error ');figure(3);plot(time,u,'r');xlabel('time(s)');ylabel( 'u ');figure(4);plot(time,kp,'r');xlabel('time(s)');ylabel( 'kp ');figure(5);plot(time,ki,'r');xlabel('time(s)');ylabel( 'ki ');figure(6);plot(time,kd,'r');xlabel('time(s)');ylabel( 'kd ');figure(7);plotmf(a,'input',1);figure(8);plotmf(a,'input',2);figure(9);plotmf(a,'output',1);figure(10);plotmf(a,'output',2);figure(11);plotmf(a,'output',3);plotfis(a);fuzzy fuzzpid.fis6仿真运行结果:789。

模糊控制MATLAB仿真

模糊控制MATLAB仿真

模糊控制MATLAB仿真
实验报告本课程名称:MATLAB模糊控制上机实验
2013~2014学年第⼀学期
⼴东⽯油化⼯学院计算机与电⼦信息学院
实验⽬的:
1、了解MATLAB中各种仿真⼯具。

2、掌握MATLAB仿真⼯具中图形化界⾯以及模糊逻辑⼯具箱函数的仿真⽅法。

上机实验⼀:
设计⼀个温度模糊控制器,具体要求见课本P59要求采⽤下⾯两种MATLAB⼯具进⾏仿真。

1、⼯具箱提供的图形化界⾯
2、模糊逻辑⼯具箱函数
仿真⽅法:
1、采⽤MATLAB语⾔根据具体的控制算法编程
2、利⽤MATLAB提供的模糊逻辑⼯具箱函数
3、利⽤模糊逻辑⼯具箱的图形界⾯与Simulink动态仿真环境
在matlab⼯作窗⼝输⼊:fuzzy+回车或fuzzy + ⽂件名(.fis)进⼊图形界⾯编辑
增加输⼊变量
输⼊mfedit或选择编辑⾪属度函数菜单输⼊误差e的⾪属度函数
输⼊误差变化de的⾪属度函数
输出u的⾪属度函数
输⼊ruleedit,或选择编辑模糊规则菜单
浏览模糊规则
模糊推理输⼊输出曲⾯视图,完成模糊推理系统的构建。

第五章模糊控制系统的MATLAB仿真PPT课件

第五章模糊控制系统的MATLAB仿真PPT课件
36
37
38
5.2.6 FIS输出量曲面观测窗 1.输出量曲面观测窗界面简介 2.利用输出量曲面观测窗进行分析研究
39
5.2.7 用GUI设计Mamdani型模糊系统举例 1.选择模糊控制器的结构及模糊逻辑算法 2.定义覆盖输入、输出变量的模糊子集 3,编辑模糊控制规则 4.观测模糊推理过程
59
设计模糊推理结构
• Mamdani法 • Lorsen法 • Takagi-Sugeno方法。
60
(1).Mamdani方法
利用“极大—极小”合成规则定义模糊蕴 含表达的关系。例如:R :ifx为 A , t h e ny为 B
表达的关R C系 定义为
RCABXYA(x()x ,y)B(y)
40
41
42
4.观测模糊推理过程 5.观测清晰化方法对输出量的影响 6.观测整个论域上输出量与输入变量间的关

43
5.2.8 用GUI设计Sugeno型模糊系统举例 1.选择模糊系统的结构及逻辑算法 2.定义输入、输出变量的模糊子集 1)增加一个输出函数 2)命名 3)输入参数 3. 输入模糊控制规则 4.观测模糊推理过程 5.观测整个论域上输出量与输入量间的关系
13
5.2 模糊推理系统的设计与仿真
5.2.1 模糊推理系统的图形用户界面简介
14
15
5.2.2 模糊推理系统编辑器 1.FIS编辑器界面简介 • 菜单条和模框区
File Edit View
16
17
18
模糊逻辑区和当前变量区 2. FIS推理系统的编辑 3.编辑FIS的维数 4.编辑FIS输入、输出量的名称
3
• 5.1.2 仿真模型图的建立 • 1.打开模型编辑器界面 • 2.移入模块并予以合理布局

Matlab中的模糊逻辑控制方法

Matlab中的模糊逻辑控制方法

Matlab中的模糊逻辑控制方法引言模糊逻辑控制(FLC)是一种常用的控制方法,在很多实际应用中得到了广泛的应用。

Matlab作为一种功能强大的数学计算和工程仿真软件,提供了丰富的工具和函数来支持模糊逻辑控制的设计和实现。

本文将介绍Matlab中的模糊逻辑控制方法及其应用。

一、模糊逻辑控制的基本概念模糊逻辑控制是一种基于模糊逻辑原理的控制方法,它可以处理不确定性信息和模糊概念,适用于那些难以建立精确数学模型的控制系统。

模糊逻辑控制系统由四个基本部分组成:模糊化、推理、解模糊和规则库。

1.1 模糊化模糊化是将输入量从实际值转化为模糊集合的过程。

在Matlab中,可以使用fuzzifier函数将实际输入映射到模糊集合上。

模糊集合可以通过一些参数来描述,如三角形型、梯形型、高斯型等。

1.2 推理推理是根据模糊集合的规则进行推导,得到系统的输出。

在Matlab中,可以使用inference函数进行推理。

推理的方法有三种:基于规则的推理、基于模糊集合的推理和基于模型的推理。

根据应用的需求和系统的复杂程度,可以选择不同的推理方法。

1.3 解模糊解模糊是将模糊输出转化为实际值的过程。

在Matlab中,可以使用defuzzifier 函数进行解模糊。

常用的解模糊方法有:最大值法、平均值法、面积法等。

1.4 规则库规则库是模糊逻辑控制系统的核心,它包含了一系列的模糊规则,用来描述输入和输出之间的关系。

在Matlab中,可以使用fuzzy规则对象来定义规则库。

规则库的设计是模糊逻辑控制系统设计中的关键一步,直接影响系统的性能和稳定性。

二、Matlab中的模糊逻辑控制工具箱Matlab提供了专门的工具箱,用于支持模糊逻辑控制系统的设计和实现。

这个工具箱包含了一些常用的函数和工具,能够帮助用户更加方便快捷地进行模糊逻辑控制系统的设计和仿真。

2.1 模糊逻辑控制系统设计工具Matlab的模糊逻辑控制系统设计工具提供了一种用户友好的可视化界面,用于设计和编辑模糊逻辑控制系统。

第三章模糊控制模糊控制的MATLAB仿真优秀课件

>> r=2; % 键入半径
>> area=pi*r^2; % 计算面积
Hale Waihona Puke 三、变量和数值显示格式1、变量
(1)变量名称
MATLAB对使用变量名称的规定:
1. 变量名称的英文大小写是有区别的(apple, Apple, AppLe,三个变量不同)。
2. 变量的长度上限为 31 个字元。
3. 变量名的第一个字必须是一英文字,随后可 以掺杂英文字、数字或是底线。变量中不能 包含有标点符号。
>> r=2, area=pi*r^2
>> r=2; area=pi*r^2;
请注意上述二式的差异,前者有计算值显示, 而后者则无。
另外一个符号注解是由%起头,也就是说在%之后 的任何文字都被视为程式的注解。注解的功能是 简要的说明程式的内容。任何可能产生混淆的地 方都应该加注解,适量的注解可在以后想了解程 式时能节省一些不必要的时间。例如:
❖ format只是影响结果的显示,不影响其计算与存储; MATLAB总是以双字长浮点数(双精度)来执行所 有的运算。
MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可 以直接在指令视窗键入以下的各个数字显示格式的指令,以π值 为例 :
>> pi ans = 3.1416 >> format long >> pi ans = 3.14159265358979 >> format short e >> pi ans = 3.1416e+000
如果结果为整数,则显示没有小数;如果结果不是整数, 则输出形式有:
四、简单的数学运算(例exp02_01.m)

模糊控制器的MATLAB仿真

实验一模糊控制器的MATLAB仿真一、实验目的本实验要求利用MATLAB/SIMULINK与FUZZYTOOLBOX对给定的二阶动态系统,确定模糊控制器的结构,输入和输出语言变量、语言值及隶属函数,模糊控制规则;比较其与常规控制器的控制效果;研究改变模糊控制器参数时,系统响应的变化情况;掌握用 MATLAB 实现模糊控制系统仿真的方法。

二、实验原理模糊控制器它包含有模糊化接口、知识库(规则库、数据库)、模糊推理机、解模糊接口等部分。

输人变量e(t)是过程实测变量y(t)与系统设定值s(t)之差值。

输出变量y(t)是系统的实时控制修正变量。

模糊控制的核心部分是包含语言规则的规则库和模糊推理机。

而模糊推理就是一种模糊变换,它将输入变量模糊集变换为输出变量的模糊集,实现论域的转换。

工程上为了便于微机实现,通常采用“或”运算处理这种较为简单的推理方法。

Mamdani推理方法是一种广泛采用的方法。

它包含三个过程:隶属度聚集、规则激活和输出总合。

模糊控制器的组成框图如图2.1所示。

图2.1 模糊控制器的组成框图三、模糊推理系统的建立一个模糊推理系统的建立分为三个步骤:首先,对测量数据进行模糊化;其次,建立规则控制表;最后,输出信息的模糊判决,即对模糊量进行反模糊化,得到精确输出量。

模糊推理系统的建立,往往是设计一个模糊控制系统的基础。

建立一个模糊推理系统有两类方法:一种是利用GUI建立模糊推理系统;另一种是利用MATLAB命令建立。

下面根据实验内容,利用GUI建立模糊推理系统。

例:对循环流化床锅炉床温,对象模型为()()1140130120++s s采用simulink 图库,实现常规PID 和模糊自整定PID 。

模糊自整定PID 为2输入3输出的模糊控制器。

1、 进入FIS 编辑器在MATLAB 的命令窗口中键入fuzzy 即可打开FIS 编辑器,其界面如下图所示。

此时编辑器里面还没有FIS 系统,其文件名为Untitled ,且被默认为Mandani 型系统。

MATLAB技术模糊控制实例

MATLAB技术模糊控制实例一、引言在现代控制领域中,模糊控制是一种应用广泛的方法。

它通过将模糊逻辑和模糊运算引入控制系统中,来处理非线性、不确定性和模糊性问题。

而MATLAB作为一种常用的工具和编程语言,在模糊控制技术的实现中也起到了重要的作用。

二、模糊控制基础2.1 模糊集合和隶属度函数在模糊控制中,模糊集合是指某个具有模糊性质的事物的集合。

而隶属度函数则是用来描述一个元素对某个模糊集合的隶属程度的函数。

MATLAB提供了一系列的函数来实现模糊集合和隶属度函数的定义与计算。

2.2 模糊规则和推理机制模糊规则是模糊控制系统中的核心部分,它是一种以if-then形式表示的规则,用于将输入变量映射到输出变量。

推理机制则是模糊控制系统中用于根据模糊规则进行推理和决策的方法。

在MATLAB中,可以使用模糊推理系统工具箱来实现模糊规则和推理机制。

三、MATLAB模糊控制实例下面以一个简单的温度控制系统为例,介绍如何使用MATLAB进行模糊控制的实现。

3.1 系统建模假设我们要设计一个模糊控制器来控制一个恒温器,使得恒温器能够根据当前环境温度自动调整加热功率。

首先,我们需要进行系统建模,即确定输入变量、输出变量和规则库。

在这个例子中,输入变量为环境温度和加热功率的变化率,输出变量为加热功率的大小。

规则库包括一系列的模糊规则,用于根据当前环境温度和加热功率的变化率来决策加热功率的大小。

3.2 模糊集合和隶属度函数的定义在MATLAB中,可以使用fuzzy集合函数来定义模糊集合和隶属度函数。

例如,我们可以使用triangle函数来定义一个三角形隶属度函数,用于表示环境温度的低、中、高。

3.3 模糊规则和推理机制的设计在MATLAB中,使用fuzzy规则编辑器可以方便地设计模糊规则和推理机制。

首先,我们需要定义输入和输出的模糊集合,然后输入模糊集合和输出模糊集合之间的关系。

接下来,根据规则库的要求,添加相应的模糊规则。

第三章模糊控制(2)模糊控制的MATLAB仿真


七.其它功能
1.用↑↓二个游标键可以将所下过的指令叫回来 重覆使用。按下↑则前一次指令重新出现, 之后再按Enter键,即再执行前一次的指令。 而↓键的功用则是往后执行指令。 2.在键盘上的几个键如→,←, Delete等,其功 能则显而易见,试用即知无须多加说明。
3.Ctrl-C(即同时按Ctrl及C二个键)可以用来 中止执行中的MATLAB的工作。 4.命令窗口的分页输出 more off:不允许分页 more on:允许分页 more(n):指定每页输出的行数 回车键前进一行 空格键显示下一页 q键结束当前显示
5.2
MATLAB阵列与矩阵
一、简易阵列 MATLAB的运算事实上是以阵列 (array) 及矩阵 (matrix) 方 式在做运算,而这二者在MATLAB的基本运算性质不同, 阵列强调元素对元素的运算,而矩阵则采用线性代数的运 算方式。 宣告一变数为阵列或是矩阵时,如果是要个别键入元素, 须用中括号[ ] 将元素置于其中。阵列为一维元素所构成, 而矩阵为多维元素所组成,例如 : >> x = [1 2 3] % 一维 1x3 阵列

2.MATLAB提供基本的算术运算: 加 (+)、减 (-)、乘 (*)、除 (/)、幂次方 (^),范例 为:5+3, 5-3, 5*3, 5/3, 5^3 其它在计算常用的功能我们用一个算式来说明。 例:要计算面积Area = ,半径r = 2,则可键入 r=2; area=pi*r^2; area = 12.5664
mean(x) ——向量的平均值
sum(x) ——向量的总和 sort(x) ——向量的排序
x+yi或x+yj ——复数
imag ——复数的虚部
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模糊控制技术
模糊控制的Matlab仿真
用MATLAB的模糊逻辑工具箱 (Fuzzy toolbox)实现



Matlab4.2以后的版本中推出的模糊工具箱 (Fuzzy Toolbox),为仿真模糊控制系统提供了 很大的方便。 在Simulink环境下对PID控制系统进行建模是 非常方便的,而模糊控制系统与PID控制系统 的结构基本相同,仅仅是控制器不同。 对模糊控制系统的建模关键是对模糊控制器的 建模。Matlab软件提供了一个模糊推理系统 (FIS)编辑器,只要在Matlab命令窗口键入 Fuzzy就可进入模糊控制器编辑环境。

为简单起见,我们直接利用系统里已经编辑好的 模糊推理系统,在它的基础上进行修改。这里我 们采用与tank . fis中输入输出变量模糊集合完 全相同的集合隶属度函数定义,只是对模糊规则 进行一些改动,来学习模糊工具箱与仿真工具的 结合运用。对于这个问题,根据经验和直觉很显 然可以得到如下的模糊控制规则: If (水位误差小)then(阀门大小不变(权重 1 ) If (水位低) then (阀门迅速打开)(权重 1 ) If (水位高) then (阀门迅速关闭)(权重 1 )



学习 MATLAB 仿真工具的一个快速有效的方法就 是学习示例模型,通过看懂这些模型和模块的功 能以及搭建过程,可以很快熟悉和掌握如何使用 MATLAB 仿真工具来设计和搭建自己独特的模型。 下面以模型Shower.mdl的结构作一个介绍,方便 读者更好地理解和学习这个例子。 模型Shower.mdl是一个淋浴温度及水量调节的模 糊控制系统的仿真,该模糊控制器的输入变量分 别是水流量和水温,输出变量分别是对热水阀和 冷水阀的控制方式。该问题是一个典型的经验查 表法控制示例,是 Mamdani型系统,其模糊控制 矩阵存为磁盘文件shower.fis。


前面介绍过如何使用图形化工具建立模糊逻辑系 统,我们也可以完全用命令行或程序段的方式来 实现。 小费问题: 实际生活中有着许多模糊的概念和逻辑方式, “给小费”问题就是一个可以用模糊逻辑来分析 的经典的例子。下图表示的是一个关于饭店的服 务质量和顾客所给小费之间的关系图,左边表示 饭店的服务质量,作为输入;右边表示顾客所给 的小费,作为输出,两者是有一定逻辑关系的。
Matlab模糊控制仿真演示例子



模型sltank.mdl ——使用模糊控制器对水箱水位进 行控制。 假定水箱有一个进水口和一个出水口,可以通过控 制一个阀门来控制流入的水量(即水位高度),但 是流出的速度取决于出水口的半径(定值)和水箱 底部的压力(随水箱中的水位高度变化)。系统有 许多非线性特性。 要求设计的目标是一个合适的进水口阀门的控制器, 能够根据水箱水位的实时测量结果对进水阀门进行 相应控制,使水位满足特定要求(即特定输入信 号)。一般情况下,控制器以水位偏差(理想水位 和实际水位的差值)及水位变化率作为输入,输出 的控制结果是进水阀打开或关闭的速度。


上图表示当温度为45度、磁能为45瓦时,输出 干度为约70个单位。左右拉动界面中的两支红 线,拉到欲选的近似值,右边图顶显示相应的 干度结果。 上图中选菜单View, 选择Surface,弹出一新界 面Surface Viewer,弹出该课题结果的三维图。 如下图所示。
注意将鼠标箭头放置图内,移动鼠标可得到不同 角度的视图,如下图所示。
其他例子



模型Shower.mdl―淋浴温度调节模糊控制系统仿真; 模型slcp.mdl―单级小车倒摆模糊控制系统仿真; 模型 slcp1.mdl―变长度倒摆小车模糊控制系统仿 真; 模型 slcpp1.mdl—定长、变长二倒摆模糊控制系 统仿真; 模型slbb.mdl―球棒模糊控制系统仿真; 模型sltbu.mdl―卡车智能模糊控制倒车系统仿真; 模型sltank2.mdl ― 用子系统封装的水箱控制仿 真。


从上图可以看出,在增加了模糊控制规则后,系 统的动态特性得到较大改善,不但具有较短的响 应时间,而且超调量也很小。可以用 Surfview tank 命令来显示模糊控制系统的输出曲面,如图 所示。

在这个例子中,还可以用传统的 PID 控制方 法与模糊逻辑推理控制进行比较。在水箱仿真 环境主界面中将控制方法选择开关中间的 const 模块的值由由-1 改为 1 ,这时系统将用 传统的 PID 控制方法进行控制,如图所示。


在Simulink编辑窗口左边的模块浏览区可以看 到在水箱仿真系统中包括水箱子模型、阀门子 模型及 PID 控制子模型。直接在浏览区中点 击或右键点击它们,并在弹出菜单中选择 [ look under mask 】 ,可以看到这些模块实 现的细节结构,如图 所示。


这里暂时不讨论具体的系统模型的构造问题,我们可 以先在这个已经建立好的系统模型上进行修改,体验 模糊逻辑与仿真环境结合使用的优势。 对于仿真模型系统中已经建立的水箱模块、阀门模块 以及动画仿真显示模块可以直接使用,这里我们重点 讨论与模糊推理系统设计问题相关的模糊系统变量 tank (即 MATLAB 的模糊逻辑推理系统)。在 MATLAB 命令窗口中键入命令 fuzzy tank ,就可以 开始对模糊系统 tank 进行编辑了。
多个输入时,在Edit菜单中,选Add variable„ >input,加入新的输入input,如下图所示
选择 input(选中 为红框),在 界面右边文 字输入处键 入相应的输 入名称,例 如,温度输入 用 tmpinput, 磁能 输入用 maginput,等。 Nhomakorabea

隶属度函数编辑器(Mfedit) 该编辑器提供一个友好的人机图形交互环境,用 来设计和修改模糊推理系中各语言变量对应的隶 属度函数的相关参数,如隶属度函数的形状、范 围、论域大小等,系统提供的隶属度函数有三角、 梯形、高斯形、钟形等,也可用户自行定义。 双击所选input,弹出一新界面,在左下Range处 和Display Range处,填入取只范围,例如 0至9 (代表0至90)。 在右边文字文字输入Name处,填写隶属函数的名 称,例如lt或LT(代表低温)。 在Type处选择trimf(意为:三角形隶属函数曲线, triangle member function),当然也可选其它形 状。
PID控 制模块 阀门 模型 水箱 模型 仿真动 画演示
模糊控 制模块

在Matlab中仿真,可 以看到出现一个水箱 模型的仿真动画窗口。 该动画由一个S函 数”animtank.m”实 现。从动画中,可以 观察到实际系统的水 位跟随殊荣的要求水 位信号变化。
如果对S函数的实现感兴趣,可以键入命令open animtank(或edit animtank)来查看” animtank.m”文件


模糊逻辑工具箱仿真结果 模糊规则浏览器用于显示各条模糊控制规则对 应的输入量和输出量的隶属度函数。通过指定 输入量,可以直接的显示所采用的控制规则, 以及通过模糊推理得到相应输出量的全过程, 以便对模糊规则进行修改和优化。 所有规则填入后,选菜单View, 选择Rules,弹 出一新界面Rule Viewer,如下图所示。
假设是二元线性关系
用下列 MATLAB 语句可绘出下图 。
可以看到,如果不考虑服务质量因素比食物质量因素对 于小费的支付占有更大的比重,上面的关系图形已经能 够反映一些实际的情况了。假如希望服务质量占小费的 80 % , 而食物仅占 20 %。这里可以设定权重因子:
用下列 MATLAB 语句可绘出下图
这样的结果与实际情况还是有些不符。通常顾客都是给15%的 小费,只有服务特别好或特别不好的时候才有改变,也就是说, 希望在图形中间部分的响应平坦些,而在两端(服务好或坏) 有凸起或凹陷。这时服务与小费是分段线性的关系。例如,用 下面 MATLAB 语句绘出的下图的情况。

图中的黑箱表示一种映射规则,将服务质量映射 到小费。这个黑箱就是这一逻辑关系的核心部分, 它可以理解为各种不同的逻辑,例如模糊逻辑、 线性逻辑、专家系统、神经网络、微分方程、多 维表格查询或者随机选择器等。在上述问题中, 模糊逻辑被证明是最佳的。


在国外饭店就餐后一般需要付给侍者小费,这 是国外模糊系统的教材中一个非常经典的例子。 下面我们通过小费问题来说明模糊逻辑的作用。 “小费”问题的核心就是:多少小费是“合适” 的?我们先把问题简化,假定用从 0 —10 的 数字代表服务的质量(10 表示非常好,0 表 示非常差),小费应该给多少?这里还考虑到 问题的背景 —在美国平均的小费是餐费15%, 但具体多少随服务质量而变。
热水阀子系统
水量示 波器
温度示 波器 冷水阀子系统

这个仿真模型的输出是用示波器来表示的,如 图所示。通过示波器上的图形我们可以清楚地 看到温度和水流量跟踪目标要求的性能。
水温示波器
水流示波器
水温偏差区间模糊划分及隶属度函数
水流量偏差区间模糊划分及隶属度函数
输出对冷水阀控制策略的模糊化分及隶属度函数
在Params(参数)处,选择三角形涵盖的区间,填写三个 值,分别为三角形底边的左端点、中点和右端点在横坐标 上的值。这些值由设计者确定。
用类似的方法设置输出output的参数。比如:共有9个规 则,所以相应地有9个输出隶属函数。默认3个隶属函数, 剩下6个由设计者加入。点击Edit菜单,选 Add Custom MS„->继续填入相应参数即可。
输出对热水阀控制策略的模糊化分及隶属度函数
其中输入变量水温与流速的偏差与输出热水阀、冷水阀 的控制方法的经验表格如表1及表2所示。
根据这两个输出控制表,可以产生九条模糊控制规则, 如下:
系统的模糊推理运算相关定义如下:
其余例子,请各位同学自行打开研究学习。
相关文档
最新文档