第4章模糊控制的matlab实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2. fuzzy
功能:调用基本的FIS编辑器。 格式: fuzzy fuzzy(fismat) 说明:FIS编辑器可让用户方便地创建或修改FIS(模 糊推理系统)的高级特性。
3. mfedit 功能:隶属度函数编辑器 格式: mfedit (‘a’) mfedit (a) mfedit 说明: mfedit (‘a’)可打开隶属度函数编辑器,其中 包含文件a.fis的隶属度函数,通过编辑器可对其进行 修改。 mfedit (a)可打开保存在工作空间变量a中的FIS 结构。 mfedit可打开隶属度函数编辑器。
4.2.1 利用GUI建立FIS 1. 进入FIS编辑器 在Matlab的Command Window窗口的提示下,键 入fuzzy可打开FIS编辑器,默认的文件名是Untitle, 默认的系统是Mamdani型。 由于本例有2个输入变量,因此需要添加1个输 入变量,然后给输入、输出变量命名,再保存系统。 本例创建的系统命名为WatLevControl。
2. sigmf 功能:Sigmoid型隶属度函数 格式:y=sigmf(x,[a c]) 说明:Sigmoid型函数由参数a和c确定:
f x, a, c 1 1 e a x c
wenku.baidu.com
例: x = 0:0.1:10; y = sigmf(x,[2 4]); plot(x,y); text(0.2,0.88,’sigmf’); text(0.2,0.78,’P = [2 4]’);
取水位误差e和误差变化率ec作为模糊控制器的 输入变量。其中:e=r-y(误差=设定值-测量值)。 选取误差e的论域范围:[-1¸+1],3个语言变量值 为:negative、zero、positive,它们的隶属度函数 均取gaussmf;水位变化率ec的论域也为:[0.1¸+0.1],3个语言变量值为:negative、zero、 positive,它们的隶属度函数均取gaussmf;确定输 出变量数为1个,名为u,其论域为[-1¸+1],5个 语言变量值为close-fast、close-slow、no-chang、 open-slow、open-fast,隶属度函数选为trimf。
3. 进入规则编辑器
进入方法: (1)在FIS编辑器中双击规则处理图框 (2)通过菜单Edit→Rules… (3)在Matlab的Command Window窗口的提示下, 键入ruleedit。
4. 查看规则观测器
目的:查看模糊规则的推理情况。 可以方便地观察规则情况以及调整不同的输入时 所对应的输出的情况。 打开规则观测器的方法:通过菜单View→Rule 5. 查看曲面观测器 目的:查看模糊规则的曲面输出情况。 打开曲面观测器的方法:通过菜单View→Surface
例:
a=newfis(‘Simple’); a=addvar(a,’input’,’e’,[-6,6]); a=addmf(a,’input’,1,’NL’,’trapmf’,[-6,-6,-5,-3]); a=addmf(a,’input’,1,’NS’,’trapmf’,[-5,-3,-2,0]); a=addmf(a,’input’,1,’ZR’,’trapmf’,[-2,0,2])。
第4章
模糊控制的matlab实现
本实验以Mtlab6.5为开发环境,基于模糊逻辑工具 箱(Fuzzy Logic Toolbox) 通过简单直观的例子,对模 糊控制系统进行分析与研究。
4.1 认识实验
4.1.1 GUI(图形用户界面) 工具箱函数 1. anfisedit 功能:打开ANFIS编辑器的GUI 格式: anfisedit(‘a’) anfisedit(a) anfisedit 说明:利用anfisedit函数打开ANFIS编辑器的GUI, 从中可装入数据集合并训练ANFIS。 利用anfisedit(‘a’)可从磁盘中装入名为a.fis的FIS 文件,并打开ANFIS编辑器。利用anfisedit(a)可按同 样的方式打开FIS结构变量a。
4. ruleedit
功能: ruleedit (‘a’) ruleedit (a) 说明:利用ruleedit (‘a’)可打开规则编辑器,从中可 以查看或修改文件a.fis所对应的FIS结构中的规则。 ruleedit (a)格式可用来打开在工作空间中已存在 的名为a的FIS结构所对应的规则编辑器。
例: x = 0:0.1:10; y = trimf(x,[3 6 8]); plot(x,y); text(0.2,0.88,’trimf’); text(0.2,0.78,’P = [3 6 8]’);
4.1.3 FIS数据结构管理函数 1. addmf 功能:将隶属度函数添加到FIS 格式:a=addmf(a,’varType’, varIndex,’mfName’,’mfType,mfParams) addmf函数有6个变量 (1)a: 工作空间中的FIS结构变量名 (2)varType: 要添加的隶属度函数的变量类型 (3)varIndex: 要添加的隶属度函数的变量编号 (4)mfName: 新添加的隶属度函数名 (5)mfType: 新隶属度函数的类型 (6)mfParams: 指定隶属度函数的参数向量
2. addrule 功能:在FIS中添加规则 格式:a=addrule(a,ruleList) 例:ruleList=[1 1 1 1 1 ;1 2 2 1 1]; a=addrule(a,ruleList); 3. addvar 功能:在FIS中添加变量 格式:a=addvar(a,’varType’,varBounds) 例:a=newfis(‘Simple’); a=addvar(a,’input’,’e’,[-6,6]);
f x, , c e

x c 2
2 2
gaussmf函数的参数以向量[sig,c]形式给出。 例: x = 0:0.1:10; y = gaussmf(x,[2 5]); plot(x,y); text(0.2,0.88,’gaussmf’); text(0.2,0.78,’P = [2 5]’);
4. defuzz 功能:对隶属度函数进行反模糊化 格式:out=defuzz(x,mf,type) 说明:defuzz(x,mf,type)可得到输入为x时隶属度函数 mf的反模糊值 例:x=-10:0.1:10; mf=trapmf(x,[-10 -8 -4 7]); xx=defuzz(x,mf,’centroid’)
6. surfview 功能:输出曲面观测器 格式: surfview (‘a’) surfview (a) 说明:利用surfview (‘a’)可打开输出曲面观测器,从 中可查看保存在文件a.fis中的单输入或双输入FIS结 构的输出曲面。
4.1.2 隶属度函数 1. Gaussmf
功能:高斯(Gaussian)型隶属度函数 格式:y=gaussmf(x,[sig c]) 说明:对称的高斯型函数取决于2个参数σ(sig)和c:
4.1.4 Simulink仿真模块 1. fuzblock 功能:模糊逻辑控制器仿真模块 格式: fuzblock 说明:此命令将打开Simulink系统的模糊逻辑模块库, 里面含有有关模糊逻辑器件的演示框图。 2. sffis 功能:Simulink中的模糊推理S函数 格式: output=sffis(t,x,u,flag,fismat) 说明:用此函数可得到一个由Simulink使用的MEX文件
3. trimf 功能:三角形隶属度函数 格式:y = trimf(x,[a b c]) 说明:三角函数曲线由3个参数a、 b 、c确定: xa 0 参数a和c确定三角 x a a x b 形的“脚”,而 b a 参数b确定三角形 f x , a ,b , c c x b x c 的“峰” c b 0 xc
wlcontrol=addvar(wlcontrol,'input','e',[-1 1]); wlcontrol=addvar(wlcontrol,'input','ec',[-0.1 0.1]); wlcontrol=addvar(wlcontrol,'output','u',[-1 1]); wlcontrol=addmf(wlcontrol,'input',1,'negative','gaussmf',[0.45 -1]); wlcontrol=addmf(wlcontrol,'input',1,'zero','gaussmf',[0.45 0]); wlcontrol=addmf(wlcontrol,'input',1,'positive','gaussmf',[0.45 1]); wlcontrol=addmf(wlcontrol,'input',2,'negative','gaussmf',[0.045 -0.1]); wlcontrol=addmf(wlcontrol,'input',2,'zero','gaussmf',[0.045 0]); wlcontrol=addmf(wlcontrol,'input',2,'positive','gaussmf',[0.045 0.1]); wlcontrol=addmf(wlcontrol,'output',1,'close-fast','trimf',[-1.5 -1 -0.5]); wlcontrol=addmf(wlcontrol,'output',1,'close-slow','trimf',[-1 -0.5 0]); wlcontrol=addmf(wlcontrol,'output',1,'no-change','trimf',[-0.5 0 0.5]); wlcontrol=addmf(wlcontrol,'output',1,'open-slow','trimf',[0 0.5 1]); wlcontrol=addmf(wlcontrol,'output',1,'open-fast','trimf',[0.5 1 1.5]); rulelist=[1 0 1 1 1;2 0 3 1 1;3 0 5 1 1;2 1 4 1 1;2 3 2 1 1]; wlcontrol=addrule(wlcontrol,rulelist) writefis(wlcontrol); plotfis(wlcontrol)
5. 保存FIS结构 用writefis函数可以将Matlab工作空间中的FIS 结构变量wlcontrol保存到磁盘文件中: writefis(wlcontrol) 此文件将以.fis为缺省后缀名。 6. 可以利用下列函数对所建立的FIS进行操作 plotmf(绘制隶属度函数)、surfview(绘制系统输出曲面) plotfis(绘制FIS系统结构)、evalfis(计算FIS输出)、 getfis(获取FIS结构的属性)、showfis(显示FIS结构参数) evalmf(计算隶属度函数)
4.2 水箱水位控制实验
水箱水位模糊推理系统(FIS)的建立 模糊推理系统的任务
对测量数据进行模糊化 建立模糊控制规则表 进行输出信息的模糊判决
建立模糊推理系统,通常采用两类方法: (1)利用Matlab命令行建立模糊推理系统 (2)利用GUI建立模糊推理系统
水位模糊控制系统 设定期望的水位,检测实际的水位,计算水位 误差,由模糊控制器计算得到阀门控制量,即阀门 开度,从而控制阀门,完成水位的控制。
2. 进入隶属度函数编辑器 进入方法: (1)在FIS编辑器中双击任意一个输入或输出变量 的图框 (2)通过菜单Edit→Membership Functions… (3)在Matlab的Command Window窗口的提示下, 键入mfedit(WatLevControl) 编辑过程: 修改各变量的论域范围 编辑各个输入或输出变量的隶属度函数及各隶属度 函数对应的Name、Type、Params。 系统默认每个变量有3个隶属度函数,均为trimf, 可根据需要进行删减。
4.2.2 利用Matlab命令行建立FIS 1. 建立新的FIS 设所建的FIS结构为wlcontrol,则命令行为:
2. 添加输入输出变量 本例的模糊推理系统有2个输入变量e和ec,1个 输出变量u,根据它们的论域要求,用add函数添加三 个变量。
3. 添加隶属函数
4. 设计并添加规则列表
5. ruleview
功能:规则观测器和模糊推理框图 格式: ruleview (‘a’) ruleview (a) 说明:利用ruleview(‘a’)可打开a.fis规则状况的规则观 测器,从中可对文件a.fis所对应的FIS结构画出模糊推 理框图,并可显示整个框图。 ruleview (a)格式可用来打开在工作空间中已存在 的名为a的FIS结构所对应的规则观测器。利用可打开 ruleview规则观测器。
规则分析: 根据水箱水位控制的实际经验,可得到如下控制规则: (1) If e is negative then u is close-fast (2) If e is zero then u is no-chang (3) If e is positive then u is open-fast (4) If e is zero and ec is negative then u is open-slow (5) If e is zero and ec is positive then u is close-slow
相关文档
最新文档