0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是模糊算法

汽车电子技术 来源:滑小稽笔记 作者:电子技术园地 2023-03-01 14:22 次阅读

3.1 概述

所谓模糊控制,就是对难以用已有规律描述的复杂系统,采用自然语言(如大,中,小)加以描述,借助定性的,不精确的以及模糊的条件语句来表达,模糊控制是一种基于语言的智能控制。

传统的自动控制器的综合设计都要建立在被控对象准确的数学模型(即传递函数模型或状态空间模型)的基础上,但是实际上,很多系统的影响因素很多,通常找出精确的数学模型,这种情况下,模糊控制的诞生就显得意义重大,因为模糊控制不需要建立数学模型,不需要预先知道过程精确的数学模型。模糊控制与传统的PID控制,具有如下优点:

(1)无需知道被控对象的数学模型

(2)反映人类智慧思维的智能控制

(3)易被人们所接受,是一种语言变量控制器

(4)构造容易,从属于智能控制的范畴,尤其适用于非线性,时变,滞后系统的控制

(5)抗干扰能力强,响应速度快,并对系统参数的变化有较强的鲁棒性

3.1.1 工作原理

把各种传感器测出的精确量转换为适用于模糊运算的模糊量,然后将这些量在模糊控制器中加以运算,最后再将运算结果中的模糊量转换为精确量,以便对各执行器进行具体的操作控制,这就说明在模糊控制中,存在着一个模糊量与精确量之间相互转化的问题,如下图所示:

图片

模糊控制原理图如下图所示:

图片

3.1.2 模糊语言集

模糊语言集用表示,一般有={负大,负中,负小,零,正小,正中,正大},用模糊语言变量E来描述偏差,或者用符号表示:

负大:Negative Big,简称NB

负中:Negative Medium,简称NM

负小:Negative Small,简称NS

零:Zero,简称ZE

正小:Positive Small,简称PS

正中:Positive Medium,简称PM

正大:Positive Big,简称PB

图片

3.1.3 隶属函数

各参数相对应子集的隶属函数分别由不同的函数族决定,参数的相应子集指该参数被人为地划分成的等级所构成的一组模糊集合,相应子集的多少,由控制精度决定,例如,参数“温差”的相应子集可以是“正大,正中,负小,负大”,也可以是“正大,正中,正小,负小,负中,负大”,后者比前者模糊子集多,所以控制精度更高(在其他相同条件的情况下)。

常用的隶属函数如下所示。

(1)z型隶属度函数zmf

图片

(2)S型隶属度函数smf

图片

(3)三角形隶属度函数trimf

图片

**3.2 **模糊控制数学基础

3.2.1 模糊控制集合的代数运算

图片

3.2.2 模糊关系

(1)普通关系:两个集合中的元素之间是否有关联。

(2)模糊关系:两个模糊集合中的元素之间关联程度的多少。

图片

3.2.3 模糊关系的合成

图片

3.2.4 模糊推理

图片

3.2.5 模糊决策

模糊决策(模糊判决,解模糊,清晰化):由模糊推理得到的结论或者操作是一个模糊向量,转化为确定值的过程。

(1)最大隶属度法

图片

(2)加权平均判决法

图片

(3)中位数法

图片

3.1.6 模糊推理的运用

图片

3.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

3.2.8 模糊控制算法的工程实现

在大型的模糊控制系统中常采用软件模糊推理法,模糊关系,模糊推理以及模糊判决的运算可以离线进行,最后得到模糊控制器输入量的量化等级E,EC与输出量即系统控制量的量化等级U之间的确定关系,这种关系通常称为控制表。

3.3 水位控制系统

3.3.1 控制目标

控制模型如下图所示,控制进水阀S1和出水阀S2,使水箱水位保持在目标水位O处。

图片

3.3.2 控制规则

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

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

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

注:建立模糊控制规则的基本思想:当误差大或较大时,选择控制量应该以尽快消除误差为主,而当误差较小时,选择控制量要防止超调,以系统的稳定性为主要出发点。

3.3.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

(3)将控制量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

(4)制定模糊规则:模糊规则的制定是模糊控制的核心内容,控制性能的好坏很大程度上由模糊规则决定,目前主要是根据经验来制定相应的规则

若e负大,则u负大

若e负小,则u负小

若e为零,则u为零

若e正小,则u正小

若e正大,则u正大

(6)进行模糊决策:最终需要的控制量u即为模糊控制的输出,u可由偏差矩阵e和模糊关系矩阵R合成得到

(7)控制量的反模糊化

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

最大隶属度法:应用于计算简单控制要求不高场合

重心法:可以使得输出更平滑

加权平均法:工业上应用最广泛

3.4 模糊控制算法实现

3.4.1 MATLAB代码

clc
clear
%创建模糊控制器
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');

MATLAB仿真结果如下图所示。

图片

3.4.2 C语言代码

#include 
#include 
#include 
#define  N  7                      //定义量化论域模糊子集的个数
//模糊语言定义
#define  NB  -3
#define  NM  -2
#define  NS  -1
#define  ZO  0
#define  PS  1
#define  PM  2
#define  PB  3
struct
{
  //规则表
  int rule[ N ][ N ] ;                //模糊规则表
  //隶属度函数
  char *f_type_e ;                  //e的隶属度函数类型
  char *f_type_de ;                  //de的隶属度函数类型
  char *f_type_u ;                  //u的隶属度函数类型
  float paras_e[ 3*N ] ;                //e的隶属度函数的参数
  float paras_de[ 3*N ] ;              //de的隶属度函数的参数
  float paras_u[ 3*N ] ;                //u的隶属度函数的参数
  //模糊运算参数
  float Ke ;                    //Ke=n/emax,量化论域为[-3,-2,-1,0,1,2,3]
  float Kde ;                    //Ke=n/demax,量化论域为[-3,-2,-1,0,1,2,3]
  float Ku ;                    //Ke=umax/n,量¢化论域为[-3,-2,-1,0,1,2,3]
  float umax ;                    //输出的上限
  float emax ;                    //误差基本论域上限
  float demax ;                    //误差变化率基本论域的上限
  //控制目标参数
  float target ;                  //控制目标
  float actual ;                  //实际值
  float e ;                    //误差
  float e_pre ;                    //上一次的误差
  float de ;                    //误差的变化率
}_fuzzy_;
/*******************************************************
Name      :trimf
Function    :三角隶属度函数
Parameter  :
      x:自变量
      (a,b,c):定义域
Return    :结果
*******************************************************/
float trimf( float x, float a, float b, float c )
{
  float u ;
  if( ( x>=a )&&( x<=b ) )
    u = ( x-a )/( b-a ) ;
  else if( ( x>b )&&( x<=c ) )
    u = ( c-x )/( c-b ) ;
  else
    u = 0 ;
  return u ;
}
/*******************************************************
Name      :gaussmf
Function    :正态隶属度函数
Parameter  :
      x:自变量
      ave:均值
      sigma:方差
Return    :结果
*******************************************************/
float gaussmf( float x, float ave, float sigma )
{
  float u ;
  if( sigma<0 )
    printf("方差不允许小于0\\n");
  else
    u = exp( -pow( ( ( x-ave )/sigma ), 2 ) ) ;
  return u ;
}
/*******************************************************
Name      :trapmf
Function    :梯形隶属度函数
Parameter  :
      x:自变量
      (a,b,c,d):定义域
Return    :结果
*******************************************************/
float trapmf( float x, float a, float b, float c, float d )
{
  float u ;
  if( ( x>=a )&&( xelse if( ( x>=b )&&( x

**
最终代码运行结果如下图所示。

图片

参考于CDSN

**

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模糊控制
    +关注

    关注

    2

    文章

    261

    浏览量

    25494
  • 复杂系统
    +关注

    关注

    0

    文章

    7

    浏览量

    6983
  • 自然语言
    +关注

    关注

    1

    文章

    287

    浏览量

    13339
收藏 人收藏

    评论

    相关推荐

    PID算法模糊PID 精选资料推荐

    这方面的需求而设计的。专家算法模糊算法都归属于智能算法的范畴,智能算法最大的优点就是在控制模型未知的情况下,可以对模型进行控制。这里需要注
    发表于 07-19 06:29

    基于单片机模糊算法-PID

    模糊-PID控制技术运用到程控电压源的设计中,从而使得电压源的输出电压值达到预定的要求,提高输出电压的精度和反应速度。采用51单片机,利用adc0832和DAC0832,通过220V市电通过整流
    发表于 07-19 08:32

    如何去实现一种基于单片机模糊算法温度控制系统设计

    020【毕设课设】基于单片机模糊算法温度控制系统设计,本电路为基于单片机的温度控制系统。控制系统采用模糊控制器实现。采用PT100铂电阻温度传感器测量温度。铂电阻温度传感器的调理电路以子电路的形式
    发表于 11-10 07:16

    基于模糊算法的水泥烧成控制系统研究

    针对水泥生产中的核心环节――烧成系统具有非线性、大滞后且难以建立精确数学模型的特点,采用可编程控制器(PLC)结合模糊算法实现水泥回转窑煅烧过程的控制。结果表明,
    发表于 07-30 14:56 24次下载

    基于模糊算法的锅炉经济燃烧研究及应用

    本文对锅筒锅炉经济燃烧算法进行了研究,在传统控制算法和一般模糊控制算法的基础上,提出了一种新型的更加符合实际、运行效率高的模糊控制
    发表于 08-05 08:30 13次下载

    基于模糊算法的生化过程温度控制系统

    本文表述了一种基于模糊算法的生化过程温度控制系统,详细论述了系统的总体结构、控制算法及软件实现流程。系统采用80C196KB 单片机为主控制器,控制算法采用
    发表于 08-12 09:03 26次下载

    采用模糊算法的苹果无损分拣技术研究

    采用模糊算法的苹果无损分拣技术研究 主要对苹果分拣技术进行了研究,并给出了苹果分拣系统的结构。由于苹果的好坏主要由苹果的大小、形状和成熟度
    发表于 02-27 09:30 13次下载

    遗传模糊算法在短期负荷预测中的应用

    遗传模糊算法在短期负荷预测中的应用 提出了一种基于模糊逻辑原理的负荷预测方法,使用遗传算法对系统参数进行训练。在以往的模糊逻辑系统
    发表于 07-11 18:48 595次阅读
    遗传<b class='flag-5'>模糊</b><b class='flag-5'>算法</b>在短期负荷预测中的应用

    一种脉冲多普勒雷达解距离模糊的新算法

    一种脉冲多普勒雷达解距离模糊的新算法,下来看看
    发表于 12-23 02:40 19次下载

    自适应神经模糊算法在光伏MPPT中的仿真分析

    自适应神经模糊算法在光伏MPPT中的仿真分析_荣德生
    发表于 01-07 18:56 0次下载

    基于模糊算法的多移动机器人目标跟踪_梁顺健

    基于模糊算法的多移动机器人目标跟踪_梁顺健
    发表于 01-12 22:22 3次下载

    基于LO正则化去模糊算法

    随着视频监控技术的发展、监控摄像头的普及和人们对安全信息需求的提升,监控中图像去模糊技术得到迫切需求。基于图像强度和梯度的LO正则化去模糊算法能有效恢复模糊的文本图像,但是由于车牌图像
    发表于 11-08 14:28 2次下载
    基于LO正则化去<b class='flag-5'>模糊</b><b class='flag-5'>算法</b>

    基于深度学习的图像去模糊算法及应用

    当前,绝大部分基于深度学习的图像去模糊算法是不区分场景的,也就是他们是对常见的自然与人为设计的场景进行去模糊。但是,在现实生活中,经常会遇到一些特定场景的图像去模糊。比如人脸去
    的头像 发表于 10-28 16:00 2524次阅读

    MATLAB学习笔记之模糊算法1

    所谓模糊控制,就是对难以用已有规律描述的复杂系统,采用自然语言(如大,中,小)加以描述,借助定性的,不精确的以及模糊的条件语句来表达,模糊控制是一种基于语言的智能控制。
    的头像 发表于 02-27 14:28 2699次阅读
    MATLAB学习笔记之<b class='flag-5'>模糊</b><b class='flag-5'>算法</b>1

    模糊算法适对发射点扩散函数(PSF)的假设要求最低

            长期以来,在显微镜领域获得高分辨率图像一直是一个挑战。去卷积是一种增强图像清晰度的方法,它通常会放大样品和图像之间的噪声。波士顿大学的研究人员最近开发了一种新的去模糊算法,可以
    的头像 发表于 11-02 09:15 640次阅读
    去<b class='flag-5'>模糊</b><b class='flag-5'>算法</b>适对发射点扩散函数(PSF)的假设要求最低