模糊控制算法实例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];
    。。。。。。。。略
  • 3
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
模糊PID控制算法是一种将模糊逻辑与PID控制相结合的控制算法。通过采用模糊逻辑来处理模糊、非线性和不确定性等问题,可以提高控制系统的鲁棒性和性能。 在MATLAB中,可以通过使用Fuzzy Logic Toolbox工具箱来实现模糊PID控制算法的示例。下面是一种可能的实现方法: 首先,需要定义模糊推理系统的输入和输出变量。输入变量可以是误差(error)和误差变化率(error derivative),输出变量可以是控制信号(control signal)。可以根据具体的控制问题来确定模糊推理系统的输入和输出变量。 接下来,需要确定模糊集合的划分和隶属度函数。可以使用三角隶属度函数、梯形隶属度函数等。根据具体的控制问题进行调整。 然后,可以根据专家经验或试验数据来确定模糊规则库。模糊规则库中包含了各个输入变量和输出变量之间的模糊规则。可以使用模糊推理方法(如模糊最大最小或模糊加权平均等)来计算输出变量的模糊集合。 最后,可以使用模糊推理系统的输出变量的模糊集合来计算模糊PID控制器的输出。可以使用常见的PID控制算法(如比例控制、积分控制和微分控制)来计算控制信号。将PID控制器的输出作为反馈,不断迭代计算,实现控制系统的闭环控制。 以上是模糊PID控制算法的一个简单实现示例。实际应用中,需要根据具体的控制问题进行调整和优化,以满足系统的性能要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电磁MATLAB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值