模糊控制程序实例学习资料

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.2.2.6 模糊控制器设计实例 1、单输入模糊控制器的设计

【例5.12】已知某汽温控制系统结构如图5.10所示,采用喷水减温进行控制。设计单输入模糊控制器,观察定值扰动和内部扰动的控制效果。

R =

图5.10 单回路模糊控制系统

按表5-2确定模糊变量E 、U 的隶属函数,按表5-3确定模糊控制规则,选择温度偏差e 、控制量u

的实际论域:[ 1.5,1.5]e u =∈-,则可得到该系统的单输入模糊控制的仿真程序如FC_SI_main.m 所示,仿真结果如图5.11所示。

设温度偏差e 、控制量u 的实际论域:[ 1.5,1.5]e u =∈-,选择e 、u 的等级量论域为

{3,2,1,0,1,2,3}E U ==---+++

量化因子2)

5.1(5.13

2=--⨯=

K 。

选择模糊词集为{NB,NS,ZO,PS,PB },根据人的控制经验,确定等级量E ,U 的隶属函数曲线如图5-8 所示。根据隶属函数曲线可以得到模糊变量E 、U 的赋值表如表5-3所示。

图5-8 E ,U 的隶属函数曲线

-3

-2

-1

1

2

3

依据人手动控制的一般经验,可以总结出一些控制规则,例如: 若误差E 为O ,说明温度接近希望值,喷水阀保持不动; 若误差E 为正,说明温度低于希望值,应该减少喷水; 若误差E 为负,说明温度高于希望值,应该增加喷水。 若采用数学符号描述,可总结如下模糊控制规则: 若E 负大,则U 正大; 若E 负小,则U 正小; 若E 为零,则U 为零; 若E 正小,则U 负小; 若E 正大,则U 负大。 写成模糊推理句:

if E=NB then U=PB if E=NS then U=PS if E=ZO then U=ZO if E=PS then U=NS if E=PB then U=NB

由上述的控制规则可得到模糊控制规则表,如表5-4所示。

表5-4 模糊控制规则表

模糊控制规则实际上是一组多重条件语句,它可以表示从误差论域E 到控制量论域U 的模糊关系R 。

按着上述控制规则,可以得到该温度偏差与喷水阀门开度之间的模糊关系R :

()()()()()

E U E U E U E U E U R E U

NB PB NS PS ZO ZO PS NS PB NB -

-

=⨯=⨯⨯⨯⨯⨯U U U U

计算模糊关系矩阵R 的子程序如F_Relation_1.m 所示。 %模糊关系计算子程序F_Relation_1.c

function [R,mfe,mfu,ne,nu,Me]=F_Relation_1

%#############################输入模糊变量赋值表(表5-3)############################ ne=7;%等级量e 的个数 nu=7;%等级量u 的个数

Me=[0 0 0 0 0 0.5 1;0 0 0 0 1 0.5 0;0 0 0.5 1 0.5 0 0; 0 0.5 1 0 0 0 0;1 0.5 0 0 0 0 0]; Mu=Me;

%##定义模糊变量及其语言值 1=PB,2=PS,3=O,4=NS,5=NB ,并输入模糊控制规则表(表5-4)## mfc=5;%模糊变量E 的语言值个数,控制规则表列数

E=[5 4 3 2 1]; UC=[1 2 3 4 5];

%########################计算R=E ×U############################################### R=zeros(ne,nu); for i=1:mfc iu=UC(i); ie=E(i);

for k=1:ne for l=1:nu

if Me(ie,k)

Reu(k,l)=Mu(iu,l); end end end

for k=1:ne for l=1:nu

if Reu(k,l)>R(k,l) R(k,l)=Reu(k,l); end end end end

运行结果如下:

由此,可以得到各种输入时,模糊控制器的输出:

单输入时: U E R -

-

=o (5-5)

双输入时: R EC E U ο)(-

-

-

⨯= (5-6)

三输入时: R ECC EC E U ο)(-

-

-

-

⨯⨯= (5-7)

例如:单输入时,设2.1=e ,根据前面的等级量划分原则,其等级量1+=E ,由表5-2可以查出

]05.010000[==-

PS E 。根据式(5-5)可以得到:

⎥⎥⎥

⎥⎥

⎥⎥⎦

⎤⎢⎢⎢

⎢⎢⎢⎢⎢⎢⎣

⎡=000

5.00.100005.05.05.0005.05.00.15.00005.00.15.00

005.00.15.05.0005.05.05

.00

000.15.000000R

[]

]0

5.0

5.0

0.1

5.0

5.0[

5.0

0.1

5.0

5.0

5.0

5.0

5.0

0.1

5.0

5.0

0.1

5.0

5.0

0.1

5.0

5.0

5.0

5.0

5.0

0.1

5.0

5.0

1

=

⎤⎢

= -ο

U

其模糊决策子程序如F_Deduce_1.m所示。

%单输入时模糊决策子程序F_Deduce_1.m

function FU=F_Deduce_1(fe,R,ne,nu)

for i=1:nu

for j=1:ne

if fe(j)

feu(j)=fe(j);

else

feu(j)=R(j,i);

end

end

FU(i)=max(feu);

end

%单输入模糊控制仿真程序FC_SI_main.m,被控对象W(s)=-1.1/(35s+1)^4) clear all

DT=1;ST=1500;LP=ST/DT;

A1=exp(-DT/35);B1=1-A1;

x(1:4)=0;ur=0;

%###设置e、u的初始论域及其等级量论域,计算量化因子及比例因子########## em=1.5;EM=3;Ke=EM/em;

UM=3;um=1.5;Ku=um/UM;

%#########调用计算模糊关系矩阵R的子程序F_Relation_1.m############# [R,mfc,ne,nu,Me]=F_Relation_1;

%############################################################# for k=1:LP

%############计算FC的输出################################### e=1-x(4);%计算偏差量e

e1=round(Ke*e);%把e转化成等级量

if e1>EM;e1=EM;end

if e1<-EM;e1=-EM;end

j=e1+EM+1;

Fi=1;

for i=2:mu

相关文档
最新文档