智能控制作业.docx

上传人:b****8 文档编号:9205346 上传时间:2023-02-03 格式:DOCX 页数:17 大小:325.38KB
下载 相关 举报
智能控制作业.docx_第1页
第1页 / 共17页
智能控制作业.docx_第2页
第2页 / 共17页
智能控制作业.docx_第3页
第3页 / 共17页
智能控制作业.docx_第4页
第4页 / 共17页
智能控制作业.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

智能控制作业.docx

《智能控制作业.docx》由会员分享,可在线阅读,更多相关《智能控制作业.docx(17页珍藏版)》请在冰豆网上搜索。

智能控制作业.docx

智能控制作业

一、已知某一炉温控制系统,要求温度保持在600℃恒定。

针对该控制系统有以下控制经验:

1若炉温低于600℃,则升压;低得越多升压越高。

2若炉温高于600℃,则降压;高得越多降压越低。

3若炉温等于600℃,则保持电压不变。

设计模糊控制器为一维控制器,输入语言变量为误差,输出为控制电压。

输入、输出变量的量化等级为7级,取5个模糊集。

试设计隶属度函数误差变化划分表、控制电压变化划分表和模糊控制规则表。

要求有程序及注释,仿真结果和分析。

(1)确定模糊控制器的输入输出变量

将600℃作为给定值t0,测量炉温为t(k),则:

输入变量:

e(k)=t(k)-t0

输出变量:

触发电压u的变化量,该u直接控制供电电压的高低。

(2)输入输出变量的模糊语言描述

输入输出变量的语言值:

{负大(NB),负小(NS),零(ZE),正小(PS),正大(PB)}

设:

e的论域为X,u的论域为Y,均量化为七个等级:

X={-3,-2,-1,0,1,2,3},Y={-3,-2,-1,0,1,2,3}

语言变量E和U的隶属函数赋值表(论域离散):

隶属度

输入量e的变化等级

-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

ZE

0

0

0.5

1

05

0

0

NS

0

0.5

1

0

0

0

0

NB

1

0.5

0

0

0

0

0

隶属度

输出量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

ZE

0

0

0.5

1

05

0

0

NS

0

0.5

1

0

0

0

0

NB

1

0.5

0

0

0

0

0

(3)模糊控制规则

①ifE=NBthenU=PB

②ifE=NSthenU=PS

③ifE=ZEthenU=ZE

④ifE=PSthenU=NS

⑤ifE=PBthenU=NB

(4)求模糊控制表

IF

NBe

NSe

ZOe

PSe

PBe

THEN

PBu

PSu

ZOu

NSu

NBu

(5)控制量转化为精确量:

采用加权平均法:

(6)计算模糊关系

R=(NBe×PBu)+(NSe×PSu)+(ZEe×ZEu)+(PSe×NSu)+(PBe×NBu)

ZEe×ZEu=(0,0,0.5,1,0.5,0,0)×(0,0,0.5,1,0.5,0,0)

分别计算出矩阵NBe×PBu,NSe×PSu,ZEe×ZEu,PSe×NSu,PBe×NBu求并集得:

查询表:

e

-3

-2

-1

0

1

2

3

u

3

2

1

0

-1

-2

-3

实际控制时,将测量到的误差量化后,从查询表中得到控制量再乘以比例因子Kn,即作为控制的实际输出。

(7)模糊决策

模糊控制器的输出为误差向量和模糊关系的合成,即u=eR。

当误差e为NB时,e=[1,0.5,0,0,0,0,0],控制器的输出u:

(8)控制量的反模糊化

控制器输出为一维模糊向量,即:

如果按照“隶属度最大原则”进行反模糊化,则选择控制量为u=3,增大压力使温度升高。

这与e=NB时的实际操作经验是一致的。

程序设计及仿真

%FuzzyControlforwatertank

clearall;

closeall;

a=newfis('fuzz_temp');

a=addvar(a,'input','e',[-3,3]);%Parametere

a=addmf(a,'input',1,'NB','zmf',[-3,-1]);

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]);

a=addvar(a,'output','u',[-3,3]);%Parameteru

a=addmf(a,'output',1,'NB','zmf',[1,3]);

a=addmf(a,'output',1,'NS','trimf',[-1,1,3]);

a=addmf(a,'output',1,'Z','trimf',[-2,0,2]);

a=addmf(a,'output',1,'PS','trimf',[-3,-1,1]);

a=addmf(a,'output',1,'PB','smf',[-3,-1]);

rulelist=[1111;%Editrulebase

2211;

3311;

4411;

5511];

a=addrule(a,rulelist);

a1=setfis(a,'DefuzzMethod','mom');%Defuzzy

writefis(a1,'temp');%Savetofuzzyfile"temp.fis"

a2=readfis('temp');

figure

(1);

plotfis(a2);

figure

(2);

plotmf(a,'input',1);

figure(3);

plotmf(a,'output',1);

flag=1;

ifflag==1

showrule(a)%Showfuzzyrulebase

ruleview('temp');%DynamicSimulation

end

disp('-------------------------------------------------------');

disp('fuzzycontrollertable:

e=[-3,+3],u=[-3,+3]');

disp('-------------------------------------------------------');

fori=1:

1:

7

e(i)=i-4;

Ulist(i)=evalfis(e(i),a2);

end

Ulist=round(Ulist)

e=-3;%Error

u=evalfis([e],a2)%Usingfuzzyinference

仿真结果:

图1系统控制图

图2输入隶属度函数

图3输出隶属度函数

图4规则表

图5动态图

二、参照RBF网络的自校正控制方法,设计基于RBF网络的模型参考自校正控制器,并进行MATLAB仿真。

被控对象为

采样周期为

,参考模型为

其中

要求:

编写仿真程序,画出控制曲线和误差曲线,并进行分析。

神经网络自校正控制有两种结构类型:

直接型、间接型。

直接型自校正控制也称直接逆动态控制,属于前馈控制;间接自校正控制是一种由辨识器对对象参数在线估计,用调节器实现参数的自动整定相结合的自适应控制技术,通常用于结构已知而参数未知但恒定(或者参数缓慢时变)的随机系统。

神经网络间接自校正控制结构如图6所示,它由两个回路组成:

(1)自校正控制器与被控对象构成的反馈回路。

(2)控制器参数调整回路(由神经网络辨识器构成)。

图6神经网络间接自校正控制框图

考虑被控对象:

其中u,y分别为对象的输入和输出,j[·]为非零函数。

若给定参考输入r,则控制器算法应为:

未知函数g[·]和j[·]可通过在线训练RBF网络进行辨识(估计),辨识结果分别记为Ng[·]和Nj[·]

则控制算法变为:

设计2个RBF网络分别辨识未知函数g[·]和j[·]。

网络结构如图7所示,其中W和V为权值向量,网络输入均为y(k)。

两个网络的结构完全相同。

图7神经网络辨识器

设网络的径向基向量为H=[h1,…,hm]T,hj为高斯基函数:

其中j=1,…,m。

m为网络隐层神经元个数,bj为神经元j的基宽度参数,bj>0,Cj为第j个节点的中心矢量:

设网络权向量为:

则两个RBF网络的输出分别为:

辨识后,采用RBF网络对系统的预测输出为:

设神经网络调整的性能指标为:

采用梯度下降法调整网络的权值:

其中hw和hv为学习速率。

神经网络权值的调整过程为:

其中a为动量因子。

神经网络自校正控制系统的结构如图8所示。

图8神经网络自校正控制系统结构图

可以看出,两个RBF网络实际上是模拟了由输出量y到两个非线性函数的映射关系

被控对象为:

则有

仿真程序如下:

%Self-CorrectcontrolbasedRBFIdentification

clearall;

closeall;

xite1=0.15;

xite2=0.50;

alfa=0.05;

w=0.5*ones(6,1);

v=0.5*ones(6,1);

cij=0.50*ones(1,6);

bj=5*ones(6,1);

h=zeros(6,1);

w_1=w;w_2=w_1;

v_1=v;v_2=v_1;

u_1=0;y_1=0;

ts=0.02;

fork=1:

1:

5000

time(k)=k*ts;

r(k)=1.0*sin(0.1*pi*k*ts);

%¿ØÖƶÔÏó

g(k)=0.8*sin(y_1);

f(k)=15;

y(k)=g(k)+f(k)*u_1;

forj=1:

1:

6

h(j)=exp(-norm(y(k)-cij(:

j))^2/(2*bj(j)*bj(j)));

end

Ng(k)=w'*h;

Nf(k)=v'*h;

ym(k)=Ng(k)+Nf(k)*u_1;

e(k)=y(k)-ym(k);

d_w=0*w;

forj=1:

1:

6

d_w(j)=xite1*e(k)*h(j);

end

w=w_1+d_w+alfa*(w_1-w_2);

d_v=0*v;

forj=1:

1:

6

d_v(j)=xite2*e(k)*h(j)*u_1;

end

v=v_1+d_v+alfa*(v_1-v_2);

u(k)=(r(k)-Ng(k))/Nf(k);

u_1=u(k);

y_1=y(k);

w_2=w_1;

w_1=w;

v_2=v_1;

v_1=v;

end

figure

(1);

plot(time,r,'r',time,y,'b');

xlabel('Time(second)');ylabel('Positiontracking');

figure

(2);

plot(time,g,'r',time,Ng,'b');

xlabel('Time(second)');ylabel('gandNg');

figure(3);

plot(time,f,'r',time,Nf,'b');

xlabel('Time(second)');ylabel('fandNf');

仿真结果如下:

图9控制曲线

图10误差曲线

通过曲线分析可知控制效果良好,控制曲线基本吻合,误差较小。

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1