模糊控制的应用实例

首先来看一个实例,控制进水阀S1和出水阀S2,使水箱水位保持在目标水位O处。


按照日常操作经验,有以下规则:

1、  若当前水位高于目标水位,则向外排水,差值越大,排水越快;

2、  若当前水位低于目标水位,则向内注水,差值越大,注水越快;

3、  若当前水位和目标水位相差很小,则保持排水速度和注水速度相等。

 

下面来设计一个模糊控制器

1、选择观测量和控制量

一般选择偏差e,即目标水位和当前水位的差值作为观察量,选取阀门开度u为控制量。

 

2、输入量和输出量的模糊化

将偏差e划分为5个模糊集,负大(NB)、负小(NS)、零(ZO)、正小(PS)、正大(PB),e为负表示当前水位低于目标水位,e为正表示当前水位高于目标水位。设定e的取值范围为[-3,3],隶属度函数如下。


偏差e对应的模糊表如下:

隶属度

变化等级

-3

-2

-1

0

1

2

3

模糊集

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

 

 

同样将控制量u划分为5个模糊集,负大(NB)、负小(NS)、零(ZO)、正小(PS)、正大(PB),u为负表示增大进水阀门S1的开度(同时减小出水阀门S2的开度),u为正表示减小进水阀门S1的开度(同时增大出水阀门S2的开度)。设定u的取值范围为[-4,4],隶属度函数如下。


控制量u对应的模糊表如下:

隶属度

变化等级

-4

-3

-2

-1

0

1

2

3

4

模糊集

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

 

3、制定模糊规则

模糊规则的制定是模糊控制的核心内容,控制性能的好坏很大程度上由模糊规则决定,目前主要是根据经验来制定相应的规则。【后面可以结合神经网络来学习模糊规则】

(1)若e负大,则u负大;

(2)若e负小,则u负小;

(3)若e为零,则u为零;

(4)若e正小,则u正小;

(5)若e正大,则u正大;

将上述用语言描述的规则转化为’’IF A THEN B’’的语句如下:



4、求解模糊关系 

根据制定的模糊规则,通过相应的模糊集合运算,可得到模糊关系集合R。

 


5、进行模糊决策

我们最终需要获得的控制量u即为模糊控制的输出,u可由偏差矩阵e和模糊关系矩阵R合成得到。

 

6、控制量的反模糊化

我们模糊决策得到的控制量u是一个矩阵,并不能直接应用在工程上,因此需要将u解释为实际中的特定行为,即反模糊化操作。目前常用的反模糊化方法有以下几种:

(1)最大隶属度法----计算简单控制要求不高场合

(2)重心法----输出更平滑

(3)加权平均法----工业上应用最广泛

具体方法的介绍请参照刘金琨《智能控制》一书P45-P46,博文最后会附上书籍相关链接。

 

7、matlab实现

所幸的是,在matlab模糊控制工具箱中已经帮我们实现了4-6步求解矩阵运算的操作,只需要直接调用evalfis函数就可以得到相应的决策控制量。


通过matlab集成的模糊控制模块,我们能够更加方便地对应偏差e和控制量u的关系,并可以调节e在不同值下u的对应输出。



Matlab程序

%水位模糊控制算法
clear all;
close all;
 
a = newfis('fuzzy tank');
 
a = addvar(a,'input','e',[-3,3]);
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]);
 
a = addvar(a,'output','u',[-4,4]);
a = addmf(a,'output',1,'NB','zmf',[-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 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');
a2 = readfis('tank');
 
figure(1);
plotfis(a2);
figure(2);
plotmf(a,'input',1);
figure(3);
plotmf(a,'output',1);
 
 
showrule(a);
ruleview('tank');
 
for i=1:1:7
   e(i)=i-4;
   Ulist(i)=evalfis([e(i)],a2);
end
Ulist = round(Ulist);  %对决策结果四舍五入取整
 
disp('------------------------------------------------------');
disp('----------模糊控制表:e =[-3,3], u = [-4,4]-----------');
disp('------------------------------------------------------');
fprintf('| a  |');
fprintf(' %d  |',e);
fprintf('\n');
fprintf('| u  |');
fprintf(' %d  |',Ulist);
fprintf('\n');
 
  1.    


备注:

1、模糊规则矩阵rulelist的含义:模糊矩阵是由模糊规则转化而来,这里矩阵规模为5*4,矩阵第一列表示输入e(5个模糊集合PB/PS/ZO/NS/NB依次对应1-5),矩阵第二列表示输出u(含义同理),第三列为规则的权重weight,第四列为AND模糊运算(1对应AND,2对应OR),如果是多输入多数出模糊控制器,规则列表的含义请参考:

The first mcolumns refer to the inputs of the system. Each column contains a number thatrefers to the index of the membership function for that variable.
The next n columns refer to the outputs of thesystem. Each column contains a number that refers to the index of themembership function for that variable.

The m + n + 1 column contains the weight that isto be applied to the rule. The weight must be a number between zero and one andis generally left as one.
The m + n + 2 column contains a 1 if the fuzzyoperator for the rule's antecedent is AND. It contains a 2 if the fuzzyoperator is OR.

 

2、设置反模糊化方法setfis(a,'DefuzzMethod','mom');反模糊化方法不同最终输出控制量也不同。

mom 最大隶属度平均法

centroid 面积重心法

bisector 面积等分法

som 最大隶属度取小法

lom 最大隶属度去大法

 

3、如果要对决策结果取整有三种方法:round(四舍五入)、ceil(向上取整)、floor(向下取整)。

 

最后总结一下模糊控制器的设计步骤:


  • 10
    点赞
  • 1
    评论
  • 37
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
内容简介 本书从工程应用与实践角度,对模糊推理与模糊控制系统作了深人浅出介绍,并以多个实例详细地介绍了模糊推理学习及其在MATLAB模糊逻辑工具箱中实现,使得读者可以尽快地掌握模糊逻辑内容与模糊控制实现和使用。全书内容结构清晰,简明易懂,便于查找,可作为大学高年级学生自学模糊控制和智能控制自学教材,也可作为大学教师教授相关课程参考书,尤其可作为工程技术人员学习和实现模糊控制与智能控制工具书。 目录 第1章 模糊控制系统 1.1 模糊逻辑历史 1.2 模糊集 1.3 隶属函数 1.3.1 隶属函数几种确定方法 1.3.2 几种常用隶属函数 1.3.3 模糊逻辑工具箱内置隶属函数 1.4 模糊运算与模糊推理 1.4.1 模糊运算 1.4.2 模糊规则与模糊推理 1.4.3 Mamdani型推理与Sugeno型推理 1.5 模糊系统 1.5.1 模糊系统结构 1.5.2 模糊控制设计 1.5.3 神经一模糊系统 1.5.4 自适应模糊模型 1.5. 5 自适应模糊控制系统 1.6 常用专业词汇 第2章 MATLAB模糊逻辑工具箱 2.1 模糊推理过程 2.2 模糊逻辑工具箱图形界面工具 2.2.1 FIS编辑器 2.2.2 隶属函数编辑器 2.2.3 模糊规则编辑器 2.2.4 模糊规则观察器 2.2.5 输出曲面观察器 2.2.6 自定义模糊推理系统 2.3 模糊逻辑工具箱命令行工作方式 2.3.1 系统结构函数 2.3.2 系统显示函数 2.3.3 在命令行中建立系统 2.3.4 FIS求解 2.3.5 FIS结构 2.4 模糊推理系统类型转换 2.5 神经一模糊推理编辑器ANFIS 2.5.l 神经一模糊推理 2.5.2 ANFIS编辑器 2.5.3 应用ANFIS编辑器步骤 第3章 模糊PID控制 3.1 几种自适应PID控制 3.1.1 参数自适应PID控制 3.1.2 非参数自适应PID控制器 3.2 两种类型模糊PID控制器 3.2.l 调整系统控制量模糊PID控制器 3.2.2 模糊增益调整PID控制器 第4章 模糊控制应用实例 4.1 模糊控制器与Simulink连接 4.2 模糊PD控制器 4.2.1 用模糊逻辑工具箱设计模糊控制器 4.2.2 Simulink仿真及参数调整 4.2.3 仿真结果 4.3 火电机组主汽温模糊控制系统 4.4 单隶属度函数模糊控制器 4.5 水温模糊控制系统 4.6 电液伺服模糊控制系统 附录 模糊逻辑工具箱函数详解 A 图形界面工具 B 隶属函数 C FIS数据结构管理 D 高级技术 E 仿真模块 F 演示程序 主要参考文献
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值