实验一--模糊控制器的MATLAB仿真
模糊控制仿真实验设计
模糊控制系统的仿真实验实验目的:现有被控对象一:G(s)=1/(s2+2s+1)被控对象二:G(s)=K /【(T1s+1)(T2s+1) 】试设计一个模糊控制系统来实现对它的控制,并完成以下任务:任务一:通过仿真分析模糊控制器的参数的变化(主要讨论控制器解模方法和量化因子的变化)对系统性能的影响。
任务二:在控制器参数一定的情况下改变被控对象的参数,分析对象参数变化时fuzzy controller的适应能力。
任务三:在控制器参数一定的情况下改变被控对象的结构,分析对象结构变化时fuzzy controller的适应能力。
实验分析:要完成以上任务应分两个步骤:一设计模糊控制器,二用matlab的模糊逻辑工具箱建立模糊推理系统,并在simulink中实现对模糊系统的仿真。
接下来就以对象一为例说明模糊控制系统的仿真。
一、模糊控制器的设计模糊控制器的设计步骤为:1、选择控制器的输入输出:选择误差e及误差变化量ec为输入,u作为输出用于控制对象,这样模糊控制器具有二输入一输出的结构。
2、模糊集及论域的定义:z输入e的模糊子集为{NB NM NS NO PO PS PM PB}z输入ec和输出u的模糊子集均为{NB NM NS ZO PS PM PB}z e的论域为{-6 -5 -4 -3 -2 -1 -0 +0 1 2 3 4 5 6 }z ec的论域为{-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 }z u的论域为{-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 }我们选择三角形作为隶属度函数的形状,e的隶属度函数如下图所示:图1-1 ec的隶属度函数如下图所示:图1-2 u的隶属度函数如下图所示图1-3表1-14、选择输入输出变量的量化因子:这里暂时选定输入输出的量化因子Ke=Kc=Ku=1,接下来的仿真过程还可以调整。
5、择模糊规则前提交的方法为min,模糊推理方法为min,而反模糊化方法可以在仿真过程中设置。
基于matlab的模糊控制器的设计与仿真
基于MATLAB的模糊控制器的设计与仿真摘要:本文对模糊控制器进行了主要介绍。
提出了一种模糊控制器的设计与仿真的实现方法,该方法利用MA TLB模糊控制工具箱中模糊控制器的控制规则和隶属度函数,建立模型,并进行模糊控制器设计与仿真。
关键词:模糊控制,隶属度函数,仿真,MA TLAB1 引言模糊控制是一种特别适用于模拟专家对数学模型未知的较复杂系统的控制,是一种对模型要求不高但又有良好控制效果的控制新策略。
与经典控制和现代控制相比,模糊控制器的主要优点是它不需要建立精确的数学模型。
因此,对一些无法建立数学模型或难以建立精确数学模型的被控对象,采用模糊控制方法,往往能获得较满意的控制效果。
模糊控制器的设计比一般的经典控制器如PID控制器要复杂,但如果借助MATLAB则系统动态特性良好并有较高的稳态控制精度,可提高模糊控制器的设计效率。
本文在MATLAB环境下针对某个控制环节对模糊控制系统进行了设计与仿真。
2 模糊控制器简介模糊控制器是一种以模糊集合论,模糊语言变量以及模糊推理为数学基础的新型计算机控制方法。
显然,模糊控制的基础是模糊数学,模糊控制的实现手段是计算机。
本章着重介绍模糊控制的基本思想,模糊控制的基本原理,模糊控制器的基本设计原理和模糊控制系统的性能分析。
随着科学技术的飞速发展,在那些复杂的,多因素影响的严重非线性、不确定性、多变性的大系统中,传统的控制理论和控制方法越来越显示出局限性。
长期以来,人们期望以人类思维的控制方案为基础,创造出一种能反映人类经验的控制过程知识,并可以达到控制目的,能够利用某种形式表现出来。
而且这种形式既能够取代那种精密、反复、有错误倾向的模型建造过程,又能避免精密的估计模型方程中各种方程的过程。
同时还很容易被实现的,简单而灵活的控制方式。
于是模糊控制理论极其技术应运而生。
3 模糊控制的特点模糊控制是以模仿人类人工控制特点而提出的,虽然带有一定的模糊性和主观性,但往往是简单易行,而且是行之有效的。
模糊控制的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仿真与应用
另外 " 对于 & 还可以 9 H 3 @ =型 的 模 糊 推 理 系 统 " 利 用 DM$ # P$ % & D4 C N 6 5 J 3M3 6 K= 8 O 9 Q Q R% @ 2 3 8 3 @ ? 3 编 辑 器 进 行 自 适 应 神 经 模 糊 推 理 系 统 的 " & R > 成高亮红色 " 并且相应的规则显示 在图形窗口的底部 ) 注意到若有一个小图形是空的 " 则对应于这个规则中该变量的特征值为 @ )第三 = @ 3 列的最后一个小图形表示给定推理系统的加权合计 判定 ) 此判定依赖于系统的输入值 )
图- $ % &编辑窗口
曲面观察器 在命令窗口输入. # ! ’ > 9 8 2 J 5 3 K/ 命令 " 或在各个编辑器窗口选择相应的菜单 " 即可打 开模糊推理的输入输出曲面视图窗口 ) 该窗口用于 显示输入输出量 对 应 的 表 面 空 间 " 并可改变各轴对 应的变量及观察 视 角 " 便于用户对设计的模糊推理 系统进行修改和优化 )
模糊控制系统设计的关键是模糊控制器的设
万方数据 邢春贵 ’ 男& 吉林长春人 & 硕士研究生 & 主要领域 . 模式识别与智能控制 0 ( : 9 ; 8& 收稿日期 . + * * , 8* 8 8( )
,期
邢春贵等 0 模糊控制系统的 TDW U DX仿真与应用
Z7 ! Z
具 箱 中有 !个带 有 图 形 界 面 的 基 本 工 具 " 它们分别 是 模 糊推理系统 # 编 辑 器( 隶 属 度 函 数 编 辑 器( ’ $ % & 模糊规则编辑器 ( 模糊规则观察器和曲面观察器 ) 这 些* 工具之间是动态链接的 使用它们中的任意 " +% 一个对 $ 的 修 改 将 影 响 到 任 何其它已打开的 % & 中的显示结果 ) * +% 模糊推理 系 统 编 辑 器 该 编 辑 器 用 于 设 计 # , ’ 和显示模糊推理系统的一些基本信息与参数 ) 如图 在窗口的上半部以图形框的形式列出了模 -所 示 " 糊推理系统的基本组成部分 " 即输入模糊量 ( 模糊规 则和输出模糊变量 ) 通过鼠标双击上述图形 " 能够激 活隶属函数编辑器和模糊规则编辑器等相应的编辑 窗口 ) 在窗口的下半部分的左侧列出了模糊推理系 统 的 名 称( 类 型 和 一 些 基 本 属 性" 包括. 与/ 运算方 法( 或/ 运算方 法 ( 蕴 涵 运 算( 模糊规则的综合运算 . 以 及 去模糊化的 方 法 等 " 用户只需用鼠标即可设定 相应的属性 ) 在图 -中 " 模糊推理系统的基本属性设 定为 0 与/ 运算采用极小运算 " 或/ 运算采用极大运 . . 算" 模糊蕴涵采用极小运算 " 模糊规则综合采用极大 运算 " 去模糊化采用重心法 ) 窗口下半部分的右侧 " 列出了当前选定的模糊语言变量的名称及其论域范 围)
模糊pidmatlab(simulink)仿真详细步骤
下面用一个简单的例子作介绍:(本例不是特别针对实现什么功能,只是为了介绍方便)第一部分创建一个模糊逻辑(.fis文件)第一步:打开模糊推理系统编辑器步骤:在Commond Window 键入fuzzy回车打开如下窗口,既模糊推理系统编辑器第二步:使用模糊推理系统编辑器本例用到两个输入,两个输出,但默认是一个输人,一个输出步骤:1、添加一个输入添加一个输出得如下图2、选择Input、output(选中为红框),在Name框里修改各输入的名称并将And method 改为prod,将Or method 改为probor提示:在命名时’_’在显示时为下标,可从上图看出。
第三步:使用隶属函数编辑器该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。
步骤:1、双击任何一个输入量(In_x、In_y)或输出量打开隶属度函数编辑器。
2、在左下处Range和Display Range处添加取值范围,本例中In_x和In_y的取值范围均为[0 10], Out_x和Out_y的取值范围均为[0 1]3、默认每个输入输出参数中都只有3个隶属度函数,本例中每个输入输出参数都需要用到五个,其余几个需要自己添加:选中其中一个输入输出参数点击Edit菜单,选Add MFS…打开下列对话框将MF type设置为trimf(三角形隶属度函数曲线,当然你也需要选择其他类型) 将Number of MFs设置为2点击OK按钮同样给其他三个加入隶属度函数4、选中任何一个隶属度函数(选中为红色),在Name中键入名称,在Type 中选择形状,在Params中键入范围,然后回车如下图:5、关闭隶属函数编辑器第四步:使用规则编辑器通过隶规则编辑器来设计和修改“IF...THEN”形式的模糊控制规则。
模糊——Smith控制器的matlab仿真
大滞 后 系 统 是 一 类 常 见 的 工 业 过 程 之 一 。许 多 工 业 过 程 都包 含纯 时 间 滞 后 . 服 纯 滞 后 是 改 善 滞 后 过 程 、 制 质 量 的 克 控 个 关 键 性 问 题 。 着 控 制 理论 与技 术 应 用 的拓 进 , 要 控 制 随 需 的工 业 过 程 日趋 复 杂 .温 度 过 程 中往 往 存 在 着 较 严 重 的 非 线 性、 大惯 性 和 长 时 滞 , 控 制 的要 求 较 高 , 控 制 的精 确 性 、 对 对 鲁 棒 性 和 实 时性 要 求 更 高 , 统 的控 制 方 法 较 难 满 足 要求 。 传 而模 糊控 制 不 需 要 精 确 的 系 统数 学模 型 , 参 数 变 化 不 敏 感 , 棒 对 鲁 性较 强 且 易 于 实 现 .利 用 模 糊 控 制 和s i 预 测 控 制 各 自的 不 mt h 同 优 点 , 模 糊 控 制 和S i 控 制 结 合 起 来 , 形 成 了一 种 大 将 mt h 就 时滞 系统 的有 效控 制 方法 。 由于 滞后 时 间 的存 在 ,调 节 作 用 在 滞 后 的 这段 时 间 里无 法 影 响 被 调参 数 , 致 使 初 调 参 数 自 由变 化 . 而 降低 了 系统 的 调 节 品 质 , 大 了调 节 过 程 的 波 动 幅 值 及 动 态 偏 差 , 长 了 调节 加 延 时问 。 降低 了系 统 的稳 定 性 。 性 时 间 常 数T 惯 的大 小 , 示 系统 表 动 态 响 应 时 间 的快 慢 ,越 长 , 系 统 响 应 时 间 越 慢 , T 则 它将 弓 起 l 系统 的超 调 , 使 执 行 机 构 ( 且 如调 节 阀 ) 工 作 在 开 关 状 态 , 常 既 浪 费 资 源 , 使 被 调参 数 处 于大 的波 动 状 态 。 又 具有 纯 滞 后 的过 程 被 公 认 为 是 较 难 控 制 的过 程 ,其 难 控 程 度 将 随 着 纯 滞 后 时 间 占整 个 过 程 动 态 的 份 额 的 增 加 而 增 加 。一 般认 为纯 滞 后 时 间 与 过 程 的 时 间 常数 T 比大 于03 , 之 _时 则 说 该过 程 是 具 有 大 滞 后 的 工艺 过 程 。 当纯 滞 后 时 间 与T 比 的 值 增 加 , 程 中 的 相 位 滞后 增加 , 上 述 现 象 更 为 突 出 。有 时 过 使 甚 至会 因为 超 调 严 重 而 出 现 聚爆 、 焦 等 停 产 事 故 , 外 也 可 结 另 能 引 起 系统 的 不 稳 定 。 调 量 一 旦超 过 安 全 限 , 被 则会 危 及 设 备 及 人 身安 全 , 此 大滞 后 系 统一 直受 到人 们 的 关 注 , 为 重 要 因 成 的研 究课 题 。 传 统 的模 糊 控 制 器 对 于 大 滞 后 系 统 稳 态 精 度 效 果 较 差 , 控 制 动态 响应 品 质 也很 差且 易于 出现 震 荡 。 而传 统 的S t预 mi h 估控 制 系 统 中 的 控 制器 是 一 个 PD 制 器 , 由于 PD 基 于 被 I控 I是 控对 象 的精 确 模 型 而设 计 的 ,因 此对 于 缺 乏 精 确 模 型 或 参 数 时变 的纯 滞 后 过 程 难 以 得 到 满 意 的 性 能 。 因 而 将 模 糊 控 制 和 S i 预 估 控 制 结 合 构 成 模 糊 一 S i 控 制 对 于 大 滞 后 系 统 的 mt h mt h 控 制可 以起 到 优 势 互 补 的作 用 。 对 大 滞 后 系 统 特 性 进 行 抽 象 ,可 得 到 具 有 大 滞 后 二 阶系 统 的传 递 函数 为 :
模糊控制在matlab中的实例
模糊控制在matlab中的实例模糊控制是一种应用广泛的控制方法,它可以处理那些难以精确建立数学模型的系统。
在Matlab中,使用Fuzzy Logic Toolbox工具箱可以方便地实现模糊控制系统。
以下是一个简单的模糊控制器示例,控制一个小车的速度和方向,使得其能够沿着预设的轨迹行驶。
1. 首先,定义输入和输出变量。
这里我们需要控制小车的速度和转向角度。
代码如下:```speed = newfis("speed");speed = addvar(speed,"input","distance",[0 10]);speed = addmf(speed,"input",1,"slow","trimf",[0 0 5]);speed = addmf(speed,"input",1,"fast","trimf",[5 10 10]); speed = addvar(speed,"output","velocity",[-10 10]);speed = addmf(speed,"output",1,"reverse","trimf",[-10-10 -2]);speed = addmf(speed,"output",1,"stop","trimf",[-3 0 3]); speed = addmf(speed,"output",1,"forward","trimf",[2 10 10]);angle = newfis("angle");angle = addvar(angle,"input","position",[-1 1]);angle = addmf(angle,"input",1,"left","trimf",[-1 -1 0]);angle = addmf(angle,"input",1,"right","trimf",[0 1 1]); angle = addvar(angle,"output","steering",[-1 1]);angle = addmf(angle,"output",1,"hard_left","trimf",[-1 -1 -0.5]);angle = addmf(angle,"output",1,"soft_left","trimf",[-1 -0.5 0]);angle = addmf(angle,"output",1,"straight","trimf",[-0.5 0.5 0.5]);angle = addmf(angle,"output",1,"soft_right","trimf",[0 0.5 1]);angle = addmf(angle,"output",1,"hard_right","trimf",[0.5 1 1]);```2. 然后,定义模糊规则。
智能控制实验
实验一 模糊控制器设计与实现实验名称:模糊控制器设计与实现实验教学的指导思想和教学目的:本实验是在学生掌握模糊控制器基本工作原理和设计方法基础上,阅读有关参考书利用MATLAB 中Fuzzy toolboxes 设计模糊控制器,并建立模糊控制系统。
实验教学的基本要求:要求学生通过上机实习,熟悉MATLAB 的基本操作命令、simulink 和模糊控制工具箱的使用,掌握利用MATLAB 设计模糊控制器的基本方法,为以后利用计算机进行模糊控制系统分析与设计打下良好的基础。
实验步骤:模糊控制位置跟踪被控对象为首先运行模糊控制器程序chap4_2.m ,并将模糊控制系统保存在a2之中。
然后运行模糊控制的Simulink 仿真程序,位置指令取正弦信号,仿真结果如图4-10所示。
模糊控制位置跟踪的Simulink 仿真程序见chap4_3.mdl 。
图4-10 正弦位置跟踪s 50s 400)(2+=s G实验二 洗衣机模糊控制器的设计与仿真实验名称:洗衣机模糊控制器的设计与仿真实验目的:掌握洗衣机模糊控制器的设计步骤以及MATLAB 仿真实现实验步骤:(1)模糊控制器的结构选用单变量二维模糊控制器。
控制器的输入为衣物的污泥和油脂,输出为洗涤时间。
(2)定义输入输出模糊集将污泥分为三个模糊集:SD (污泥少),MD (污泥中),LD (污泥多),取值范围为[0,100]。
(3)定义隶属函数选用如下隶属函数:采用三角形隶属函数实现污泥的模糊化,如图4-11所示。
采用Matlab 仿真,可实现污泥隶属函数的设计,仿真程序为chap4_4.m将油脂分为三个模糊集:NG (无油脂),MG (油脂中),LG (油脂多),取值范围为[0,100]。
选用如下隶属函数:采用三角形隶属函数实现污泥的模糊化,如下图4-12所示。
仿真程序同污泥隶属函数。
⎪⎪⎩⎪⎪⎨⎧≤<-=⎩⎨⎧≤<-≤≤=≤≤-==1005050/)50()(1005050/)100(50050/)(50050/)50()(x x x x x x x x x x x LD MD SD μμμμ污泥⎪⎪⎩⎪⎪⎨⎧≤≤-=⎩⎨⎧≤<-≤≤=≤≤-==1005050/)50()(1005050/)100(50050/)(50050/)50()(y y y y y y y y y y y LG MG NG μμμμ油脂图4-12 油脂隶属函数将洗涤时间分为三个模糊集:VS (很短),S (短),M (中等),L (长),VL (很长),取值范围为[0,60]。
模糊控制在matlab中的实例
模糊控制在matlab中的实例模糊控制是一种基于经验知识的控制方法,与传统的精确控制方法不同,它允许对系统的行为进行模糊描述,并通过一套模糊规则来对系统进行控制。
在实际应用中,模糊控制常常用于处理非线性、复杂和不确定的系统,例如温度控制、汽车制动系统等。
在MATLAB中,可以通过使用Fuzzy Logic Toolbox工具箱来实现模糊控制。
下面以一个简单的温度控制系统为例,来介绍如何在MATLAB中进行模糊控制的实现。
首先,需要定义模糊控制器的输入和输出变量,以及它们的模糊集合。
在温度控制系统中,可以定义温度作为输入变量,定义加热功率作为输出变量。
可以将温度的模糊集合划分为"冷"、"适中"和"热"三个模糊集合,将加热功率的模糊集合划分为"低"、"中"和"高"三个模糊集合。
```temperature = readfis('temperature.fis');temp_input = [-10, 40];temp_output = [0, 100];temperature_inputs = ["冷", "适中", "热"];temperature_outputs = ["低", "中", "高"];```然后,需要定义模糊规则。
模糊规则用于根据输入变量的模糊集合和输出变量的模糊集合之间的关系来确定控制规则。
例如,当温度为"冷"时,加热功率应该为"高"。
可以根据经验知识定义一系列模糊规则。
```rules = ["冷", "高";"适中", "中";"热", "低";];```接下来,需要定义模糊控制器的输入和输出变量值。
Matlab模糊控制器的设计以及simulink下对模糊控制器系统的仿真(word文档良心出品)
Matlab模糊控制器的设计以及simulink下对模糊控制器系统的仿真首先,在Matlab的命令窗口(command window)中输入fuzzy,回车就会出来这样一个窗口:接下来在上述窗口中进行模糊控制器的设计:1.双输入,单输出:点击Edit----Add Variable---input2.为E添加隶属度函数,E的论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},E的模糊集合为{NB,NM,NS,NZ,PZ,PS,PM,PB},Edit—Membership Function edit,如下图所示:3.为EB添加隶属度函数,EB的论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},EB的模糊集合为{NB,NM,NS,ZE,PS,PM,PB},Edit—Membership Function edit,如下图所示:4.为U添加隶属度函数,U的论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},U的模糊集合为{NB,NM,NS,ZE,PS,PM,PB},Edit—Membership Function edit,如下图所示:其中E,EB,U均为模糊量。
5.为模糊控制器设计模糊规则,由于E的语言变量有8个,EB的语言变量有7个,所以模糊控制器的模糊规则总共有8*7=56条,接下来为模糊控制器添加规则:双击untitled,则有下面的表格:制定完成后,会形成模糊规则矩阵,系统会根据模糊输入量E,EB,经过模糊控制规则[56条],进而确定输出量U。
6.对输入量模糊化以及对输出量清晰化,我们采取最小最大重心法。
7.点击export—to file. ***#$.fis文件就是所设计的控制器。
8.下面对我们设计的模糊控制器进行检验,所构建的系统如下:系统分析:模糊控制器:双输入单输出,输入为误差以及误差的变化率的模糊量,输出为控制量的模糊量,模糊控制器中有56条规则。
模糊控制在matlab中的实例
模糊控制在matlab中的实例以下是一个简单的模糊控制实例,使用Matlab进行实现:假设有一辆小车,需要通过模糊控制来控制它的速度。
1. 首先,我们需要定义输入(error)和输出(delta),并且规定它们的范围:```inputRange = [-2 2];outputRange = [-1 1];```其中,inputRange表示error的范围为-2到2,outputRange表示delta的范围为-1到1。
2. 接下来,我们需要定义模糊变量:```error = fisvar("input", "error", "range", inputRange); delta = fisvar("output", "delta", "range", outputRange); ```这里我们定义了两个模糊变量:输入变量error和输出变量delta。
3. 然后,我们需要用隶属函数来描述模糊变量:```errorFuncs = [fisGaussmf(error, -1, 0.5) % NBfisGaussmf(error, 0, 0.5) % ZOfisGaussmf(error, 1, 0.5) % PB];deltaFuncs = [fisGaussmf(delta, -1, 0.25) % NBfisGaussmf(delta, 0, 0.25) % ZOfisGaussmf(delta, 1, 0.25) % PB];```在这个例子中,我们使用了高斯隶属函数来描述模糊变量。
NB 表示“negative big”(负大),ZO表示“zero”(零),PB表示“positive big”(正大)。
4. 接下来,我们需要定义规则:```ruleList = [1 1 1 3 % NB -> PB2 1 1 2 % ZO -> NB3 1 1 1 % PB -> ZO];```这个规则表达式的意思是:如果error是NB,则delta是PB;如果error是ZO,则delta是NB;如果error是PB,则delta是ZO。
模糊控制在matlab中的实例
模糊控制在matlab中的实例以下是一个模糊控制在MATLAB中的简单实例:假设我们要设计一个模糊控制器来控制一个水箱中水位的高低。
我们可以先建立一个模糊推理系统,其中包含输入和输出变量以及规则。
1. 输入变量:水箱中的水位(假设范围为0到100)。
2. 输出变量:水泵的流量(假设范围为0到10)。
我们需要定义一组模糊规则,例如:如果水箱中的水位为低,则水泵的流量为低。
如果水箱中的水位为中等,则水泵的流量为中等。
如果水箱中的水位为高,则水泵的流量为高。
将这些规则转换成模糊集合,如下所示:输入变量:- 低:[0, 30]- 中等:[20, 50]- 高:[40, 100]输出变量:- 低:[0, 3]- 中等:[2, 6]- 高:[4, 10]接下来,我们可以使用MATLAB的Fuzzy Logic Toolbox来建立模糊推理系统。
以下是一个简单的MATLAB脚本:```% 定义输入变量water_level = fisvar("input", "Water Level", [0 100]); water_level.addmf("input", "low", "trapmf", [0 0 30 40]); water_level.addmf("input", "medium", "trimf", [20 50 80]);water_level.addmf("input", "high", "trapmf", [60 70 100 100]);% 定义输出变量pump_flow = fisvar("output", "Pump Flow", [0 10]);pump_flow.addmf("output", "low", "trapmf", [0 0 3 4]); pump_flow.addmf("output", "medium", "trimf", [2 6 8]); pump_flow.addmf("output", "high", "trapmf", [7 8 10 10]); % 建立模糊推理系统rule1 = "If Water Level is low then Pump Flow is low"; rule2 = "If Water Level is medium then Pump Flow is medium"; rule3 = "If Water Level is high then Pump Flow is high"; rules = char(rule1, rule2, rule3);fis = newfis("Water Tank Fuzzy Controller");fis = addvar(fis, water_level);fis = addvar(fis, pump_flow);fis = addrule(fis, rules);% 模糊控制器输入water_level_value = 70;% 运行模糊推理系统pump_flow_value = evalfis([water_level_value], fis);disp(["Water level: " num2str(water_level_value) "%"]); disp(["Pump flow: " num2str(pump_flow_value)]);```在这个简单的例子中,我们使用了Fuzzy Logic Toolbox来定义输入和输出变量以及规则,并运行模糊推理系统来计算输出值。
模糊控制器的matlab设计步骤
模糊PID控制器设计和仿真步骤:各变量隶属度函数的确定第一步:各变量隶属度函数的确定1、 用于PID 参数调整的模糊控制器采用二输入三输出的形式。
该控制器是以误差E 和误差变化率EC 作为输入,PID 控制器的三个参数P、I、D 的修正△KP、△KI、△KD 作为输出,如图1;2、 取输入E 和EC 和输出△KP、 △KI、△KD 模糊子集为{NB,NM,NS,ZO,PS,PM,PB},其论域为[-6,6],量化等级为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6};如图23、 在模糊逻辑工具箱的隶属度函数编辑器中,选择输入量E,EC 隶属函数为高斯型(gaussmf),输出△KP、△KI、△KD 的隶属函数为三角形(trimf),如图2和3。
图1图2图3第二步:根据图4规则建立模糊规则表,如图5:图4图5第三步:设置参数:与方式与方式 (And method)为min ;或方式(Or method)为max ;推理推理 (Implication)为min ;合成;合成 (Aggregation)为max ;去模糊(Defuzzification)为重心平均法(centroid )。
)。
第四步:保存该FIS 文件,取名为FuzzyPID.fis第五步:在MA MATLABTLAB 的M 文件编辑器里建立一个名为FuzzyPID.m 的文件,其内容为:martrix=readfis (‘Fuzzypid.fis ’),并运行。
,并运行。
第六步:打开SIMULINK ,新建一个Model ,选择一个Subsystem ,在其中编辑模块,如图6,并设置模糊化因子KE=KEC=0.01,解模糊因子KP=0.5,KI=KD=0.01,并在Fuzzy Logic Controller 模块的Parameters 中输入readfis('FuzzyPID.fis'):图6第七步:返回到新建的Model 中,按照如图7所示建立模糊PID 控制器,其中,控制器,其中,PID PID 初始值为KP0=20,KI0=1.35,KD0=3.7,传递函数为:图7第八步:保存为FuzzyPID.mdl 并运行。
模糊PID控制系统设计及MATLAB仿真
相比传统的PID控制系统,基于Matlab的模糊PID控制系统具有更好的适应性 和鲁棒性。在面对具有非线性、时变等特点的被控对象时,模糊PID控制系统可 以更好地实现精确控制。仿真结果表明,该方法在改善系统的动态性能和稳态精 度方面均具有显著的优势。
然而,基于Matlab的模糊PID控制系统仍然存在一些问题需要进一步研究和 解决。例如,针对不同的被控对象,如何自适应地调整模糊PID控制器的参数仍 然是一个亟待解决的问题。此外,如何进一步提高模糊PID控制系统的鲁棒性和 自适应性也是未来研究的重要方向。
模糊PID控制系统设计及MATLAB仿 真
01 引言
03 参考内容
目录
02
模糊PID控制系统设 计
摘要:本次演示主要介绍了模糊PID控制系统的设计方法及其在MATLAB环境 下的仿真过程。首先,阐述了模糊PID控制系统的基本原理和设计流程,并通过 一个实际案例加以说明。接下来,介绍了MATLAB仿真的基本原理和实施步骤,并 展示了仿真结果。最后,总结了本次演示的主要内容,并指出了未来的研究方向。
(4)设计控制表:根据模糊规则和控制要求,计算出各模糊变量的控制表。
(5)设计去模糊化器:去模糊化器的作用是将模糊量转换为精确量,以便 输出到被控对象。
3、设计案例
以一个简单的温度控制系统为例,介绍模糊PID控制系统的设计应用。该系 统的输入为温度误差和温度变化率,输出为加热器的控制信号。首先,确定输入 输出变量,定义相应的模糊变量。然后,根据控制要求和系统特性制定模糊规则, 并计算出各模糊变量的控制表。最后,设计去模糊化器,将模糊量转换为精确量, 输出加热器的控制信号。通过这样的设计流程,可以实现对该温度控制系统的数学计算软件,它可以用于各种控制系统仿真的工 具。在MATLAB中,可以使用Simulink模块进行系统建模和仿真。Simulink提供 了丰富的库和工具箱,可以方便地构建各种类型的控制系统模型,并对系统进行 仿真和分析。
模糊控制的Matlab仿真实例
THANK YOU
中心平均值去模糊化
去模糊化过程
04
Matlab仿真实例
输入输出变量定义
根据被控对象的特性,定义模糊控制系统的输入输出变量,如温度、湿度、压力等。
模糊化函数设计
为每个输入输出变量设计对应的模糊化函数,将实际值映射到模糊集合上。
模糊规则制定
根据专家知识和实际经验,制定模糊控制规则,如“如果温度过高,则调整冷却阀”。
输入输出关系
基于模糊逻辑运算和模糊集合的性质,建立输入和输出之间的映射关系。
推理规则
基于专家知识和经验,制定一系列的推理规则,用于指导模糊推理过程。
推理方法
常用的模糊推理方法包括最大值推理、最小值推理和中心平均值推理等。
模糊推理系统
02
Matlab模糊逻辑工具箱简介
模糊逻辑工具箱的功能
为了将模糊输出转换为实际输出,工具箱提供了多种去模糊化方法,如最大值去模糊化、最小值去模糊化和中心平均值去模糊化等。
性能指标选择
根据所选性能指标,采用合适的方法对模糊控制系统的性能进行评估,如极差分析法、方差分析法等。
性能评估方法
将模糊控制系统的性能与其他控制方法进行比较,如PID控制、神经网络控制等,以验证其优越性。
性能比较
01
02
03
模糊控制系统的性能评估
05
结论与展望
模糊控制对模型误差和参数变化具有较强的鲁棒性,能够适应不确定性和非线性系统。
输出模糊化
将模糊集合的输出映射到实际输出量上,同样采用隶属函数进行模糊化处理。
模糊化过程
模糊控制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,或选择编辑模糊规则菜单
浏览模糊规则
模糊推理输⼊输出曲⾯视图,完成模糊推理系统的构建。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 模糊控制器的MATLAB 仿真
一、实验目的
本实验要求利用MATLAB/SIMULINK 与FUZZYTOOLBOX 对给定的二阶动态系统,确定模糊控制器的结构,输入和输出语言变量、语言值及隶属函数,模糊控制规则;比较其与常规控制器的控制效果;研究改变模糊控制器参数时,系统响应的变化情况;掌握用 MATLAB 实现模糊控制系统仿真的方法。
实验时数:3学时。
二、实验设备:计算机系统、Matlab 仿真软件 三、实验原理
模糊控制器它包含有模糊化接口、规则库、模糊推理、清晰化接口等部分,输人变量是过程实测变量与系统设定值之差值。
输出变量是系统的实时控制修正变量。
模糊控制的核心部分是包含语言规则的规则库和模糊推理。
模糊推理就是一种模糊变换,它将输入变量模糊集变换为输出变量的模糊集,实现论域的转换。
工程上为了便于微机实现,通常采用“或”运算处理这种较为简单的推理方法。
Mamdani 推理方法是一种广泛采用的方法。
它包含三个过程:隶属度聚集、规则激活和输出总合。
模糊控制器的体系结构如图1所示。
图1 模糊控制器的体系结构
四、实验步骤
(1)对循环流化床锅炉床温,对象模型为
()()1140130120
++s s
采用simulink 图库,实现常规PID 和模糊自整定PID 。
(2)确定模糊语言变量及其论域:模糊自整定PID 为2输入3输出的模糊控制器。
该模糊控制器是以|e|和|ec|为输入语言变量,Kp 、Ki 、Kd 为输出语言变量,其各语言变量的论域如下:
误差绝对值:e={0,3,6,10};
误差变化率绝对值:ec={0,2,4,6};
输出Kp:Up={0,0.5,1.0,1.5};
输出Ki:Ui={0,0.002,0.004,0.006};
输出Kd:Ud={0,3,6,9}。
(3)语言变量值域的选取:输入语言变量|e|和|ec|的值域取值“大”(B)、“中”(M)、“小”(s)和“零”(Z) 4种;输出语言变量Kp、Ki、Kd的值域取值为“很大”(VB)、“大”(B)、“中”(M)、“小”(s) 4种。
(4)规则的制定:根据PID参数整定原则及运行经验,可列出输出变量Kp、Ki、Kd
的控制规则表。
(5)推理方法的确定
隐含采用“mamdani”方法:max-min;
推理方法,即“min”方法;
去模糊方法:面积中心法;
选择隶属函数的形式:三角型。
由此,利用FUZZYTOOLS的GUI工具建立模糊控制器(PID_auot.fis)。
之后,在Simulink 环境下,构建模糊自整定PID和常规PID控制系统,如图2。
图2 模糊自整定PID和常规PID控制仿真系统
(6)给定输入为阶跃信号,运行程序,记录实验数据和控制曲线。
(7)比较两种控制器的控制效果;
(8)当通过改变模糊控制器的比例因子时,分析系统响应有什么变化?
五、实验报告要求
给出模糊自整定 PID 控制系统的设计过程和仿真结构图,记录试验数据和曲线,分析试验结果。
六、思考题
1、模糊控制器中隶属函数形式、推理方法、去模糊方法的改变、对控制效果有什么影响?
2、模糊控制规则如何建立?。