模糊控制程序实例.docx

上传人:b****0 文档编号:10079504 上传时间:2023-05-23 格式:DOCX 页数:23 大小:119.08KB
下载 相关 举报
模糊控制程序实例.docx_第1页
第1页 / 共23页
模糊控制程序实例.docx_第2页
第2页 / 共23页
模糊控制程序实例.docx_第3页
第3页 / 共23页
模糊控制程序实例.docx_第4页
第4页 / 共23页
模糊控制程序实例.docx_第5页
第5页 / 共23页
模糊控制程序实例.docx_第6页
第6页 / 共23页
模糊控制程序实例.docx_第7页
第7页 / 共23页
模糊控制程序实例.docx_第8页
第8页 / 共23页
模糊控制程序实例.docx_第9页
第9页 / 共23页
模糊控制程序实例.docx_第10页
第10页 / 共23页
模糊控制程序实例.docx_第11页
第11页 / 共23页
模糊控制程序实例.docx_第12页
第12页 / 共23页
模糊控制程序实例.docx_第13页
第13页 / 共23页
模糊控制程序实例.docx_第14页
第14页 / 共23页
模糊控制程序实例.docx_第15页
第15页 / 共23页
模糊控制程序实例.docx_第16页
第16页 / 共23页
模糊控制程序实例.docx_第17页
第17页 / 共23页
模糊控制程序实例.docx_第18页
第18页 / 共23页
模糊控制程序实例.docx_第19页
第19页 / 共23页
模糊控制程序实例.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

模糊控制程序实例.docx

《模糊控制程序实例.docx》由会员分享,可在线阅读,更多相关《模糊控制程序实例.docx(23页珍藏版)》请在冰点文库上搜索。

模糊控制程序实例.docx

模糊控制程序实例

5.2.2.6模糊控制器设计实例

1、单输入模糊控制器设计

【例5.12】已知某汽温控制系统结构如图5.10所示,采用喷水减温进行控制。

设计单输入模糊控制器,观察定值扰动和内部扰动控制效果。

图5.10单回路模糊控制系统

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

,则可得到该系统单输入模糊控制仿真程序如FC_SI_main.m所示,仿真结果如图5.11所示。

设温度偏差e、控制量u实际论域:

,选择e、u等级量论域为

量化因子

选择模糊词集为{NB,NS,ZO,PS,PB},根据人控制经验,确定等级量E,U隶属函数曲线如图5-8所示。

根据隶属函数曲线可以得到模糊变量E、U赋值表如表5-3所示。

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

表5-3模糊变量E、U赋值表(μ)

等级量

 μ

E、U

-3

-2

-1

0

1

2

3

PB

0

0

0

0

0

0.5

1

PS

0

0

0

0

1

0.5

0

ZO

0

0

0.5

1

0.5

0

0

NS

0

0.5

1

0

0

0

0

NB

1

0.5

0

0

0

0

0

依据人手动控制一般经验,可以总结出一些控制规则,例如:

若误差E为O,说明温度接近希望值,喷水阀保持不动;

若误差E为正,说明温度低于希望值,应该减少喷水;

若误差E为负,说明温度高于希望值,应该增加喷水。

若采用数学符号描述,可总结如下模糊控制规则:

若E负大,则U正大;

若E负小,则U正小;

若E为零,则U为零;

若E正小,则U负小;

若E正大,则U负大。

写成模糊推理句:

ifE=NBthenU=PB

ifE=NSthenU=PS

ifE=ZOthenU=ZO

ifE=PSthenU=NS

ifE=PBthenU=NB

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

表5-4模糊控制规则表

E

NB

NS

ZO

PS

PB

U

PB

PS

ZO

NS

NB

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

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

计算模糊关系矩阵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=[000000.51;000010.50;000.510.500;

00.510000;10.500000];

Mu=Me;

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

mfc=5;%模糊变量E语言值个数,控制规则表列数

E=[54321];

UC=[12345];

%########################计算R=E×U###############################################

R=zeros(ne,nu);

fori=1:

mfc

iu=UC(i);

ie=E(i);

fork=1:

ne

forl=1:

nu

ifMe(ie,k)

Reu(k,l)=Me(ie,k);

else

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

end

end

end

fork=1:

ne

forl=1:

nu

ifReu(k,l)>R(k,l)

R(k,l)=Reu(k,l);

end

end

end

end

运行结果如下:

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

单输入时:

(5-5)

双输入时:

(5-6)

三输入时:

(5-7)

例如:

单输入时,设

,根据前面等级量划分原则,其等级量

,由表5-2可以查出

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

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

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

functionFU=F_Deduce_1(fe,R,ne,nu)

fori=1:

nu

forj=1:

ne

iffe(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)

clearall

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;

%#############################################################

fork=1:

LP

%############计算FC输出###################################

e=1-x(4);%计算偏差量e

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

ife1>EM;e1=EM;end

ife1<-EM;e1=-EM;end

j=e1+EM+1;

Fi=1;

fori=2:

mu

ifMe(i,j)>Me(i-1,j);Fi=i;end;%得到模糊语言值

end

U=F_Deduce_1(Me(Fi,:

),R,ne,nu);%调用模糊决策子程序

%加权平均法判决控制器输出

Su=0;S=0;

fori=-UM:

UM

Su=Su+i*U(i+UM+1);S=S+U(i+UM+1);

end

u=Ku*Su/S+ur;

%***************仿真计算被控对象********************

x

(1)=A1*x

(1)-1.1*B1*u;

x

(2)=A1*x

(2)+B1*x

(1);

x(3)=A1*x(3)+B1*x

(2);

x(4)=A1*x(4)+B1*x(3);

y1(k)=x(4);

u1(k)=u;

t(k)=k*DT;

ift(k)>800;ur=0.5;end;%800秒后加入内扰

end

plot(t,y1)

holdon;

plot(t,u1,'--')

图5.11单输入模糊控制器控制效果

从上述仿真结果可以看到,定值扰动时系统可以达到稳定,但是有很大静差,不能满足工程上要求,究其原因是,模糊控制器实质上是一个具有继电器型非线性特性控制器(如图5.11中所示u),没有积分作用,对于有自平衡对象一定会产生静差,而且系统极容易产生震荡。

从图5.11就可看出,虽然设计模糊控制器对定值扰动是稳定,但对于内扰并不能使其稳定。

非线性控制器控制效果取决于各变量论域及扰动量大小【1】,因此,模糊控制器大范围工程应用还有许多问题需要研究。

2、双输入模糊控制器设计

【例5.13】对于图5.10所示系统,设计双输入模糊控制器,观察定值扰动和内部扰动控制效果。

下面考虑两个输入情况:

设温度偏差e、偏差变化率ec及控制量u实际论域:

,选择它们等级量论域分别为

量化因子

假设选取E模糊变量词集为

选取模糊变量E赋值表如表5-5所示。

表5-5e等级量与模糊量关系

E

E

-6

-5

-4

-3

-2

-1

-0

+0

+1

+2

+3

+4

+5

+6

PB

0

0

0

0

0

0

0

0

0

0

0.1

0.4

0.8

1.0

PM

0

0

0

0

0

0

0

0

0

0.2

0.7

1.0

0.7

0.2

PS

0

0

0

0

0

0

0

0.3

0.8

1.0

0.5

0.1

0

0

PO

0

0

0

0

0

0

0

1.0

0.6

0.1

0

0

0

0

NO

0

0

0

0

0.1

0.6

1.0

0

0

0

0

0

0

0

NS

0

0

0.1

0.5

1.0

0.8

0.3

0

0

0

0

0

0

0

NM

0.2

0.7

1.0

0.7

0.2

0

0

0

0

0

0

0

0

0

NB

1.0

0.8

0.4

0.1

0

0

0

0

0

0

0

0

0

0

选取EC、U模糊变量词集为

选取模糊变量EC赋值表如表5-2所示,模糊变量U赋值表如表5-6所示。

表5-6等级量U与模糊量U关系

U

U

-7

-6

-5

-4

-3

-2

-1

0

+1

+2

+3

+4

+5

+6

+7

PB

0

0

0

0

0

0

0

0

0

0

0

0.1

0.4

0.8

1.0

PM

0

0

0

0

0

0

0

0

0

0.2

0.7

1.0

0.7

0.2

0

PS

0

0

0

0

0

0

0

0.4

1.0

0.8

0.4

0.1

0

0

0

ZO

0

0

0

0

0

0

0.5

1.0

0.5

0

0

0

0

0

0

NS

0

0

0

0.1

0.4

0.8

1.0

0.4

0

0

0

0

0

0

0

NM

0

0.2

0.7

1.0

0.7

0.2

0

0

0

0

0

0

0

0

0

NB

1.0

0.8

0.4

0.1

0

0

0

0

0

0

0

0

0

0

0

现将操作者在操作过程中遇到各种出现情况和相应控制策略汇总为表5-7。

表5-7双输入时模糊控制规则表

E

U

EC

NB

NM

NS

NO

PO

PS

PM

PB

NB

PB

PB

PM

PM

PM

PS

ZO

ZO

NM

PB

PB

PM

PM

PM

PS

ZO

ZO

NS

PB

PB

PM

PS

PS

ZO

NS

NM

ZO

PB

PM

PS

ZO

ZO

NS

NM

NB

PS

PM

PM

PS

ZO

NS

NS

NM

NB

PM

PM

PS

ZO

NS

NM

NM

NB

NB

PB

PS

ZO

NS

NM

NM

NB

NB

NB

下面说明建立模糊控制规则表基本思想。

首先考虑误差为负情况,当误差(希望值减去温度值)为负大时(说明温度高于希望值),若误差变化率也为负,这时误差有增大趋势,为尽快消除已有负大误差并抑制误差变大,所以控制量变化取正大(控制量增大,意味着喷水阀门开度增大,喷水量增加,使得温度下降,下同)。

当误差为负而误差变化率为正时,系统本身已有减少误差趋势,所以,为尽快消除误差而又不超调,应取较小控制量。

当误差为负中时,控制量变化应使误差尽快消除,基于这种原则,控制量变化选取同误差为负大时相同。

当误差为负小时,系统接近稳态,若误差变化微小时,选取控制量变化为正中,以抑制误差往负方向变化;若误差变化为正时,系统本身有消除负小误差趋势,选取控制量变化为正小。

上述选取控制量变化原则:

当误差大或较大时,选择控制量以尽快消除误差为主;当误差较小时,选择控制量要注意防止超调,以系统稳定性为主要出发点。

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

其中角标E,EC,U分别表示误差、误差变化率和控制量。

设e、ec、u等级量分别为nfe、nfec、nfu,则R是一个

列矩阵。

计算模糊关系矩阵R子程序如F_Relation_2.m所示。

%模糊关系计算子程序F_Relation_2.c

function[R,n,nE,nEC,nU,nfe,nfec,nfu,Me,Mec]=func()

%##定义E模糊变量值1=PB,2=PM,3=PS,4=-O,5=+0,6=NS,7=NM,8=NB并输入表(5-5)####

nE=8;%模糊变量E语言值个数¸控制表列数

E=[87654321];

nfe=14;%E等级量个数

Me=[00000000000.10.40.81.0;

0000000000.20.71.00.70.2;

00000000.30.81.00.50.100;

00000001.00.60.10000;

00000.10.61.00000000;

000.10.51.00.80.30000000;

0.20.71.00.70.2000000000;

1.00.80.40.10000000000];

%###定义EC模糊变量值1=PB,2=PM,3=PS,4=0,5=NS,6=NM,7=NB并输入表(5-2)#####

nEC=7;%模糊变量EC语言值个数¸控制表行数

EC=[7654321];

nfec=13;%EC等级量个数

Mec=[0000000000.10.40.81.0;

000000000.20.71.00.70.2;

00000000.91.00.70.200;

000000.51.00.500000;

000.20.71.00.90000000;

0.20.71.00.70.200000000;

1.00.80.40.1000000000];

%###定义U模糊变量值1=PB,2=PM,3=PS,4=0,5=NS,6=NM,7=NB并输入表(5-6)#####

nU=7;%模糊变量U语言值个数

U=[7654321];

nfu=15;%U等级量个数

Mu=[000000000000.10.40.81.0;

0000000000.20.71.00.70.20;

00000000.41.00.80.40.1000;

0000000.51.00.5000000;

0000.10.40.81.00.40000000;

00.20.71.00.70.2000000000;

1.00.80.40.100000000000];

%#######################输入模糊控制规则表(表5-7)#########################

nfc=8;%模糊变量E语言值个数,模糊控制表列数

mfc=7;%模糊变量EC语言值个数,模糊控制表行数

UC=[11222344;11222344;11233456;12344567;

22345567;23456677;34566777];

%###########################计算R=(E×EC×U)#######################################

R=zeros(nfe*nfec,nfu);

fori=1:

mfc

forj=1:

nfc

%E×EC

ie=E(j);

iec=EC(i);

fork=1:

nfe

forl=1:

nfec

ifMe(ie,k)

Reec(k,l)=Me(ie,k);

else

Reec(k,l)=Mec(iec,l);

end

end

end

%E×EC×U

iu=UC(i,j);

n=0;

fork=1:

nfe

forl=1:

nfec

n=n+1;

fort=1:

nfu

ifReec(k,l)

Reecu(n,t)=Reec(k,l);

else

Reecu(n,t)=Mu(iu,t);

end

end

end

end

fork=1:

n

forl=1:

nfu

ifReecu(k,l)>R(k,l)

R(k,l)=Reecu(k,l);

end

end

end

end

end

双输入时,先根据e、ec计算出相应等级量E、EC,再根据表(5-2)查出相应

,然后按式(5-6)计算出模糊控制器输出。

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

%双输入时模糊决策子程序F_Deduce_2.m

functionFU=F_Deduce_2(fe,fec,R,n,nfe,nfec,nfu)

%#######################计算E×EC#####################################

n=0;

fori=1:

nfe

forj=1:

nfec

n=n+1;

iffe(i)

feec(n)=fe(i);

else

feec(n)=fec(j);

end

end

end

%#######################计算(E×EC)。

R################################

forl=1:

nfu

fori=1:

n

iffeec(i)

fu(i)=feec(i);

else

fu(i)=R(i,l);

end

FU(l)=max(fu);

end

end

按着前面设计过程,可以得到双输入模糊控制主程序,如FC_MI_main.m所示。

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

clearall

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

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

x(1:

4)=0;ur=0;e0=0;

%###设置e、ec、u初始论域及其等级量论域,计算量化因子及比例因子##########

em=2;EM=6;Ke=EM/em;

ecm=2;ECM=6;Kec=ECM/ecm;

UM=7;um=2;Ku=um/UM;

U=[-7-6-5-4-3-2-101234567];

%#########调用计算模糊关系矩阵R子程序F_Relation_2.m#################

[R,n,nE,nEC,nU,nfe,nfec,nfu,Me,Mec]=F_Relation_2;

%################################################################

fork=1:

LP

%############计算FC输出#######################################

%#########变量e模糊化处理#############################

e=1-x(4);%计算输入e确切量

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

ife1>EM;e1=EM;end

ife1<-EM;e1=-EM;end

ife1<0;j=e1+EM+1;end

if(e1==0)&(e<0);j=7;end

if(e1==0)&(e>0);j=8;end

ife1>0;j=e1+EM+2;end

%得到e模糊语言值

Fi=1;mfE=Me(1,j);

fori=2:

nE

ifMe(i,j)>mfE;Fi=i;mfE=Me(i,j);end

end

fe=Me(Fi,:

);

%##########变量ec模糊化处理############################

ec=(e-e0)/DT;e0=e;计算ec确切量

ec1=round(Kec*ec);%把ec转换成等级量

ifec1>ECM;ec1=ECM;end

ifec1<-ECM;e1=-ECM;end

j=ec1+ECM+1;

Fi=1;

%得到ec模糊语言值

Fi=1;mfEC=Mec(1,j);

fori=2:

nEC

ifMec(i,j)>mfEC;Fi=i;mfEC=Mec(i,j);end

end

fec=Mec(Fi,:

);

%################调用模糊决策子程序,求出控制量##########

FU=F_Deduce_2(fe,fec,R,n,nfe,nfec,nfu);

%最大隶属度法判决控制器输出

nU=1;mFU=FU

(1);

fori=2:

nfu

ifFU(i)>mFU;nU=i;mFU=FU(i);end

end

u=Ku*U(nU)+ur;

%***************仿真计算被控对象********************

x

(1)=A1*x

(1)-1.1*B1*u;

x

(2)=A1*x

(2)+B1*x

(1);

x(3)=A1*x(3)+B1*x

(2);

x(4)=A1*x(4)+B1*x(3);

y1(k)=x(4);

u1(k)=u;

t(k)=k*DT;

ift(k)>800;ur=0.5;end;%800秒后加入内扰

end

plot

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2