智能控制作业.docx
《智能控制作业.docx》由会员分享,可在线阅读,更多相关《智能控制作业.docx(17页珍藏版)》请在冰豆网上搜索。
智能控制作业
一、已知某一炉温控制系统,要求温度保持在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误差曲线
通过曲线分析可知控制效果良好,控制曲线基本吻合,误差较小。