MATLAB水箱液位模糊控制仿真程序
MATLAB水箱液位模糊控制仿真程序
题目
以水位的模糊控制为例,设有一个水箱,通过调节阀门可向内注水和向外抽水,设计一个模糊控制器,通过调节阀门将水位稳定在固定点附近,按照日常的操作经验,可以得到基本的控制规则为:
“若水位高于O点,则向外排水,差值越大,排水越快”;
“若水位低于O点,则向内注水,差值越大,注水越快”
实验内容:
- 选择液位差为e,分为5个模糊集:NB:负大 NS:负小 Z:零 PS:正小 PB:正大,将偏差e的变化分为7个等级:-3,-2,-1,0,1,2,3
- 控制量u:分为5个模糊集:NB:负大 NS:负小 Z:零 PS:正小 PB:正大,将偏差e的变化分为7个等级:-4,-3,-2,-1,0,1,2,3,4
- 水位变化e划分表:
- 模糊规则的描述
若e负大,则u负大
若e负小,则u负小
若e为零,则u为零
若e正小,则u正小
若e正大,则u正大 - 求迷糊关系
- 模糊决策
- 控制量的反模糊化
模糊控制响应表
完整代码
clear all;
close all;
a=newfis('fuzz-tank');%创建一个模糊推理系统(FIS)
%水位变化e划分,NB:负大 NS:负小 Z:零 PS:正小 PB:正大
a=addvar(a,'input','e',[-3,3]);%向模糊推理系统中添加语言变量
a=addmf(a,'input',1,'NB','zmf',[-3,-1]); %Z形隶属函数
a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]);%三角形隶属函数
a=addmf(a,'input',1,'Z','trimf',[-2,0,2]);
a=addmf(a,'input',1,'PS','trimf',[-1,1,3]);
a=addmf(a,'input',1,'PB','smf',[1,3]);%S形隶属函数
%控制量u变化划分,NB:负大 NS:负小 Z:零 PS:正小 PB:正大
a=addvar(a,'output','u',[-4,4]);
a=addmf(a,'output',1,'NB','zmf',[-4,-1]);
a=addmf(a,'output',1,'NS','trimf',[-4,-2,1]);
a=addmf(a,'output',1,'Z','trimf',[-2,0,2]);
a=addmf(a,'output',1,'PS','trimf',[-1,2,4]);
a=addmf(a,'output',1,'PB','smf',[1,4]);
%模糊规则
%若e负大,则u负大
%若e负小,则u负小
%若e为零,则u为零
%若e正小,则u正小
%若e正大,则u正大
rulelist=[1 1 1 1;2 2 1 1;3 3 1 1;4 4 1 1;5 5 1 1];
a=addrule(a,rulelist);
a1=setfis(a,'DefuzzMethod','mom');%将DefuzzMethod属性设置为mom
writefis(a1,'tank');%保存文件到磁盘上
a2=readfis('tank');%读取模糊控制系统figure(1);
plotfis(a2);%绘制FIS系统结构
figure(2);
plotmf(a,'input',1);
figure(3);
plotmf(a,'output',1);flag=1;
if flag==1showrule(a);ruleview('tank');
end
disp('------------------------------------------------------');
disp(' fuzzy controller table:e=[-3,+3],u=[-4,+4] ');
disp('------------------------------------------------------');
for i=1:1:7e(i)=i-4;Ulist(i)=evalfis([e(i)],a2);
end
Ulist=round(Ulist)%取整
e=-3;
u=evalfis([e],a2)
运行结果
可以在input里面输入数字或者拉动红色的线随意选择e值
e=-1
e=3
MATLAB水箱液位模糊控制仿真程序相关推荐
- 液位控制系统matlab仿真,智能控制及MATLAB实现—水箱液位模糊控制仿真设计
<智能控制及MATLAB实现-水箱液位模糊控制仿真设计>由会员分享,可在线阅读,更多相关<智能控制及MATLAB实现-水箱液位模糊控制仿真设计(6页珍藏版)>请在人人文库网上搜 ...
- Matlab下的模糊控制水箱液位
该模型实现了在Simulink模型中模糊推理系统(FIS)+水箱液位控制. Simulink模型 该模型使用模糊逻辑控制器块实现的模糊推理系统来控制水箱中的水位.控制模型如下图 open_system ...
- 模糊PID控制双容水箱液位控制-模糊控制
资源: 双容水箱液位模糊PID控制MATLAB仿真-电子商务文档类资源-CSDN文库 模糊控制原理 水流入量Qi由调节阀R1(FV101)控制,流出量Q2由用户通过负载阀R2来改变,被调量为下水箱水位 ...
- 双容水箱液位模糊PID控制系统设计与仿真(Matlab/Simulink)
前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看.(点击跳转人工智能学习资料) 微信公众号:创享日记 发送:双容模糊 获取完整无水印报告+仿真源文件+ ...
- matlab测量液体液位,基于MATLAB三容水箱液位控制系统.doc
基于MATLAB三容水箱液位控制系统 基于MATLAB三容水箱液位控制系统 计算机技术+沈瑞清+12011112262 本文通过对三容水箱的液位定值控制来说明SIMULINK在自动控制系统中的应用. ...
- 单容水箱液位控制系统matlab演示,单容水箱液位控制系统设计详解.doc
分类号 密级 UDC 过程控制系统设计作业 单容水箱液位控制系统设计 学生姓名 xxxxxx 学号 xxxxxxxxxxxx 任课教师 xxxx 院.系.中心 工程学院自动化及测控系 专业年级 xxx ...
- 基于matlab的水塔水位控制设计,水箱液位控制系统设计
内容简介: 水箱液位控制系统设计,课程设计论文,共31页,11974字. 摘要 水箱液位控制系统是典型的自动控制系统,在工业应用上可以模拟水塔液位.炉内成分等多种控制对象的自动控制系统. 本次课程设计 ...
- 基于台达PLC的水箱液位PID控制(matlab处理数据)
1.实验目的 (1)掌握过程控制的方法: (2)熟练掌握台达编程技巧: (3)熟悉实验室水箱系统.变频器的接线方法: (4)学会用文件寄存器来读取数据并处理数据: (5)学会台达PLC内部PID控制器 ...
- 双水箱matlab仿真,基于组态王和Matlab的双容水箱液位控制
摘要: 为了将复杂控制算法应用到实践中, 提出利用DDE (动态数据交换) 技术实现Matlab与组态王之间的数据通讯, 结合了Matlab强大的运算能力和组态王软件的数据采集. 系统监控方面的优势. ...
最新文章
- 解决Android5.0以后DatePicker选择时间无效的bug。
- 基于Opencv实现眼睛控制鼠标
- Hibernate上传数据到数据库,从数据库读取数据到本地模板代码
- 回溯算法-01遍历所有排列方式问题
- Scrapy 下载器 中间件(Downloader Middleware)
- 测试开发——flask视图函数与路由 实战重点
- dbms_stats包更新、导出、导入、锁定统计信息
- java 守护进程 linux_Java实现Linux下服务器程序的双守护进程
- Android异常总结---E/AndroidRuntime(23439): Caused by: java.lang.IllegalArgumentException: column '_id' d
- linux NTP服务
- 清理操作系统垃圾批处理文件
- AI和机器学习对云计算的安全有何影响?
- Mac OS X上使用Wireshark(可用)
- Exploring Simple Siamese Representation Learning阅读笔记
- 第一次接触低代码平台 AppCube,还是有点门槛的
- phpMyAdmin下载、安装和使用入门教程
- 物联网芯片并非单一产品,目前主要划分为哪几芯片?
- 彻底解决Android 8.0启动服务问题
- Rename_suffix
- 机器视觉学习笔记(三)-- 图像采集(镜头)
热门文章
- 俄罗斯、乌克兰程序员薪资曝光!年薪 15w+,女程序员比男程序员收入高
- WIN10 困扰多时的屏幕亮度 终于可以调节了-完美 -更新2018年2月28日
- BackupPC - 恢复选项Restore options
- ASUS TUF GAMING B660M PLUS WIFI D4 i5-12600K RX6650XT 黑苹果efi引导文件
- 崩坏3桌面版怎么更换服务器,崩坏3【桌面版】安装常见问题解决办法
- [Erlang 0111] Erlang Abstract Format , Part 2
- Unity之ASE从入门到精通 目录
- 达梦数据库分区表介绍
- apache的IO包中的FileUtils方法的使用
- 模拟角频率和数字角频率区别