模糊控制 订阅
利用模糊数学的基本思想和理论的控制方法。在传统的控制领域里,控制系统动态模式的精确与否是影响控制优劣的最主要关键。系统动态的信息越详细,则越能达到精确控制的目的。然而,对于复杂的系统,由于变量太多,往往难以正确的描述系统的动态,于是工程师便利用各种方法来简化系统动态,以达成控制的目的,但却不尽理想。换言之,传统的控制理论对于明确系统有强而有力的控制能力,但对于过于复杂或难以精确描述的系统,则显得无能为力了。因此便尝试着以模糊数学来处理这些控制问题。 展开全文
利用模糊数学的基本思想和理论的控制方法。在传统的控制领域里,控制系统动态模式的精确与否是影响控制优劣的最主要关键。系统动态的信息越详细,则越能达到精确控制的目的。然而,对于复杂的系统,由于变量太多,往往难以正确的描述系统的动态,于是工程师便利用各种方法来简化系统动态,以达成控制的目的,但却不尽理想。换言之,传统的控制理论对于明确系统有强而有力的控制能力,但对于过于复杂或难以精确描述的系统,则显得无能为力了。因此便尝试着以模糊数学来处理这些控制问题。
信息
产生时间
1974年
创始人
Lotfi A.Zadeh
外文名
fuzzy control
类    别
控制方法
中文名
模糊控制
解模糊化
系统的输入值
定义变量
E、EC、U
模糊控制简介
Zadeh创立的 [1]  模糊数学,对不明确系统的控制有极大的贡献,自七十年代以后,一些实用的模糊控制器的相继出现,使得我们在控制领域中又向前迈进了一大步。模糊逻辑控制(Fuzzy Logic Control)简称模糊控制(Fuzzy Control),是以模糊集合论、模糊语言变量和模糊逻辑推理为基础的一种计算机数字控制技术 [2]  。1965年,美国的L.A.Zadeh创立了模糊集合论;1973年他给出了模糊逻辑控制的定义和相关的定理。1974年,英国的E.H.Mamdani首次根据模糊控制语句组成模糊控制器,并将它应用于锅炉和蒸汽机的控制,获得了实验室的成功。这一开拓性的工作标志着模糊控制论的诞生。模糊控制实质上是一种非线性控制,从属于智能控制的范畴。模糊控制的一大特点是既有系统化的理论,又有大量的实际应用背景。模糊控制的发展最初在西方遇到了较大的阻力;然而在东方尤其是日本,得到了迅速而广泛的推广应用。近20多年来,模糊控制不论在理论上还是技术上都有了长足的进步,成为自动控制领域一个非常活跃而又硕果累累的分支。其典型应用涉及生产和生活的许多方面,例如在家用电器设备中有模糊洗衣机、空调、微波炉、吸尘器、照相机和摄录机等;在工业控制领域中有水净化处理、发酵过程、化学反应釜、水泥窑炉等;在专用系统和其它方面有地铁靠站停车、汽车驾驶、电梯、自动扶梯、蒸汽引擎以及机器人的模糊控制。
收起全文
精华内容
下载资源
问答
  • 模糊控制

    2020-04-27 02:27:01
  • matlab模糊控制工具箱使用和模糊控制pid实例参考

    万次阅读 多人点赞 2019-02-28 13:26:17
    Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径,通过它我们不需要进行复杂的模糊化、模糊推理及反模糊化运算,只需要设定相应参数,就可以很快得到我们所需要的控制器,而且修改也非常方便。...

    Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径,通过它我们不需要进行复杂的模糊化、模糊推理及反模糊化运算,只需要设定相应参数,就可以很快得到我们所需要的控制器,而且修改也非常方便。下面将根据模糊控制器设计步骤,一步步利用Matlab工具箱设计模糊控制器。

    1、模糊控制工具箱使用

    首先我们在Matlab的命令窗口(command window)中输入fuzzy,回车就会出来这样一个窗口。

    下面我们都是在这样一个窗口中进行模糊控制器的设计。

    1确定模糊控制器结构:即根据具体的系统确定输入、输出量。

    这里我们可以选取标准的二维控制结构,即输入为误差e和误差变化ec,输出为控制量u。注意这里的变量还都是精确量。相应的模糊量为EECU,我们可以选择增加输入(Add Variable)来实现双入单出控制结构。

    2输入输出变量的模糊化:即把输入输出的精确量转化为对应语言变量的模糊集合。

    首先我们要确定描述输入输出变量语言值的模糊子集,如{NBNMNSZOPSPMPB},并设置输入输出变量的论域,例如我们可以设置误差E(此时为模糊量)、误差变化EC、控制量U的论域均为{-3-2-10123};然后我们为模糊语言变量选取相应的隶属度函数。

    在模糊控制工具箱中,我们在Member Function Edit中即可完成这些步骤。首先我们打开Member Function Edit窗口.

    4步教你学会使用matlab模糊控制工具箱

    4步教你学会使用matlab模糊控制工具箱

    然后分别对输入输出变量定义论域范围,添加隶属函数,以E为例,设置论域范围为[-3 3],添加隶属函数的个数为7.

     4步教你学会使用matlab模糊控制工具箱

    然后根据设计要求分别对这些隶属函数进行修改,包括对应的语言变量,隶属函数类型。

    4步教你学会使用matlab模糊控制工具箱

    3模糊推理决策算法设计:即根据模糊控制规则进行模糊推理,并决策出模糊输出量。

    首先要确定模糊规则,即专家经验。对于我们这个二维控制结构以及相应的输入模糊集,我们可以制定49条模糊控制规则(一般来说,这些规则都是现成的,很多教科书上都有),如图。

    4步教你学会使用matlab模糊控制工具箱

    制定完之后,会形成一个模糊控制规则矩阵,然后根据模糊输入量按照相应的模糊推理算法完成计算,并决策出模糊输出量。

    4对输出模糊量的解模糊:模糊控制器的输出量是一个模糊集合,通过反模糊化方法判决出一个确切的精确量,凡模糊化方法很多,我们这里选取重心法。

        4步教你学会使用matlab模糊控制工具箱

    5)然后Export to disk,即可得到一个.fis文件,这就是你所设计的模糊控制器。

    6)simulink中使用fis文件,首先加入fuzzy模块,然后写入模糊文件,注意应用格式加单引号: 'fuzzpid.fis'

     

    2、模糊控制pid实例

    模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以克服传统PID参数无法实时调整PID参数的缺点。模糊PID控制包括模糊化,确定模糊规则,解模糊等组成部分。小车通过传感器采集赛道信息,确定当前距赛道中线的偏差E以及当前偏差和上次偏差的变化ec,根据给定的模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出PID控制参数。

     

     

    KP的模糊规则控制表

    ∆kp

    EC

    NB

    NM

    MS

    ZO

    PS

    PM

    PB

    E

    NB

    PB

    PB

    PM

    PM

    PS

    ZO

    ZO

    NM

    PB

    PB

    PM

    PS

    PS

    ZO

    NS

    NS

    PM

    PM

    PM

    PS

    ZO

    NS

    NS

    ZO

    PM

    PM

    PS

    ZO

    NS

    NM

    NM

    PS

    PS

    PS

    ZO

    NS

    NS

    NM

    NM

    PM

    PS

    ZO

    NS

    NM

    NM

    NM

    NB

    PS

    ZO

    ZO

    NM

    NM

    NM

    NB

    NB

     KI的模糊规则控制表

    ∆ki

    EC

    NB

    NM

    NS

    ZO

    PS

    PM

    PB

    E

    NB

    NB

    NB

    NM

    NM

    NS

    ZO

    ZO

    NM

    NB

    NB

    NM

    NS

    NS

    ZO

    ZO

    NS

    NB

    NM

    NS

    NS

    ZO

    PS

    PS

    ZO

    NM

    NM

    NS

    ZO

    PS

    PM

    PM

    PS

    NM

    NS

    ZO

    PS

    PS

    PM

    PB

    PM

    ZO

    ZO

    PS

    PS

    PM

    PB

    PB

    PB

    ZO

    ZO

    PS

    PM

    PM

    PB

    PB

    KD的模糊规则控制表

    ∆kd

    EC

    NB

    NM

    NS

    ZO

    PS

    PM

    PB

    E

    NB

    PS

    NS

    NB

    NB

    NB

    NM

    PS

    NM

    PS

    NS

    NB

    NM

    NM

    NS

    ZO

    NS

    ZO

    NS

    NM

    NM

    NS

    NS

    ZO

    ZO

    ZO

    NS

    NS

    NS

    NS

    NS

    ZO

    PS

    ZO

    ZO

    ZO

    ZO

    ZO

    ZO

    ZO

    PM

    PB

    NS

    PS

    PS

    PS

    PS

    PB

    PB

    PB

    PM

    PM

    PM

    PS

    PS

    PB

     

    模糊推理系统结构图

    输入变量的隶属取三角形函数,如下:

    误差变量E的隶属函数

    误差变化变量EC的隶属函数

    输出变量的隶属同样取三角形函数,如下:

    输出变量KP的隶属函数

     

    输出变量KD的隶属函数

    输出变量KI的隶属函数

    确定了输入和输出隶属函数后,在模糊规则编辑器中,输入表格中的模糊推理规则,共49条,如下图

    模糊推理编辑器

    此时得到的三参数的变化如下图

    模糊推理KP变化图

    模糊推理KI变化图

    模糊推理KD变化图

     

    运行仿真得到结果

    PS:有定制开发需求,可以QQ联系:1762016542

    提供matlab simulink 培训 1v1教学 或者思路沟通 答疑等咨询服务,尤其擅长汽车控制、信号处理、数学建模、电机领域

    欢迎关注公众号:算法工程师的学习日志

     

    展开全文
  • PID控制模糊控制神经网络控制-PID控制 模糊控制 神经网络控制.rar PID控制\模糊控制\神经网络控制 模型 有偿代做,请联系QQ 1170906655 ,中介勿扰! PID控制 模糊控制 神经网络控制.rar
  • 这是一本关于模糊控制的学习的比较经典的书籍,是学习模糊控制必备书籍
  • 模糊控制及自适应模糊控制实现

    万次阅读 多人点赞 2018-06-15 21:17:02
    模糊控制器与自适应模糊控制设计题一:已知某被控对象的传递函数为:(1) 采用二维PD模糊控制器,输入变量 和 ,输出变量为 ,其模糊集论域均为[-5,5],语言变量取值[NL,NM,NS,ZO,PS,PM,PL],隶属函数为对称...

    模糊控制器与自适应模糊控制设计

    题一:已知某被控对象的传递函数为:

    (1) 采用二维PD模糊控制器,输入变量 和 ,输出变量为 ,其模糊集论域均为[-5,5],语言变量取值[NL,NM,NS,ZO,PS,PM,PL],隶属函数为对称三角形;规则前件及蕴涵均采用“取小”运算,采用COG反模糊化方法。用Simulink建立单位反馈仿真系统,适当调整模糊控制器的增益系数 , 及 ,求出系统的阶跃响应曲线;

    (2) 已知条件同条件(1),求系统单位斜坡输入时的系统响应曲线,分析系统响应曲线,分析系统响应曲线是否有静态偏差存在,为什么?

    (3) 已知条件同条件(1),针对单位斜坡输入,要求系统无静态偏差,该怎样设计模糊控制器?设计相应的模糊控制器并进行系统仿真。

    解:

    (1):建立系统Simulink模型及单位阶跃响应曲线:

    图1 模糊规则表

    图2 系统Simulink模型

    图3 不同参数下的阶跃响应曲线

    (2) 单位斜坡输入下的系统响应曲线

     

     

    图4 斜坡输入下不同参数系统响应

           结论:综合图3和图4可以看出,误差量化因子能够对系统的快速响应特性和超调量起到很好的控制作用,而误差变化率因子对系统的动态特性起到很好的调节作用,同时系统均存在稳态误差,所以整体上模糊控制器的作用类似与PD控制器。

    (3):加入积分环节

    图5 Simulink模型

    图6 斜坡响应输出

           结论:将积分因子加入模糊控制器后可以看出系统的稳态误差得到消除,整体上类似于PID控制器。

    题二:设被控对象的传递函数为

    式中 。参考模型为一阶系统。系统参考输入为

    (1) 针对 设计一个直接模糊控制器(非自适应),使得对象的输出尽可能接近参考模型的性能指标。模糊控制器为二维模糊控制器,其输入变量为偏差 , 为系统参考输入, 为被控对象输出;偏差变化 (用一阶后向差分近似)。

    (2) 针对 设计模糊模型参考学习自适应控制系统,使得对象输出跟踪参考模型输出并尽可能地靠近它。将(1)中所设计的模糊控制器作为初始模糊控制器并为FMRLC(模糊模型参考学习控制)所调整,进行系统仿真。

    解:

    (1).模糊控制器设计:

    (a) 设计步骤:输入变量e 和ec ,输出变量为 u,其模糊集论域分别为[-8,8],[-1.6,1.6],[-4,4],语言变量均为[NL,NM,NS,ZO,PS,PM,PL],隶属函数为对称三角形;规则前件及蕴涵均采用“取小”运算,采用COG反模糊化方法,模糊规则采用与图1相同。

    (b)  Simulink模型:

    图7 Simulink模型

    仿真结果:

    图8 模糊控制跟踪曲线

           结论:从结果可以看出单纯的模糊控制器输出存在很严重的相位滞后,控制系统的响应跟踪较差。

    (2) 模糊模型参考学习自适应(FMRLC)控制系统:

           设计方法1:根据模糊逆模型实际输出得到控制量校正kp,对原模糊控制器的输出隶属度函数位置进行平移,得到系统的实时响应曲线和误差变化。图9,10,11,分别为系统Simulink模型,系统实时跟踪响应和系统误差响应曲线。

           主要设计步骤为(核心代码说明见附录A.1):

        (a)     根据输入变量e和ec确定各自对应的模糊论域等级;

        (b)     查询规则表中由e和ec激活的规则,并获取在规则激活下输出u的论域等级;

        (c)     根据获取的逆模型输出校正量p,对激活输出下的u的隶属度函数进行平移,当p为正时向右平移,当p为负时向左平移,平移量均为p;

    图9 模糊参考模型自适应控制Simulink图

    图10 系统跟踪响应

    图11 系统跟踪误差

           可以看出,通过对模糊控制器规则的实时修改可以起到稳定跟踪的效果,系统的响应误差在0.004附近。

    设计方法2:在方法1的基础进一步对激活规则的权重进行修改,修改的原则在于,当模糊逆模型控制输出量p较大时,其激活规则的权重应该相应的增大以保证增大系统输出,减小跟踪误差,反之亦然。

    主要步骤(核心代码见附录A.2):

        (a)     根据输入变量e和ec确定各自对应的模糊论域等级;

        (b)     查询规则表中由e和ec激活的规则,并获取在规则激活下输出u的论域等级;

        (c)     根据获取的逆模型输出校正量p,对激活输出下的u的隶属度函数进行平移,当p为正时向右平移,当p为负时向左平移,平移量均为p;

        (d)     将激活的规则权重在原来的基础上增加p;

     

    图12 增加规则权重修改的模糊控制器Simulink模型

    图13 系统跟踪响应

    图14 系统跟踪误差

    图15 增加规则权重修改与规则修改误差跟踪曲线对比

    可以看出,在进一步引入权重修改后,其系统响应更加平滑,系统在波峰波谷处的跟踪效果有所提高。

    附录

    A.1:

    function u = adaptive_fuzzy(p, e, ec)

    coder.extrinsic('readfis');

    coder.extrinsic('writefis');

    coder.extrinsic('evalfis');

    coder.extrinsic('newfis');

    coder.extrinsic('addvar');

    coder.extrinsic('addmf');

    coder.extrinsic('addrule');

    coder.extrinsic('setfis');

    a = newfis('adapfuzzy');

    %确定e和ec的模糊论域等级

    dist_e = fix((e+1)*3);%截尾取整

    degleft_e = 1 + dist_e;

    degright_e = degleft_e + 1;

     

    dist_ec = fix((ec+1)*3);%截尾取整

    degleft_ec = 1 + dist_ec;

    degright_ec = degleft_ec +1;

     

    %规则列表

    rulelist = [1 1 1 1 1

        1 2 1 1 1

        1 3 1 1 1

        1 4 1 1 1

        1 5 2 1 1

        1 6 3 1 1

        1 7 4 1 1

     

        2 1 1 1 1

        2 2 1 1 1

        2 3 2 1 1

        2 4 2 1 1

        2 5 3 1 1

        2 6 4 1 1

        2 7 4 1 1

     

        3 1 1 1 1

        3 2 2 1 1

        3 3 2 1 1

        3 4 3 1 1

        3 5 4 1 1

        3 6 4 1 1

        3 7 3 1 1

     

        4 1 2 1 1

        4 2 3 1 1;

        4 3 3 1 1

        4 4 4 1 1

        4 5 5 1 1

        4 6 5 1 1

        4 7 6 1 1

     

        5 1 3 1 1

        5 2 4 1 1

        5 3 4 1 1

        5 4 5 1 1

        5 5 6 1 1

        5 6 6 1 1

        5 7 7 1 1

     

        6 1 4 1 1

        6 2 4 1 1

        6 3 5 1 1

        6 4 6 1 1

        6 5 6 1 1

        6 6 7 1 1

        6 7 7 1 1

     

        7 1 4 1 1

        7 2 5 1 1

        7 3 6 1 1

        7 4 7 1 1

        7 5 7 1 1

        7 6 7 1 1

        7 7 7 1 1];

    u_index = zeros(1,4);

    index = 1;

    %根据激活的规则获取对应输出u的论域等级

    for i=degleft_e:degright_e

        for j=degleft_ec:degright_ec

            ifrulelist(7*(i-1)+j,3)==u_index(1)||rulelist(7*(i-1)+j,3)==u_index(2)||rulelist(7*(i-1)+j,3)==u_index(3)||rulelist(7*(i-1)+j,3)==u_index(4)

                continue;

            else

               u_index(index)=rulelist(7*(i-1)+j,3);

                index=index+1;

            end

        end

    end

    %设置输入e的隶属度函数

    a = addvar(a,'input','e',[-1,1]);

    for i=1:7

       a = addmf(a,'input',1,i,'trimf',[-4/3+(i-1)/3,-1+(i-1)/3,-2/3+(i-1)/3]);

    end

    %设置输入ec的隶属度函数

    a = addvar(a,'input','ec',[-1,1]);

    for i=1:7

        a = addmf(a,'input',2,i,'trimf',[-4/3+(i-1)/3,-1+(i-1)/3,-2/3+(i-1)/3]);  

    end

    %根据控制量p设置输出隶属度函数

    a = addvar(a,'output','u',[-1,1]);

    for i=1:7

        %对相应的隶属度函数进行平移

        ifi==u_index(1)||i==u_index(2)||i==u_index(3)||i==u_index(4)

             a = addmf(a,'output',1,i,'trimf',[-4/3+(i-1)/3+p,-1+(i-1)/3+p,-2/3+(i-1)/3+p]);

        else

             a = addmf(a,'output',1,i,'trimf',[-4/3+(i-1)/3,-1+(i-1)/3,-2/3+(i-1)/3]);

        end

    end

    a = addrule(a,rulelist);

    adapfuzzy = setfis(a,'DefuzzMethod','centroid');%面积重心法去模糊化·¨

    u = 0.0;

    u =evalfis([e,ec],adapfuzzy);

     

     

    A.2 在A.1的基础上增添以下代码

    %根据修改激活规则权重

    for i=degleft_e:degright_e

        for j=degleft_ec:degright_ec

           rulelist(7*(i-1)+j,4)=rulelist(7*(i-1)+j,4) + p;

        end

    end

     

     

    展开全文
  • 模糊控制导论,对模糊控制理论的介绍,导读,Fuzzy Logic

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,754
精华内容 2,301
关键字:

模糊控制