模糊算法的研究和C语言实现--包宇骅_第1页
模糊算法的研究和C语言实现--包宇骅_第2页
模糊算法的研究和C语言实现--包宇骅_第3页
模糊算法的研究和C语言实现--包宇骅_第4页
模糊算法的研究和C语言实现--包宇骅_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模糊算法的研究和C语言实现- 模糊算法是通过对现实对象的分析,处理数据并构建模糊型数学模型。用隶属关系将数据元素集合灵活成模糊集合,确定隶属函数,进行模糊统计多依据经验和人的心理过程,它往往是通过心理测量来进行的,它研究的是事物本身的模糊性。 近年来,智能控制理论和方法的研究受到国内外众多专家和学者的高度重视,并取得了许多成功的实例。目前,对于工业过程控制,实用的智能控制方法主要有两种:专家式控制和模糊控制,它们的特点是基于“专家”经验设计控制器,而无需考虑工业对象具体物理模型,尤其是后一种方法,由于它利用了模糊推理,已形成了一套较为规范的设计程序,且成功实例较多,故目前模糊控制算法的研究较为

2、活跃。模糊控制的特点适用于不易获得精确数学模型的被控对象;是一种语言变量控制器;从属于智能控制的范畴。该系统尤其适于非线性,时变,滞后系统的控制;抗干扰能力强,响应速度快,并对系统参数的变化有较强的鲁棒性。模糊控制的原理把由各种传感器测出的精确量转换成为适于模糊运算的模糊量,然后将这些量在模糊控制器中加以运算, 最后再将运算结果中的模糊量转换为精确量, 以便对各执行器进行具体的操作控制,在模糊控制中, 存在着一个模糊量和精确量之间相互转化的问题。 s:系统的设定值;x1, x2:模糊控制的输入(精确量);X1 , X2:模糊量化处理后的模糊量;U:经过模糊控制规则和近似推理后得出的模糊控制量;

3、u:经模糊判决后得到的控制量(精确量);y:对象的输出。也可以表示成:工作步骤:输入量模糊化、建立模糊规则、进行模糊推理、输出量反模糊。模糊控制的优点:传统的自动控制控制器的综合设计都要建立在被控对象准确的数学模型(即传递函数模型或状态空间模型)的基础上,但是在实际中,很多系统的影响因素很多,油气混合过程、缸内燃烧过程等) ,很难找出精确的数学模型。这种情况下,模糊控制的诞生就显得意义重大。因为模糊控制不用建立数学模型不需要预先知道过程精确的数学模型。模糊算法的应用基于遗传算法的模糊滑模控制器设计及其在直流伺服系统中的应用 滑模控制因其设计简单,对控制对象参数变化及外扰动的不变性等优点而被广泛

4、用于工业生产过程,尤其在伺服系统的控制中取得了成功的应用13,但是传统滑模控制存在一个突出的缺点,即抖振。为解决这一问题出现了模糊滑模控制4,5,通过在边界层内根据滑动模变量s的模糊量,决定控制量u,进而实现对u的“柔化”,以消弱抖动。但是上述模糊滑模控制方案难以保证边界层内滑动模态的可达性,因而也就失去了滑模控制不变性的优点6。本文提出一种新的模糊滑模控制器设计方法,可充 分保证滑动模态的可达性。由于模糊控制量与滑模变量之间无直接对应关系,按照专家经验采用启发式设计方案难度较大,而且难以保证设计参数的最优性,为此,本文通过采用遗传算法对控制器模糊项参数进行寻优设计。考虑如下动态系统x(n)=

5、f(x,,,x(n-1))+bub0(1)其中状态向量(x,,,x(n-1))=XT,假设f(.)=(.)+f(.)(2)其中是f的估计值,f为模型的不确定性,F是f的上界函数,即f(.)F(.)(3)为讨论方便,先假设b=1,u为系统输入,控制目标是在系统存在不确定性的情况下,使系统状态向量跟踪预先选定的轨迹Xr,XTr=(xr,r,,x(n-1)r)。定义误差向量(4)于是系统(1)可以表示成如下状态方程(5)在传统SMC设计中,首先定义一个滑动平面(6)这里CT=(c1,c2,cn)是滑动平面系数,满足霍尔维兹多项式,不失一般性,取cn=1。滑模控制的一个基本思想是要求通过等价控制量ue

6、q保持状态在滑动平面上,由Te-f(xTr-eT)-u+x(n)r=0(7)这里=(0,c1,c2,cn-1),得到等价控制量ueq(8)可以保证系统状态到达滑动平面后,保持在滑动平面上,为实现滑动模态的存在及可达,还要求存在一不连续控制分量(9)以实现s.0,即满足可达性条件,因此整个控制量为u=ueq+ud(10)然而,由于系统具有不确定性,ueq难以精确获得,因此考虑不确定性后有ueq=Te-(xTr-eT)+x(n)r(11)把式(9),式(11)代入式(6)得(12)由s.0(13)考虑一般性,b1,且b具有不确定性,假设-1/b(14)其中为b的估计值,大于或等于1,那么取式(10

7、)控制律为u=-1(ueq+ud)=eq+d(15)进而得到ud=(F(.)+)+(-1)eqsgn(s)(16)令Q=(F(.)+)+(-1)eq,由前面有关参数的定义可知Q0,若不考虑参数的不确定性,即=1,F(.)=0,则Q=。由分析可知,Q过小将影响非滑动模态到滑动模态的过渡时间或难以满足可达性条件;Q过大,将导致大的抖振。考虑参数不确定性,在仅知道参数上下界的情况下,会使Q取值过大,不可避免产生大的抖振。为尽量消除抖振现象,文献4,5提出在边界层内根据s的模糊值对Q值进行模糊调节,这一方法虽可以在边界层内起到柔化控制量u的作用,但由于参数的不确定性,对Q值的调节难以保证s.0在边界层

8、内成立,因为此时没有考虑的变化情况。本文提出一种模糊滑模控制器,该控制器根据滑模函数s及其导数的模糊值决定Q的变化量Q。当s与符号相反时Q取值小于或等于零,当s与同号时,Q适当取正以使s.0成立。Q的模糊取值根据如下规则。RiIf s is Ai and is Bi then Qi is yi规则中Ai,Bi表示模糊集,则规则集输出Q与模糊规则之间可通过模糊推理机建立如下关系。(17)Ri表示第i条模糊规则,m表示模糊规则数,且有i=Ai(s)Bi()(18)(19)Ai、Bi是s、的隶属度函数,定义如下(20)对i、i、i有如下定义(21)式中i0,i0,i0表示i、i、i的初值,可结合一定

9、的经验知识给出。从以上对模糊控制器的结构分析可以发现,s和的隶属度函数参数i、i、i与规则输出参数yi影响着模糊量Q的值。而由式(21)可知,在i0,i0,i0等初值给定情况下,i,i,i是由i, i决定的。所以对i, i,yi寻优即可以实现模糊控制器参数优化设计。但是仅进行参数优化设计还难以实现真正的控制器优化,因为参数优化是在模糊集划分一定的情况下进行的,过多的模糊集划分将造成规则冗余,冗余的模糊规则必然会占用过多的存储空间,增大控制器决策时间。因此,对模糊集的划分同样需要寻优,以实现模糊控制器从结构到参数的最优设计。2.柴油机转速模糊控制的一种算法及其实现转速模糊控制算法及实现仅考虑转速

10、闭环时,柴油机转速模糊控制系统框图如图1 所示.图1 中, R 为转速给定值; Y 为系统输出(实际转速值) ; E = Y - R 为转速偏差; EC 为转速偏差的变化率; A 为E 经模糊化处理后,论域为X 的模糊集; B 为EC 经模糊化处理后,论域为Y 的模糊集; C为论域为Z 的控制量模糊集;u 为C 经模糊判决后的控制增量;u*为清晰化计算出的实际控制增量.2. 1 输入变量的模糊化考虑到本文研究的转速控制系统被控对象是一台6135 型柴油机,最高转速为1 500 r/ min ,最低稳定转速为750 r/ min ,因此X 的论域可取为 - 1 500 ,1 500 , y =

11、- 1 500 ,1 500 . 取转速偏差E 的论域为 - 750 ,750 ,隶属函数取梯形2三角形式(见图2) .转速偏差的语言变量E 在X 中取11 个语言值. 由图2 可见,每个模糊子集均可用以下两式表示:( x) = ax + b (1)( x ) = - cx + d (2)显然,对任意转速偏差输入,在进行模糊化过程中,只属于两个模糊子集,对其它模糊子集的隶属度为零,如此处理可简化计算,减少内存和时间开销. 其中,转速偏差分为5 个区域,即0 , 10 , 10 , 110 ,110 ,210 , 210 ,310 , 310 ,750 ,每个区域的隶属度按(1) 式和(2) 式

12、计算,区别仅在于系数a , b , c , d各不相同,由于( x) 轴的左半部曲线与右半部取为完全轴对称,因此当转速偏差为负值时,其计算程序上与上述程序相同.2. 2 模糊规则及模糊推理考虑最简单的情况,模糊控制器采用一维结构时,其控制规则如下:If E is ZE then u is ZEIf E is PS then u is PSIf E is PM then u is PMIf E is PB then u is PBIf E is PVB then u is PVB其中: u 为模糊控制量的增量值, 当转速偏差E 为负值时, 规则同上, 只是u 的符号相应改变(u的符号与E 的符号

13、一致) ; ZE ,S ,M ,B ,VB 分别表示输出增量u 为“零, 小, 中等, 大, 很大”, P 表示“Positive”,N 表示“Negative”.由以上分析可见,虽然模糊控制规则共有9 条,但由于转速偏差E 符号不同时,其控制规则是对称的,因此在实施模糊推理时,只用到了5 条规则. 此外,由于任意转速偏差E 只可能属于两个模糊子集,因此在实际运算时,对应每个采样周期的转速偏差输入只可能激活两条规则,这样处理的结果是大大简化了计算,保证了实时控制对微处理器运算速度的需要.模糊推理采用近似推理法则. 对于一条被激活的规则, 控制增量u 的隶属度按Mamdani 合成推理方法计算,

14、即由于此处只考虑转速误差E 作为模糊输入变量,因此输出增量u 的隶属度与输入变量的隶属度相同.2. 3 清晰化计算对应于每个采集周期的转速偏差值E ,由上述模糊决策过程激活2 条控制规则(当E 小于10 r/min 时仅激活一条规则) , 并可求出每条规则中模糊输出增量u 的隶属度值. u*的隶属函数取单值线函数, 即一系列的离散值(见图3) .输出控制量是执行器闭环控制的给定值, 其论域为0 , 100 % , 则输出增量u*的论域取值为 - 100 % ,100 % .对于求出的模糊输出增量,采用重心法计算其精确输出增量值,即:当采用一维模糊控制器时,对于上述的输入变量模糊隶属度函数的模糊

15、推理方法,不难证明因此上式的计算量很小,易于在单片机中实现.结论在以80C196 KC 嵌入式16 位单片机为核心的柴油机数字调速系统中,根据上述算法设计了控制软件,并在6135 型柴油机上进行了实机试验. 图4 和图5 表示了柴油机低速空车接排时转速和齿杆位移变化的动态过程. 由图可见,在接排的瞬间,柴油机的转速急剧下降,与此同时,齿杆位移量几乎是呈直线增加到100 % ,说明控制器控制动作的快速性已达到极限. 事实上,通过一系列性能测试,以本文提出的模糊控制算法为基本控制策略的柴油机转速控制系统具有良好的动态性能,但若仅采用模糊控制,系统的稳态性能达不到一级调速精度. 可采用多种控制策略来

16、改善系统的稳态性能,其中Fuzzy- PID 复合控制是提高系统控制精度的有效途径。模糊控制算法的C语言实现#include #includemath.h #define PMAX 100 #define PMIN -100 #define DMAX 100 #define DMIN -100 #define FMAX 100 /*语言值的满幅值*/ int PFF4=0,12,24,48;/*输入量D语言值特征点*/ int DFF4=0,16,32,64;/*输出量U语言值特征点*/ int UFF7=0,15,30,45,60,75,90;/*采用了调整因子的规则表,大误差时偏重误差,小

17、误差时偏重误差变化*/ /*a0=0.3,a1=0.55,a2=0.74,a3=0.89 */ int rule77= /误差变化率 -3,-2,-1, 0, 1, 2, 3 / 误差 -6,-6,-6,-5,-5,-5,-4, / -3 -5,-4,-4,-3,-2,-2,-1, / -2 -4,-3,-2,-1, 0, 1, 2, / -1 -4,-3,-1, 0, 1, 3, 4, / 0 -2,-1, 0, 1, 2, 3, 4, / 1 1, 2, 2, 3, 4, 4, 5, / 2 4, 5, 5, 5, 6, 6, 6; / 3/*/int Fuzzy(int P,int D)

18、 /*模糊运算引擎*/ int U; /*偏差,偏差微分以及输出值的精确量*/ unsigned int PF2,DF2,UF4; /*偏差,偏差微分以及输出值的隶属度*/ int Pn,Dn,Un4; long temp1,temp2; /*隶属度的确定*/ /*根据PD的指定语言值获得有效隶属度*/ if(P-PFF3 & PPFF3) if(P=-PFF2) Pn=-2; PF0=FMAX*(float)(-PFF2-P)/(PFF3-PFF2); else if(P=-PFF1) Pn=-1; PF0=FMAX*(float)(-PFF1-P)/(PFF2-PFF1); else if

19、(P=PFF0) Pn=0; PF0=FMAX*(float)(-PFF0-P)/(PFF1-PFF0); else if(P=PFF1) Pn=1; PF0=FMAX*(float)(PFF1-P)/(PFF1-PFF0); else if(P=PFF2) Pn=2; PF0=FMAX*(float)(PFF2-P)/(PFF2-PFF1); else if(P=PFF3) Pn=3; PF0=FMAX*(float)(PFF3-P)/(PFF3-PFF2); else if(P=PFF3) Pn=3; PF0=0; PF1=FMAX-PF0;if(D-DFF3 & DDFF3) if(D=

20、-DFF2) Dn=-2;DF0=FMAX*(float)(-DFF2-D)/(DFF3-DFF2); else if(D=-DFF1) Dn=-1; DF0=FMAX*(float)(-DFF1-D)/(DFF2-DFF1); else if(D=DFF0) Dn=0; DF0=FMAX*(float)(-DFF0-D)/(DFF1-DFF0); else if(D=DFF1) Dn=1; DF0=FMAX*(float)(DFF1-D)/(DFF1-DFF0); else if(D=DFF2) Dn=2; DF0=FMAX*(float)(DFF2-D)/(DFF2-DFF1); else

21、 if(D=DFF3) Dn=3; DF0=FMAX*(float)(DFF3-D)/(DFF3-DFF2); else if(D=DFF3) Dn=3; DF0=0; DF1=FMAX-DF0;/*使用误差范围优化后的规则表rule77*/ /*输出值使用13个隶属函数,中心值由UFF7指定*/ /*一般都是四个规则有效*/ Un0=rulePn-1+3Dn-1+3; Un1=rulePn+3Dn-1+3; Un2=rulePn-1+3Dn+3; Un3=rulePn+3Dn+3; if(PF0=DF0) UF0=PF0;else UF0=DF0; if(PF1=DF0) UF1=PF1;else UF1=DF0; if(PF0=DF1) UF2=PF0; else UF2=DF1; if(PF1UF1) UF1=0; else UF0=0; if(Un0=Un2) if(UF0UF2) UF2=0; else UF0=0; if(Un0=Un3) if(UF0UF3) UF3=0; else UF0=0; if(Un1=Un2) if(UF1UF2) UF2=0; else UF1=0; if(Un1=Un3) if(UF1UF3) UF3=0; else UF1=0; if(Un2=Un3) if(UF2UF3) UF3=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论