模糊PID控制问题Word格式文档下载.docx

上传人:b****8 文档编号:22466730 上传时间:2023-02-04 格式:DOCX 页数:16 大小:156.33KB
下载 相关 举报
模糊PID控制问题Word格式文档下载.docx_第1页
第1页 / 共16页
模糊PID控制问题Word格式文档下载.docx_第2页
第2页 / 共16页
模糊PID控制问题Word格式文档下载.docx_第3页
第3页 / 共16页
模糊PID控制问题Word格式文档下载.docx_第4页
第4页 / 共16页
模糊PID控制问题Word格式文档下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

模糊PID控制问题Word格式文档下载.docx

《模糊PID控制问题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《模糊PID控制问题Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。

模糊PID控制问题Word格式文档下载.docx

模糊PID的话改变Kp的就可以。

八、还有人问我为什么有的自适应模糊PID里有相加的模块而有的没有?

相加的是与PID的初值相加。

最后出来的各项参数Kp=△Kp+Kp0,Ki=△Ki+Ki0,Kd=△Kd+Kd0。

Kp0,Ki0,Kd0分别为PID的初值。

有的系统并没有设定PID的初值。

九、我照着论文搭建的,什么都是正确的,为什么最后就是结果不对?

你修改下参数或者重新搭建一遍。

哪一点出了点小问题,都有可能导致失败。

……

大家还有什么问题就在帖子后面留言哈,如果模型实在是搭建不成功的话可以给我看看,大家有问题一起解决!

附件里面是两个自适应模糊PID的程序,大家可以参考下!

所含文件:

1.模糊数学的基本概念

  集合是指具有某种共同属性且彼此间可以区别的事物的总体。

组成集合的事物称为元或元素,元素与集合之间的关系是属于或不属于的关系,非此即彼。

模糊集合是经典集合的拓展,事物是否属于它所描述的概念,不能绝对地以“是”或“非”来加以区别。

这里的属于与不属于之间无明显的界限,而是在某种程度上的属于,这是无法用经典集合来描述的,而只能用模糊集合来描述这种模糊概念。

这里首先介绍用模糊集合来描述模糊概念的初步知识。

 定义1设给定域(指被讨论的全体对象)U,U到[0,1]闭区间的任一映射

都确定U的一个模糊子集A。

其中,称为模糊子集的隶属函数,称为u对于的隶属度。

  也就是说,论域u上的模糊子集A由隶属函数μA(u)来表征,μA(u)的取值范围是[0,1],μA(u)的大小反映了u对于A从属程度的高低。

正确地确定隶属函数是利用模糊集合解决实际问题的基础。

定义2设A、B是论域U上的两个模糊子集,对于U上的每一个元素,规定A与B的“并”运算A∪B、“交”运算A∩B及“补”运算 的隶属函数分别如下:

定义3 设A与B分别是X和Y上的模糊集,其隶属函数分别是μA(x)和μB(x)。

模糊条件语句“若A则B”表示从X到Y的一个模糊关系,即A→B,它的隶属函数为

2.基于模糊数学的软测量

  1)软测量在粮情测控系统中的应用

  

(1)辅助变量的选择。

  选择粮食水分、粮食温度以及空气湿度作为辅助变量,粮食状态作为主导变量。

(2)测量的输入数据的预处理。

对粮食状态的预测不是根据粮仓中的某一点粮食的温度、水分以及空气湿度来进行的,因为这样的预测不能全面反映整个粮仓粮食的实际状态。

在这里我们采用复合滤波法,其原理是:

先将N个采样点数据按照从小到大的顺序排列,即x1≤x2≤…≤xN(N≥3),则可认为测量的数据为

这样就可比较客观地反映实际的粮食状态,预测的结果也比较真实。

 根据水分传感器、温度传感器及湿度传感器所测得的数据来表示水分、温度的高低和湿度的大小具有模糊性。

通常用隶属度描述模糊集,通过隶属度的大小来反映模糊事物接近其客观事物的程度。

  该系统中三种传感器分别测得的数据范围:

水分为10%~16%;

温度为-30~50℃;

湿度为20%~98%RH。

水分含量高的隶属度函数为

温度高的隶属度函数为

湿度大的隶属度函数为

由于任意模糊量的隶属度的大小都是在[0,1]之间,因此可将这一区间分为5段:

0~0.2;

0.2~0.4;

0.4~0.6;

0.6~0.8;

0.8~1.0.凡是隶属度在0~0.2之间的属于“水分含量低/温度低/湿度低”;

在0.2~0.4之间的属于“水分含量较低/温度较低/湿度较低”;

在0.4~0.6之间的属于“水分含量正常/温度正常/湿度正常”;

在0.6~0.8之间的属于“水分含量较高/温度较高/湿度较高”;

在0.8~1.0之间的属于“水分含量高/温度高/湿度高”。

2)软测量模型的建立

 

(1)基于模糊技术的软测量的输入变量和输出变量。

为了表达的方便,将粮食储备中粮食状态出现的所有模糊量表示如下:

 高=PB;

较高=PM;

正常=ZR;

较低=NM;

低=NB

 安全=D1;

较安全=D2;

较危险=D3;

危险=D4

  输入模糊量A、B、C分别为粮食水分、粮食温度和空气湿度,其论域都为[-3,3],模糊子集={PB,PM,ZR,NM,NB}。

其隶属度函数图如图7-19所示。

图7-19输入模糊量隶属度函数图

图7-20输出模糊变量D(粮食状态)隶属度函数图

(2)模糊规则。

根据模型特点最多可抽取125条规则,而实际上由于样本数据所包含的一定规律性和重叠性,再加上对模糊规则的进一步筛选,故抽取出了以下16条可信推理规则:

  1.IfA=PBandB=PBandC=PBthenD=D4

  2.IfA=PBandB=PMandC=PMthenD=D4

  3.IfA=PBandB=ZRandC=ZRthenD=D3

  4.IfA=PBandB=NMandC=NMthenD=D2

  5.IfA=PBandC=NBandD=NBthenD=D1

  6.IfA=PMandB=PBandC=PBthenD=D3

  7.IfA=PMandB=ZRandC=ZRthenD=D2

  8.IfA=PMandB=NMandC=NMthenD=D2

9.IfA=PMandB=NBandC=NBthenD=D1

10.IfA=ZRandB=PBandC=PBthenD=D2

11.IfA=ZRandB=PMandC=PMthenD=D2

12.IfA=ZRandB=ZRandC=ZRthenD=D1

13.IfA=NMandB=PBandC=PBthenD=D2

14.IfA=NMandB=PMandC=PMthenD=D1

15.IfA=NMandB=ZRandC=ZRthenD=D1

16.IfA=NBandB=PBandC=PBthenD=D1

3)模糊推理的实现

  这里我们利用BP神经网络实现模糊推理。

模糊输入变量A、B、C的论域都为[-3,3],模糊子集都为{PB,PM,ZR,NM,NB},而模糊输出变量D的论域为[-2,3],模糊子集为{D1,D2,D3,D4},则输入层神经元的个数为21个,输出层的神经元为6个,隐层神经元的个数为16个。

由于网络输入层神经元的个数太多,故训练推理过程所需的时间太长,这里对A、B和C进行了“编码”。

由于论域中各元素的隶属度有联系,故可用一个数字代替模糊集,模糊集编码表如表7-3所示。

表7-3BP神经网络的输入变量模糊集编码表

PB

PM

ZR

NB

NM

1

2

3

4

5

图7-21输入为编码的BP网络结构图

4)仿真

  这里用MATLAB6.1进行训练和预测。

选取某粮食储备库2002年4月、6月以及8月中的50组测量数据经处理后对BP网络进行训练。

训练完成后,对9月中的6组测量数据的储粮状态进行预测,这6组数据经数据处理后用模糊语言可分别描述为:

 

(1)A=NBB=PBC=NM;

(2)A=PBB=ZRC=NM;

 (3)A=PMB=PBC=ZR;

(4)A=PBB=PMC=NM;

 (5)A=NBB=ZRC=NB;

(6)A=PBB=NMC=NB。

对应的编码即神经网络的输入分别为:

(1)[514]

(2)[134](3)[213]

(4)[124]   (5)[535]   (6)[145]

可得出输出D的模糊集分别为:

(1)[0.0002–0.0003-0.00130.05440.50930.9670];

(2)[-0.00050.50040.99900.49930.0008-0.0005];

(3)[0.00430.49961.00120.5606-0.0022-0.0014];

(4)[0.50081.0024-0.00020.00130.0019-0.0042];

(5)[0.0010-0.0001-0.00290.02060.49570.9834];

(6)[-0.00300.00020.00791.00270.499020.0078]。

2模糊控制隶属函数

高斯隶属函数

函数gaussmf

格式y=gaussmf(x,[sigc])

说明高斯隶属函数的数学表达式为:

,其中为参数,x为自变量,sig为数学表达式中的参数。

例6-1

>

x=0:

0.1:

10;

y=gaussmf(x,[25]);

plot(x,y)

xlabel('

gaussmf,P=[25]'

结果为图6-1。

图6-1

6.1.2两边型高斯隶属函数

函数gauss2mf

格式y=gauss2mf(x,[sig1c1sig2c2])

说明sig1、c1、sig2、c2为命令1中数学表达式中的两对参数

例6-2

x=(0:

10)'

;

y1=gauss2mf(x,[2418]);

y2=gauss2mf(x,[2517]);

y3=gauss2mf(x,[2616]);

y4=gauss2mf(x,[2715]);

y5=gauss2mf(x,[2814]);

plot(x,[y1y2y3y4y5]);

set(gcf,'

name'

'

gauss2mf'

numbertitle'

off'

);

结果为图6-2。

6.1.3建立一般钟型隶属函数

函数gbellmf

格式y=gbellmf(x,params)

说明一般钟型隶属函数依靠函数表达式

这里x指定变量定义域范围,参数b通常为正,参数c位于曲线中心,第二个参数变量params是一个各项分别为a,b和c的向量。

例6-3

y=gbellmf(x,[246]);

gbellmf,P=[246]'

结果为图6-3。

图6-2 

 

图6-3

6.1.4两个sigmoid型隶属函数之差组成的隶属函数

函数dsigmf

格式y=dsigmf(x,[a1c1a2c2])

说明这里sigmoid型隶属函数由下式给出

x是变量,a,c是参数。

dsigmf使用四个参数a1,c1,a2,c2,并且是两个sigmoid型函数之差:

,参数按顺序列出。

例6-4

y=dsigmf(x,[5257]);

结果为图6-4

图6-4

6.1.5通用隶属函数计算

函数evalmf

格式y=evalmf(x,mfParams,mfType)

说明evalmf可以计算任意隶属函数,这里x是变量定义域,mfType是工具箱提供的一种隶属函数,mfParams是此隶属函数的相应参数,如果你想创建自定义的隶属函数,evalmf仍可以工作,因为它可以计算它不知道名字的任意隶属函数。

例6-5

mfparams=[246];

mftype='

gbellmf'

y=evalmf(x,mfparams,mftype);

结果为图6-5。

图6-5

6.1.6建立П型隶属函数

函数primf

格式y=pimf(x,[abcd])

说明向量x指定函数自变量的定义域,该函数在向量x的指定点处进行计算,参数[a,b,c,d]决定了函数的形状,a和d分别对应曲线下部的左右两个拐点,b和c分别对应曲线上部的左右两个拐点。

例6-6

y=pimf(x,[14510]);

pimf,P=[14510]'

结果为图6-6。

6.1.7通过两个sigmoid型隶属函数的乘积构造隶属函数

函数psigmf

格式y=psigmf(x,[a1c1a2c2])

psigmf使用四个参数a1,c1,a2,c2,并且是两个sigmoid型函数之积:

例6-7

y=psigmf(x,[23-58]);

psigmf,P=[23-58]'

结果为图6-7。

图6-6 

图6-7

6.1.8建立Sigmoid型隶属函数

函数sigmf

格式y=sigmf(x,[ac])

说明,定义域由向量x给出,形状由参数a和c确定。

例6-8

y=sigmf(x,[24]);

sigmf,P=[24]'

结果为图6-8。

图6-8

例6-9

0.2:

10)’;

y1=sigmf(x,[-15]);

y2=sigmf(x,[-35]);

y3=sigmf(x,[45]);

y4=sigmf(x,[85]);

subplot(2,1,1),plot(x,[y1y2y3y4]);

y1=sigmf(x,[52]);

y2=sigmf(x,[54]);

y3=sigmf(x,[56]);

y4=sigmf(x,[58]);

subplot(2,1,2),plot(x,[y1y2y3y4]);

结果为图6-9。

图6-9

6.1.9建立S型隶属函数

函数smf

格式y=smf(x,[ab]) 

%x为变量,a为b参数,用于定位曲线的斜坡部分。

例6-10

y=smf(x,[18]);

结果为图6-10。

图6-10

例6-11

x=0:

subplot(3,1,1);

plot(x,smf(x,[28]));

subplot(3,1,2);

plot(x,smf(x,[46]));

subplot(3,1,3);

plot(x,smf(x,[64]));

结果为图6-11。

图6-11

6.1.10建立梯形隶属函数

函数trapmf

格式y=trapmf(x,[abcd])

说明这里梯形隶属函数表达式:

或f(x;

a,b,c,d)=max(min(,定义域由向量x确定,曲线形状由参数a,b,c,d确定,参数a和d对应梯形下部的左右两个拐点,参数b和c对应梯形上部的左右两个拐点。

例6-12

y=trapmf(x,[1578]);

trapmf,P=[1578]'

结果为图6-12。

例6-13

y1=trapmf(x,[2379]);

y2=trapmf(x,[3468]);

y3=trapmf(x,[4557]);

y4=trapmf(x,[5646]);

plot(x,[y1y2y3y4]);

结果为图6-13。

图6-12 

图6-13

6.1.11建立三角形隶属函数

函数trimf

格式y=trimf(x,params)

y=trimf(x,[abc])

说明三角形隶属函数表达式:

或者f(x;

a,b,c,)=max(min(

定义域由向量x确定,曲线形状由参数a,b,c确定,参数a和c对应三角形下部的左右两个顶点,参数b对应三角形上部的顶点,这里要求a,生成的隶属函数总有一个统一的高度,若想有一个高度小于统一高度的三角形隶属函数,则使用trapmf函数。

例6-14

y=trimf(x,[368]);

trimf,P=[368]'

结果为图6-14。

图6-14

例6-15

y1=trimf(x,[345]);

y2=trimf(x,[247]);

y3=trimf(x,[149]);

subplot(2,1,1),plot(x,[y1y2y3]);

y1=trimf(x,[235]);

y2=trimf(x,[347]);

y3=trimf(x,[459]);

subplot(2,1,2),plot(x,[y1y2y3]);

结果为图6-15。

图6-15

6.1.12建立Z型隶属函数

函数zmf

格式y=zmf(x,[ab]) 

%x为自变量,a和b为参数,确定曲线的形状。

例6-16

y=zmf(x,[37]);

zmf,P=[37]'

结果为图6-16。

例6-17

plot(x,zmf(x,[28]));

plot(x,zmf(x,[46]));

plot(x,zmf(x,[64]));

结果为图6-17。

图6-16 

图6-17

6.1.13两个隶属函数之间转换参数

函数mf2mf

格式outParams=mf2mf(inParams,inType,outType)

图6-18

说明此函数根据参数集,将任意内建的隶属函数类型转换为另一种类型,inParams为你要转换的隶属函数的参数,inType为你要转换的隶属函数的类型的字符串名称,outType:

你要转换成的目标隶属函数的字符串名称。

例6-18

5;

mfp1=[123];

mfp2=mf2mf(mfp1,'

'

trimf'

plot(x,gbellmf(x,mfp1),x,trimf(x,mfp2))

结果为图6-18。

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1