云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 模糊控制器的设计

模糊控制器的设计

  • 62 次阅读
  • 3 次下载
  • 2025/12/9 18:03:53

如果采用并行推理法,那么,

1 1 1 1 1 2 +6 0 0 1 0 0 0 0 ------ Ui?(E'?EC')?Ri,i?1,2,?,17,所以 U?U1?U2???U17

U'经解模糊化就可以得到论域U上的控制量u'。

'''''1 1 1 1 1 2

运行模糊控制的仿真程序附录中7,得到模糊控制器控制系统的响应如下图所示:

10.9清晰化:采用最大隶属度法、加权平均法或中位数法,本控制器采用重心法。

采用matlab程序编程可以得到模糊控制查询表,具体的程序在后面的附录3中,下面表3就是得到的控制查询表 ------0 ++++++ 0.80.70.60.50.40.30.20.16 5 4 3 2 1 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 3 3 3 3 3 2 2 2 2 2 2 1 0 3 3 3 3 3 2 2 2 2 2 2 1 0 3 3 2 2 2 2 2 1 1 1 1 1 1 3 3 2 2 2 2 2 1 1 0 0 1 0 3 3 2 2 2 2 2 1 1 1 0 1 0 2 2 2 2 2 1 1 1 1 1 1 0 0 2 2 2 2 2 1 1 0 1 0 0 0 -1 0012345678910

图6模糊控制下系统的响应

比较图6与图5可以发现,利用模糊控制器控制系统与PID控制系统相比,前者使系统的鲁棒性能

+1 2 2 1 1 1 1 1 0 0 0 0 0 -1 +2 2 2 1 0 0 1 0 0 0 ---- 更强,干扰被大大减弱,并且系统系统的动态特性更好,显然前者控制的系统性能优于后者。另外,

通过阅读相关资料发现,出现了模糊PID控制器,自适应模糊PID控制,它结合了模糊控制器与PID

1 1 1 1 +3 2 2 2 1 --0 0 0 ---- 控制器的优点,能使系统的性能更加完美。

1 1 1 1 1 1 --- +4 1 1 1 1 1 0 0 0 0 - 附录:

1 1 1 1 +5 0 0 1 0 0 0 0 ------ 程序1

5

num=[133]; den=[1 15 ]; sys=tf(num,den); ltiview; 程序2 num=[133]; den=[1 15 133]; sys=tf(num,den) 程序3 num=133; den=[1,15,133]; kp=4; numc=kp; denc=[1];

numf=conv(num,numc); denf=conv(den,denc);

[numcf,dencf]=cloop(numf,denf); t=0:0.001:1; step(numcf,dencf,t); 程序4 num=133; den=[1,15,133]; kp=4; kd=0.2; numc=[kd,kp]; denc=[1];

numf=conv(num,numc);

denf=conv(den,denc);

[numcf,dencf]=cloop(numf,denf); t=0:0.001:1; step(numcf,dencf,t); 程序5 num=133; den=[1,15,133]; kp=4; kd=0.2; ki=295; numc=[kd,kp,ki]; denc=[1];

numf=conv(num,numc); denf=conv(den,denc);

[numcf,dencf]=cloop(numf,denf); t=0:0.001:1; step(numcf,dencf,t); 程序6

%模糊控制器设计 %建立FIS

fuz2=newfis('simpleFuzzy2'); fuz2=addvar(fuz2,'input','e',[-6 6]);

fuz2=addmf(fuz2,'input',1,'NB','trapmf',[-6,-6,-5,-3]); fuz2=addmf(fuz2,'input',1,'NS','trapmf',[-5,-3,-2,0]); fuz2=addmf(fuz2,'input',1,'ZR','trimf',[-2,0,2]); fuz2=addmf(fuz2,'input',1,'PS','trapmf',[0,2,3,5]);

6

fuz2=addmf(fuz2,'input',1,'PB','trapmf',[3,5,6,6]); fuz2=addvar(fuz2,'input','ec',[-6 6]);

fuz2=addmf(fuz2,'input',2,'NB','trapmf',[-6,-6,-5,-3]); fuz2=addmf(fuz2,'input',2,'NS','trapmf',[-5,-3,-2,0]); fuz2=addmf(fuz2,'input',2,'ZR','trimf',[-2,0,2]); fuz2=addmf(fuz2,'input',2,'PS','trapmf',[0,2,3,5]); fuz2=addmf(fuz2,'input',2,'PB','trapmf',[3,5,6,6]); fuz2=addvar(fuz2,'output','u',[-3 3]);

fuz2=addmf(fuz2,'output',1,'NB','trapmf',[-3,-3,-3,-2]);

fuz2=addmf(fuz2,'output',1,'NS','trimf',[-2,-1,0]); fuz2=addmf(fuz2,'output',1,'ZR','trimf',[-1,0,1]); fuz2=addmf(fuz2,'output',1,'PS','trimf',[0,1,2]); fuz2=addmf(fuz2,'output',1,'PB','trapmf',[2,3,3,3]); rr=[ 5 5 4 4 3 5 4 4 3 3 4 4 3 3 2 4 3 3 2 2 3 3 2 2 1];

r1=zeros(prod(size(rr)),3); k1=1;

for i=1:size(rr,1) for j=1:size(rr,2) r1(k1,:)=[i,j,rr(i,j)]; k1=k1+1; end end

[r,s]=size(r1); r2=ones(r,2); rulelist=[r1,r2];

7

fuz2=addrule(fuz2,rulelist);

%设置去模糊方法(重心法) fuz2=setfis(fuz2,'DefuzzMethod','centroid'); %绘制FIS系统图形 plotfis(fuz2); Ulist=zeros(13,13) %建立控制表for i=1:13 for j=1:13 e=-7+j; if (e<0)& (j<7); e=e; elseif j==7; e=-0.05; elseif j==8 e=0.05; else e=e-1; end ec=(i-7);

Ulist(i,j)=evalfis([e,ec],fuz2); end end

Ulist=ceil(Ulist) end

Ulist=ceil(Ulist) 程序7

%模糊控制实例系统为133/(s^2+15s+133) %被控系统建模

num=133; %系统的分子 den=[1 ,15 ,133]; %系统的分母

[a1,b,c,d]=tf2ss(num,den); %传递函数转换到状态空间 x=[0;0]; %系统参数

T=0.01;h=T; N=1000; R=ones(1,N); %参考输入

%定义输入和输出变量及隶属度函数 fuz2=newfis('simpleFuzzy2'); fuz2=addvar(fuz2,'input','e',[-6 6]);

fuz2=addmf(fuz2,'input',1,'NB','trapmf',[-6,-6,-5,-3]); fuz2=addmf(fuz2,'input',1,'NS','trapmf',[-5,-3,-2,0]); fuz2=addmf(fuz2,'input',1,'ZR','trimf',[-2,0,2]); fuz2=addmf(fuz2,'input',1,'PS','trapmf',[0,2,3,5]); fuz2=addmf(fuz2,'input',1,'PB','trapmf',[3,5,6,6]); fuz2=addvar(fuz2,'input','ec',[-6 6]);

fuz2=addmf(fuz2,'input',2,'NB','trapmf',[-6,-6,-5,-3]); fuz2=addmf(fuz2,'input',2,'NS','trapmf',[-5,-3,-2,0]); fuz2=addmf(fuz2,'input',2,'ZR','trimf',[-2,0,2]); fuz2=addmf(fuz2,'input',2,'PS','trapmf',[0,2,3,5]); fuz2=addmf(fuz2,'input',2,'PB','trapmf',[3,5,6,6]); fuz2=addvar(fuz2,'output','u',[-3 3]);

fuz2=addmf(fuz2,'output',1,'NB','trapmf',[-3,-3,-3,-2]);

fuz2=addmf(fuz2,'output',1,'NS','trimf',[-2,-1,0]); fuz2=addmf(fuz2,'output',1,'ZR','trimf',[-1,0,1]); fuz2=addmf(fuz2,'output',1,'PS','trimf',[0,1,2]); fuz2=addmf(fuz2,'output',1,'PB','trapmf',[2,3,3,3]);

%模糊规则矩阵 rr=[ 5 5 4 4 3 5 4 4 3 3 4 4 3 3 2 4 3 3 2 2 3 3 2 2 1];

r1=zeros(prod(size(rr)),3); k=1;

for i=1:size(rr,1) for j=1:size(rr,2) r1(k,:)=[i,j,rr(i,j)]; k=k+1; end end

[r,s]=size(r1); r2=ones(r,2); rulelist=[r1,r2];

fuz2=addrule(fuz2,rulelist); %采用模糊控制器的二阶系统仿真 e=0;ec=0; ke=30;kd=20;ku=1; for k=1:N

%输入变量变换至论域 e1=ke*e; ec1=kd*ec; if e1>=6 e1=6; elseif e1<=-6 e1=-6; end

8

搜索更多关于: 模糊控制器的设计 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

如果采用并行推理法,那么, 1 1 1 1 1 2 +6 0 0 1 0 0 0 0 ------ Ui?(E'?EC')?Ri,i?1,2,?,17,所以 U?U1?U2???U17 U'经解模糊化就可以得到论域U上的控制量u'。 '''''1 1 1 1 1 2 运行模糊控制的仿真程序附录中7,得到模糊控制器控制系统的响应如下图所示: 10.9清晰化:采用最大隶属度法、加权平均法或中位数法,本控制器采用重心法。 采用matlab程序编程可以得到模糊控制查询表,具体的程序在后面的附录3中,下面表3就是得到的控制查询表 ------0 ++++++ 0.80.70.60.50.40.30.20.16 5 4 3 2 1 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com