计算智能——模糊控制Matlab实现

1. 模糊控制基本原理

模糊控制器包括四部分:

(1)模糊化

主要作用是选定模糊控制器的输入量,并将其转换为系统可识别的模糊量,具体包含以下三步:

a. 对输入量进行满足模糊控制需求的处理;
b. 对输入量进行尺度变换;
c. 确定各输入量的模糊语言取值和相应的隶属度函数。

(2)规则库

根据人类专家的经验建立模糊规则库。模糊规则库包含众多控制规则,是从实际控制经验过渡到模糊控制器的关键步骤。

(3)模糊推理
主要实现基于知识的推理决策。

(4)解模糊
主要作用是将推理得到的控制量转化为控制输出。

在这里插入图片描述

2. 模糊控制器简单模拟全自动洗衣机

2.1 设置输入变量Clothes num及其模糊隶属形态

%输入1
f1=1; 
a=addvar(a,'input','Clothes num',[0*f1,10*f1]);                   
%添加 Clothes num 的模糊语言变量
a=addmf(a,'input',1,'too much','zmf',[0*f1,2*f1]);          
%添加 Clothes num 的模糊语言变量的隶属度函数(z型)
a=addmf(a,'input',1,'much','trimf',[1*f1,3*f1,4*f1]);      
%隶属度函数为三角形
a=addmf(a,'input',1,'middle','trimf',[3*f1,5*f1,6*f1]); 
a=addmf(a,'input',1,'less','trimf',[5*f1,7*f1,8*f1]); 
a=addmf(a,'input',1,'too less','smf',[7*f1,10*f1]); 

2.2 设置输入变量Dirty level及其模糊隶属形态

%输入2
f2=1;
a=addvar(a,'input','Dirty level',[0*f2,6*f2]);                   
%添加 Dirty level 的模糊语言变量
a=addmf(a,'input',2,'More Dirty','zmf',[0*f2,2*f2]); 
a=addmf(a,'input',2,'Dirty','trimf',[1*f2,2*f2,3*f2]);
a=addmf(a,'input',2,'Middle','trimf',[2*f2,3*f2,4*f2]);
a=addmf(a,'input',2,'Less Dirty','trimf',[3*f2,4*f2,5*f2]);
a=addmf(a,'input',2,'No Dirty','smf',[4*f2,6*f2]); 

2.3 设置输出变量Clean mode及其模糊隶属形态

%输出
f3=1;
a=addvar(a,'output','Clean mode',[0*f3,6*f3]);                 
   %添加 Clean mode 的模糊语言变量
a=addmf(a,'output',1,'Depth clean','zmf',[0,1*f3]); 
a=addmf(a,'output',1,'Standard clean','trimf',[1*f3,1.7*f3,3*f3]);
a=addmf(a,'output',1,'Simple clean','trimf',[2*f3,3*f3,4*f3]);
a=addmf(a,'output',1,'Soft clean','trimf',[3*f3,4*f3,5*f3]);
a=addmf(a,'output',1,'Degerming','smf',[5*f3,6*f3]);

2.4 设置模糊控制规则

%规则库
rulelist=[     1 1 1 1 1;             %编辑模糊规则,后两个数分别是规则权重和AND OR选项
               1 2 1 1 1;
               1 3 2 1 1;
               1 4 2 1 1;
               1 5 3 1 1;
          
               2 1 1 1 1;
               2 2 1 1 1;
               2 3 2 1 1;
               2 4 3 1 1;
               2 5 3 1 1;
               
               3 1 1 1 1;
               3 2 2 1 1;
               3 3 3 1 1;
               3 4 3 1 1;
               3 5 4 1 1;
               
               4 1 1 1 1;
               4 2 2 1 1;
               4 3 3 1 1;
               4 4 4 1 1;
               4 5 5 1 1;
               
               5 1 2 1 1;
               5 2 2 1 1;
               5 3 3 1 1;
               5 4 4 1 1;
               5 5 5 1 1;
               
               ];

3. 运行结果

>> fuzzy

ans =

1. If (Clothes num is too much) and (Dirty level is More Dirty) then (Clean mode is Depth clean) (1)    
2. If (Clothes num is too much) and (Dirty level is Dirty) then (Clean mode is Depth clean) (1)         
3. If (Clothes num is too much) and (Dirty level is Middle) then (Clean mode is Standard clean) (1)     
4. If (Clothes num is too much) and (Dirty level is Less Dirty) then (Clean mode is Standard clean) (1) 
5. If (Clothes num is too much) and (Dirty level is No Dirty) then (Clean mode is Simple clean) (1)     
6. If (Clothes num is much) and (Dirty level is More Dirty) then (Clean mode is Depth clean) (1)        
7. If (Clothes num is much) and (Dirty level is Dirty) then (Clean mode is Depth clean) (1)             
8. If (Clothes num is much) and (Dirty level is Middle) then (Clean mode is Standard clean) (1)         
9. If (Clothes num is much) and (Dirty level is Less Dirty) then (Clean mode is Simple clean) (1)       
10. If (Clothes num is much) and (Dirty level is No Dirty) then (Clean mode is Simple clean) (1)        
11. If (Clothes num is middle) and (Dirty level is More Dirty) then (Clean mode is Depth clean) (1)     
12. If (Clothes num is middle) and (Dirty level is Dirty) then (Clean mode is Standard clean) (1)       
13. If (Clothes num is middle) and (Dirty level is Middle) then (Clean mode is Simple clean) (1)        
14. If (Clothes num is middle) and (Dirty level is Less Dirty) then (Clean mode is Simple clean) (1)    
15. If (Clothes num is middle) and (Dirty level is No Dirty) then (Clean mode is Soft clean) (1)        
16. If (Clothes num is less) and (Dirty level is More Dirty) then (Clean mode is Depth clean) (1)       
17. If (Clothes num is less) and (Dirty level is Dirty) then (Clean mode is Standard clean) (1)         
18. If (Clothes num is less) and (Dirty level is Middle) then (Clean mode is Simple clean) (1)          
19. If (Clothes num is less) and (Dirty level is Less Dirty) then (Clean mode is Soft clean) (1)        
20. If (Clothes num is less) and (Dirty level is No Dirty) then (Clean mode is Degerming) (1)           
21. If (Clothes num is too less) and (Dirty level is More Dirty) then (Clean mode is Standard clean) (1)
22. If (Clothes num is too less) and (Dirty level is Dirty) then (Clean mode is Standard clean) (1)     
23. If (Clothes num is too less) and (Dirty level is Middle) then (Clean mode is Simple clean) (1)      
24. If (Clothes num is too less) and (Dirty level is Less Dirty) then (Clean mode is Soft clean) (1)    
25. If (Clothes num is too less) and (Dirty level is No Dirty) then (Clean mode is Degerming) (1)    
   
%输出模糊控制器表:
%两个输入变量Clothes num、Dirty level,其范围分别为[0,10],[0,6]
fuzzy Controller table:Clothes num=[0,10],Dirty level=[0,6]

Ulist =

    0.2746    0.2746    0.2746    0.2746    0.3284    0.2746    1.8997
    0.2746    0.2746    0.2746    0.2746    0.3284    0.2746    1.8997
    0.2746    0.2746    0.2746    0.2746    0.3284    0.2746    1.8997
    0.2746    0.2746    0.2746    0.2746    0.3284    0.2746    1.8997
    0.3284    0.3284    0.3284    0.3284    0.3284    0.3284    1.9330
    0.3284    0.3284    0.3284    0.3284    0.3284    0.3284    1.9330
    0.2746    0.2746    0.2746    0.2746    0.3284    0.2746    1.8997

>> 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 运行结果分析

该实验中利用模糊控制器简单模拟了全自动洗衣机。
此模糊控制器中设置两个输入变量Clothes num、Dirty level,分别是衣物数量和脏度级别,设置了一个输出变量Clean mode,清洁模式。

Clothes num中设置了五个模糊语言变量:too much、much、middle、less、too less。
Dirty level中也设置了五个模糊语言变量:More Dirty、Dirty、Middle、Less Dirty、No Dirty。
Clean mode中也设置了五个模糊语言变量:Depth clean、Standard clean、Simple clean、Soft clean、Degerming。

在设置好输入变量和输出变量后,完善了模糊规则,定义了模糊规则矩阵,在输出中的到具体的模糊规则,例如:

  1. If (Clothes num is too much) and (Dirty level is More Dirty) then (Clean mode is Depth clean) (1)

此条模糊规则表示:当衣物数量较多,脏度级别为更脏,其清洁模式应为深度清洁。根据输入变量的数量共定义了5*5=25条模糊规则,其余24条模糊规则同上。

其后,进行模糊推理,最后将推理得到的控制量转化为控制输出。

5. 实验结论

  1. 控制规则是模糊控制器的核心,它的正确与否直接影响到控制器的性能,其数目的多少也是衡量控制器性能的一个重要因素。在本次实验中两个输入变量分别有五种选择,在模糊规则中添加了5*5=25条规则,较为完善。

  2. 经过实验得到:如何获得模糊规则及隶属函数即系统的设计办法,完全凭经验进行,没有一定的参考性,所以模糊控制较为不稳定

发布了13 篇原创文章 · 获赞 5 · 访问量 2192

猜你喜欢

转载自blog.csdn.net/weixin_45617915/article/details/102683142