基于模糊控制的速度跟踪控制问题(C语言以及MATLAB仿真实现)

合集下载

静止背景下的多目标追踪(附matlab程序)

静止背景下的多目标追踪(附matlab程序)

静止背景下的多目标追踪随着计算机技术以及智能汽车行业的发展,多目标的检测与追踪的实用性与研究价值逐渐提高。

在计算机视觉的三层结构中,目标跟踪属于中间层,是其他高层任务,例如动作识别以及行为分析等的基础。

其主要应用可包括视频监控,检测异常行为人机交互,对复杂场景中目标交互的识别与处理,以及虚拟现实及医学图像。

目标跟踪又包括单目标跟踪和多目标跟踪。

单目标跟踪可以通过目标的表观建模或者运动建模,以处理光照、形变、遮挡等问题,而多目标跟踪问题则更加复杂,除了单目标跟踪回遇到的问题外,还需要目标间的关联匹配。

另外在多目标跟踪任务中经常会碰到 目标的频繁遮挡、轨迹开始终止时刻未知、目标太小、表观相似、目标间交互、低帧率等等问题。

静止背景下的多目标追踪可分为两步来实现,第一步是在视频文件的每帧中检测出移动的目标,第二步是将检测到的目标与跟踪轨迹实时匹配。

在本次实验中,利用混合高斯模型进行背景减除,使用形态学操作消除噪声,通过卡尔曼滤波预测目标位置,最后利用匈牙利算法进行匹配,实现静止背景下的多目标追踪。

1 实验原理1.1 混合高斯模型单高斯模型是利用高维高斯分布概率来进行模式分类:11()exp[(x )(x )]2T x N C μσμ-=--- 其中μ用训练样本均值代替,σ用样本方差代替,X 为d 维的样本向量。

通过高斯概率公式就可以得出类别C 属于正(负)样本的概率。

而混合高斯模型就是数据从多个高斯分布中产生,每个GMM 由k 个单高斯分布线性叠加而成。

相当于对各个高斯分布进行加权,权系数越大,那么这个数据属于这个高斯分布的可能性越大。

(x)(k)*p(x |k)P p =∑利用混合高斯模型(GMM)可以进行背景减除,将前后景分离,得到移动的目标。

对每个像素点建立由k 个单高斯模型线性叠加而成的模型,在这些混合高斯背景模型中,认为像素之间的颜色信息互不相关,对各像素点的处理都是相互独立的。

单个像素点在t 时刻服从混合高斯分布概率密度函数:,,,1(x )(x ,,)kt i t t i t i t i p w ημτ==∑其中k 为分布模式总数,,,(x ,,)t i t i t ημτ为t 时刻第i 个高斯分布,,i t μ为其均值,,i t τ为其协方差矩阵。

利用Matlab进行模糊逻辑和模糊控制的基本原理

利用Matlab进行模糊逻辑和模糊控制的基本原理

利用Matlab进行模糊逻辑和模糊控制的基本原理Matlab是一种强大的数学计算软件,广泛应用于各个领域的工程和科学研究。

在现实生活中,我们经常会遇到一些模糊不清、不确定的情况,而模糊逻辑和模糊控制正是用来处理这些模糊问题的有效工具。

本文将介绍利用Matlab进行模糊逻辑和模糊控制的基本原理,并通过一些具体案例来说明其在实际应用中的价值。

首先,我们需要了解模糊逻辑和模糊控制的基本概念和原理。

模糊逻辑是Lotfi Zadeh教授于1965年提出的一种处理模糊信息的形式化逻辑系统。

与传统的布尔逻辑只有两个取值(真和假)不同,模糊逻辑引入了模糊概念,可以处理多个取值范围内的逻辑判断。

其基本原理是将模糊的语言描述转化为数学上的模糊集合,然后通过模糊运算进行推理和决策。

在Matlab中,可以使用Fuzzy Logic Toolbox工具箱来进行模糊逻辑的建模和模拟。

该工具箱提供了一系列的函数和工具,可以帮助我们创建模糊逻辑系统、定义模糊集合和模糊规则,并进行输入输出的模糊化和去模糊化运算。

一个典型的模糊逻辑系统包括三个主要组成部分:模糊集合、模糊规则和模糊推理。

模糊集合用于描述模糊化的输入和输出变量,可以是三角形、梯形、高斯等形状。

模糊规则定义了模糊逻辑系统的推理过程,通常由一系列的if-then规则组成,如“如果温度较低,则输出加热”,其中“温度较低”和“加热”为模糊集合的标签。

模糊推理根据输入变量的模糊值和模糊规则,计算出输出变量的模糊值。

为了更好地理解模糊逻辑的原理和应用,我们以一个简单的案例来说明。

假设我们需要设计一个自动化灯光控制系统,使得灯光的亮度能够根据环境光线的强弱自动调节。

首先,我们需要收集一些实际的数据来建立模糊逻辑系统。

通过传感器测量到的环境光强度作为输入变量,设定的亮度值作为输出变量。

在Matlab中,可以使用Fuzzy Logic Designer来创建一个模糊逻辑系统。

首先,我们需要定义输入和输出变量,以及它们的模糊集合。

模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)

模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)

模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)2这个例子的程序百度文库里有很多版本,但我下了很多都有错误,运行不了。

以下程序我一字一字的敲出来的,已经成功运行,绝对无误。

仿真实例,被控对象为p G (s)=ss s 1047035.8752350023++ 采样时间为1ms ,采用模糊PID 控制进行阶跃响应,在第300个采样时间时控制器输出加1.0的干扰,相应的运行结果如图1~13所示。

仿真程序如下:将以下程序保存为fuzzypid.m 文件,即可得到仿真结果。

%fuzzy tunning PID controlclear all ;clear all ;a=newfis('fuzzpid');a=addvar(a,'input','e',[-3,3]); %parameter ea=addmf(a,'input',1,'NB','zmf',[-3,-1]);a=addmf(a,'input',1,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]);a=addmf(a,'input',1,'Z','trimf',[-2,0,2]);a=addmf(a,'input',1,'PS','trimf',[-1,1,3]);a=addmf(a,'input',1,'PM','trimf',[0,2,3]);a=addmf(a,'input',1,'PB','smf',[1,3]);a=addvar(a,'input','ec',[-3,3]); %parameter eca=addmf(a,'input',2,'NB','zmf',[-3,-1]);a=addmf(a,'input',2,'NM','trimf',[-3,-2,0]);a=addmf(a,'input',2,'NS','trimf',[-3,-1,1]);a=addmf(a,'input',2,'Z','trimf',[-2,0,2]);a=addmf(a,'input',2,'PS','trimf',[-1,1,3]);a=addmf(a,'input',2,'PM','trimf',[0,2,3]);a=addmf(a,'input',2,'PB','smf',[1,3]);a=addvar(a,'output','kp',[-0.3,0.3]); %parameter kpa=addmf(a,'output',1,'NB','zmf',[-0.3,-0.1]);a=addmf(a,'output',1,'NM','trimf',[-0.3,-0.2,0]);a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]);a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]);a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]);a=addmf(a,'output',1,'PM','trimf',[0,0.2,0.3]);a=addmf(a,'output',1,'PB','smf',[0.1,0.3]);a=addvar(a,'output','ki',[-0.06,0.06]); %parameter ki a=addmf(a,'output',2,'NB','zmf',[-0.06,-0.02]);a=addmf(a,'output',2,'NM','trimf',[-0.06,-0.04,0]);a=addmf(a,'output',2,'NS','trimf',[-0.06,-0.02,0.02]); a=addmf(a,'output',2,'Z','trimf',[-0.04,0,0.04]);a=addmf(a,'output',2,'PS','trimf',[-0.02,0.02,0.06]);a=addmf(a,'output',2,'PM','trimf',[0,0.04,0.06]);a=addmf(a,'output',2,'PB','smf',[0.02,0.06]);a=addvar(a,'output','kd',[-3,3]); %parameter kda=addmf(a,'output',3,'NB','zmf',[-3,-1]);a=addmf(a,'output',3,'NM','trimf',[-3,-2,0]);a=addmf(a,'output',3,'NS','trimf',[-3,-1,1]);a=addmf(a,'output',3,'Z','trimf',[-2,0,2]);a=addmf(a,'output',3,'PS','trimf',[-1,1,3]);a=addmf(a,'output',3,'PM','trimf',[0,2,3]);a=addmf(a,'output',3,'PB','smf',[1,3]);rulelist=[1 1 7 1 5 1 1;1 2 7 1 3 1 1;1 3 62 1 1 1;1 4 62 1 1 1;1 5 5 3 1 1 1;1 6 4 42 1 1;1 7 4 4 5 1 1;2 1 7 1 5 1 1;2 2 7 13 1 1;2 3 6 2 1 1 1;2 4 53 2 1 1;2 5 53 2 1 1;2 6 4 43 1 1;2 734 4 1 1;3 1 6 14 1 1;3 2 6 2 3 1 1;3 3 6 3 2 1 1;3 4 5 3 2 1 1;3 54 4 3 1 1;3 6 3 5 3 1 1;3 7 3 54 1 1;4 1 6 2 4 1 1;4 2 6 2 3 1 1;4 35 3 3 1 1;4 4 4 4 3 1 1;4 5 3 5 3 1 1;4 6 2 6 3 1 1;4 7 2 6 4 1 1;35 1 5 2 4 1 1;5 2 5 3 4 1 1;5 3 4 4 4 1 1;5 4 3 5 4 1 1;5 5 3 5 4 1 1;5 6 2 6 4 1 1;5 7 2 7 4 1 1;6 1 5 47 1 1;6 2 4 4 5 1 1;6 3 3 5 5 1 1;6 4 2 5 5 1 1;6 5 2 6 5 1 1;6 6 27 5 1 1;6 7 1 7 7 1 1;7 1 4 4 7 1 1;7 2 4 4 6 1 1;7 3 2 5 6 1 1;7 4 2 6 6 1 1;7 5 2 6 5 1 1;7 6 1 7 5 1 1;7 7 1 7 7 1 1];a=addrule(a,rulelist);a=setfis(a,'DefuzzMethod','mom');writefis(a,'fuzzpid');a=readfis('fuzzpid');%PID controllerts=0.001;sys=tf(5.235e005,[1,87.35,1.047e004,0]); dsys=c2d(sys,ts,'tustin');[num,den]=tfdata(dsys,'v');u_1=0.0;u_2=0.0;u_3=0.0;y_1=0;y_2=0;y_3=0;x=[0,0,0]';4error_1=0;e_1=0.0;ec_1=0.0;kp0=0.40;kd0=1.0;ki0=0.0;for k=1:1:500time(k)=k*ts;rin(k)=1;%using fuzzy inference to tunning PIDk_pid=evalfis([e_1,ec_1],a);kp(k)=kp0+k_pid(1);ki(k)=ki0+k_pid(2);kd(k)=kd0+k_pid(3);u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3);if k==300 %adding disturbance(1.0v at time 0.3s)u(k)=u(k)+1.0;endif u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;endyout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;error(k)=rin(k)-yout(k);%%%%%%%%%%%%%%%%%%%%%%%%%return of pid parameters%%%%%%%%%%%%%%%%%%%%%%%% u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yout(k);5x(1)=error(k); %calculating Px(2)=error(k)-error_1; %calculating Dx(3)=x(3)+error(k); %calculating De_1=x(1);ec_1=x(2);error_2=error_1;error_1=error(k);endshowrule(a)figure(1);plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel( 'rin,yout');figure(2);plot(time,error,'r');xlabel('time(s)');ylabel( 'error ');figure(3);plot(time,u,'r');xlabel('time(s)');ylabel( 'u ');figure(4);plot(time,kp,'r');xlabel('time(s)');ylabel( 'kp ');figure(5);plot(time,ki,'r');xlabel('time(s)');ylabel( 'ki ');figure(6);plot(time,kd,'r');xlabel('time(s)');ylabel( 'kd ');figure(7);plotmf(a,'input',1);figure(8);plotmf(a,'input',2);figure(9);plotmf(a,'output',1);figure(10);plotmf(a,'output',2);figure(11);plotmf(a,'output',3);plotfis(a);fuzzy fuzzpid.fis6仿真运行结果:789。

基于MATLAB控制系统的仿真与应用毕业设计论文

基于MATLAB控制系统的仿真与应用毕业设计论文

毕业设计(论文)题目基于MATLAB控制系统仿真应用研究毕业设计(论文)任务书I、毕业设计(论文)题目:基于MATLAB的控制系统仿真应用研究II、毕业设计(论文)使用的原始资料(数据)及设计技术要求:原始资料:(1)MATLAB语言。

(2)控制系统基本理论。

设计技术要求:(1)采用MATLAB仿真软件建立控制系统的仿真模型,进行计算机模拟,分析整个系统的构建,比较各种控制算法的性能。

(2)利用MATLAB完善的控制系统工具箱和强大的Simulink动态仿真环境,提供用方框图进行建模的图形接口,分别介绍离散和连续系统的MATLAB和Simulink仿真。

III、毕业设计(论文)工作内容及完成时间:第01~03周:查找课题相关资料,完成开题报告,英文资料翻译。

第04~11周:掌握MATLAB语言,熟悉控制系统基本理论。

第12~15周:完成对控制系统基本模块MATLAB仿真。

第16~18周:撰写毕业论文,答辩。

Ⅳ、主要参考资料:[1] 《MATLAB在控制系统中的应用》,张静编著,电子工业出版社。

[2]《MATLAB在控制系统应用与实例》,樊京,刘叔军编著,清华大学出版社。

[3]《智能控制》,刘金琨编著,电子工业出版社。

[4]《MATLAB控制系统仿真与设计》,赵景波编著,机械工业出版社。

[5]The Mathworks,Inc.MATLAB-Mathemmatics(Cer.7).2005.信息工程系电子信息工程专业类 0882052 班学生(签名):填写日期:年月日指导教师(签名):助理指导教师(并指出所负责的部分):信息工程系(室)主任(签名):学士学位论文原创性声明本人声明,所呈交的论文是本人在导师的指导下独立完成的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含法律意义上已属于他人的任何形式的研究成果,也不包含本人已用于其他学位申请的论文或成果。

对本文的研究成果作出重要贡献的个人和集体,均已在文中以明确方式表明。

基于MATLAB控制系统的仿真与应用毕业设计论文

基于MATLAB控制系统的仿真与应用毕业设计论文

基于MATLAB控制系统的仿真与应用毕业设计论文目录一、内容概括 (2)1. 研究背景和意义 (3)2. 国内外研究现状 (4)3. 研究目的和内容 (5)二、MATLAB控制系统仿真基础 (7)三、控制系统建模 (8)1. 控制系统模型概述 (10)2. MATLAB建模方法 (11)3. 系统模型的验证与校正 (12)四、控制系统性能分析 (14)1. 稳定性分析 (14)2. 响应性能分析 (16)3. 误差性能分析 (17)五、基于MATLAB控制系统的设计与应用实例分析 (19)1. 控制系统设计要求与方案选择 (20)2. 基于MATLAB的控制系统设计流程 (22)3. 实例一 (23)4. 实例二 (25)六、优化算法在控制系统中的应用及MATLAB实现 (26)1. 优化算法概述及其在控制系统中的应用价值 (28)2. 优化算法介绍及MATLAB实现方法 (29)3. 基于MATLAB的优化算法在控制系统中的实践应用案例及分析对比研究31一、内容概括本论文旨在探讨基于MATLAB控制系统的仿真与应用,通过对控制系统进行深入的理论分析和实际应用研究,提出一种有效的控制系统设计方案,并通过实验验证其正确性和有效性。

本文对控制系统的基本理论进行了详细的阐述,包括控制系统的定义、分类、性能指标以及设计方法。

我们以一个具体的控制系统为例,对其进行分析和设计。

在这个过程中,我们运用MATLAB软件作为主要的仿真工具,对控制系统的稳定性、动态响应、鲁棒性等方面进行了全面的仿真分析。

在完成理论分析和实际设计之后,我们进一步研究了基于MATLAB 的控制系统仿真方法。

通过对仿真模型的建立、仿真参数的选择以及仿真结果的分析,我们提出了一种高效的仿真策略。

我们将所设计的控制系统应用于实际场景中,通过实验数据验证了所提出方案的有效性和可行性。

本论文通过理论与实践相结合的方法,深入探讨了基于MATLAB 控制系统的仿真与应用。

第五章模糊控制系统的MATLAB仿真PPT课件

第五章模糊控制系统的MATLAB仿真PPT课件
36
37
38
5.2.6 FIS输出量曲面观测窗 1.输出量曲面观测窗界面简介 2.利用输出量曲面观测窗进行分析研究
39
5.2.7 用GUI设计Mamdani型模糊系统举例 1.选择模糊控制器的结构及模糊逻辑算法 2.定义覆盖输入、输出变量的模糊子集 3,编辑模糊控制规则 4.观测模糊推理过程
59
设计模糊推理结构
• Mamdani法 • Lorsen法 • Takagi-Sugeno方法。
60
(1).Mamdani方法
利用“极大—极小”合成规则定义模糊蕴 含表达的关系。例如:R :ifx为 A , t h e ny为 B
表达的关R C系 定义为
RCABXYA(x()x ,y)B(y)
40
41
42
4.观测模糊推理过程 5.观测清晰化方法对输出量的影响 6.观测整个论域上输出量与输入变量间的关

43
5.2.8 用GUI设计Sugeno型模糊系统举例 1.选择模糊系统的结构及逻辑算法 2.定义输入、输出变量的模糊子集 1)增加一个输出函数 2)命名 3)输入参数 3. 输入模糊控制规则 4.观测模糊推理过程 5.观测整个论域上输出量与输入量间的关系
13
5.2 模糊推理系统的设计与仿真
5.2.1 模糊推理系统的图形用户界面简介
14
15
5.2.2 模糊推理系统编辑器 1.FIS编辑器界面简介 • 菜单条和模框区
File Edit View
16
17
18
模糊逻辑区和当前变量区 2. FIS推理系统的编辑 3.编辑FIS的维数 4.编辑FIS输入、输出量的名称
3
• 5.1.2 仿真模型图的建立 • 1.打开模型编辑器界面 • 2.移入模块并予以合理布局

Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)

Matlab-的-Fuzzy-工具箱实现模糊控制(rulelist的确定)

引用如何在MATLAB下把模糊推理系统转化为查询表(原创)Matlab 2009-12-26 22:05:01 阅读161 评论0 字号:大中小订阅引用foundy的如何在MATLAB下把模糊推理系统转化为查询表(原创)李会先摘要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效果与模糊推理模块在线推理控制是一致的。

关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试Abstract:This article discuss a skill that make a translation from fuzzy logic system to Lookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill by a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is verywell.Keywords: Fuzzy Logic, Matlab,Simulink,Lookup Table,SystemTest1. 引言在MATLAB/Simulink下,构建模糊逻辑系统模型和调试其推理规则都是很方便的[3][4],我们当然不希望在MATLAB下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。

基于模糊控制的汽车自适应巡航系统设计

基于模糊控制的汽车自适应巡航系统设计
speed and a small overshoot,which effectively satisfies the control requirements of the car cruise system
and improves the accuracy and stability of the cruise process.
列问题,不断增加的汽车数量所带来的交通拥堵、能
身参数会发生变化,易对车辆动力性能和整车控制
源消耗、空气污染等方面的问题日益突出,提升汽车
器操作功能产生不利影响,进而影响驾驶体验甚至
的电动化及智能化水平作为解决包括降低能源消
导致控制器失效,因此设计与研究巡航系统模型与
耗、确保行车过程安全稳定、减轻驾驶负担等问题的
巡航控制及高速行驶中的定速控制(引导车辆大于
航系统及跟车巡航控制过程具有复杂性、非线性及
安全车距或前方无引导车辆时以预设车速行驶)及
不确定性的特点,该文以分层控制原理为依据,对车
距离控制(前方有车辆行驶于安全车距内且其速度
辆 巡 航 控 制 系 统(CCS,恒 速 行 驶 系 统)主 要 构 成 为
-171-
《电子设计工程》2021 年第 9 期
2.2.2
输出语言变量
对输出语言变量进行定义(共包含 3 个),即比
航和跟车巡航间自适应切换,通过模糊 PID 控制确
保系统性能的实现 [13]。
例 系 数 调 校 参 数(由 Kp′表 示)、积 分 系 数 调 校 参 数
3.1
Ti′、Td′对应的语言值均可定义为{零(Z),小(S),中(M),
在对控制系统模糊规则进行制定时,需对包括
车加速度、
车间距及速度误差等)为依据对当前车辆所
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

即 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、遗传算法等。
相关文档
最新文档