• 模糊控制算法实例matlab程序


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

    “若水位高于0点,则向外排水,差值越大,排水越快”;“若水位低于0点,则向内注水,差值越大,注水越快”.
    根据上述经验,可按下列步骤设计一维模糊控制器。

    1 确定观测量和控制量
    定义理想液位0点的水位为h0,实际测得的水位高度为h,选择液位差为
    在这里插入图片描述

    将当前水位对于h0点的偏差e作为观测量。

    2 输入量和输出量的模糊化
    将偏差分为5个模糊集:负大(NB),负小(NS),零(ZO),正小(PS),正大(PB)。将偏差e的变化分为7个等级,-3,-2,-1,0,+1,+2,+3,从而得到水位变化模糊表,见表4一1。
    在这里插入图片描述

    控制量为调节阀门开度的变化。将其分为5个模糊集:负大(NB),负小(NS),零(ZO),正小(PS),正大(PB)。将的变化分为9个等级:一4,一1,0,+1,+2,+3,+4,得到控制量模糊划分表,见表4一2。
    在这里插入图片描述

    3.模糊规则的描述
    根据日常的经验,设计以下模糊规则:
    (1)"若负大,则负大”;
    (2)“若e负小,则负小”;
    (3)“若e为零,则为零”;
    (4)“若e正小,则正小”
    (5)“若e正大,则正大”
    其中,排水时为负,注水时为正。
    将上述规则采用“'IF A THEN B”的形式来描述,则模糊规范表示为
    (l)if e = NB Then u =NB
    (2)if e = NS Then u =NS
    (3)if e = ZO Then u =ZO
    (4)if e = PS Then u =PS
    (5)if e = PB Then u = PB
    根据上述经验规则,可得模糊控制规则表,见表4一3。
    在这里插入图片描述

    4 求模糊关系
    模糊控制规则是一个多条语句,它可以表示为U×V上的模糊子集,即模糊关系R为R=(NBe×NBu)U(NSe×NSu)U(ZOe×ZOu)U(PSe×PSu)U(PBe×PBu)。其中规则内的模糊集运算取交集,规则间的模糊集运算取并集,即
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    由以上可得:
    在这里插入图片描述

    5 模糊决策
    模糊控制器的输出为误差向量和模糊关系的合成,即
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    6 控制量的反模糊化
    由模糊决策可知,当误差为负大时,实际液位远高于理想液位,e=NB,控制器的输出为一模糊向量,可表示为
    在这里插入图片描述

    如果按照“隶属度最大原则”进行反模糊化,选择控制量为u=-4,即阀门的开度应开大一些,加大排水量。如下图:
    在这里插入图片描述

    模糊控制响应表见4-4
    在这里插入图片描述
    7 matlab仿真结果
    1)模型
    在这里插入图片描述
    2)输入隶属度
    在这里插入图片描述
    3)输出隶属度
    在这里插入图片描述
    4)控制系统
    在这里插入图片描述
    7 matlab程序

    
    clear 
    clc
    close all;
    a=newfis('fuzz-tank');%创建一个模糊推理系统(FIS)
    %% 偏差参数
    %水位变化e划分,NB:负大 NS:负小 Z:零 PS:正小 PB:正大
    a=addvar(a,'input','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,'Z','trimf',[-2,0,2]);
    a=addmf(a,'input',1,'PS','trimf',[-1,1,3]);
    a=addmf(a,'input',1,'PB','smf',[1,3]);%S形隶属函数
    %% 控制参数
    %控制量u变化划分,NB:负大 NS:负小 Z:零 PS:正小 PB:正大
    a=addvar(a,'output','u',[-4,4]);
    a=addmf(a,'output',1,'NB','zmf',[-4,-1]);
    a=addmf(a,'output',1,'NS','trimf',[-4,-2,1]);
    a=addmf(a,'output',1,'Z','trimf',[-2,0,2]);
    a=addmf(a,'output',1,'PS','trimf',[-1,2,4]);
    a=addmf(a,'output',1,'PB','smf',[1,4]);
    %% 规则描述
    %模糊规则
    %若e负大,则u负大
    %若e负小,则u负小
    %若e为零,则u为零
    %若e正小,则u正小
    %若e正大,则u正大
    rulelist=[
        1 1 1 1;
        2 2 1 1;
        3 3 1 1;
        4 4 1 1;
        5 5 1 1];
        。。。。。。。。略
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    es6对象的扩展、对象的新增方法
    AlexNet、VGG、GoogLeNet、ReaNet、MobileNet、ShuffleNet和EfficientNet网络的亮点和创新之处
    03.Pandas数据结构
    打造综合性品牌阵地 阿里元境引领元宇宙营销创新升级
    常见树种(贵州省):005竹类
    电脑格式化了怎么恢复?格式化恢复,4个步骤就足够了
    Linux学习-76-LAMP环境搭建和LNMP环境搭建-前期准备
    c++初阶--内存管理
    ROS学习笔记(六)---服务通信机制
    XTTS系列之三:中转空间的选择和优化
  • 原文地址:https://blog.csdn.net/weixin_47365903/article/details/123934940