670 likes | 807 Views
第三章 模糊控制. 人类对热水器水温的调节. 3.1 模糊控制的工作原理. 模糊控制的基本思想. 将人类专家对特定对象的控制经验,运用模糊集理论进行量化,转化为可数学实现的控制器,从而实现对被控对象的控制。. 人类专家的控制经验是如何转化为数字控制器的 ?. 控制思想: 如果水温偏高,就把燃气阀关小;如果水温偏低,就把燃气阀开大。. 3.1 模糊控制的工作原理. 模仿人类的调节经验,可以构造一个模糊控制系统来实现对热水器的控制。. 用一个温度传感器来替代左手进行对水温的测量,传感器的测量值经 A/D 变换后送往控制器。
E N D
人类对热水器水温的调节 3.1 模糊控制的工作原理 • 模糊控制的基本思想 将人类专家对特定对象的控制经验,运用模糊集理论进行量化,转化为可数学实现的控制器,从而实现对被控对象的控制。 人类专家的控制经验是如何转化为数字控制器的 ? 控制思想: 如果水温偏高,就把燃气阀关小;如果水温偏低,就把燃气阀开大。
3.1 模糊控制的工作原理 模仿人类的调节经验,可以构造一个模糊控制系统来实现对热水器的控制。 • 用一个温度传感器来替代左手进行对水温的测量,传感器的测量值经A/D变换后送往控制器。 • 电磁燃气阀代替右手和机械燃气阀作为执行机构,电磁燃气阀的开度由控制器的输出经D/A变换后控制。 • 构造控制器,使其能够模拟人类的操作经验。 • 人类的控制规则 • 如果水温比期望值高,就把燃气阀关小; • 如果水温比期望值低,就把燃气阀开大。 描述了输入(水温与期望值的偏差 e)和输出(燃气阀开度的增量u)之间的模糊关系R
3.1 模糊控制的工作原理 模糊值 模糊值 规则库R 输入e 输出u 模糊推理 去模糊化 模糊化 精确值 u 精确值 D/A e 温度 传感器 热水器 期望值 电磁阀 A/D + - 热水器水温模糊控制系统结构
3.1 模糊控制的工作原理 模糊控制器的基本工作原理 将测量得到的被控对象的状态经过模糊化接口转换为用人类自然语言描述的模糊量,而后根据人类的语言控制规则,经过模糊推理得到输出控制量的模糊取值,控制量的模糊取值再经过清晰化接口转换为执行机构能够接收的精确量。
3.2 模糊控制器的结构和设计 • 模糊控制器的基本结构通常由四个部分组成: • 模糊化接口 • 规则库 • 模糊推理 • 清晰化接口
3.2 模糊控制器的结构和设计 3.2.1 模糊化接口 模糊化就是通过在控制器的输入、输出论域上定义语言变量,来将精确的输入、输出值转换为模糊的语言值。 模糊化接口的设计步骤事实上就是定义语言变量的过程,可分为以下几步: 1) 语言变量的确定 针对模糊控制器每个输入、输出空间,各自定义一个语言变量。 通常取系统的误差值e和误差变化率ec为模糊控制器的两个输入,在e的论域上定义语言变量“误差E”,在ec的论域上定义语言变量“误差变化EC”;在控制量u的论域上定义语言变量“控制量U”。
3.2 模糊控制器的结构和设计 2)语言变量论域的设计 在模糊控制器的设计中,通常就把语言变量的论域定义为有限整数的离散论域。例如,可以将E的论域定义为{-m, -m+1, …, -1, 0, 1, …, m-1, m};将EC的论域定义为{-n, -n+1, …, -1, 0, 1, …, n-1, n};将U的论域定义为{-l, -l+1, …, -1, 0, 1, …, l-1, l}。 ? 为了提高实时性,模糊控制器常常以控制查询表的形式出现。该表反映了通过模糊控制算法求出的模糊控制器输入量和输出量在给定离散点上的对应关系。为了能方便地产生控制查询表,在模糊控制器的设计中,通常就把语言变量的论域定义为有限整数的离散论域。
期望值 e E ke 模糊 控制器 u U ku + ec EC d/dt kec - y 3.2 模糊控制器的结构和设计 如何实现实际的连续域到有限整数离散域的转换? 通过引入量化因子ke、kec和比例因子ku来实现 假设在实际中,误差的连续取值范围是e=[eL,eH],eL表示低限值,eH表示高限值。则: 同理,假如误差变化率的连续取值范围是ec=[ecL,ecH],控制量的连续取值范围是u=[uL,uH],则量化因子kec和比例因子ku可分别确定如下:
3.2 模糊控制器的结构和设计 在确定了量化因子和比例因子之后,误差e和误差变化率ec可通过下式转换为模糊控制器的输入E和EC: 式中,<>代表取整运算。 模糊控制器的输出U可以通过下式转换为实际的输出值u:
3.2 模糊控制器的结构和设计 3) 定义各语言变量的语言值 通常在语言变量的论域上,将其划分为有限的几档。 例如,可将E、EC和U的划分为 {“正大(PB)”,“正中(PM)”,“正小(PS)”,“零(ZO)”, “负小(NS)”,“负中(NM)”,“负大(NB)”}七档。 • 档级多,规则制定灵活,规则细致,但规则多、复杂,编制程序困难,占用的内存较多; • 档级少,规则少,规则实现方便,但过少的规则会使控制作用变粗而达不到预期的效果。 • 因此在选择模糊状态时要兼顾简单性和控制效果。
3.2 模糊控制器的结构和设计 4)定义各语言值的隶属函数 • 隶属函数的类型 正态分布型(高斯基函数) 其中,ai为函数的中心值,bi为函数的宽度。 假设与{PB,PM,PS,ZO,NS,NM,NB}对应的高斯基函数的中心值分别为{6,4,2,0,-2,-4,-6},宽度均为2。隶属函数的形状和分布如图所示。
3.2 模糊控制器的结构和设计 • 三角型 • 梯型
3.2 模糊控制器的结构和设计 • 隶属函数确定时需要考虑的几个问题 • 隶属函数曲线形状对控制性能的影响。 • 隶属函数形状较尖时,分辨率较高,输入引起的输出变化比较剧烈,控制灵敏度较高; • 曲线形状较缓时、分辨率较低,输入引起的输出变化不那么剧烈,控制特性也较平缓,具有较好的系统稳定性。 • 因而,通常在输入较大的区域内采用低分辨率曲线(形状较缓),在输入较小的区域内采用较高分辨率曲线(形状较尖),当输入接近零则选用高分辨率曲线(形状尖)。
3.2 模糊控制器的结构和设计 • 隶属函数曲线的分布对控制性能的影响 • 兼顾控制灵敏度和鲁棒性 • 相邻两曲线交点对应的隶属度值较小时,控制灵敏度较高,但鲁棒性不好;值较大时,控制系统的鲁棒性较好,但控制灵敏度将降低。 • 清晰性 相邻隶属函数之间的区别必须是明确的。 清晰的隶属函数分布 不清晰的隶属函数分布
3.2 模糊控制器的结构和设计 • 完备性 属函数的分布必须覆盖语言变量的整个论域,否则,将会出现“空档”,从而导致失控。 不完备的隶属函数分布
3.2 模糊控制器的结构和设计 模糊化过程小结: 经过1)~4)步的定义可以在输入输出空间定义语言变量,从而将输入输出的精确值转换为相应的模糊值。具体的步骤如下: 第一步 将实际检测的系统误差和误差变化率量化为模糊控制器的输入。 假设实际检测的系统误差和误差变化率分别为e*和ec*,可以通过量化因子将其量化为模糊控制器的输入E*和EC*。
3.2 模糊控制器的结构和设计 第二步 将模糊控制器的精确输入E*和EC*通过模糊化接口转化为模糊输入A*和B*。 将E*和EC*所对应的隶属度最大的模糊值当作当前模糊控制器的模糊输入量A*和B*。 假设E*=-6,系统误差采用三角形隶属函数来进行模糊化。 E*属于NB的隶属度最大(为1),则此时,相对应的模糊控制器的模糊输入量为:
3.2 模糊控制器的结构和设计 对于某些输入精确量,有时无法判断其属于哪个模糊值的隶属度更大,例如当E*=-5时,其属于NB和NM的隶属度一样大。此时有两种方法进行处理: 1)在隶属度最大的模糊值之间任取一个;例如当E*=-5时,A*=NB或NM。 2)重新定义一个模糊值,该模糊值对于当前输入精确量的隶属度为1,对于其它精确量的隶属度为0。
3.2 模糊控制器的结构和设计 3.2.2 规则库 • 规则库的描述 规则库由若干条控制规则组成,这些控制规则根据人类控制专家的经验总结得出,按照 IF …is …AND …is …THEN …is…的形式表达。 R1 : IF E is A1 AND EC is B1 THEN U is C1 R2 : IF E is A2 AND EC is B2 THEN U is C2 ……………………………………………………… Rn : IF E is An AND EC is Bn THEN U is Cn 其中,E、EC是输入语言变量“误差”,“误差变化率”;U是输出语言变量“控制量”。 Ai、 Bi、 Ci是第i条规则中与E、EC、U对应的语言值。
3.2 模糊控制器的结构和设计 规则库也可以用矩阵表的形式进行描述。 例如在模糊控制直流电机调速系统中,模糊控制器的输入为E(转速误差)、EC(转速误差变化率),输出为U(电机的力矩电流值)。 在E、EC、U的论域上各定义了7个语言子集:{PB,PM,PS,ZO,NS,NM,NB} 对于E、EC可能的每种取值,进行专家分析和总结后,则总结出的控制规则为:
3.2 模糊控制器的结构和设计 • 规则库蕴涵的模糊关系 规则库中第i条控制规则: Ri: IF E is Ai AND EC is Bi THEN U is Ci 蕴含的模糊关系为: 控制规则库中的n条规则之间可以看作是“或”,也就是“求并”的关系,则整个规则库蕴涵的模糊关系为:
3.2 模糊控制器的结构和设计 • 规则库的产生 • 模糊控制规则的提取方法在模糊控制器的设计中起着举足轻重的作用,它的优劣直接关系着模糊控制器性能的好坏,是模糊控制器设计中最重要的部分。 • 模糊控制规则的生成方法归纳起来主要有以下几种: • 根据专家经验或过程控制知识生成控制规则。这种方法通过对控制专家的经验进行总结描述来生成特定领域的控制规则原型,经过反复的实验和修正形成最终的规则库。 • 根据过程的模糊模型生成控制规则。这种方法通过用模糊语言描述被控过程的输入输出关系来得到过程的模糊模型,进而根据这种关系来得到控制器的控制规则。 • 根据学习算法获取控制规则。应用自适应学习算法(神经网络、遗传算法等)对控制过程的样本数据进行分析和聚类,生成和在线优化较完善的控制规则。
3.2 模糊控制器的结构和设计 • 模糊控制规则的总结要注意以下几个问题: • 规则数量合理 控制规则的增加可以增加控制的精度,但是会影响系统的实时性;控制规则数量的减少会提高系统的运行速度,但是控制的精度又会下降。所以,需要在控制精度和实时性之间进行权衡。 • 规则要具有一致性 控制规则的目标准则要相同。不同的规则之间不能出现相矛盾的控制结果。如果各规则的控制目标不同,会引起系统的混乱。 • 完备性要好 控制规则应能对系统可能出现的任何一种状态进行控制。否则,系统就会有失控的危险。
3.2 模糊控制器的结构和设计 3.2.3 模糊推理 根据模糊输入和规则库中蕴涵的输入输出关系,通过第二章描述的模糊推理方法得到模糊控制器的输出模糊值 3.2.4 清晰化接口 由模糊推理得到的模糊输出值C*是输出论域上的模糊子集,只有其转化为精确控制量u,才能施加于对象。我们实行这种转化的方法叫做清晰化/去模糊化/模糊判决。
3.2 模糊控制器的结构和设计 (1) 最大隶属度方法 把C*中隶属度最大的元素U*作为精确输出控制量 上式中,元素-4对应的隶属度最大,则根据最大隶属度法得到的精确输出控制量为-4。 若模糊输出量的元素隶属度有几个相同的最大值,则取相应诸元素的平均值,并进行四舍五入取整,作为控制量。上式中,元素-4、-3、-2对应的隶属度均为1,则精确输出控制量为
3.2 模糊控制器的结构和设计 (2)加权平均法(重心法) 该方法对模糊输出量中各元素及其对应的隶属度求加权平均值,并进行四舍五入取整,来得到精确输出控制量。 式中,<>代表四舍五入取整操作。
3.2 模糊控制器的结构和设计 清晰化处理后得到的模糊控制器的精确输出量U*,经过比例因子可以转化为实际作用于控制对象的控制量
3.2 模糊控制器的结构和设计 3.2.5 模糊查询表 • 模糊控制器的工作过程: • 模糊控制器实时检测系统的误差和误差变化率e*和ec*; • 通过量化因子ke和kec将e*和ec*量化为控制器的精确输入E*和EC*; • E*和EC*通过模糊化接口转化为模糊输入A*和B*; • 将A*和B*根据规则库蕴涵的模糊关系进行模糊推理,得到模糊控制输出量C*; • 对C*进行清晰化处理,得到控制器的精确输出量U*; • 通过比例因子ku将U*转化为实际作用于控制对象的控制量u*。 将(3)~(5)步离线进行运算,对于每一种可能出现的E和EC取值,计算出相应的输出量U,并以表格的形式储存在计算机内存中,这样的表格我们称之为模糊查询表。
3.2 模糊控制器的结构和设计 如果E、EC和U的论域均为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},则生成的模糊查询表具有如下形式
3.2 模糊控制器的结构和设计 3.2.6 模糊控制器的设计内容 (1)确定模糊控制器的输入变量和输出变量; (2)确定输入,输出的论域和Ke、Kec、Ku的值; (3)确定各变量的语言取值及其隶属函数; (4)总结专家控制规则及其蕴涵的模糊关系; (5)选择推理算法; (6)确定清晰化的方法; (7)总结模糊查询表。
3.2 模糊控制器的结构和设计 3.2.7模糊控制器的软件实现(Matlab) 1 模糊控制查询表的实现 • 初始化 • 总结模糊关系 • 总结模糊查询表
3.2 模糊控制器的结构和设计 1)初始化 假设E、EC和U的论域:{-6,-5,…,-1,0,1,…,5,6}; E、EC和U定义了7个语言值{NB,NM,NS,Z,PS,PM,PB}; 则我们在Matlab中通过定义三个向量来表示这些语言值: Input1_Terms=[1,2,3,4,5,6,7]; Input2_Terms=[1,2,3,4,5,6,7]; output_Terms=[1,2,3,4,5,6,7];
3.2 模糊控制器的结构和设计 各语言值的隶属函数采用三角函数,其分布可用下表表示:
3.2 模糊控制器的结构和设计 在matlab中,可以用一个矩阵来表示该表。 Input1_Terms_Membership= [1,0.5,0,0,0,0,0,0,0,0,0,0,0; 0,0.5,1,0.5,0,0,0,0,0,0,0,0,0; 0,0,0,0.5,1,0.5,0,0,0,0,0,0,0; 0,0,0,0,0,0.5,1,0.5,0,0,0,0,0; 0,0,0,0,0,0,0,0.5,1,0.5,0,0,0; 0,0,0,0,0,0,0,0,0,0.5,1,0.5,0; 0,0,0,0,0,0,0,0,0,0,0,0.5,1]; Input2_Terms_Membership=Input1_Terms_Membership; Output_Terms_Membership=Input1_Terms_Membership;
3.2 模糊控制器的结构和设计 假设控制规则表总结如下
3.2 模糊控制器的结构和设计 将语言值按顺序编号,NB、NM、NS、Z、PS、PM、PB分别对应1、2、3、4、5、6、7号。 则上表可用一个矩阵表示为: Rule= [1,1,1,1,2,4,4; 1,1,1,1,2,4,4; 2,2,2,2,4,5,5; 2,2,3,4,5,6,6; 3,3,4,6,6,6,6; 4,4,6,7,7,7,7; 4,4,6,7,7,7,7];
3.2 模糊控制器的结构和设计 2)总结模糊关系 某条规则蕴涵的模糊关系 Output_Terms_Index=Rule(Input1_Terms_Index,Input2_Terms_Index ); 注:Input1_Terms_Index 代表输入E的语言值的序号,Input2_Terms_Index 代表输入EC语言值的序号,Output_Terms_Index 代表输出U语言值的序号 程序段1 A=Input1_Terms_Membership(Input1_Terms_Index,:); B=Input2_Terms_Membership(Input2_Terms_Index,:); C=Output_Terms_Membership(Output_Terms_Index,:); 注:A代表输入E的模糊值,B代表输入EC的模糊值,C代表输出U的模糊值
3.2 模糊控制器的结构和设计 for i=1:13 for j=1:13 R1(i,j)=min(A(i),B(j)); end end 注:R1=A×B 程序段2 R2=[ ]; for k=1:13 R2=[R2;R1(k,:)']; end 注:R2=R1T for i=1:169 for j=1:13 R3(i,j)=min(R2(i),C(j)); end end 注:R3=R2×C
3.2 模糊控制器的结构和设计 所有规则蕴涵的模糊关系: for i=1:169 for j=1:13 R(i,j)=0; end end for Input1_Terms_Index=1:7 for Input2_Terms_Index=1:7 程序段1; 程序段2; R=max(R,R3); end end 注:初始化R 注:R为所有规则模糊关系的并集
3.2 模糊控制器的结构和设计 3)总结模糊查询表 a)模糊化 Input1_value_membership=Input1_Terms_Membership(:,Input1_value_index); 注:Input1_value_index表示输入E的精确值的序号,Input1_value_membership为E的精确值属于其各个模糊值的隶属度组成的向量 [Max_Input1_value,Max_Input1_index]=max(Input1_value_membership); 注:Max_Input1_index表示隶属度最大的模糊值的序号,Max_Input1_value为与之对应的隶属度 Ad=Input1_Terms_Membership(Max_Input1_index,:); 注:Ad为与输入E的精确值相对应的隶属度最大的模糊值,也就是模糊化后的E的模糊值。
3.2 模糊控制器的结构和设计 同理可以得到输入EC模糊化后的模糊值Bd Input2_value_membership=Input2_Terms_Membership(:,Input2_value_index); [Max_Input2_value,Max_Input2_index]=max(Input2_value_membership); Bd=Input2_Terms_Membership(Max_Input2_index,:); b) 推理 for i=1:13 for j=1:13 Rd1(i,j)=min(Ad(i),Bd(j)); end end Rd1=Ad×Bd
3.2 模糊控制器的结构和设计 Rd2=[ ]; for k=1:13 Rd2=[Rd2,Rd1(k,:)]; end Rd2=Rd1T for j=1:13 Cd(j)=max(min(Rd2',R(:,j))); end Cd=Rd2oR, Cd为推理后得到的模糊输出 C) 去模糊化 sum1=0; sum2=0; for i=1:13 sum1=sum1+Cd(i); sum2=sum2+Cd(i)*Output(i); end OUT=round(sum2/sum1); 加权平均法
3.2 模糊控制器的结构和设计 对于每种可能的E、EC的精确取值进行a)b)c)的运算可以得到模糊查询表: for Input1_value_index=1:13 for Input2_value_index=1:13 模糊化; 推理; 去模糊化; Fuzzy_Table(Input1_value_index,Input2_value_index)=OUT; end end 整个程序清单
-6 -6 -6 -6 -6 -6 -5 -5 -3 -3 -2 -2 0 -6 -6 -6 -6 -6 -6 -5 -5 -3 -3 -2 -2 0 -5 -5 -5 -5 -5 -5 -3 -3 -2 -2 -1 -1 1 -5 -5 -5 -5 -5 -5 -3 -3 -2 -2 -1 -1 1 -4 -4 -4 -4 -3 -3 -2 -2 0 0 0 0 2 -4 -4 -4 -4 -3 -3 -2 -2 0 0 0 0 2 -3 -3 -2 -2 0 0 0 0 0 0 2 2 3 -3 -3 -2 -2 0 0 0 0 0 0 2 2 3 -2 -2 0 0 0 0 2 2 3 3 4 4 4 -2 -2 0 0 0 0 2 2 3 3 4 4 4 -1 -1 1 1 2 2 3 3 5 5 5 5 5 -1 -1 1 1 2 2 3 3 5 5 5 5 5 0 0 2 2 3 3 5 5 6 6 6 6 6 Fuzzy_Table = 3.2 模糊控制器的结构和设计 运行结果:
3.2 模糊控制器的结构和设计 2 模糊控制在线运行代码 ek=refk-yk; %计算第k个采样周期的误差和误差变化率 eck=(ek-ek_1)/t; E=round(ke*(ek-(eh+el)/2))); %将E的论域转换到模糊控制器的论域 if E>6 E=6; elseif E<-6 E=-6; end EC=round(kec*(eck-(ech+ecl)/2))); %将EC的论域转换到模糊控制器的论域 if EC>6 EC=6; elseif EC<-6 EC=-6; end U=Fuzzy_Table(E+7,EC+7); %查模糊控制查询表得到输出值U u=Ku*U+(uh+ul)/2; %将输出转换到实际论域
3.2 模糊控制器的结构和设计 3.2.8 模糊控制的优缺点 • 模糊控制的优点: • 设计时不需要建立被控制对象的数学模型,只要求掌握人类的控制经验。 • 系统的鲁棒性强,尤其适用于非线性时变、滞后系统的控制 • 模糊控制的缺点: • 确立模糊化和逆模糊化的方法时,缺乏系统的方法,主要靠经验和试凑。 • 总结模糊控制规则有时比较困难。 • 控制规则一旦确定,不能在线调整,不能很好地适应情况的变化。 • 模糊控制器由于不具有积分环节,因而稳态精度不高。
3.3 模糊控制的改进方法 3.3.1 模糊比例控制器 为了解决模糊控制的离散性对控制质量的影响,在模糊控制查询表的两个离散级之间,插入按偏差量化余数的比例调节调节,使模糊控制量连续化
3.3 模糊控制的改进方法 3.3.2 模糊控制与PID控制的结合 • 双模控制 双模控制器由模糊控制器和PI控制器并联组成。控制开关在系统误差较大时接通模糊控制器,来克服不确定性因素的影响;在系统误差较小时接通PI控制器来消除稳态误差。 控制开关的控制规则可以描述为:
3.3 模糊控制的改进方法 • 串联控制 当|E|≥1时, 系统的误差e和模糊控制器的输出u的和作为PI控制器的输入, 克服不确定性因素的影响,且有较强的控制作用; 当|E|=0时, 模糊控制器输出断开,仅有e加到PI控制器的输入, 消除稳态误差。