模糊控制程序实例
模糊控制案例001

10) 11) 12) 13) 14) 15) 16) 17) 18) 19)
If E=Z and EC=PB or PS then U=PS If E=Z and EC=Z then U=Z If E=NS and EC=NB or NS then U=Z If E=NS and EC=Z or PS then U=PS If E=NS and EC=PB then U=PM If E=NM and EC=NB then U=PS If E=NM and EC=Z or NS then U=PM If E=NB and EC=NS or NB then U=PM If E=NM and EC=PB or PS then U=PB If E=NB and EC=Z or PS or PB then U=PB
以不是,甚至可以不是一个整数,经变
换后,是基本论域上的元素。
• 模糊控制的特点 所谓的模糊控制,既不是指被控制的 对象是模糊的,也不是模糊控制器是不确 定的,模糊控制有着自己的一套精确的理 论和算法。所谓的模糊是指在表示知识, 概念上的模糊性。虽然模糊控制器的算法 是通过模糊语言描述的,但它所完成的是 一项完全确定性的工作。
表4 模糊控制规则表格
E Ai
U Ck EC Bj
A1 PB
NM C6 R2 NB C7
A2 PM
NS C5 R4 NM C6 R5 NB C7 R3
A3 PS
Z C4 R6 NS C5 R7 NM C6 R6
A4 Z
PS C3 R10 Z C4 R11 NS C5 R9
A5 NS
PM C2 R14 PS C3 R13 Z C4 R12
A6 NM
PB C1 R18 PM C2 R16 PS C3 R15
模糊控制应用实例

模糊控制应用实例模糊控制是一种基于模糊逻辑的控制方法,它能够处理模糊的输入和输出,使得控制系统具有更好的鲁棒性和适应性。
下面将介绍一个模糊控制的应用实例。
某工厂的生产线上有一台机器人,它需要根据生产线上的物品进行分类和分拣。
由于生产线上的物品形状、颜色、大小等特征存在一定的模糊性,传统的控制方法很难实现准确的分类和分拣。
因此,工厂决定采用模糊控制方法来解决这个问题。
首先,需要对机器人的控制系统进行建模。
假设机器人的控制系统包括三个输入变量和一个输出变量。
其中,三个输入变量分别为物品的大小、颜色和形状,输出变量为机器人的动作,包括分类和分拣两种动作。
接下来,需要确定输入变量和输出变量的模糊集合和模糊规则。
假设物品的大小、颜色和形状分别属于三个模糊集合:小、中、大;红、绿、蓝;圆、方、三角。
输出变量也分别属于两个模糊集合:分类、分拣。
根据这些模糊集合,可以确定一些模糊规则,例如:如果物品大小为小且颜色为红且形状为圆,则机器人动作为分类;如果物品大小为中且颜色为绿且形状为方,则机器人动作为分拣;如果物品大小为大且颜色为蓝且形状为三角,则机器人动作为分类。
最后,需要进行模糊推理和模糊控制。
当机器人接收到一个物品时,它会根据物品的大小、颜色和形状,将它们映射到对应的模糊集合中。
然后,根据模糊规则进行模糊推理,得到机器人的动作。
最后,根据机器人的动作,控制机器人进行分类或分拣。
通过模糊控制方法,机器人可以更准确地分类和分拣物品,提高生产效率和质量。
同时,模糊控制方法还具有较好的鲁棒性和适应性,能够应对物品特征的变化和噪声的干扰。
总之,模糊控制是一种有效的控制方法,它能够处理模糊的输入和输出,使得控制系统具有更好的鲁棒性和适应性。
在工业生产、交通运输、医疗健康等领域都有广泛的应用。
模糊控制程序实例

5.2.2 .6 模糊控制器设计实例1 、单输入模糊控制器的设计【例 5.12 】已知某汽温控制系统结构如图 5.10 所示,采用喷水减温进行控制。
设计单输入模糊控制器,观察定值扰动和内部扰动的控制效果。
图 5.10 单回路模糊控制系统按表 5-2 确定模糊变量 E 、 U 的隶属函数,按表 5-3 确定模糊控制规则,选择温度偏差 e 、控制量 u 的实际论域:,则可得到该系统的单输入模糊控制的仿真程序如 FC_SI_main.m 所示,仿真结果如图 5.11 所示。
设温度偏差 e 、控制量 u 的实际论域:,选择 e 、 u 的等级量论域为量化因子。
选择模糊词集为 { NB,NS,ZO,PS,PB } ,根据人的控制经验,确定等级量 E , U 的隶属函数曲线如图 5-8 所示。
根据隶属函数曲线可以得到模糊变量 E 、 U 的赋值表如表 5-3 所示。
图5-8 E ,U 的隶属函数曲线表 5-3 模糊变量 E 、 U 的赋值表( μ )-3 -2 -1 0 1 2 3 等级量μE 、 UPB 0 0 0 0 0 0.5 1 PS 0 0 0 0 1 0.5 0 ZO 0 0 0.5 1 0.5 0 0 NS 0 0.5 1 0 0 0 0 NB 1 0.5 0 0 0 0 0依据人手动控制的一般经验,可以总结出一些控制规则,例如:若误差 E 为 O ,说明温度接近希望值,喷水阀保持不动;若误差 E 为正,说明温度低于希望值,应该减少喷水;若误差 E 为负,说明温度高于希望值,应该增加喷水。
若采用数学符号描述,可总结如下模糊控制规则:若 E 负大,则 U 正大;若 E 负小,则 U 正小;若 E 为零,则 U 为零;若 E 正小,则 U 负小;若 E 正大,则 U 负大。
写成模糊推理句 :if E =NB then U =PBif E =NS then U =PSif E=ZO then U=ZOif E =PS then U =NSif E =PB then U =NB由上述的控制规则可得到模糊控制规则表,如表 5-4 所示。
模糊控制在matlab中的实例

模糊控制在matlab中的实例模糊控制(模糊逻辑控制)是一种基于模糊数学理论的控制方法,它可以用于控制系统的稳定性、精度和响应速度等方面的优化。
在MATLAB 中,可以使用模糊逻辑工具箱(FLUS)来应用模糊控制。
以下是一个简单的实例,展示了如何使用 MATLAB 中的模糊逻辑工具箱来对温度控制系统进行控制:首先,我们需要创建一个温度控制系统,该系统将使用模糊控制来控制传感器的读数。
假设我们有四个传感器,分别为温度传感器、湿度传感器、压力和传感器,每个传感器读数为实数。
```matlab% 创建模型T = [120 100 80 50]; % 温度控制器输出R1 = [1.2 0.8 0.4 0.2]; % 湿度控制器输出R2 = [0.9 0.1 0.3 0.5]; % 压力控制器输出R3 = [1.4 0.6 0.2 0.1]; % 传感器误差P1 = [125 125 125 125]; % 温度控制器输入P2 = [100 100 90 80]; % 湿度控制器输入P3 = [85 85 80 75]; % 压力控制器输入F1 = [0.3 0.2 0.1 0.1]; % 温度控制器输出F2 = [0.4 0.3 0.2 0.1]; % 湿度控制器输出F3 = [0.5 0.4 0.3 0.1]; % 压力控制器输出y1 = [100 85 75 60]; % 实际温度y2 = [120 95 80 70]; % 实际湿度y3 = [135 110 90 80]; % 实际压力% 创建模糊控制器go1 = @(t,u,v) if t > 100 then ((1-v)*F1 + v*R1 +(1+v)*R2)/(1-v)*y1 else 0;go2 = @(t,u,v) if t < 50 then ((1-v)*F3 + v*R1 +(1+v)*R2)/(1-v)*y2 else 0;go3 = @(t,u,v) if t == 0 then ((1-v)*F1 + v*R1 +(1+v)*R2)/(1-v)*y3 else 0;% 创建模糊控制器的优化器var = [0 0 0 0];go1(0,:,:) = var;matlab.模糊控制.优化器.LevenbergMarquardt(var,go1);% 运行模糊控制器[t,u,v] = ode45(go1,[0 1],[120 100 80 50],y1);% 输出结果disp(["实际温度:" num2str(t)]);disp(["实际湿度:" num2str(u)]);disp(["实际压力:" num2str(v)]);```在这个例子中,我们使用 MATLAB 中的 ode45 工具箱来拟合温度控制器和湿度控制器的输出响应函数。
模糊控制实例

x2 2 x5 A1 ( x ) 3 , 8 x 5 x 8 3
y 5 B1 ( y ) 3 11 y 3 z 1 C1 ( z ) 3 7 z 3 5 y 8 , 8 y 11
计算机控制算法
属函数 C ( z ) 为:
(1)以连续型重心法作为解模糊化机构:首先找出
因此
z 1 1 z 3 3 2 3 z 5 3 7 z C ( z ) 5 z 6 3 1 6 z 8 3 9 z 8 z9 3 3 z 1 52 67 z 81 99 z zdz zdz zdz zdz zdz 1 3 5 6 8 3 3 3 3 3 z 3 z 1 52 67 z 81 99 z dz dz dz dz 1 3 3 3 5 3 6 3 8 3 dz 28 16 49 28 25 18 3 18 6 18 2 4 1 2 1 3 3 2 3 6 4.7
{负大,负中,负小,负零,正零,正小,正中,正大}
{NB,NM,NS,NO,PO,PS,PM,PB}
第3章
计算机控制算法
2.变量的模糊化
基本论域:某个变量变化的实际范围 误差的基本论域为 [ xe , xe ] 误差变化的基本论域为[ xc , xc ] 输出变量的基本论域为[ yu , yu ]
变量的模糊子集论域 {n, n 1,
,0,
, n 1, n}
基本论域到模糊子集论域的转换公式
2n a b y x ba 2
模糊化就是将清晰的某个输入变量按隶属度转换到与 之相对应的模糊量的过程。
第3章
计算机控制算法
模糊控制应用示例讲解

0.4
0.2
0
-3
-2
NS
ZR
PS
-1
0
1
PB
2
u3
e de NB NS ZR PS PB
模糊推理规则
NB NS ZR PS PB
PB PB PS PS ZR PB PS PS ZR ZR PS PS ZR ZR NS PS ZR ZR NS NS ZR ZR NS NS NB
模糊控制系统设计
% Example 3.8 % 典型二阶系统的模糊控制 % %被控系统建模 num=20; den=[1.6,4.4,1]; [a1,b,c,d]=tf2ss(num,den); x=[0;0];
第5次课
例1:工业工程控制
例2:典型二阶环节 的模糊控 制
例1: 工业过程
例1: 某一工业过程要根据测量的温度 (t)和压力(p)来确定阀门开启的角
度: f (t, P) 这种关系很难用数
学模型精确描述。实际中由有经验的操 作员完成,因此通常可设计模糊控制器 取而代之。
输入输出变量的论域
0
0
0.5
1
1.5
2
2.5 压力 3
阀门开启角度的模糊隶属度 函数
“负” “零” “正”
1 0.8 0.6 0.4 0.2
0 -10 -8 -6 -4 -2 0 2 4 6 8 10
角度增量
隶属度函数
模糊推理规则库
模糊推理规则有3条:
If 温度“冷” and 压力“高”,则阀门角 度增量为“正”
If 温度“热” and 压力“高”,则阀门角 度增量为“负”
If 压力“正常”,则阀门角度增量为“零 ”
模糊控制算法实例解析(含代码)

模糊控制算法实例解析(含代码)
首先来看一个实例,控制进水阀S1和出水阀S2,使水箱水位保持在目标水位O处。
按照日常操作经验,有以下规则:
1、若当前水位高于目标水位,则向外排水,差值越大,排水越快;
2、若当前水位低于目标水位,则向内注水,差值越大,注水越快;
3、若当前水位和目标水位相差很小,则保持排水速度和注水速度相等。
下面来设计一个模糊控制器
1、选择观测量和控制量
一般选择偏差e,即目标水位和当前水位的差值作为观察量,选取阀门开度u为控制量。
2、输入量和输出量的模糊化
将偏差e划分为5个模糊集,负大(NB)、负小(NS)、零(ZO)、正小(PS)、正大(PB),e为负表示当前水位低于目标水位,e 为正表示当前水位高于目标水位。
设定e的取值范围为[-3,3],隶属度函数如下。
偏差e对应的模糊表如下:隶属度
变化等级-3 -2
-1
1
2
3模糊集
PB 0 0 0 0 0 0.5
1PS 0
0 0.5 1 0.5 0ZO
0 0.5 1 0.5 0
0NS
0 0.5 1 0.5 0
0NB
0.5 0 0 0 0 0。
模糊控制应用实例

模糊控制应用实例1. 引言模糊控制是一种基于模糊逻辑的控制方法,它能够处理不确定性和模糊性问题。
本文将介绍模糊控制的应用实例,包括模糊控制在机器人导航、温度控制和交通信号灯控制等方面的应用。
2. 模糊控制在机器人导航中的应用2.1 模糊控制器设计在机器人导航中,模糊控制可以用于控制机器人的运动路径。
首先,需要设计一个模糊控制器,该控制器包括输入和输出变量以及一组模糊规则。
输入变量可以是机器人与障碍物的距离、机器人当前的角度等。
输出变量通常是机器人的速度和转向角度。
2.2 模糊控制器实现在机器人导航中,可以使用传感器来获取机器人与障碍物的距离和机器人当前的角度。
这些信息可以作为输入变量输入到模糊控制器中。
模糊控制器根据一组模糊规则来计算机器人的速度和转向角度,然后将其作为输出变量输出给机器人的控制系统。
2.3 模糊控制器优势相比于传统的控制方法,模糊控制在机器人导航中具有一定的优势。
首先,模糊控制能够处理不确定性和模糊性问题,使得机器人能够更好地适应复杂的环境。
其次,模糊控制可以通过调整模糊规则和输入变量的权重来优化机器人的导航性能。
最后,模糊控制可以很容易地与其他控制方法结合使用,以实现更高级的导航功能。
3. 模糊控制在温度控制中的应用3.1 温度控制系统在温度控制中,模糊控制可以用于调节加热器或制冷器的功率,以维持目标温度。
温度控制系统通常包括一个温度传感器、一个控制器和一个执行器。
温度传感器用于测量当前的温度,控制器根据温度的变化来调整执行器的功率。
3.2 模糊控制器设计在温度控制中,需要设计一个模糊控制器来根据当前的温度误差和误差变化率来调整执行器的功率。
模糊控制器的输入变量可以是温度误差和误差变化率,输出变量可以是执行器的功率。
通过选择适当的模糊规则和调整输入变量的权重,可以实现温度的稳定控制。
3.3 模糊控制器实现在温度控制中,可以使用一个模糊控制器来计算执行器的功率。
模糊控制器根据一组模糊规则来决定执行器的功率大小,然后将其输出给执行器。
模糊pid控制实例

模糊pid控制实例以下是一个模糊PID控制的简单实例:假设我们要控制一台电机的转速,目标是使电机转速尽可能稳定在设定值附近。
根据模糊PID控制器的工作原理,我们可以进行以下步骤:1. 设定目标值和初始设定值:设定电机转速的目标值,例如1000转/分钟。
同时设置初始的PID参数。
- 设定值(SP,Set Point)= 1000 RPM- 比例增益 (Kp) = 1- 积分时间(Ti) = 1- 微分时间(Td) = 0.12. 测量电机转速:使用传感器或编码器来测量电机当前的转速,得到当前的反馈值。
3. 模糊控制规则建立:基于当前误差(设定值减去反馈值)和误差的变化率,建立一组模糊逻辑规则,例如: - 如果误差为"NB"并且误差变化率为"PB",则输出为"NB"。
- 如果误差为"NB"并且误差变化率为"NM",则输出为"NM"。
- ...4. 模糊推理和模糊输出:根据模糊逻辑规则,进行模糊推理,即将当前的误差和误差变化率映射到模糊输出的隶属度值上。
5. 解模糊:将模糊输出映射回具体的控制量,例如根据模糊输出计算PID控制器的输出量。
6. 更新PID参数:根据误差的变化和模糊输出的结果来更新PID控制器的参数,例如根据误差的大小和变化率来调整PID参数,以使控制更加精确。
7. 反馈控制:将PID控制器的输出量应用于电机,调整电机的转速。
8. 循环控制:循环执行上述步骤,不断更新PID参数和反馈控制,使得电机转速尽可能稳定在设定值附近。
需要注意的是,以上是一个简单的示例,实际的模糊PID控制根据具体的应用情况和系统特点会有所差异。
参数的选择和模糊规则的建立都需要根据具体的控制对象进行优化和调整。
此外,在实际应用中,还需要考虑到系统的鲁棒性、性能指标等因素。
模糊控制详细讲解实例

一、速度控制算法: 首先定义速度偏差-50 km/h ≤e (k )≤50km/h ,-20≤ec (i )= e (k )- e (k-1)≤20,阀值e swith =10km/h设计思想:油门控制采用增量式PID 控制算法,刹车控制采用模糊控制算法,最后通过选择规则进行选择控制量输入。
选择规则:e (k )<0 ① e (k )>- e swith and throttlr_1≠0 选择油门控制② 否则:先将油门控制量置0,再选择刹车控制 0<e (k ) 先选择刹车控制,再选择油门控制 e (k )=0 直接跳出选择刹车控制:刹车采用模糊控制算法1.确定模糊语言变量 e 基本论域取[-50,50],ec 基本论域取[-20,20],刹车控制量输出u 基本论域取[-30,30],这里我将这三个变量按照下面的公式进行离散化:)]2(2[ba x ab n y +--= 其中,],[b a x ∈,n 为离散度。
E 、ec 和u 均取离散度n=3,离散化后得到三个量的语言值论域分别为:E=EC=U={-3,-2,-1,0,1,2,3}其对应语言值为{ NB,NM,NS,ZO, PS,PM,PB } 2.确定隶属度函数E/EC 和U 取相同的隶属度函数即:E EC U(,5,1)(,3,2,0)(,3,1,1)u (,2,0,2)(,1,1,3)(,0,2,3)(,1,5)g x trig x trig x trig x trig x trig x g x ∧∧--⎧⎪--⎪⎪--⎪=-⎨⎪-⎪⎪⎪⎩说明:边界选择钟形隶属度函数,中间选用三角形隶属度函数,图像略实际EC 和E 输入值若超出论域范围,则取相应的端点值。
3.模糊控制规则由隶属度函数可以得到语言值隶属度(通过图像直接可以看出)如下表: 表1:E/EC 和U3.模糊推理由模糊规则表3可以知道输入E 与EC 和输出U 的模糊关系,这里我取两个例子做模糊推理如下:if (E is NB) and (EC is NM) then (U is PB) 那么他的模糊关系子矩阵为:1211U EC E R R R R ⨯⨯=其中,711)0,,0,5.0,1(0⨯== P R E ,即表1中NB 对应行向量,同理可以得到,712)0,,0,5.0,1,0(1⨯== P R EC , 711)0,,0,5.0,1(0⨯== P R U77210000000000005.05.00005.010)0,,0,5.0,1,0()0,,0,5.0,1(⨯⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⨯=⨯TEC E R R 49121)0,,0,5.0,5.0,0,0,0,0,0,5.0,1,0(⨯= EC E R7491211000000005.05.00005.0100000)0,,0,5.0,1()0,,5.0,1,0(⨯⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⨯=⨯= TU EC E R R Rif (E is NVB or NB) and (EC is NVB) then (U is PVB)1112U EC E R R R R ⨯⨯= 结果略按此法可得到27个关系子矩阵,对所有子矩阵取并集得到模糊关系矩阵如下:)27,,2,1(21 ==i R R R R i 由R 可以得到模拟量输出为:()U E EC R =⨯4.去模糊化由上面得到的模拟量输出为1×7的模糊向量,每一行的行元素(u (z ij ))对应相应的离散变量z j ,则可通过加权平均法公式解模糊:)21,,2,1()()(210210 ===∑∑==j i zu z zu u i iji jij从而得到实际刹车控制量的精确值u 。
模糊控制在matlab中的实例

模糊控制在matlab中的实例以下是一个模糊控制的MATLAB实例:假设我们要控制一个水平摆,使其保持在垂直状态。
我们可以使用模糊控制器来实现这个任务。
首先,我们需要定义输入和输出变量。
对于输入变量,我们可以选择摆的角度和摆的角速度,对于输出变量,我们可以选择施加到摆上的力。
```matlab% 定义输入变量angle = fuzzymf("angle", [-90 -45 0 45 90], "trimf", [-90 -45 0 45 90]);angular_velocity = fuzzymf("angular_velocity", [-10 -5 0 5 10], "trimf", [-10 -5 0 5 10]);% 定义输出变量force = fuzzymf("force", [-20 -10 0 10 20], "trimf", [-20 -10 0 10 20]);```接下来,我们定义模糊规则。
这些规则描述了如果摆的角度和角速度是什么,我们应该施加多少力,以使摆保持垂直。
```matlab% 定义模糊规则rules = [1 1 3 1;1 2 4 1;1 3 5 2;2 1 2 1;2 23 1;2 3 4 2;3 1 1 2;3 2 2 1;3 3 3 1;4 1 1 3;4 2 2 2;4 3 3 1;5 1 1 3;5 2 2 2;5 3 4 3];% 定义模糊推理引擎fis = mamfis("Name", "Pendulum Fuzzy Controller", "NumInputs", 2, "NumOutputs", 1);fis.Inputs(1).MembershipFunctions = angle;fis.Inputs(2).MembershipFunctions = angular_velocity; fis.Outputs(1).MembershipFunctions = force;fis.Rules = rules;```最后,我们可以使用模糊控制器来控制水平摆。
3.5模糊控制应用实例

VL(z) (z 40) / 20
0 z 10 0 z 10
10 z 25 10 z 25
25 z 40 25 z 40
40 z 60 40 z 60
图3.5.3 洗涤时间隶属函数
6
4. 建立模糊控制规则
IF 污泥多 AND 油脂多,THEN 洗涤时间长
洗涤时间
泥污度
3) 规则前件隶属度的聚集
Rule1: min(4 5,3 5) 3 5 Rule2 : min(4 5,2 5) 2 5 Rule3 : min(1 5,3 5) 1 5 Rule4 : min(1 5,2 5) 1 5
9
4) 每条规则的推理输出
Rule1 : min(3 5, M (z)) Rule2 : min(2 5, L(z)) Rule3 : min(1 5, L(z)) Rule4 : min(1 5 , VL(z))
LG(y)(y50)/50
0y50 0y50
50y100 50y100
图3.5.2 油性肮脏度隶属函数
5
VS(z) (10 z) / 10
S
(z)
z /10 (25 z)
/
15
洗
涤
时
= 间 M
(
z)
(z 10) / 15 (40 z) / 15
L
(z)
(z 25) / 15
(60
z)
/
20
3.5 模糊控制应用实例——洗衣机的 模糊控制
一、重点解决三个问题:
1.
物理量的测定
2.
控制量的确定
3.
控制知识库
1.
二、关键技术:
1.
布质、布量传感器
模糊控制在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中的实例

模糊控制在matlab中的实例模糊控制是一种基于经验知识的控制方法,与传统的精确控制方法不同,它允许对系统的行为进行模糊描述,并通过一套模糊规则来对系统进行控制。
在实际应用中,模糊控制常常用于处理非线性、复杂和不确定的系统,例如温度控制、汽车制动系统等。
在MATLAB中,可以通过使用Fuzzy Logic Toolbox工具箱来实现模糊控制。
下面以一个简单的温度控制系统为例,来介绍如何在MATLAB中进行模糊控制的实现。
首先,需要定义模糊控制器的输入和输出变量,以及它们的模糊集合。
在温度控制系统中,可以定义温度作为输入变量,定义加热功率作为输出变量。
可以将温度的模糊集合划分为"冷"、"适中"和"热"三个模糊集合,将加热功率的模糊集合划分为"低"、"中"和"高"三个模糊集合。
```temperature = readfis('temperature.fis');temp_input = [-10, 40];temp_output = [0, 100];temperature_inputs = ["冷", "适中", "热"];temperature_outputs = ["低", "中", "高"];```然后,需要定义模糊规则。
模糊规则用于根据输入变量的模糊集合和输出变量的模糊集合之间的关系来确定控制规则。
例如,当温度为"冷"时,加热功率应该为"高"。
可以根据经验知识定义一系列模糊规则。
```rules = ["冷", "高";"适中", "中";"热", "低";];```接下来,需要定义模糊控制器的输入和输出变量值。
模糊控制的Matlab仿真实例分析

.
18
在Simulink编辑窗口左边的模块浏览区可以看 到在水箱仿真系统中包括水箱子模型、阀门子 模型及 PID 控制子模型。直接在浏览区中点 击或右键点击它们,并在弹出菜单中选择 [ look under mask 】 ,可以看到这些模块实 现的细节结构,如图 所示。
.
19
.
20
.
21
这里暂时不讨论具体的系统模型的构造问题,我们可 以先在这个已经建立好的系统模型上进行修改,体验 模糊逻辑与仿真环境结合使用的优势。
字分别代表服务和食
物的质量( 10 表示
非常好, 0 表示非常
差),这时小费与它
.
们之间的关系又应4当8
如何反映呢?
假设是二元线性关系 用下列 MATLAB 语句可绘出下图 。
.
49
.
50
可以看到,如果不考虑服务质量因素比食物质量因素对 于小费的支付占有更大的比重,上面的关系图形已经能 够反映一些实际的情况了。假如希望服务质量占小费的 80 % , 而食物仅占 20 %。这里可以设定权重因子:
注意将鼠标箭头放置图内,移动鼠标可得到不同 角度的视图,如下图所示。
.
15
Matlab模糊控制仿真演示例子
模型sltank.mdl ——使用模糊控制器对水箱水位进 行控制。
假定水箱有一个进水口和一个出水口,可以通过控 制一个阀门来控制流入的水量(即水位高度),但 是流出的速度取决于出水口的半径(定值)和水箱 底部的压力(随水箱中的水位高度变化)。系统有 许多非线性特性。
真。
.
31
学习 MATLAB 仿真工具的一个快速有效的方法就 是学习示例模型,通过看懂这些模型和模块的功
能以及搭建过程,可以很快熟悉和掌握如何使用 MATLAB 仿真工具来设计和搭建自己独特的模型。
模糊控制在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来定义输入和输出变量以及规则,并运行模糊推理系统来计算输出值。
模糊控制应用实例

• 2)输出变量
图7.15 输出变量旳隶属函数
• (4)解模糊判决成果 • 据此又细提成如下旳洗涤控制: • ①水流9种; • ②洗涤时间16种; • ③清洗时间6种; • ④脱水时间6种。
• 7.2 智能手机充电器
• 7.2.1 智能充电原理
• 根据这些控制规律,就可制定出如下满足 模糊控制要求旳控制规则:
• 规则1:假如NC=+3时R=VG且C=G且 A=VG,那么NC=3;
• 规则2:假如NC=+2时R=VG且C=G且 A=VG,那么NC=2;
• 规则3:假如NC=+1时R=VG且C=G且 A=VG,那么NC=1;
• 规则4:假如NC=0时 R=VG且A=G,那 么
度
• C:(Comfort of riding)乘坐舒适性 • E:(Energy saving)节省能源 • R:(Running time )行驶时间 • S:(Safety)安全性 • T:(Traceability of speed)速度跟踪
性
• 用5个符号表达模糊概念旳等级: • VG:(Very Good)非常好 • G:(Good)好 • M :(Medium)中档 • B:(Bad)差 • VB:(Very Bad)非常差 • (1)停车精确度 • (2)乘坐舒适度 • (3)节省能源
• 规则1:假如N =0时,S=G且C=G且E=G, 那么N=0;
• 规则2:假如N =P7时,S=G且C=G且 T=B,那么N=P7;
• 规则3:假如N=B7时,S=B,那么N=(N (t)+Bmax)/2;
• 规则4:假如NC=4时,S=G且C=G且 T=VG,那么NC=4;
模糊控制的应用实例与分析

模糊控制的应用实例与分析模糊控制是一种针对模糊系统进行控制的方法,它通过运用模糊逻辑和模糊规则来进行控制决策。
模糊控制广泛应用于各个领域,以下是几个不同领域的模糊控制应用实例和相关分析。
1.模糊控制在温度控制系统中的应用:温度控制系统是模糊控制的一个常见应用领域。
传统的温度控制系统通常使用PID控制器,但是由于环境和外部因素的干扰,PID控制器往往不能很好地应对这些复杂情况。
而模糊控制可以通过建立模糊规则来实现对温度的精准控制。
例如,如果设定的温度为25度,模糊控制系统可以根据当前的温度和温度变化率等信息,通过判断当前温度是偏低、偏高还是处于目标温度范围内,然后根据这些模糊规则来决定是否增加或减少加热器的功率,从而实现温度的稳定控制。
2.模糊控制在交通信号灯控制中的应用:交通信号灯控制是一个动态复杂的系统,传统的定时控制往往不能适应不同时间段、不同拥堵程度下的交通流需求。
而模糊控制可以通过模糊规则来根据交通流的情况进行动态调整。
例如,交通信号灯的绿灯时间可以根据路口的车辆数量和流动情况进行自适应调整。
当车辆较多时,绿灯时间可以延长,以减少拥堵;当车辆较少时,绿灯时间可以缩短,以提高交通效率。
模糊控制可以将车辆数量和流动情况等模糊化,然后利用模糊规则来决策绿灯时间,从而实现交通信号灯的优化控制。
3.模糊控制在飞行器自动驾驶中的应用:飞行器自动驾驶是一个高度复杂的系统,传统的控制方法往往不能满足复杂的空中飞行任务。
模糊控制可以通过模糊规则来根据飞行器的状态和目标任务要求进行决策。
例如,飞行器的高度控制可以利用模糊控制来应对不同高度要求的任务。
通过将目标高度和当前高度模糊化处理,然后利用模糊规则来决策飞行器的升降舵和发动机功率等参数,从而实现对飞行器高度的精准控制。
综上所述,模糊控制作为一种针对模糊系统进行控制的方法,具有很大的应用潜力。
它可以通过建立模糊规则来解决传统控制方法难以解决的复杂问题。
虽然模糊控制存在一些问题,如规则的设计和调试等工作比较困难,但是随着计算机技术的发展和模糊控制理论的不断完善,模糊控制在各个领域中的应用将会越来越广泛。
模糊控制应用实例

模糊控制应用实例模糊控制是一种部分基于逻辑的控制方法,它通过将模糊集合理论应用于控制系统中的输入和输出来模拟人类决策的过程。
与传统的精确控制方法相比,模糊控制更适合于处理模糊的、不确定的和复杂的系统。
在现实世界中,模糊控制广泛应用于各个领域,例如工业自动化、交通控制、飞行器导航等。
在本文中,我将介绍几个模糊控制的应用实例,以帮助读者更好地了解其实际应用价值。
1. 交通信号灯控制系统交通信号灯控制是一个典型的实时决策问题,涉及到多个信号灯的切换以及车辆和行人的流量控制。
传统的定时控制方法往往无法适应实际交通状况的变化,而模糊控制可以根据不同时间段和交通流量的变化,动态地调整信号灯的切换时间和优先级,以实现交通拥堵的缓解和行车效率的提高。
2. 温度控制系统在许多工业生产过程中,温度的精确控制对产品质量和产量的影响非常重要。
模糊控制可以根据温度传感器采集到的实时数据,结合事先建立的模糊规则库,调整加热或制冷设备的输出,以实现温度的稳定和精确控制。
与传统的PID控制方法相比,模糊控制对于非线性和时变的系统具有更好的适应性和鲁棒性。
3. 汽车制动系统汽车制动系统是保证驾驶安全的重要组成部分,而制动力的控制是其关键。
模糊控制可以根据制动踏板的压力以及车辆的速度和加速度等信息,动态地调整制动力的输出,以实现舒适而有效的制动。
模糊控制还可以考虑路面的湿滑情况和车辆的负荷情况等因素,自适应地调整制动力的分配,提高制动系统的性能和安全性。
4. 智能家居系统智能家居系统通过感应器、执行器和控制器等组件,实现对家庭设备和环境的智能控制。
模糊控制可以根据家庭成员的习惯和偏好,结合各种传感器采集到的数据,自动地调节室内温度、湿度、光线等参数,提高居住舒适度并节约能源。
在夏天的炎热天气中,模糊控制可以根据室内外温度、湿度和人体感觉来控制空调的开关和风速,实现智能舒适的环境控制。
总结回顾:模糊控制在各个领域都有着广泛的应用。
它通过基于模糊集合理论的推理和决策方法,实现对复杂系统的智能控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.2.2.6模糊控制器设计实例1、单输入模糊控制器的设计【例5.12】已知某汽温控制系统结构如图 5.10所示,采用喷水减温进行控制。
设计单输入模糊控制器,观察定值扰动和内部扰动的控制效果。
图5.10单回路模糊控制系统按表5-2确定模糊变量E U的隶属函数,按表5-3确定模糊控制规则,选择温度偏差e、控制量u 的实际论域:e =u € [ —1.5,1.5],则可得到该系统的单输入模糊控制的仿真程序如FC_SI_main.m所示,仿真结果如图5.11所示。
设温度偏差e、控制量u的实际论域:e = u • [-1.5,1.5],选择e、u的等级量论域为E =U ={-3^2,-1,0, 1, 2, 3}2汇3量化因子K 1 2。
1.5 -(-1.5)选择模糊词集为{NB,NS,ZO,PS,PB},根据人的控制经验,确定等级量E,U的隶属函数曲线如图5-8所示。
根据隶属函数曲线可以得到模糊变量E、U的赋值表如表5-3所示。
图5-8 E, U的隶属函数曲线依据人手动控制的一般经验,可以总结出一些控制规则,例如: 若误差E为0,说明温度接近希望值,喷水阀保持不动;若误差明温度低于希望值,应该减少喷水;若误差明温度高于希望值,应该增加喷水。
若采用数学符号描述,可总结如下模糊控制规则:若E负大,则U正大;若E负小,贝U U正小;若E为零,则U为零;若E正小,则U负小;若E正大,则U负大。
写成模糊推理句:if E=NB then U=PBif E=NS then U=PSif E=Z0 then U=Z0if E=PS then U=NSif E=PB then U=NB由上述的控制规则可得到模糊控制规则表,如表5-4所示。
模糊控制规则实际上是一组多重条件语句,它可以表示从误差论域旦到控制量论域U的模糊关系R。
按着上述控制规则,可以得到该温度偏差与喷水阀门开度之间的模糊关系R:R=E U=(NB E PB U)U(NS E PS U)U(Z0E Z0U)U(PS E NS U)U(PB E NB U) 计算模糊关系矩阵R的子程序如F_Relation_1.m 所示。
■0 0 0 00 0.5 1.0〕0 00 00.5 0.5 0.50 0 0.5 0.5 1.0 0.5 0 00 0.5 1.0 0.5 0 0 00.5 1.0 0.5 0.5 0 0 0.5 0.5 0.50 0 0 0 】1.00.5一由此,可以得到各种输入时,模糊控制器的输出: 单输入时:例如:单输入时,设e=1.2,根据前面的等级量划分原则,其等级量E =PS =[O 0 0 0 1 0.5 0]。
根据式(5-5)可以得到:■0 0 00 0.5 1.0]0 0 0 00.5 0.5 0.50.5 0.5 1.0 0.5双输入时: U =(E EC) R (5-6) 三输入时:U =(E EC ECC) R(5-7)(5-5 )E 二V ,由表5-2可以查出U = 0 0 0 0 1 0.5 0 卜0 0 0.5 1.0 0.5 0 00 0.5 1.0 0.5 0.5 0 00.5 0.5 0.5 0 0 0 01.0 0.5 0 0 0 0 0一二[0.5 0.5 1.0 0.5 0.5 0 0]其模糊决策子程序如F_Deduce_1.m所示。
%单输入时模糊决策子程序F_Deduce_1.mfun ction FU=F_Deduce_1(fe,R, ne,nu)for i=1: nufor j=1: neif fe(j)<R(j,i) feu(j)=fe(j);elsefeu(j)=R(j,i);endendFU(i)=max(feu);endif Me(i,j)>Me(i-1,j);Fi=i;e nd;% 得到模糊语言值 endU=F_Deduce_1(Me(Fi,:),R ,n e, nu);% 调用模糊决策子程序%加权平均法判决控制器的输岀 Su=O;S=O; for i=-UM:UMSu=Su+i*U(i+UM+1);S=S+U(i+UM+1); endu=Ku*Su/S+ur; (%*************** x(1)=A1*x(1)-1.1*B1*u; x(2)=A1*x(2)+B1*x(1); x(3)=A1*x(3)+B1*x(2); x(4)=A1*x(4)+B1*x(3); y1(k)=x ⑷; u1(k)=u; t(k)=k*DT;if t(k)>800;ur=0.5;e nd;%800 秒后加入内扰endPlot(t,y1) hold on; plot(t,u1,'--')图5.11单输入模糊控制器的控制效果从上述的仿真结果可以看到,定值扰动时系统可以达到稳定,但是有很大的静差,不能满足 工程上的要求,究其原因是,模糊控制器实质上是一个具有继电器型非线性特性的控制器(如图 5.11中所示的u ),没有积分作用,对于有自平衡对象一定会产生静差,而且系统极容易产生震荡。
从图5.11就可看出,虽然设计的模糊控制器对定值扰动是稳定的,但对于内扰并不能使其稳定。
仿真计算被控对象********************非线性控制器的控制效果取决于各变量的论域及扰动量的大小 【",因此,模糊控制器的大范围工程应用还有许多问题需要研究。
2、双输入模糊控制器的设计【例5.13】对于图5.10所示的系统,设计双输入模糊控制器,观察定值扰动和内部扰动的控制 效果。
下面考虑两个输入的情况:设温度偏差e 、偏差变化率ec 及控制量u 的实际论域:e = ec = u :二[_1.5,1.5],选择它们的等级 量论域分别为E 二{-6, -5,-4, -3,-2, -1,-0, 0, 1, 2, 3, 4, 5, 6} EC 二{ -6, -5, -4, -3, -2, -1,0, 1, 2, 3, 4, 5, 6} U 二{-7,-6, -5,-4, -3,-2,-1,0, 1, 2, 3, 4, 5, 6, 7}假设选取E 的模糊变量词集为{NB,NM , NS, NO, PO, PS, PM , PB}选取模糊变量E 的赋值表如表5-5所示。
{NB,NM ,NS,ZO,PS, PM ,PB}选取模糊变量EC 的赋值表如表5-2所示,模糊变量U 的赋值表如表5-6所示。
量化因子K e,ec2 6 1.5-(-=4,K u2 7 匕1.5-(-1.5厂 3下面说明建立模糊控制规则表的基本思想。
首先考虑误差为负的情况,当误差(希望值减去温度值)为负大时(说明温度高于希望值),若误差变化率也为负,这时误差有增大的趋势,为尽快消除已有的负大误差并抑制误差变大,所以控制量的变化取正大(控制量增大,意味着喷水阀门开度增大,喷水量增加,使得温度下降,下同) 。
当误差为负而误差变化率为正时,系统本身已有减少误差的趋势,所以,为尽快消除误差而又不超调,应取较小的控制量。
当误差为负中时,控制量的变化应使误差尽快消除,基于这种原则,控制量的变化选取同误差为负大时相同。
当误差为负小时,系统接近稳态,若误差变化微小时,选取控制量变化为正中,以抑制误差往负方向变化;若误差变化为正时,系统本身有消除负小的误差的趋势,选取控制量变化为正小。
上述选取控制量变化的原则:当误差大或较大时,选择控制量以尽快消除误差为主;当误差较小时,选择控制量要注意防止超调,以系统稳定性为主要出发点。
按着上述控制规则,可以得到温度偏差及偏差变化率与喷水阀门开度之间的模糊关系R : R =(E U)Q(EC U )二E EC U=(NB E NB EC PB U)U(NM E NB EC PB U)U(NS E NB EC PM U )U ...................................其中角标E,EC u分别表示误差、误差变化率和控制量。
设e、ec、u的等级量分别为nfe、nfec、nfu,贝U R是一个nfe nfec行nfu列的矩阵。
计算模糊关系矩阵R的子程序如F_Relation_2.m 所示。
双输入时,先根据e、ec计算出相应的等级量E、EC,再根据表(5-2)查出相应的E, EC ,按式(5-6)计算出模糊控制器的输出。
其模糊决策子程序如F_Deduce_2.m所示。
%双输入时模糊决策子程序F_Deduce_2.mfunction FU=F_Deduce_2(fe,fec,R, n,n fe, nfec,nfu)%######################5计算E X EC#####################################n=0;for i=1: nfefor j=1: nfecn=n+1;if fe(i)<fec(j)feec( n)=fe(i);elsefeec( n)=fec(j);endendend%######################5计算(E x EC)。
R################################for 1=1: nfufor i=1: n 然后if feec(i)<R(i,l)fu(i)=feec(i);elsefu(i)=R(i,l);endFU(l)=max(fu);endend按着前面的设计过程,可以得到双输入模糊控制主程序,如FC_MI_main.m所示。
1图5.12双输入模糊控制器的控制效果双输入模糊控制器能使系统快速达到稳定,但是,仍然存在很大的静差,不满足工程需要。
与单输入模糊控制器一样,仍不能使内扰时稳定。
从上述的模糊控制器的设计过程可以看出,当选择了e、ec、u的基本论域、等级量(E、EC、U)论域、模糊量(E EC、U)论域及控制规则后,模糊关系R就已确定,因此,可以在进行实时控制前,把控制量 /全部算出,形成一个控制表,实时控制时,根据E和EC,从控制表中即可查找到相应的控制量U,这样可以大大提高实时控制时的计算速度。