模糊PID控制问题.docx

上传人:scccc 文档编号:13007249 上传时间:2021-12-10 格式:DOCX 页数:13 大小:193.96KB
返回 下载 相关 举报
模糊PID控制问题.docx_第1页
第1页 / 共13页
模糊PID控制问题.docx_第2页
第2页 / 共13页
模糊PID控制问题.docx_第3页
第3页 / 共13页
模糊PID控制问题.docx_第4页
第4页 / 共13页
模糊PID控制问题.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《模糊PID控制问题.docx》由会员分享,可在线阅读,更多相关《模糊PID控制问题.docx(13页珍藏版)》请在三一文库上搜索。

1、Fuzzy - simulink有关模糊PID问题概述最近很多 人问我关于模糊PID的问题,我就把模糊PID的问题综合了一下,希望对大家 有所帮助。一、模糊PID就是指自适应模糊PID吗?不是,通常模糊控制和PID控制结合的方式有以下几种:1、 大误差范围内采用模糊控制,小误差范围内转换成PID控制 的模糊PID开关切换控 制。2、PID控制与模糊控制并联而成的混合型模糊 PID控制。3、利用模糊控制器在线整定 PID控制器参数的自适应模糊 PID控制。一般用1和3比较多,MATLAB自带的水箱液位控制tank采用的就是开关切换控制。由于 自适应模糊PID控制效果更加良好,而且大多数人选用自适

2、应模糊 PID控制器,所以在这 里主要指自适应模糊PID控制器。二、自适应模糊PID的概念根据PID控制器的三个参数与偏差 e和偏差的变化ec之间的模 糊关系,在运行时不断检 测e及ec,通过事 先确定的关系,利用模糊推理的方法,在线修改PID控制器的三个参数, 让PID参数可自整定。就我的理解而言,它最终还是一个PID控制器,但是因为参数可自动调整的缘故,所以也能解决不少一般的非线性问题,但是假如系统的非线性、不确定性 很严重时,那模糊PID的控制效果就会不理想啦。三、模糊PID控制规则是怎么定的?这个控制规则当然很重要,一般经验:(1) 当e较大时,为使系统具有较好的跟踪性能,应取较大的K

3、p与较小的Kd,同时为避免系统响应出现较大的超调,应对积分作用加以限制,通常取 Ki=0。(2) 当e处于中等大小时,为使系统响应具有较小的超调,Kp应 取得小些。在这种情况下, Kd的取值对系统响应的影响较大,Ki的取值要适当。(3) 当e较小时,为使系统具有较好的稳定性能,Kp与Ki均应 取得大些,同时为避免系统在设定值附近出现振荡,Kd值的选择根据|ec值较大时,Kd取较小值,通常Kd为中等 大小。另外主要还得根据系统本身的特性和你自己的经验来整定,当然你先得弄明白PID三个参数Kp, Ki , Kd各自的作用,尤其对于你控制的这个系统。四、量化因子 Ke, Kec, Ku该如何确定?有

4、个一般的公式:Ke=n/e(max),Kec=m/ec(max),Ku=u(max)/l。 n,m,l 分别为 Ke, Kec, Ku 的 量化等级,一般可取6或7。e(max),ec(max),u(max)别为误差,误差变化率,控制输出的 论域。不过通过我实际的调试,有时候这些公式并不好使。所以我一般都采用凑试法,根据你的经验,先确定Ku,这个直接关系着你的输出是发散的还是收敛的。再确定 Ke,这 个直接关系着输出的稳态误差响应。最后确定Kec,前面两个参数确定好了,这个应该也不会难了。五、在仿真的时候会出现刚开始仿真的时候时间进度很虬 从e-10次方等等开始,该怎么解决?这时候肯定会有许多

5、人跳出来说是 步长的问题,等你改完步长,能运行了,一看结果,惨 不忍睹!我只能说这个情况有可能是你的参数有错误,但如果各项参数是正确的前提下, 你可以在方框图里 面加饱和输出模块或者改变阶跃信号的 sample time,让不从0开始或者 加个延迟模块或者加零阶保持器看看六、 仿真到一半的时候仿真不动了是什么原因?仿真图形很有可能发散了,加个零阶保持器,饱和输出模块看看效果。改变Ke, Kec,Ku的参数。七、仿真图形怎么反了?把Ku里面的参数改变一下符号,比如说从正变为负。模糊 PID的话改变Kp的就可 以。八、 还有人问我为什么有的自适应模糊PID里有相加的模块 而有的没有?相加的是与PI

6、D的初值相加。最后出来的各项参数 Kp= Kp+Kp0 , Ki= Ki+Ki0 , Kd=A Kd+Kd0。Kp0, Ki0 , Kd0分别为PID的初 值。有的系统并没有设定 PID的初值。九、我照着论文搭建的,什么都是正 确的,为什么最后就是结果不对?你修改下参数或者重新搭建一遍。哪一点出了点小问题,都有可能导致失败。大家还有什么问题就在帖子后面留言哈,如果模型实在是搭建不成功的话可以给我看看, 大家有I可题一起 解决!附件里面是两个自适应模糊 PID的程序,大家可以参考下! 所含文件:1 .集合是指具有某种共同届性且彼此间可以区别的事物的总体。组成集合的事物称为元 或元素,元素与集合之

7、间的关系是届丁或不届丁的关系,非此即彼。模糊集合是经典集合 的拓展,事物是否届丁它所描述的概念,不能绝对地以“是”或“非”来加以区别。这里 的届丁与不届丁之间无明显的界限,而是在某种程度上的届丁,这是无法用经典集合来描 述的,而只能用模糊集合来描述这种模糊概念。这里首先介绍用模糊集合来描述模糊概念 的初步知识。定义1设给定域(指被讨论的全体对象)U, U到0 , 1闭区间的任一映射:U > 0,1;u,侦u)都确定U的一个模糊子集A 其中,称为模糊子集的隶届函数,称为 u对丁的隶届度。也就是说,论域u上的模糊子集 但由隶届函数从A(u)来表征,从u)的取值范围是0,1, A(u)的大小反

8、映了 u对丁 A从届程度的高低。正确地确定隶届函数是利用模糊 集合解决实际问题的基础。定义2设A旦是论域U上的两个模糊子集,对丁 U上的每一个元素,规定A与B的“并”运算au巨"交”运算An旦及“补”运算 的隶届函数分别如下:定义3 设A与旦分别息X而Y上的模糊集,其隶届函数分别是A(x)和H B(x) 0模糊条 件语句“若A则B”表示从X到Y的一个模糊关系,即AB,它的示届函数为AjB(x)=max1 min%(x),侦x),1 - (x)2.基丁模糊数学的软测量1)(1)辅助变量的选择。选择粮食水分、粮食温度以及空气湿度作为辅助变量,粮食状态作为主导变量。(2)测量的输入数据的预

9、处理。对粮食状态的预测不是根据粮仓中的某一点粮食的温度、水分以及空气湿度来进行的,因为这样的预测不能全面反映整个粮仓粮食的实际状态。在这里我们采用复合滤波法,其原理是:先将 N个采样点数据按照从小到大的顺序排列,即 x1<x2<产 xN(N»3),则可认为测量的数据为xi x2 . xnx =xN _2这样就可比较客观地反映实际的粮食状态,预测的结果也比较真实。根据水分传感器、温度传感器及湿度传感器所测得的数据来表示水分、温度的高低和湿度的大小具有模糊性。通常用隶届度描述模糊集,通过隶届度的大小来反映模糊事物接近 其客观事物的程度。该系统中三种传感器分别测得的数据范围:水

10、分为10防16%温度为-3050C;湿度为20吩98%RHf(x)=11(±广0.02水分含量高的隶届度函数为10 %12 % <x < 16 %温度高的隶届度函数为f(x)=(X- 25) 25x< 25湿度大的隶届度函数为f(x)=匕| 雄一2。%)广0.0120 % <x < 100 %由丁任意模糊量的隶届度的大小都是在0,1之间,因此可将这一区间分为5段:00.2;0.20.4;0.40.6;0.60.8;0.81.0.凡是隶届度在 00.2之间的届于“水分含 量低/温度低/湿度低”;在0.20.4之间的届丁“水分含量较低/温度较低/湿度较低”;

11、 在0.40.6之间的届丁“水分含量正常/温度正常/湿度正常”;在0.60.8之间的届丁“水分含量较局/温度较局/湿度较局”;在0.81.0之间的届丁“水分含量局/温度局/湿 度高”。2)(1)基丁模糊技术的软测量的输入变量和输出变量。为了表达的方便,将粮食储备中粮食状态出现的所有模糊量表示如下:高=P§ 较高=PM 正常=ZR 较低=NM 低=NB安全=D1; 较安全=DZ 较危险=D3 危险=D4输入模糊量A、B、C分别为粮食水分、粮食温度和空气湿度,其论域都为-3 , 3,模糊子集=PB, PM ZR NM NB。其隶届度函数图如图7-19所示。NBNM ZR PMPB3210

12、123图7-19输入模糊量隶届度函数图D4 D3 D2D图7-20输出模糊变量D (粮食状态)隶届度函数图(2)模糊规则。根据模型特点最多可抽取125条规则,而实际上由丁样本数据所包含的-定规律性和重叠性,再加上对模糊规则的进一步筛选, 故抽取出了以下16条可信推理规则:1.IfA = PB andB = PB andC = PB thenD =D42.IfA = PBandB = PM andC = PMthenD =D43.IfA = PB andB = ZR andC = ZR thenD =D34.IfA = PBandB = NMandC = NMthenD =D25.IfA = P

13、B andC = NB andD = NB thenD =D16.IfA = PM andB = PB andC = PB thenD =D37.IfA = PM andB = ZR andC = ZR thenD =D28.IfA = PM andB = NMandC = NMthenD =D29.IfA =PM and B =NB and C =NB then D =D110.IfA=ZR and B =PB and C =PB then D :=D211.IfA=ZR and B =PM and C =PM then D :=D212.IfA=ZR and B =ZR and C =ZR

14、 then D :=D113.IfA=NMand B =PB and C =PB then D :=D214.IfA=NMand B =PM and C =PM then D :=D115.IfA=NMand B =ZR and C =ZR then D :=D116.IfA=NB and B =PB and C =PB then D :=D13)这里我们利用BP神经网络实现模糊推理。模糊输入变量A、B、C的论域都为-3 , 3, 模糊子集都为PB, PM ZR NM NB,而模糊输出变量 D的论域为-2 , 3 ,模糊子集 为D1, D2, D3, D4,则输入层神经元的个数为21个,输出层

15、的神经元为6个,隐层 神经元的个数为16个。由丁网络输入层神经元的个数太多, 故训练推理过程所需的时间 太长,这里对A B和C进行了 “编码”。由丁论域中各元素的隶届度有联系,故可用一个 数字代替模糊集,模糊集编码表如表 7-3所示。表7-3 BP神经网络的输入变量模糊集编码表PBPMZRNBNM12345图7-21输入为编码的BP网络结构图4)这里用MATLAB 6.1进行训练和预测。选取某粮食储备库 2002年4月、6月以及8月 中的50组测量数据经处理后对BP网络进行训练。训练完成后,对 9月中的6组测量数据 的储粮状态进行预测,这6组数据经数据处理后用模糊语言可分别描述为:(1) A=

16、NB B=PB C=NM; (2) A=PB B=ZR C=NM ;(3) A=PM B=PB C=ZR ; (4) A=PB B=PM C=NM;(5) A=NB B=ZR C=NB ; (6) A=PB B=NM C=NR对应的编码即神经网络的输入分别为:(1)5 1 4 (2)1 3 4 2 1 3(4)1 2 4 (5)5 3 5 (6)1 4 5 可得出输出D的模糊集分别为:(1) 0.0002- 0.0003 -0.0013 0.0544 0.5093 0.9670;(2) -0.0005 0.5004 0.9990 0.4993 0.0008 -0.0005 ;(3) 0.004

17、3 0.4996 1.0012 0.5606 -0.0022 -0.0014;(4) 0.5008 1.0024 -0.0002 0.0013 0.0019 -0.0042;(5 ) 0.0010 -0.0001 -0.0029 0.0206 0.4957 0.9834;-0.0030 0.0002 0.0079 1.0027 0.49902 0.0078。2模糊控制隶届函数高斯隶届函数函数 gaussmf格式 y=gaussmf(x,sig c) 说明 高斯隶届函数的数学表达式为:,其中 为参数,x为自变量,sig为数学表达式中 的参数。例6-1>>x=0:0.1:10;>

18、>y=gaussmf(x,2 5);>>plot(x,y)>>xlabel('gaussmf, P=2 5')结果为图6-1。图6-16.1.2两边型高斯隶届函数函数 gauss2mf格式 y = gauss2mf(x,sig1 c1 sig2 c2)说明sig1、c1、sig2、c2为命令1中数学表达式中的两对参数例6-2>>x = (0:0.1:10)'>>y1 = gauss2mf(x, 2 4 1 8);>>y2 = gauss2mf(x, 2 5 1 7);>>y3 = gauss2

19、mf(x, 2 6 1 6);>>y4 = gauss2mf(x, 2 7 1 5);>>y5 = gauss2mf(x, 2 8 1 4);>>plot(x, y1 y2 y3 y4 y5);>>set(gcf, 'name', 'gauss2mf, 'numbertitle', 'off);结果为图6-2。6.1.3建立一般钟型隶届函数函数 gbellmf格式 y = gbellmf(x,params)说明一般钟型隶届函数依靠函数表达式这里x指定变量定义域范围,参数b通常为正,参数c位于曲线中心

20、,第二个参数变量params 是一个各项分另U为a, b和c的向量。例6-3>>x=0:0.1:10;>>y=gbellmf(x,2 4 6);>>plot(x,y)>>xlabel('gbellmf, P=2 4 6')结果为图6-3。图6-2图6-36.1.4两个sigmoid型隶届函数之差组成的隶届函数函数dsigmf格式 y = dsigmf(x,a1 cl a2 c2)说明这里sigmoid型隶届函数由下式给出x是变量,a,c是参数。dsigmf使用四个参数a,c,C2,并且是两个sigmoid型函数 之差:,参数按顺序

21、 列出。例6-4>>x=0:0.1:10;>>y=dsigmf(x,5 2 5 7);>>plot(x,y)结果为图6-4图6-46.1.5通用隶届函数计算函数evalmf格式 y = evalmf(x, mfParams, mfType)说明evalmf可以计算任意隶届函数,这里 x是变量定义域,mfType是工具箱提供的一种 隶届函数,mfParams是此隶届函数的相应参数,如果你想创建自定义的隶届函数,evalmf仍可以工作,因为它可以计算它不知道名字的任意隶届函数。例6-5>>x=0:0.1:10;>>mfparams = 2

22、 4 6;>>mftype = 'gbellmf;>>y=evalmf(x,mfparams,mftype);>>plot(x,y)>>xlabel('gbellmf, P=2 4 6')结果为图6-5。图6-56.1.6建立n型隶届函数函数primf格式 y = pimf(x,a b c d)说明 向量x指定函数自变量的定义域,该函数在向量 x的指定点处进行计算,参数 a,b,c,d决定了函数的形状,a和d分别对应曲线下部的左右两个拐点,b和c分别对应 曲线上部的左右两个拐点。例6-6>>x=0:0.1:10

23、;>>y=pimf(x,1 4 5 10);>>plot(x,y)>>xlabel('pimf, P=1 4 5 10')结果为图6-6。6.1.7通过两个sigmoid型隶届函数的乘积构造隶届函数函数psigmf格式 y = psigmf(x,a1 c1 a2 c2)说明这里sigmoid型隶届函数由下式给出x是变量,a,c是参数。psigmf使用四个参数a,c,&, C2,并且是两个sigmoid型函数 之积:,参数按顺序 列出。例6-7>>x=0:0.1:10;>>y=psigmf(x,2 3 -5 8)

24、;>>plot(x,y)>>xlabel('psigmf, P=2 3 -5 8')结果为图6-7。图6-6图6-76.1.8 建立Sigmoid型隶届函数函数sigmf格式 y = sigmf(x,a c)说明,定义域由向量x给出,形状由参数a和c确定。例6-8>>x=0:0.1:10;>>y=sigmf(x,2 4);>>plot(x,y)>>xlabel('sigmf, P=2 4')结果为图6-8。图6-8例6-9>>x = (0:0.2:10)';>>

25、;y1 = sigmf(x,-1 5);>>y2 = sigmf(x,-3 5);>>y3 = sigmf(x,4 5);>>y4 = sigmf(x,8 5);>>subplot(2,1,1),plot(x,y 1 y2 y3 yd);>>yi = sigmf(x,5 2);>>y2 = sigmf(x,5 4);>>y3 = sigmf(x,5 6);>>y4 = sigmf(x,5 8);>>subplot(2,1,2),plot(x,y 1 y2 y3 yd);结果为图6-9。图

26、6-96.1.9建立S型隶届函数函数smf格式y = smf(x,a b) % x 为变量,a为b参数,用于定位曲线的斜坡部分例 6-10>>x=0:0.1:10;>>y=smf(x,1 8);>>plot(x,y)结果为图6-10。图 6-10例 6-11 >>x = 0:0.1:10;>>subplot(3,1,1);plot(x,smf(x,2 8);>>subplot(3,1,2);plot(x,smf(x,4 6);>>subplot(3,1,3);plot(x,smf(x,6 4);结果为图6-11

27、。图 6-116.1.10建立梯形隶届函数函数trapmf格式 y = trapmf(x,a b c d)说明这里梯形隶届函数表达式:或f(x;a,b,c,d) = max(min(,定义域由向量x确定,曲线形状由参数 a,b,c,d 确定,参数a和d对应梯形下部的左右两个拐点,参数 b和c对应梯形上部的左右两个拐点。例 6-12>>x=0:0.1:10;>>y=trapmf(x,1 5 7 8);>>plot(x,y)>>xlabel('trapmf, P=1 5 7 8')结果为图6-12。例 6-13>>x =

28、(0:0.1:10)';>>yi = trapmf(x,2 3 7 9);>>y2 = trapmf(x,3 4 6 8);>>y3 = trapmf(x,4 5 5 7);>>y4 = trapmf(x,5 6 4 6);>>plot(x,y 1 y2 y3 yd);结果为图6-13。图 6-12图 6-136.1.11建立三角形隶届函数函数trimf格式 y = trimf(x,params)y = trimf(x,a b c)说明 三角形隶届函数表达式:或者 f(x;a,b,c,) = max(min(定义域由向量x确定

29、,曲线形状由参数a,b,c确定,参数a和c对应三角形下部的左右两 个顶点,参数b对应三角形上部的顶点,这里要求a ,生成的隶届函数总有一个统一的高度,若想有一个高度小于统一高度的三角形隶届函数,则使用 trapmf函数。例 6-14>>x=0:0.1:10;>>y=trimf(x,3 6 8);>>plot(x,y)>>xlabel('trimf, P=3 6 8')结果为图6-14。图 6-14例 6-15>>x = (0:0.2:10)';>>y1 = trimf(x,3 4 5);>&g

30、t;y2 = trimf(x,2 4 7 );>>y3 = trimf(x,1 4 9);>>subplot(2,1,1),plot(x,y 1 y2 y3 );>>y1 = trimf(x,2 3 5);>>y2 = trimf(x,3 4 7);>>y3 = trimf(x,4 5 9);>>subplot(2,1,2),plot(x,y结果为图6-15。图 6-156.1.12建立Z型隶届函数函数zmf格式y = zmf(x,a b) % x 为自变量,a和b为参数,确定曲线的形状。例 6-16>>x=0

31、:0.1:10;>>y=zmf(x,3 7);>>plot(x,y)>>xlabel('zmf, P=3 7')结果为图6-16。例 6-17>>x = 0:0.1:10;>>subplot(3,1,1);plot(x,zmf(x,2 8);>>subplot(3,1,2);plot(x,zmf(x,4 6);>>subplot(3,1,3);plot(x,zmf(x,6 4);结果为图6-17。图 6-16图 6-176.1.13两个隶届函数之间转换参数函数mf2mf格式 outParams = mf2mf(inParams,inType,outType) 图 6-18说明此函数根据参数集,将任意内建的隶届函数类型转换为另一种类型,inParams为你要转换的隶届函数的参数,inType为你要转换的隶届函数的类型的字符申名称,outType:你要转换成的目标隶届函数的字符申名称。例 6-18>>x=0:0.1:5;>>mfp1 = 1 2 3;>>mfp2 = mf2mf(mfp1,'gbellmf,'trimf);>>plot(x,gbellmf(x,mfp1),x,trimf(x,mfp2)结果为图6-18。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1