系统的模糊控制MATLAB实现Word格式文档下载.docx
- 文档编号:15198732
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:10
- 大小:131.32KB
系统的模糊控制MATLAB实现Word格式文档下载.docx
《系统的模糊控制MATLAB实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《系统的模糊控制MATLAB实现Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
同理,将偏差的变化量ec划分为5个模糊集,负大(NB)、负小(NS)、零(ZO)、正小(PS)、正大(PB),ec为负表示该时刻水位比上一时刻水位小,ec为郑表示该时刻水位比上一时刻水位大,。
设定ec的取值范围为[-3,3],隶属度函数如下。
同样将控制量u划分为5个模糊集,负大(NB)、负小(NS)、零(ZO)、正小(PS)、正大(PB),u为负表示减小控制量,u为正表示增大控制量。
设定u的取值范围为[-4,4],隶属度函数如下。
3、制定模糊规则
模糊规则的制定是模糊控制的核心内容,控制性能的好坏很大程度上由模糊规则决定,本文主要是根据经验来制定相应的规则。
将上述用语言描述的规则转化为“IFA,THENB”的语句如下:
1.If(eisNB)and(ecisNB)then(uisPB)。
2.If(eisNB)and(ecisNS)then(uisPB)。
3.If(eisNB)and(ecisZO)then(uisPB)。
4.If(eisNB)and(ecisPS)then(uisPB)。
5.If(eisNB)and(ecisPB)then(uisPB)。
6.If(eisNS)and(ecisNB)then(uisPB)。
7.If(eisNS)and(ecisNS)then(uisPB)。
8.If(eisNS)and(ecisZO)then(uisPS)。
9.If(eisNS)and(ecisPS)then(uisPS)。
10.If(eisNS)and(ecisPB)then(uisZO)。
11.If(eisZO)and(ecisNB)then(uisPB)。
12.If(eisZO)and(ecisNS)then(uisPS)。
13.If(eisZO)and(ecisZO)then(uisZO)。
14.If(eisZO)and(ecisPS)then(uisNS)。
15.If(eisZO)and(ecisPB)then(uisNB)。
16.If(eisPS)and(ecisNB)then(uisZO)。
17.If(eisPS)and(ecisNS)then(uisPS)。
18.If(eisPS)and(ecisZO)then(uisNS)。
19.If(eisPS)and(ecisPS)then(uisNB)。
20.If(eisPS)and(ecisPB)then(uisNB)。
21.If(eisPB)and(ecisNB)then(uisNB)。
22.If(eisPB)and(ecisNS)then(uisNB)。
23.If(eisPB)and(ecisZO)then(uisNB)。
24.If(eisPB)and(ecisPS)then(uisNB)。
25.If(eisPB)and(ecisPB)then(uisNB)。
4、进行模糊决策
我们最终需要获得的控制量u即为模糊控制的输出,u可由两个输入量(偏差矩阵e和偏差矩阵ec)和模糊关系矩阵R合成得到。
根据制定的模糊规则,通过相应的模糊集合运算,可得到模糊关系集合R。
R定义为:
即:
输出模糊量:
5、控制量的反模糊化
我们模糊决策得到的控制量u是一个矩阵,并不能直接应用在工程上,因此需要将u解释为实际中的特定行为,即反模糊化操作。
目前常用的反模糊化方法有以下几种:
(1)最大隶属度法----计算简单控制要求不高场合
(2)重心法----输出更平滑
(3)加权平均法----工业上应用最广泛
本设计中采用第三种方法:
加权平均法。
6、matlab实现
系统结构如图:
通过matlab集成的模糊控制模块,我们能够更加方便地对应偏差e、偏差量ec和控制量u的关系,并可以调节e和ec在不同值下u的对应输出。
7、系统响应与分析
在系统中,发现随着时间的推移,系统快速到达距离标准位置很近的25左右,继而出现波动情况。
分析出现这种现象的原因是模糊控制的调整太大,需要进行自适应调整,以便系统在到达e接近与0的情况下,仍能继续接近标准位置。
老师,最近有些事,没时间做自适应调整了,对不起啊。
8、代码
clear;
clc;
%对接收阶跃信号的系统进行模糊控制
%%构建模糊控制器
a=newfis('
fuzzytank'
);
%输入量e的模糊化
a=addvar(a,'
input'
'
e'
[-3,3]);
%将偏差e,即当前位置-目标目标,作为观察量(输入量)
a=addmf(a,'
1,'
NB'
zmf'
[-3,-1]);
a=addmf(a,'
NS'
trimf'
[-3,-1,1]);
ZO'
[-2,0,2]);
PS'
[-1,1,3]);
PB'
smf'
[1,3]);
%输入量ec的模糊化
ec'
%将偏差的变化量ec,即e(t)-e(t-1),作为观察量(输入量)
2,'
%输出量的模糊化
output'
u'
[-4,4]);
%选取阀门开度u为控制量
[-4,-2]);
[-4,-2,0]);
[0,2,4]);
[2,4]);
%建立模糊规则
rulelist=[11511
12511
13511
14511
15511
21511
22511
23411
24411
25311
31511
32411
33311
34211
35111
41311
42411
43211
44111
45111
51111
52111
53111
54111
55111];
a=addrule(a,rulelist);
%设置反模糊化算法
a1=setfis(a,'
DefuzzMethod'
mom'
writefis(a1,'
tank'
a2=readfis('
%可代入计算的
figure
(1);
plotfis(a2);
figure
(2);
plotmf(a,'
1);
figure(3);
2);
figure(4);
%展示e、ec和u的对应关系
showrule(a);
ruleview('
%%实时调控
r_t=0;
%初始值r(0)=0;
r_tf=0;
Ulist=0;
r_aim=30;
%目标值
n=50;
%进行100次校核
record=zeros(1,n);
%记录r的变化
fori=1:
n
r_t=r_tf+Ulist;
e=(r_t-r_aim)*0.1;
%获取差值并转化为偏差
ec=(r_t-r_tf)*0.75;
%偏差的变化量的k=0.75;
r_tf=r_t;
Ulist=evalfis([eec],a2);
%输出
record(i)=r_t;
end
t=0:
1:
n-1;
plot(t,record);
%绘制r随时间变化的曲线
xlabel('
时间t'
ylabel('
r(t)'
title('
相应随时间的变化'
感谢下载!
欢迎您的下载,资料仅供参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 模糊 控制 MATLAB 实现