模糊控制算法实例解析(含代码)

article/2025/9/25 11:48:22


首先来看一个实例,控制进水阀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:7e(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、模糊规则矩阵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(向下取整)。

 

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

 

参考书籍:

刘金琨《智能控制》  

 


http://chatgpt.dhexx.cn/article/bPtows52.shtml

相关文章

车辆换道决策的模糊控制算法实例

目录 一、模糊控制在换道决策应用上的概念介绍 1.1 模糊化 1.2 建立模糊规则 1.3 解模糊 二、Matlab建立模糊逻辑系统 2.1 Matlab模糊逻辑工具箱 2.2 建立模糊系统的步骤 2.3 建立换道决策的模糊逻辑系统 一、模糊控制在换道决策应用上的概念介绍 实际驾车时,…

模糊控制算法实例matlab程序

参考文献《智能控制——刘金锟》 以水位的模糊控制为例。如图4一4所示,设有一个水箱,通过调节阀可向内注水和向外抽水。设计一个模糊控制器,通过调节阀门将水位稳定在固定点附近。按照日常的操作经验,可以得到基本的控制规则为&am…

模糊控制算法的C++实现

在现代智能控制算法中,模糊控制是在实际控制系统设计中使用比较成熟的一种方法。模糊控制可以使用在一些无法建立系统模型的场合,根据专家经验确定模糊规则,实现对系统的控制。本篇文章适合对模糊控制算法有一定了解的人阅读,给大…

模糊控制算法基础知识

模糊控制的工作原理: 从模糊控制器的构成我们知道,输入模糊化,模糊推理,去模糊化是实施模糊控制的三个主要环节。有时根据这三个环节的作用分别称为:模糊器,模糊推理机和解模糊器。 所以要学会使用模糊控制…

控制算法(二)—— 模糊控制算法

模糊控制是以模糊集理论、模糊语言变量和模糊逻辑推理为基础的一种智能控制方法,它是从行为上模仿人的模糊推理和决策过程的一种智能控制算法。模糊控制首先将操作人员或专家经验编成模糊规则,然后将来自传感器的实时信号模糊化,将模糊化后的…

模糊控制(FL)算法

模糊控制算法(理论知识) 模糊(Fuzzy)控制是用语言归纳操作人员的控制策略,运用语言变量和模糊集合理论形成控制算法的一种控制。模糊控制的最重要特征是不需要建立被控对象精确的数学模型,只要求把现场操作人员的经验和数据总结成…

【学习笔记】模糊控制算法

本文目录 0. 前言1. 概述2. 模糊集合2.1 集合和论域2.2 模糊集合的概念2.3 模糊集合的表示方式2.4 模糊集合的运算 3. 模糊关系与模糊关系合成3.1 笛卡尔积3.2 关系与模糊关系3.3 模糊关系的运算3.4 模糊关系合成3.5 模糊变换 4. 模糊推理4.1 模糊推理规则【重要!】…

图像处理——乘性噪声和加性噪声

加性噪声一般指热噪声、散弹噪声等,它们与信号的关系是相加,不管有没有信号,该类噪声是一直存在的。一般通信中把加性随机性看成是系统的背景噪声。 乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,信号在它在…

给数据增加噪声

例如在POS-bp算法中增加噪声,优点:使输出更光滑从而提升网络的推理能力,提升泛化能力。添加样本噪声,使线条更光滑。 这个地方是添加了一个正太分布均值为0,方差为0.01的1xSamLnNum的随机数矩阵。

噪声模型

常见的噪声模型有(z是噪声值,m表示均值,s2表示方差): 1、高斯噪声:ma , s2b^2 2、均匀分布噪声 3、伽马噪声 mb/a , s2b/a^2 4、指数分布噪声 m1/a , s21/a^2 5、瑞利噪声 : 6、椒盐噪声 其中盐表示亮点,椒表示暗点。 几…

噪声系数

噪声系数 噪声分类噪声系数的定义电阻(无源器件)的输出噪声功率半导体器件放大器噪声因子噪声系数NF无源器件的噪声系数 噪声系数的级联噪声系数对系统的影响 噪声分类 热噪声(Thermal Noise):最基本的一种噪声,就像冬日里北方的霾一样,可以说…

图像随机加噪声

对于图像,一般做图像增强都是得要求算法/模型去噪效果好。那么对应图像,原始图像一般多多少少有噪声,通过我们自己的创新算法就可以去噪。也可以有很多客观指标来评价去噪后图像的效果的好坏。 下图为我自己的算法处理的图像,包…

向数据中添加高斯噪声

什么是高斯噪声 高斯噪声既是符合高斯正态分布的误差。一些情况下我们需要向标准数据中加入合适的高斯噪声会让数据变得有一定误差而具有实验价值。高斯噪声还有一些其他用途但是我不太了解,这里我是为了实现多项式拟合正弦曲线,生成数据时,…

Python 加性高斯白噪声 AWGN

高斯白噪声 概念 加性高斯白噪声(Additive White Gaussian Noise,简写AWGN) "白"是指功率谱恒定; 高斯指的是概率p (x)满足高斯函数。 在百度百科中的概念是,加性高斯白噪声在通信领域中指的是一种各频谱分…

常见的噪声分类

常见的噪声:高斯、泊松和椒盐噪声以及代码实现 转载的地址:浅析“高斯白噪声”,“泊松噪声”,“椒盐噪声”的区别 - 简书 转载的地址:散粒噪声 shot noise 泊松噪声 - sunny,lee - 博客园 转载的地址:图像…

噪 声

噪 声 一. 噪声定义 从物理学的角度来看:噪声是发声体做无规则振动时发出的声音。在图形学中,我们把各种妨碍人们对其信息接受的因素称为图像噪声 。噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。因此将图像噪声…

《通信原理》用matlab实现加性高斯白噪声信道实验

目录 一、实验名称 二、实验目的 三、实验原理 四、实验内容及结果 五、实验收获 一、实验名称 加性高斯白噪声信道 二、实验目的 1.掌握matlab语言的基本操作和基本的编程功能; 2.掌握awgn函数和randn函数的用法; 3.了解加性高斯白噪声信道的产生方法&…

加性高斯色噪声信道

1 加性高斯色噪声信道 对于高斯白噪声,不同时刻的样本值是不相关的。为方便,在实际应用中通常将在信号上叠加高斯白噪声,对一些算法性能进行评估。依据评估结果,指导工程设计实现。在实际工程中,高斯白噪声的不相关性并…

噪声是什么?

1.噪声的概念 日常我们说的噪声是——“除了我想听到的声音”以外的声音,就是噪声。比如我想听A君讲话,但是B君和C君在旁边喋喋不休,他们俩说的话是“我不想听到的声音”,那么他们两个的声音就是噪声。而在电路中,噪声…

噪声和信噪比的转换(如何在数据集中添加噪声)

之前参考别人的博客写了一篇,后来用的过程中发现有问题,但是相关理论部分还是可以用的。 之前我写的:https://blog.csdn.net/Kathleen_yuan/article/details/89817487 别人的推论(推论1要加个条件才能用,就是信号强度…