系统的模糊控制matlab实现

上传人:第*** 文档编号:34956368 上传时间:2018-03-05 格式:DOCX 页数:9 大小:153.82KB
返回 下载 相关 举报
系统的模糊控制matlab实现_第1页
第1页 / 共9页
系统的模糊控制matlab实现_第2页
第2页 / 共9页
系统的模糊控制matlab实现_第3页
第3页 / 共9页
系统的模糊控制matlab实现_第4页
第4页 / 共9页
系统的模糊控制matlab实现_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《系统的模糊控制matlab实现》由会员分享,可在线阅读,更多相关《系统的模糊控制matlab实现(9页珍藏版)》请在金锄头文库上搜索。

1、智能控制大作业 第一次大作业 姓名: 周庆强学号: 1140810106 哈尔滨工业大学 2017年 5月 25日题目: 对一个系统 ,假设给系统一个阶跃值 r=30,采样时间为 1s,系 ( ) = 1 10 + 1 统的初始值为 r(0)=0,利用常规的模糊控制器对系统进行控制。 思路: 在仿真系统中,不需要考虑信号的 A/D 和 D/A 转换,模糊控制系统框图如 下: 1、选择观测量和控制量 将偏差 e,即当前位置-目标目标,作为观察量(输入量)1,%将偏差的变 化量 ec,即 e(t)-e(t-1),作为观察量(输入量)2,选取阀门开度 u 为控制量。 2、输入量和输出量的模糊化 将偏

2、差 e 划分为 5 个模糊集,负大(NB)、负小(NS)、零(ZO)、正小(PS)、正大 (PB),e 为负表示当前水位低于目标水位,e 为正表示当前水位高于目标水位。 设定 e 的取值范围为-3,3,隶属度函数如下。同理,将偏差的变化量 ec 划分为 5 个模糊集,负大(NB)、负小(NS)、零 (ZO)、正小(PS)、正大(PB),ec 为负表示该时刻水位比上一时刻水位小,ec 为郑 表示该时刻水位比上一时刻水位大, 。设定 ec 的取值范围为-3,3,隶属度函 数如下。同样将控制量 u 划分为 5 个模糊集,负大(NB)、负小(NS)、零(ZO)、正小(PS)、 正大(PB),u 为负表

3、示减小控制量,u 为正表示增大控制量。设定 u 的取值范围 为-4,4,隶属度函数如下。 3、制定模糊规则 模糊规则的制定是模糊控制的核心内容,控制性能的好坏很大程度上由模 糊规则决定,本文主要是根据经验来制定相应的规则。 PB PB PB PB PB PB PB PS PS ZO PB PS ZO NS NB ZO PS NS NB NB NB NB NB NB NB PS PB NB NS ZO PS PBec u e NB NS ZO 将上述用语言描述的规则转化为“IF A ,THEN B”的语句如下: 1. If (e is NB) and (ec is NB) then (u is

4、PB) 。 2. If (e is NB) and (ec is NS) then (u is PB) 。 3. If (e is NB) and (ec is ZO) then (u is PB) 。 4. If (e is NB) and (ec is PS) then (u is PB) 。 5. If (e is NB) and (ec is PB) then (u is PB) 。6. If (e is NS) and (ec is NB) then (u is PB) 。 7. If (e is NS) and (ec is NS) then (u is PB) 。 8. If (

5、e is NS) and (ec is ZO) then (u is PS) 。 9. If (e is NS) and (ec is PS) then (u is PS) 。 10. If (e is NS) and (ec is PB) then (u is ZO) 。 11. If (e is ZO) and (ec is NB) then (u is PB) 。 12. If (e is ZO) and (ec is NS) then (u is PS) 。 13. If (e is ZO) and (ec is ZO) then (u is ZO) 。 14. If (e is ZO

6、) and (ec is PS) then (u is NS) 。 15. If (e is ZO) and (ec is PB) then (u is NB) 。 16. If (e is PS) and (ec is NB) then (u is ZO) 。 17. If (e is PS) and (ec is NS) then (u is PS) 。 18. If (e is PS) and (ec is ZO) then (u is NS) 。 19. If (e is PS) and (ec is PS) then (u is NB) 。 20. If (e is PS) and

7、(ec is PB) then (u is NB) 。 21. If (e is PB) and (ec is NB) then (u is NB) 。 22. If (e is PB) and (ec is NS) then (u is NB) 。 23. If (e is PB) and (ec is ZO) then (u is NB) 。 24. If (e is PB) and (ec is PS) then (u is NB) 。 25. If (e is PB) and (ec is PB) then (u is NB) 。 4、进行模糊决策 我们最终需要获得的控制量 u 即为模

8、糊控制的输出,u 可由两个输入量(偏 差矩阵 e 和偏差矩阵 ec)和模糊关系矩阵 R 合成得到。 = ( ) 根据制定的模糊规则,通过相应的模糊集合运算,可得到模糊关系集合 R。R 定义为: = ( )u 即: = ( )u 输出模糊量: u = ( ) 5、控制量的反模糊化 我们模糊决策得到的控制量 u 是一个矩阵,并不能直接应用在工程上,因 此需要将 u 解释为实际中的特定行为,即反模糊化操作。目前常用的反模糊化 方法有以下几种: (1)最大隶属度法-计算简单控制要求不高场合 (2)重心法-输出更平滑 (3)加权平均法-工业上应用最广泛 本设计中采用第三种方法:加权平均法。 6、matl

9、ab 实现 系统结构如图: 通过 matlab 集成的模糊控制模块,我们能够更加方便地对应偏差 e、偏差 量 ec 和控制量 u 的关系,并可以调节 e 和 ec 在不同值下 u 的对应输出。7、系统响应与分析 在系统中,发现随着时间的推移,系统快速到达距离标准位置很近的 25 左 右,继而出现波动情况。分析出现这种现象的原因是模糊控制的调整太大,需要进行自适应调整,以便系统在到达 e 接近与 0 的情况下,仍能继续接近标准 位置。 老师,最近有些事,没时间做自适应调整了,对不起啊。 8、代码 clear;clc; %对接收阶跃信号的系统进行模糊控制 % 构建模糊控制器 a = newfis(

10、fuzzy tank); %输入量 e 的模糊化 a = addvar(a,input,e,-3,3); %将偏差 e,即当前位置-目标目标,作为观察 量(输入量) a = addmf(a,input,1,NB,zmf,-3,-1); a =addmf(a,input,1,NS,trimf,-3,-1,1); a =addmf(a,input,1,ZO,trimf,-2,0,2); a =addmf(a,input,1,PS,trimf,-1,1,3); a = addmf(a,input,1,PB,smf,1,3); %输入量 ec 的模糊化 a = addvar(a,input,ec,-3

11、,3); %将偏差的变化量 ec,即 e(t)-e(t-1),作为观 察量(输入量) a = addmf(a,input,2,NB,zmf,-3,-1); a =addmf(a,input,2,NS,trimf,-3,-1,1); a =addmf(a,input,2,ZO,trimf,-2,0,2); a =addmf(a,input,2,PS,trimf,-1,1,3); a = addmf(a,input,2,PB,smf,1,3); %输出量的模糊化 a = addvar(a,output,u,-4,4);%选取阀门开度 u 为控制量 a = addmf(a,output,1,NB,z

12、mf,-4,-2); a =addmf(a,output,1,NS,trimf,-4,-2,0); a =addmf(a,output,1,ZO,trimf,-2,0,2); a =addmf(a,output,1,PS,trimf,0,2,4); a = addmf(a,output,1,PB,smf,2,4); %建立模糊规则 rulelist=1 1 5 1 11 2 5 1 11 3 5 1 11 4 5 1 11 5 5 1 12 1 5 1 12 2 5 1 1 2 3 4 1 12 4 4 1 12 5 3 1 13 1 5 1 13 2 4 1 13 3 3 1 13 4 2

13、1 13 5 1 1 14 1 3 1 14 2 4 1 14 3 2 1 14 4 1 1 14 5 1 1 15 1 1 1 15 2 1 1 15 3 1 1 15 4 1 1 15 5 1 1 1; a = addrule(a,rulelist); %设置反模糊化算法 a1 = setfis(a,DefuzzMethod,mom); writefis(a1,tank); a2 = readfis(tank); %可代入计算的 figure(1); plotfis(a2); figure(2); plotmf(a,input,1); figure(3); plotmf(a,input,2

14、); figure(4); plotmf(a,output,1); %展示 e、ec 和 u 的对应关系 showrule(a); ruleview(tank); % 实时调控 r_t=0;%初始值 r(0)=0; r_tf=0; Ulist=0; r_aim=30;%目标值 n=50;%进行 100 次校核 record=zeros(1,n);%记录 r 的变化 for i=1:nr_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(e ec,a2);%输出record(i)=r_t; end t=0:1:n-1; plot(t,record);%绘制 r 随时间变化的曲线 xlabel(时间 t); ylabel(r(t); title(相应随时间的变化);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 初中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号