模糊控制程序实例
- 格式:docx
- 大小:130.77 KB
- 文档页数:17
模糊控制应用实例模糊控制是一种基于模糊逻辑的控制方法,它能够处理模糊的输入和输出,使得控制系统具有更好的鲁棒性和适应性。
下面将介绍一个模糊控制的应用实例。
某工厂的生产线上有一台机器人,它需要根据生产线上的物品进行分类和分拣。
由于生产线上的物品形状、颜色、大小等特征存在一定的模糊性,传统的控制方法很难实现准确的分类和分拣。
因此,工厂决定采用模糊控制方法来解决这个问题。
首先,需要对机器人的控制系统进行建模。
假设机器人的控制系统包括三个输入变量和一个输出变量。
其中,三个输入变量分别为物品的大小、颜色和形状,输出变量为机器人的动作,包括分类和分拣两种动作。
接下来,需要确定输入变量和输出变量的模糊集合和模糊规则。
假设物品的大小、颜色和形状分别属于三个模糊集合:小、中、大;红、绿、蓝;圆、方、三角。
输出变量也分别属于两个模糊集合:分类、分拣。
根据这些模糊集合,可以确定一些模糊规则,例如:如果物品大小为小且颜色为红且形状为圆,则机器人动作为分类;如果物品大小为中且颜色为绿且形状为方,则机器人动作为分拣;如果物品大小为大且颜色为蓝且形状为三角,则机器人动作为分类。
最后,需要进行模糊推理和模糊控制。
当机器人接收到一个物品时,它会根据物品的大小、颜色和形状,将它们映射到对应的模糊集合中。
然后,根据模糊规则进行模糊推理,得到机器人的动作。
最后,根据机器人的动作,控制机器人进行分类或分拣。
通过模糊控制方法,机器人可以更准确地分类和分拣物品,提高生产效率和质量。
同时,模糊控制方法还具有较好的鲁棒性和适应性,能够应对物品特征的变化和噪声的干扰。
总之,模糊控制是一种有效的控制方法,它能够处理模糊的输入和输出,使得控制系统具有更好的鲁棒性和适应性。
在工业生产、交通运输、医疗健康等领域都有广泛的应用。
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 中,可以使用模糊逻辑工具箱(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 工具箱来拟合温度控制器和湿度控制器的输出响应函数。
模糊控制在matlab中的实例
MATLAB 是一种广泛使用的数学软件,可以用于模糊控制的研究和应用。
以下是一些在 MATLAB 中的模糊控制实例:
1. 模糊控制器的设计:可以通过建立模糊控制器的数学模型,使用 MATLAB 进行建模和优化,以实现精确的控制效果。
2. 模糊控制应用于电动机控制:可以使用 MATLAB 对电动机进行模糊控制,以实现精确的速度和位置控制。
3. 模糊控制在工业过程控制中的应用:在工业过程中,可以使用模糊控制来优化生产过程,例如温度控制、流量控制等。
4. 模糊控制在交通运输中的应用:在交通运输中,可以使用模糊控制来优化车辆的行驶轨迹和速度,以提高交通运输的安全性和效率。
5. 模糊控制在机器人控制中的应用:可以使用模糊控制来优化机器人的运动和操作,以实现更准确和高效的操作。
这些实例只是模糊控制应用的一部分,MATLAB 作为一种强大的数学软件,可以用于各种模糊控制的研究和应用。
模糊控制算法实例解析(含代码)
首先来看一个实例,控制进水阀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控制器的工作原理,我们可以进行以下步骤: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% 定义输入变量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;```最后,我们可以使用模糊控制器来控制水平摆。
模糊控制在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中,可以通过使用Fuzzy Logic Toolbox工具箱来实现模糊控制。
下面以一个简单的温度控制系统为例,来介绍如何在MATLAB中进行模糊控制的实现。
首先,需要定义模糊控制器的输入和输出变量,以及它们的模糊集合。
在温度控制系统中,可以定义温度作为输入变量,定义加热功率作为输出变量。
可以将温度的模糊集合划分为"冷"、"适中"和"热"三个模糊集合,将加热功率的模糊集合划分为"低"、"中"和"高"三个模糊集合。
```temperature = readfis('temperature.fis');temp_input = [-10, 40];temp_output = [0, 100];temperature_inputs = ["冷", "适中", "热"];temperature_outputs = ["低", "中", "高"];```然后,需要定义模糊规则。
模糊规则用于根据输入变量的模糊集合和输出变量的模糊集合之间的关系来确定控制规则。
例如,当温度为"冷"时,加热功率应该为"高"。
可以根据经验知识定义一系列模糊规则。
```rules = ["冷", "高";"适中", "中";"热", "低";];```接下来,需要定义模糊控制器的输入和输出变量值。
模糊控制在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。
5. 226模糊控制器设计实例1、单输入模糊控制器的设计【例5.12]己知某汽温控制系统结构如图 5. 10所示,采用喷水减温进行控制。
设计单输入模糊控图5. io单回路模糊控制系统按表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}量化因子K 2 31. 5 ( 1. 5)选择模糊词集为{NB,NS,Z0,PS,PB},根据人的控制经验,确定等级量E, U的隶属函数曲线如图5-8所示。
根据隶属函数曲线可以得到模糊变量E、U的赋值表如表5-3所示。
图5-8 E, U的隶属函数曲线r 0.51 (t 500)制器,依据人手动控制的一般经验,可以总结出一些控制规则,例如:若误差E 为0,说明温度接近希望值,喷水阀保持不动;若 误差 若误差 明温度低于希望值,应该减少喷水;明温度高于希望值,应该增加喷水。
若采用数学符号描述,可总结如下模糊控制规则:若E 负大,若E 负小,若E 为零,若E 正小,若E 正大, 则U 正大; 贝U U 正小; 则U 为零; 则U 负小;则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所示。
表5-4模糊控制规则表模糊控制规则实际上是一组多重条件语句,它可以表示从误差论域 旦到控制量论域U 的模糊关系按着上述控制规则,可以得到该温度偏差与喷水阀门开度之间的模糊关系 R :(NB E PB U ) U (NS E PS U ) U (Z0E ZO U ) U (PS E NS U ) U (PB E NB C )计算模糊关系矩阵R 的子程序如F_Relation_l. m 所示。
Reu(k, l)=Me(ie, k);Reu(k, l)=Mu(iu, 1);endendfor k=l: neR(k, l)=Reu(k, 1);运行结果如下:000000. 5 1.00000. 50. 50. 5000. 50. 5 1.00. 50R 000. 5 1.00. 50000. 5 1.00. 50. 5000. 50. 50. 500001.00. 500000图5. 11单输入模糊控制器的控制效果从上述的仿真结果可以看到,定值扰动时系统可以达到稳定,但是有很大的静差,不能满足工程上的要求,究其原因是, 模糊控制器实质上是一个具有继电器型非线性特性的控制器(如图5. 11中所示的u ),没有积分作用,对于有自平衡对象一 定会产生静差,而且系统极容易产生震荡。
从图5. 11就可看出,虽然设计的模糊控制器对定值扰动是稳定的,但对于内扰 并不能使其if Me(i,j)>Me(i-1j);Fi=i;e nd;%endU=F_Deduce_1(Me(Fi,:),R, ne, nu);% %加权平均法判决控制器的输 岀 Su=O;S=O;for i=-UM:UMSu=Su+i*U(i+UM+1 );S=S+U(i+UM+1);end u=Ku*Su/S+ur; (Q/ **************r仿真计算被控对象 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; if t(k)>800;ur=0.5;e nd;%800秒后加入内扰endPlot(t,y1)hold on;plot(t,u1,—)稳定。
非线性控制器的控制效果取决于各变量的论域及扰动量的大小 程应用还有许多问题需要研究。
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}量化因子Ke ec 2 6 4, K u 21. 5 ( 1. 5)1. ( 1.5) 3 假设选取E 的模糊变量词集为 { NB,NM , NS, NO, P0, PS, PM , PB}选取EC 、U 的模糊变量词集为{NB, NM , NS, Z0, PS, PM , PB}选取模糊变量EC 的赋值表如表5-2所示,模糊变量U 的赋值表如表5-6所示。
表5-6等级量U 与模糊量U 的关系【〃,因此,模糊控制器的大范围工现将操作者在操作过程中遇到的各种出现的情况和相应的控制策略汇总为表5表5-7双输入时的模糊控制规则表下而说明建立模糊控制规则表的基木思想。
首先考虑误差为负的情况,当误差(希望值减去温度值)为负大时(说明温度高于希望值),若误差变化率也为负,这时误差有增大的趋势,为尽快消除己有的负大误差并抑制误差变大,所以控制量的变化取正大(控制量增大,意味着喷水阀门开度增大,喷水量增加,使得温度下降,下同)。
当误差为负而误差变化率为正时,系统木身己有减少误差的趋势,所以,为尽快消除误差而又不超调,应取较小的控制量。
当误差为负中时,控制量的变化应使误差尽快消除,基于这种原则,控制量的变化选取同误差为负大时相同。
当误差为负小时,系统接近稳态,若误差变化微小时,选取控制量变化为正中,以抑制误差往负方向变化;若误差变化为正时,系统本身有消除负小的误差的趋势,选取控制量变化为正小。
上述选取控制量变化的原则:当误差大或较大时,选择控制量以尽快消除误差为主;当误差较小时,选择控制量要注意防止超调,以系统稳定性为主要出发点。
按着上述控制规则,可以得到温度偏差及偏差变化率与喷水阀门开度之间的模糊关系R :R (E U)o(EC U ) E EC U(NB=陂PB U) U (NM H NB EC PB. ) U( NS E NB EC PM* ) UL L其中角标E, EC U分别表示误差、误差变化率和控制量。
设e、ec、u的等级量分别为nfe、nfec> nfu,贝U R是一个nfe nfec nfu列的矩阵。
计算模糊关系矩阵R的子程序如F_Relation_2. m所示。
%莫糊关系计算子程序F_Relation_2. cfun ctio n [R, n, nE, n EC, nU, nfe, nfec, n fu, Me, Mec]二fu nc ()%#3定义E的模糊变量值仁PB, 2二PM, 3=PS, 4=-0, 5二+0, 6二NS, 7二NM, 8二NB并输入表(5-5 ) #### nE=8;%模糊变量E的语言值个数?控制表列数E二[8 7 6 5 4 3 2 1];nfe=14;%E的等级量个数Me二[0 0 0 0 0 0 0 0 0 0 0. 1 0.4 0.8 1.0;0 0 0 0 00 0 0 00. 2 0.7 1. 0 0. 7 0.2;for 1=1: nfecif Me (ie, k) <Mec (iec, 1) Reec (k, l)=Me(ie, k) ; elseReec (k, 1)二Mec(iec, 1) ; endendend%E A ECX Uiu二UC(i, j);n=0;for k二1: nfefor 1=1: nfecn二n+1;for t二1: nfuif Reec(k, l)<Mu(iu, t)Reecu( n, t)二Reec(k, 1); elseReecu ( n, t)二Mu(iu, t); end endendendfor k二1: nfor 1=1: nfuif Reecu (k, 1) >R(k, 1) R(k, l)=Reecu(k, 1) ; endendendendend双输入时,先根据e、ec计算出相应的等级量E、EC,再根据表(5-2)查出相应的E, EC ,然后按式(5-6)计算出模糊控制器的输出。
其模糊决策子程序如F_Deduce_2. m所示。
%双输入时模糊决策子程序F_Deduce_2. mfunction FU二F_Deduce_2 (fe, fee, R, n, n fe, nfec, nfu)计算EX EC##################################### n二0;for i=l: nfefor j二1: nfecn二n+1;if fe(i)<fec(j)feec( n)二fe(i);elsefeec( n)二fec(j);endendend计算(E x EC) o R################################for 1=1: nfufor i二1: nif feec (i) <R(i, 1)fu(i)二feec (i);elsefu(i)=R(i, 1);endFU(l)=max(fu);endend按着前而的设计过程,可以得到双输入模糊控制主程序,如FC_MI_main. m所示。
%单输入单变量模糊控制仿真程序FC_SI_main.nl ,被控对象W(s)=-1. l/(35s+l)A4)clear allDT=l;ST=1500;LP=ST/DT;Al=exp(-DT/35);B1=1~A1;x(l:4)=0;ur=0;e0=0;%##井设置e、ec、u的初始论域及其等级量论域,计算量化因子及比例因子##########em=2;EM=6;Ke=EM/em;ecm=2;ECM=6;Kec=ECM/ecm;UM=7;um=2;Ku=um/UM;U=[-7 -6-5-4-3-2-101234567];%#########调用计算模糊关系矩阵R的子程序F_Relation_2.[R, n, nE, n EC, nU, nfe, nfec, nfu, Me, Mec]=F_Relation_2; %################################################################ for k=l:LP %############ 计算FC 输岀 #######################################%######### 变量e模糊化处理mnnnnnunnnnnnnnnnnnnmunmnne=l-x(4) ;% 计算输入e的确切量e仁rou nd(Ke*e) ;% 把e转换成等级量if el>EM;el=EM;e ndif el<~EM;el=~EM;e ndif el<0;j=el+EM+l;e ndif (el==0)&(e〈0);j=7;e nd/O/ **********************************r仿真计算被控对象u=Ku*U( nU )+ur;x(l)=Al*x(l)T. l*Bl*u; x(2)=Al*x(2)+Bl*x(l) ; x(3)=Al*x(3)+Bl*x(2); x(4)=Al*x(4)+Bl*x(3); yl (k)=x (4); ul (k) =u; t(k) =k*DT;图5. 12双输入模糊控制器的控制效果双输入模糊控制器能使系统快速达到稳定,但是,仍然存在很大的静差,不满足工程需要。