当前位置:
文档之家› 基于模糊控制的速度跟踪控制问题(C语言以及MATLAB仿真实现)
基于模糊控制的速度跟踪控制问题(C语言以及MATLAB仿真实现)
即 v 的隶属度函数分别为:
1 0< v 10 PS : ( v ) 1 ( v 10 ) 2 6 v 10 e PM : ( v ) e
1 v 20 ( ) 2 6 1 v 30 ( ) 2 6
Figure 速度误差的隶属度函数
(5) 去模糊化(defuzzify)
将推论所得到的模糊值转换为明确的控制信号, 做为系统的输出值。 在实行模糊控制时, 将许多控制规则进行上述推论演算, 然后结合各个由演算得到的推论结果获得控制输出。 为 了求得受控系统的输出, 必须将模糊集合去模糊化, 本例中使用的是最大平均值法(Mean of
(2) 模糊化(fuzzify)
将输入值以适当的比例转换到论域的数值,利用口语化变量来描述测量物理量的过程, 依适合的语言值(linguistic value)求该值相对之隶属度,此口语化变量我们称之为模糊子集 合(fuzzy subsets) 。当控制变量确定之后,接下来就是根据经验写出控制规则,但是在做成 模糊控制规则之前,首先必需对模糊控制器的输入和输出变量空间做模糊分割。 本案例中输入空间有两个变量, 可以用三个或五个模糊集合对空间做模糊分割, 划分成 三个或五个区域。由于程序实现的复杂性,暂时设置为三个。 模糊分割时各领域间重叠的程度大大地影响控制的性能; 一般而言, 模集合重叠的程度 并没有明确的决定方法, 目前大都依靠模拟和实验的调整决定分割方式, 不过有文献提出大 约 1/3~1/2 最为理想。重叠的部份意味着模糊控制规则间模糊的程度,因此模糊分割是模糊 控制的重要特征。 由于隶属度函数是连续型的,这里采用高斯型的隶属函数。
实现步骤以及算法
利用一般控制系统的架构,其中包含五个主要部分:定义变量、模糊化、知识库、逻辑 判断及去模糊化,下面将就每一部分做简单的说明:
(1) 定义变量
也就是决定程序被观察的状况及考虑控制的动作,控制变量的选择要能够具有系统特 性,而控制变量选择是否正确,对系统的性能将有很大的影响。在此控制问题上,输入变量 有速度误差和实际速度, 而控制变量则为下一个状态之输出油门和刹车。 作为模糊控制器的 语言变量,而如何选择则有赖工程师对于系统的了解和专业知识而定。因此,经验和工程知 识在选择控制变量时占有相当重要的角色。
Figure 1
模糊控制器的结构图
1.模糊控制的设计尚缺乏系统性,这对复杂系统的控制是难以奏效的。所以如何建立一 套系统的模糊控制理论,以解决模糊控制的机理、稳定性分析、系统化设计方法等一系列问 题; 2.如何获得模糊规则及隶属函数即系统的设计办法,这在目前完全凭经验进行; 3.信息简单的模糊处理将导致系统的控制精度降低和动态品质变差。 若要提高精度则必 然增加量化级数,从而导致规则搜索范围扩大,降低决策速度,甚至不能实时控制; 4.如何保证模糊控制系统的稳定性即如何解决模糊控制中关于稳定性和鲁棒性问题。
模糊控制的优点: (1)模糊控制是一种基于规则的控制,它直接采用语言型控制规则,出发点是现场操作 人员的控制经验或相关专家的知识, 在设计中不需要建立被控对象的精确的数学模型, 因而 使得控制机理和策略易于接受与理解,设计简单,便于应用。 (2)由工业过程的定性认识出发,比较容易建立语言控制规则,因而模糊控制对那些数 学模型难以获取,动态特性不易掌握或变化非常显著的对象非常适用。 (3)基于模型的控制算法及系统设计方法,由于出发点和性能指标的不同,容易导致较 大差异;但一个系统语言控制规则却具有相对的独立性,利用这些控制规律间的模糊连接, 容易找到折中的选择,使控制效果优于常规控制器。 (4)模糊控制是基于启发性的知识及语言决策规则设计的,这有利于模拟人工控制的过 程和方法,增强控制系统的适应能力,使之具有一定的智能水平。 简化系统设计的复杂性,特别适用于非线性、时变、模型不完全的系统上。 模糊控制的缺点
1 10<v 0 NS : ( v ) 1 ( v 10 ) 2 6 v 10 e NM : ( v ) e
1 v 20 ( ) 2 6
PB : ( v ) e 1
v 30 v 30
1 v 30 ( ) e 2 6 30<v 0 NB : ( v ) v 30 1
1 t 300 ( ) 2 54
S : (b) e
M : (b) e t 450 t 450 B : (b) e
1 t 450 ( ) e 2 54 B : (v ) 1
1 v 24 ( ) 2 6
上式中,NB,NM,NS,ZO,PS,PM,PB 等是论域中模糊集合的标记,其意义如 下所示: NB=负方向大的偏差(Negative Big); NM=负方向中的偏差(Negative Medium); NS=负方向小的偏差(Negative Small); ZO=近于零的偏差(Zero); PS=正方向小的偏差(Positive Small); PM=正方向中的偏差(Positive Medium); PB=正方向大的偏差(Positive Big)。 图中将模糊集合之全集合加以正规化为区间(0,1),在模糊控制上,使用标准化的模糊 变量,其全集也常正规化,这时之正规化常数(亦称为增益常数),也是在设计模糊控制器 时必须决定的重要参数。
S CE B
CE B B
S CE B
S S CE
CE S CE
S CE B
PS PM PB NS NM NB
a1:If v is PS and v is B then T is B;
Table 1 规则库
b1:If v is PM and v is CE then T is CE; c1:If v is PB and v is S then T is S ; …… 表为依上述程序所构成的 9 条控制规则,其中纵列为 v 值,横列为 v 值,表中所列之 值为控制油门输出 T 值。由 Table1 可知规则数最多可为 18 条,但是 v 的值为负时,只有 刹车 B 的输出。表中只使用了其中 15 条控制规则,也可依实际结果以及实验需求自行加减 规则之数量;为了改善控制的结果,也可适当的改变规则数量以及规则。
1 v 20 ( ) 2 6
1 v 30 ( ) e 2 6 30<v 0 B : (v ) v 30 1
油门输出的隶属函数:
刹车输出的隶属函数:
1 v 8 ( ) 2 6 1 v 16 ( ) 2 6
1 0<t 150 S : ( v ) 1 ( t 150 ) 2 54 t 150 e M : (v ) e
(3) 规则库
包括数据库(data base)与规则库(rule base)两部分,其中数据库是提供处理模糊数 据之相关定义; 而规则库则由一群语言控制规则描述控制目标和策略。 控制规则是模糊控制 器的核心,规则的正确与否直接影响控制器的性能,而规则数目的多寡也是一个重要因素, 因此下面将对控制规则做进一步的探讨。 模糊控制规则的取得方式: a.专家的经验和知识 前面曾经提到模糊控制也称为控制上的专家系统, 专家的经验和知识是设计上有余力的 线索。人类日常生活常中判断事情时,使用语言定性分析多于数值定量分析;而模糊控制规 则提供了一个自然的架构来描述人类的行为及决策分析, 并且专家的知识通常可用 if….then 的型式来表示。 藉由询问经验丰富的专家,在获得系统的知识后,将知识改为 if….then 的型式,则如 此便可构成模糊控制规则。为了获得最佳的系统性能,常需多次使用试误法,以修正模糊控 制规则。 b.操作员的操作模式 现在流行的专家系统,其想法只考虑知识的获得,专家巧妙地操作复杂的控制对象,但 要将专家的诀窍加以逻辑化并不容易;因此,在控制上也要考虑技巧的获得。在许多工业系 统无法以一般的控制理论做正确的控制, 但是熟练的操员在没有数学模式下, 也能够成功地 控制这些系统;因此,记录操作员的操作模式,并将其整理为 if….then 的型式,可构成一 组控制规则。 c. 学习 为了改善模糊控制器的性能, 必须让它有自我学习或自我组织的能力, 得模糊控制器能 依设定的目标,增加或修改模糊控制规则。 模糊控制规则的型式: 状态评估模糊控制规则 状态评估(state evaluation)模糊控制规则为类似人类的直觉思考,所以大多数的模糊 控制器都使用这种模糊控制规则,其型式如下:
Maximal,MOM):取隶属度最大的所有元素代表取模糊推论结论中,具有最大隶属度值 作为去模糊化的输出值。若同时具有多点最大,则取平均值,该方法简单易操作。
结果分析
由于该方法所设的隶属函数数量较少分别为 3 个, 所以实验结果会存在数值较少, 输出 只会固定在几个值之间,而在两个隶属函数交叉相对较多的区间下,结果的可信度将提高, 同时由于实验中未能进行智能车实跑,所以不能进行数据的进一步分析和实验方法的改进, 若要加强该控制精度, 一方面应该增加规则数量, 另一方面通过具体实验结果更改规则库中 规则。
Ri:if x1 is Ai1 and x2 is Ai2….and xn is Ain then y is Ci ; 其中 x1,x2,…,xn 及 y 为语言变量或称为模糊变量,代表系统的态变量和控制变量; Ai1,Ai2,…,Ain 及 Ci 为语言值,代表论域中的模糊集合。其次还有另一种表示法,是将 后件部改为系统状态变量的函数,其形式如下: Ri:if x1 is Ai1 and x2 is Ai2….and xn is Ain then y=f1(x1,x2,…,xn) 设计模糊控制规则时, 是在所设想对控制对象各阶段之反应, 记述采取那一种控制比较 好; 首先选择各阶段的特征点, 记录在模糊控制规则的前件部, 然后思考在该点采取的动作, 记录在模糊控制规则的后件部可分别得到如下的控制规则库:
实验中遇到的问题与总结
问题归结为模糊控制的经典问题: 1.模糊规则及隶属函数如何获得; 2.如何保证该系统你给的稳定性; 3.实际操作中,编程实现时对于问题的数学化建立模型遇到了不小的困难,同时编程也 是以极大的考验,尤其是在 C 语言编程实现时。 尽管模糊控制理论已在各大领域取得了极大的成就, 但就此问题依然有若干问题急需解 决, 这就进一步要求我们给出模糊控制器的系统化设计方法; 同时把握模糊控制的发展方向: 由于模糊规则是人们对过程或对象模糊信息的归纳,对高阶、非线性、大时滞、时变因素以 及随机干扰等难以获得完整的先验经验, 使得单纯的模糊控制在此问题上显得有些粗糙, 并 且难以获得适应不同的运行状态, 影响控制效果。 利用和其他经典的控制理论的结合来控制。 例如利用神经网络(BP)实现模糊控制规则或模糊推理,同样的算法还有 PID、遗传算法等。