MATLAB学习笔记之模糊算法2

1.1.6 模糊推理的运用
1.2.7 模糊控制系统的组成
与一般的计算机控制系统不同的是,模糊控制系统的控制器是模糊控制器,模糊控制器是基于模糊条件语句描述的语言控制规则,又称为模糊语言控制器。
输入输出变量
(1)模糊控制的输入变量通常取e或e,ec或e,ec,er,分别构成所谓的一维,二维,三维模糊控制器,一般选择控制量的增量作为模糊控制器的输出变量。
(2)描述模糊控制器的输入,输出变量状态:负大(nb),负中(nm),负小(ns),零(o),正小(ps),正中(pm),正大(pb)。
(3)描述误差变量的词集一般取为:负大(nb),负中(nm),负小(ns),负零(no),正零(po),正小(ps),正中(pm),正大(pb)。
模糊变量e的赋值表
模糊控制规则
(1)条件语句的基本类型为:if a or b and c or d then e
例如水温控制规则之一为:若水温高或偏高,且温度上升快或较快,则加大冷水流量。
用条件语句表达为:if e=nb or nm and ec=nb or nm then u=pb
1.2.8 模糊控制算法的工程实现在大型的模糊控制系统中常采用软件模糊推理法,模糊关系,模糊推理以及模糊判决的运算可以离线进行,最后得到模糊控制器输入量的量化等级e,ec与输出量即系统控制量的量化等级u之间的确定关系,这种关系通常称为控制表。
1.3 水位控制系统
1.3.1 控制目标控制模型如下图所示,控制进水阀s1和出水阀s2,使水箱水位保持在目标水位o处。
1.3.2 控制规则(1)若当前水位高于目标水位,则向外排水,差值越大,排水越快
(2)若当前水位低于目标水位,则向内注水,差值越大,注水越快
(3)若当前水位和目标水位相差很小,则保持排水速度和注水速度相等
注:建立模糊控制规则的基本思想:当误差大或较大时,选择控制量应该以尽快消除误差为主,而当误差较小时,选择控制量要防止超调,以系统的稳定性为主要出发点。
1.3.3 控制步骤(1)我们选择目标水位和当前水位的差值e作为观察量,选取阀门开度u为控制量。
(2)将偏差e划分为5个模糊集,负大(nb)、负小(ns)、零(zo)、正小(ps)、正大(pb),e为负表示当前水位低于目标水位,e为正表示当前水位高于目标水位。设定e的取值范围为[-3,3],隶属度函数如下图所示。
此时偏差e对应的模糊表如下表所示。
-3-2-10123
pb 0 0 0 0 0 0.5 1
ps 0 0 0 0.5 1 0.5 0
zo 0 0 0.5 1 0.5 0 0
ns 0 0.5 1 0.5 0 0 0
nb 1 0.5 0 0 0 0 0
(3)将控制量u划分为5个模糊集,负大(nb)、负小(ns)、零(zo)、正小(ps)、正大(pb),u为负表示增大进水阀门s1的开度(同时减小出水阀门s2的开度),u为正表示减小进水阀门s1的开度(同时增大出水阀门s2的开度)。设定u的取值范围为[-4,4],隶属度函数如下。
此时控制量u对应的模糊表如下表所示。
-4-3-2-101234
pb 0 0 0 0 0 0 0 0.5 1
ps 0 0 0 0 0 0.5 1 0.5 0
zo 0 0 0 0.5 1 0.5 0 0 0
ns 0 0.5 1 0.5 0 0 0 0 0
nb 1 0.5 0 0 0 0 0 0 0
(4)制定模糊规则:模糊规则的制定是模糊控制的核心内容,控制性能的好坏很大程度上由模糊规则决定,目前主要是根据经验来制定相应的规则
若e负大,则u负大
若e负小,则u负小
若e为零,则u为零
若e正小,则u正小
若e正大,则u正大
(6)进行模糊决策:最终需要的控制量u即为模糊控制的输出,u可由偏差矩阵e和模糊关系矩阵r合成得到
(7)控制量的反模糊化
我们模糊决策得到的控制量u是一个矩阵,并不能直接应用在工程上,因此需要将u解释为实际中的特定行为,即反模糊化操作。目前常用的反模糊化方法有以下几种:
最大隶属度法:应用于计算简单控制要求不高场合
重心法:可以使得输出更平滑
加权平均法:工业上应用最广泛
1.4 模糊控制算法实现1.4.1 matlab代码clcclear%创建模糊控制器a = newfis('fuzzy tank');%输入变量a = addvar(a,'input','e',[-3,3]); %设置变量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,'zo','trimf',[-2,0,2]); %三角形隶属度函数a =addmf(a,'input',1,'ps','trimf',[-1,1,3]); %三角形隶属度函数a = addmf(a,'input',1,'pb','smf',[1,3]); %s型隶属度函数%输出变量a = addvar(a,'output','u',[-4,4]); %设置变量u为输出且定义域[-4,4]a = addmf(a,'output',1,'nb','zmf',[-4,-2]); %z型隶属度函数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]); %s型隶属度函数%建立模糊规则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'); %采用最大隶属度平均法进行反模糊化writefis(a1,'tank'); %保存tank文件a2 = readfis('tank'); %读取tank文件%绘制图像figure(1); plotfis(a2); %绘制模糊控制器结构figure(2); plotmf(a,'input',1); %绘制输入隶属度函数图像figure(3); plotmf(a,'output',1); %绘制输出隶属度函数图像%打开模糊调试器showrule(a);ruleview('tank');

圣邦微电子获评“国产模拟IC行业产业引领卓越奖”
汽车散热器坏了的现象及维护
NVIDIA为广大开发者提供50余项全新升级版AI工具及培训材料
央视:人工智能规模达5000亿元,企业超4400家,生成式AI发展进入快车道
惊艳 小米6新配色曝光: 不比蓝色差!
MATLAB学习笔记之模糊算法2
电力变压器运行与保养
iOS11最新消息:iOS11 beta3怎么样?iOS11 beta3升级教程,iOS11 Beta3真机实测iOS11 Beta3有哪些BUG?
Waymo推出首个自动驾驶出租车服务Waymo One
自动驾驶企业百度Apollo如何定义量产车
太阳能LED灯具设计技术分析
华为发布全新一代工业交换机S5735I-S-V2系列
三星要区块链全产业链的原因是什么
基于CY8C21534的通用操作面板解析方案
英飞凌旗下IR HiRel公司助力NASA毅力号火星探测车创造新里程碑
小米MIUI9最新消息:MIUI9化繁为简将主打简单好用,对比MIUI8可谓是大刀阔斧的改革
气体质量流量传感器工业自动化行业的应用分析
矽力杰参加2022慕尼黑华南电子展
使用ANSI C代码实现RISC-V CPU内核
爱立信和意法完成ST-Ericsson拆分交易