基于模糊控制的速度跟踪控制问题(C语言以及MATLAB仿真实现)
模糊控制的MATLAB实现具体过程(强势吐血推荐)

a=addvar(a,’input’,’service’,[0 10]);
getfis(a,’input’,1) //取得FIS的部分或全部属性
②函数addmf
功能:向模糊推理系统的语言变量添加隶属度函数。
格式:a=addmf(a, varType, varIndex,mfName,mfType, mfParams)
2、存储( .fis文件)
访问
readfis-读 writefis-写
命令函数 1、隶属度函数 ①函数trimf(表示triangular membership function) 功能:建立三角形隶属度函数。 格式:y=trimf(x,[a b c]) 其中:参数x指定变量论域范围,参数a,b和c指定三角形函 数的形状,该函数在b点处取最大值1,a,c点为0。 例:建立三角形隶属度函数并绘制曲线。
min prod (乘积法)
3. 输出的合成计算Aggregation(模糊规则综合采用的方法)
Aggregation
max sum(求和法)
prober (概率法)
prober(a,b)=a+b-ab
4. 逆模糊化计算(Defuzzification)
centroid(重心法)
lom(最大隶属度函数中的取最大值法)
例:showrule(a,1:2,’indexed’) 输出结果:1 1,1(1):1
1 2,2(1):1
6、计算模糊推理输出结果函数evalfis
格式:y=evalfis(U,FIS) 说明:参数U是输入数据,FIS是模糊推理矩阵。U 的每一行是一个特定的输入向量,Y的每一行是一 个特定的输出向量。
模糊控制的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技术在控制算法中的应用

Matlab技术在控制算法中的应用控制算法是一种应用于控制系统中的计算方法,通过算法的运行和执行,可以对控制系统进行优化和调节,实现所期望的控制效果。
而Matlab作为一种强大的科学计算软件,被广泛应用于各个领域,包括控制算法的开发和实现。
本文将从控制算法的基础概念入手,介绍Matlab技术在控制算法中的应用,并探讨其优势和局限性。
一、控制算法的基础概念在深入探讨Matlab技术在控制算法中的应用之前,我们先来了解一些控制算法的基础概念。
控制算法主要用于设计和优化控制器,以实现对系统的精确控制。
其中,常用的控制算法包括PID控制、模糊控制、最优控制等。
PID控制是一种经典的控制算法,它基于比例、积分和微分三个部分的组合,通过调节控制器的参数来实现系统的稳定性和响应速度的平衡。
Matlab提供了丰富的工具箱和函数,可以方便地进行PID控制算法的设计和仿真。
模糊控制是一种基于模糊逻辑的控制算法,它通过构建模糊规则来描述系统的控制策略。
Matlab中的Fuzzy Logic Toolbox提供了强大的模糊控制设计和仿真工具,可以帮助工程师快速构建复杂的模糊控制器,并进行性能评估和优化。
最优控制是一种针对给定的性能指标,通过优化控制器的参数来实现系统的最佳性能。
Matlab中的Optimization Toolbox和Control System Toolbox提供了丰富的最优控制算法和工具,可以帮助工程师进行系统的优化设计和参数调节。
二、Matlab技术在PID控制中的应用PID控制是一种常用的控制算法,广泛应用于各个领域的控制系统中。
Matlab 提供了强大的PID控制工具箱,可以帮助工程师快速、精确地设计和调节PID控制器。
在Matlab中,通过pid函数可以方便地创建一个PID控制器对象,并指定其比例、积分和微分参数。
然后,可以利用sim函数进行仿真,评估控制器的性能和鲁棒性。
如果需要对PID控制器进行进一步优化,可以使用PID Tuner工具进行在线调节和优化。
模糊自适应整定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控制系统仿真应用研究毕业设计(论文)任务书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控制系统的仿真与应用毕业设计论文目录一、内容概括 (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-的-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下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。
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 fu zzy 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下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于模糊控制的速度控制——地面智能移动车辆速度控制系统问题描述利用模糊控制的方法解决速度跟踪问题,即已知期望速度(desire speed),控制油门(throttle output)和刹车(brake output)来跟踪该速度。
已知输入:车速和发动机转速(值可观测)。
欲控制刹车和油门电压(同一时刻只有一个量起作用)。
算法思想模糊控制器是一语言控制器,使得操作人员易于使用自然语言进行人机对话。
模糊控制器是一种容易控制、掌握的较理想的非线性控制器,具有较佳的适应性及强健性(Robustness)、较佳的容错性(Fault Tolerance)。
利用控制法则来描述系统变量间的关系。
不用数值而用语言式的模糊变量来描述系统,模糊控制器不必对被控制对象建立完整的数学模式。
Figure 1模糊控制器的结构图模糊控制的优点:(1)模糊控制是一种基于规则的控制,它直接采用语言型控制规则,出发点是现场操作人员的控制经验或相关专家的知识,在设计中不需要建立被控对象的精确的数学模型,因而使得控制机理和策略易于接受与理解,设计简单,便于应用。
(2)由工业过程的定性认识出发,比较容易建立语言控制规则,因而模糊控制对那些数学模型难以获取,动态特性不易掌握或变化非常显著的对象非常适用。
(3)基于模型的控制算法及系统设计方法,由于出发点和性能指标的不同,容易导致较大差异;但一个系统语言控制规则却具有相对的独立性,利用这些控制规律间的模糊连接,容易找到折中的选择,使控制效果优于常规控制器。
(4)模糊控制是基于启发性的知识及语言决策规则设计的,这有利于模拟人工控制的过程和方法,增强控制系统的适应能力,使之具有一定的智能水平。
简化系统设计的复杂性,特别适用于非线性、时变、模型不完全的系统上。
模糊控制的缺点1.模糊控制的设计尚缺乏系统性,这对复杂系统的控制是难以奏效的。
所以如何建立一套系统的模糊控制理论,以解决模糊控制的机理、稳定性分析、系统化设计方法等一系列问题;2.如何获得模糊规则及隶属函数即系统的设计办法,这在目前完全凭经验进行;3.信息简单的模糊处理将导致系统的控制精度降低和动态品质变差。
若要提高精度则必然增加量化级数,从而导致规则搜索范围扩大,降低决策速度,甚至不能实时控制;4.如何保证模糊控制系统的稳定性即如何解决模糊控制中关于稳定性和鲁棒性问题。
实现步骤以及算法利用一般控制系统的架构,其中包含五个主要部分:定义变量、模糊化、知识库、逻辑判断及去模糊化,下面将就每一部分做简单的说明:(1) 定义变量也就是决定程序被观察的状况及考虑控制的动作,控制变量的选择要能够具有系统特性,而控制变量选择是否正确,对系统的性能将有很大的影响。
在此控制问题上,输入变量有速度误差和实际速度,而控制变量则为下一个状态之输出油门和刹车。
作为模糊控制器的语言变量,而如何选择则有赖工程师对于系统的了解和专业知识而定。
因此,经验和工程知识在选择控制变量时占有相当重要的角色。
(2) 模糊化(fuzzify)将输入值以适当的比例转换到论域的数值,利用口语化变量来描述测量物理量的过程,依适合的语言值(linguistic value)求该值相对之隶属度,此口语化变量我们称之为模糊子集合(fuzzy subsets)。
当控制变量确定之后,接下来就是根据经验写出控制规则,但是在做成模糊控制规则之前,首先必需对模糊控制器的输入和输出变量空间做模糊分割。
本案例中输入空间有两个变量,可以用三个或五个模糊集合对空间做模糊分割,划分成三个或五个区域。
由于程序实现的复杂性,暂时设置为三个。
模糊分割时各领域间重叠的程度大大地影响控制的性能;一般而言,模集合重叠的程度并没有明确的决定方法,目前大都依靠模拟和实验的调整决定分割方式,不过有文献提出大约1/3~1/2最为理想。
重叠的部份意味着模糊控制规则间模糊的程度,因此模糊分割是模糊控制的重要特征。
由于隶属度函数是连续型的,这里采用高斯型的隶属函数。
Figure 2 速度误差的隶属度函数即v ∆的隶属度函数分别为: 110()26120()26130()261 0<10:() 10:() 30:() 1 30v v v v P S v e v P M v ee v P B v v μμμ∆--∆--∆--∆<⎧⎪∆=⎨⎪∆≥⎩∆=⎧⎪∆<∆=⎨⎪∆≥⎩ 110()26120()26130()261 10<0:() 10:() 30<0:() 1 30v v v v N S v ev N M v ee v N B v v μμμ∆+-∆+-∆+--∆<⎧⎪∆=⎨⎪∆≤-⎩∆=⎧⎪-∆<∆=⎨⎪∆≤-⎩其中左边为误差为正的情况,此时只有油门的输出,右边为误差为负的情况,此时只有刹车的输出。
实际速度的隶属函数同样采用高斯型的,其图像同样如图Figure 1: 110()26120()26130()261 10<0:() 10:() 30<0:() 1 30v v v v S v e v M v ee v B v v μμμ-------<⎧⎪=⎨⎪≤-⎩=⎧⎪-<=⎨⎪≤-⎩油门输出的隶属函数: 刹车输出的隶属函数:1150()2541300()2541450()2541 0<t 150:() t 150:() t 450:() 1 t 450t t t S v e M v ee B v μμμ------<⎧⎪∆=⎨⎪≥⎩=⎧⎪<=⎨⎪≥⎩ 18()26116()26124()26:():():()v v v S b eM b eB b eμμμ------===上式中,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),在模糊控制上,使用标准化的模糊变量,其全集也常正规化,这时之正规化常数(亦称为增益常数),也是在设计模糊控制器时必须决定的重要参数。
(3) 规则库包括数据库(data base)与规则库(rule base)两部分,其中数据库是提供处理模糊数据之相关定义;而规则库则由一群语言控制规则描述控制目标和策略。
控制规则是模糊控制器的核心,规则的正确与否直接影响控制器的性能,而规则数目的多寡也是一个重要因素,因此下面将对控制规则做进一步的探讨。
模糊控制规则的取得方式:a.专家的经验和知识前面曾经提到模糊控制也称为控制上的专家系统,专家的经验和知识是设计上有余力的线索。
人类日常生活常中判断事情时,使用语言定性分析多于数值定量分析;而模糊控制规则提供了一个自然的架构来描述人类的行为及决策分析,并且专家的知识通常可用if….then 的型式来表示。
藉由询问经验丰富的专家,在获得系统的知识后,将知识改为if….then的型式,则如此便可构成模糊控制规则。
为了获得最佳的系统性能,常需多次使用试误法,以修正模糊控制规则。
b.操作员的操作模式现在流行的专家系统,其想法只考虑知识的获得,专家巧妙地操作复杂的控制对象,但要将专家的诀窍加以逻辑化并不容易;因此,在控制上也要考虑技巧的获得。
在许多工业系统无法以一般的控制理论做正确的控制,但是熟练的操员在没有数学模式下,也能够成功地控制这些系统;因此,记录操作员的操作模式,并将其整理为if….then的型式,可构成一组控制规则。
c.学习为了改善模糊控制器的性能,必须让它有自我学习或自我组织的能力,得模糊控制器能依设定的目标,增加或修改模糊控制规则。
模糊控制规则的型式:状态评估模糊控制规则状态评估(state evaluation)模糊控制规则为类似人类的直觉思考,所以大多数的模糊控制器都使用这种模糊控制规则,其型式如下:Ri:if x1 is Ai1 and x2 is Ai2….and xn i s 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)设计模糊控制规则时,是在所设想对控制对象各阶段之反应,记述采取那一种控制比较好;首先选择各阶段的特征点,记录在模糊控制规则的前件部,然后思考在该点采取的动作,记录在模糊控制规则的后件部可分别得到如下的控制规则库:a1:If v∆is PS and v is B then T is B;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条控制规则,也可依实际结果以及实验需求自行加减规则之数量;为了改善控制的结果,也可适当的改变规则数量以及规则。
(4) 模糊推理推理模仿人类下判断时的模糊概念,运用模糊逻辑和模糊推论法进行推论,而得到模糊控制信号。
不精确的前提集合中得出可能的不精确结论的推理过程,又称近似推理。
在人的思维中,推理过程常常是近似的。
此部分是模糊控制器的精髓所在。
把模糊规则库中的模糊IF-Then规则结合起来,利用最大最小规则,程序实现的主要部分为该部分的内容。
(5) 去模糊化(defuzzify)将推论所得到的模糊值转换为明确的控制信号,做为系统的输出值。
在实行模糊控制时,将许多控制规则进行上述推论演算,然后结合各个由演算得到的推论结果获得控制输出。
为了求得受控系统的输出,必须将模糊集合去模糊化,本例中使用的是最大平均值法(Mean of Maximal,MOM):取隶属度最大的所有元素代表取模糊推论结论中,具有最大隶属度值作为去模糊化的输出值。
若同时具有多点最大,则取平均值,该方法简单易操作。
结果分析由于该方法所设的隶属函数数量较少分别为3个,所以实验结果会存在数值较少,输出只会固定在几个值之间,而在两个隶属函数交叉相对较多的区间下,结果的可信度将提高,同时由于实验中未能进行智能车实跑,所以不能进行数据的进一步分析和实验方法的改进,若要加强该控制精度,一方面应该增加规则数量,另一方面通过具体实验结果更改规则库中规则。