神经模糊控制器.docx
- 文档编号:2321800
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:15
- 大小:87.15KB
神经模糊控制器.docx
《神经模糊控制器.docx》由会员分享,可在线阅读,更多相关《神经模糊控制器.docx(15页珍藏版)》请在冰豆网上搜索。
神经模糊控制器
在本文中称为神经模糊控制器(NFC),使用等效的四层前馈连接网络实现。
利用导出的学习算法,NFC能够识别受控函数的模糊规则,并且能够仅通过观察过程输出错误来自动调整规则隶属度函数。
识别未知模糊隶属度函数的输入一输出动态行为,从而为在线提供参考信号。
调整NFC,实现了具有误差反向传
播算法的形状可调神经网络(MNN)。
本篇用NFC及MNN实现对开环不稳定非线性CSTR的直接自适应控制。
通过控制非线性和开环不稳定CSTR的挑战问题证明了该方案的适用性和有效性。
图1.所提岀的神经模糊控制系统的示意图
NFC神经网络:
NFC结构是一个四层前馈连接网络,用于实现简化的Takagi和Sugeno的模糊推理系统。
实质上,NFC将传统FLC(隶属函数,模糊逻辑规则,模糊化,去模糊化和模糊蕴涵)的基本元素和功能集成到具有分布式学习能力的连接结构中,以学习隶属函数和模糊逻辑规则。
让每个输入有n个模糊分区项,即每个输入有n个隶属函数,然后层之间的输入输出关系精确说明如下:
第一层:
输入层,该层中的输入单元是变换过程输出误差x1和变换后的误差变
换x2,输出节点只是将这些输入值传输到下一层。
输入:
h⑴*円2
输出:
Oj")=1/},i=1,2;j=1,2,…,n
第二层:
语言术语层,该层接收来自输入层的信号,并使用高斯函数作为隶属函数来确定相对贡献观察到的信号。
⑴2
⑵(。
ij-aij)
1j2,i=1,2;j=1,2,…,n
输入:
bij
输出:
Oij-%=exp(Iij(}),i=1,2;j=1,2,...,n
第三层:
规则层,第3层实现了与先决条件相关的链接。
连接标准是每个规则节点只有一个来自语言变量的先行链接。
输入:
I(ji)n/}=Oi/Qi",j=1,2,...,n;1=1,2,...,n
输出:
=叫=I,[i=1,2,...,m(=『)
第四层:
输出层,所有后果链接都完全连接到输出节点,并直接解释为输出操作的强度。
该层执行质心去模糊化以获得推理输出。
NFC神经网络各层输入输出函数:
输入:
m
I(4)(3)
1OpWp
P吕
输出:
(4)
O⑷=u^mI无OP3)pm
⑴⑵⑶⑷
图2.所提出的神经模糊控制器的结构
NFC程序实现如图:
clear
clc
function[yt]=NFC(u1,u2,a,b,w)
global01O203;
u=[u1,u2];
fori=1:
2
forj=1:
7
O1(i,j)=u(i);
end
end
fori=1:
2
forj=1:
7
12=-(01(i,j)-a(i,j)F2/(b(i,j)A2);
02(i,j)=exp(l2);
end
end
fori=1:
7
forj=1:
7
13=O2(1,i)*O2(2,j);
03(i,j)=I3;
end
end
14=0;
sum=0;
fori=1:
1:
7
forj=1:
1:
7
I4=I4+O3(i,j)*w(i,j);
sum=sum+O3(i,j);
end
end
yt=14/sum;
end
基于MNN的估计器及其相关的学习算法
在本文中,我们尝试开发一种基于形状可调神经网络(MNN)的在线梯度估计器。
MNN估计器采用三层算法,第一层是输入层,第二层是隐藏层,第三层是输出层,每层定义如下:
输入层:
隐藏层:
y(k-j+1),1jq、u(k_j+q+1),q+1兰jEg
net2i=“'W2ijS1j7,2i,i-1,2,...,m2
S2i
ne2it
1-e
jT
m2
nest=\WSzT
输出层:
iA
〜nejt
a(1-e)
nejt
1e
其中m1和m2分别是输入和隐藏层节点的数量,y是MNN输出。
为了使MNN能够模拟工厂的动态行为并因此提供所需的梯度信息,还采用基于梯度下降的反向传播算法来进行参数更新。
基于最小化误差函数,我们对MNN进行规则更新,这里,应该注意,输出层的形状参数a与互连权重和偏置一起被调整。
这种努力允许MNN的输出范围自动调整,避免了缩放过程并阻止MNN饱和。
mt)
*plant
图3基于MNN的估算器
案例研究:
控制开环不稳定非线性CSTR
为了证明所提方案的适用性和有效性,在本节中我们将实现所提出的方案来智能控制非线性CSTR。
还将介绍所提出的方案与传统静态模糊逻辑控制器的比较。
非线性CSTR的动力学微分方程如下:
1~2/:
其中~1和X2分别代表无量纲反应物浓度和反应器温度。
控制输入u是无量纲冷
却温度。
微分方程用四阶“RungeKutta”搭建模型求解。
四阶“RungeKutta”搭建模型如下:
clear
clc
functiondotstate=runge_kutta(~,state)
globaluk;
dotstate(1:
2,1)=zeros(2,1);
Da=0.072;
phi=20;
B=9;
delta=0.4;
dotstate
(1)=-state
(1)+
Da*(1-state
(1))*exp(state
(2)/(1+state
(2)/phi));dotstate
(2)=-(1+delta)*state
(2)+B*Da*(1-state
(1))*exp(state
(2)/(1+state
(2)/phi))+delta*u(k);
end
整体求解程序如下:
clear
%定义全局变量
clc
globaluO1O2O3k;
%初始隶属度函数分布情况说明a(1:
2,:
)=[linspace(-1,1,7)
linspace(-1,1,7)];
b(1:
2,1:
7)=0.25;
%高斯函数的中心,从-1到1平均分配
%高斯函数的宽度参数
%权重赋予初值
w=[-1-1-2/3-2/3-1/3-1/30-1-2/3-2/3-1/3-1/301/3
-2/3-2/3-1/3-1/301/31/3
-2/3-1/3-1/301/31/32/3
-1/3-1/301/31/32/32/3
-1/301/31/32/32/31
01/31/32/32/311];
%初值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%一次循环结束后将上次的结果进行转换储存
m1=4;
m2=5;
etax=0.3;
bx=0.01;
ax=1;
w2x=zeros(5,4);
w2x(:
:
)=0.02*(rand(m2,m1)-0.5);
theta2x=0.01*(rand(m2,1)-0.5);
w3x=zeros(5);
w3x=0.02*(rand(m2,1)-0.5);
theta3x=0.02*(rand
(1)-0.5);
ax1=ax;
w21=w2x;
theta2x1=theta2x;
w31=w3x;theta3x1=theta3x;
ax0=ax1;
w20=w21;
theta2x0=theta2x1;w30=w31;
theta3x0=theta3x1;
s1(1:
m1)=0;s2(1:
2)=0;
yx
=0;
q
=2;
eta
=0.8;
beita
=0.01;
y(1,1)
=0;
u(1,1)
=0;
%可以不定义变量,避免循环中给扩充矩阵而定义
delta2(1:
5)=0;dE_dw(1:
7,1:
7)=0;dE_da(1:
2,1:
7)=0;dE_db(1:
2,1:
7)=0;
x01=0.144;
x02=0.886;
%平衡点A的初值
x(1:
2,1)=[x01x02];total=20;
h=0.05;
yd=2.750;e(1:
2,1)=[yd0];
k3=5;%系统循环迭代推理fork=1:
1:
(total/h)
%模型(微分方程)的初值
%仿真时间
%步长
%期望值
%e和ce的初
%设定k3的初值
%(k=1:
h:
total)
%对e和ce进行非线性饱和约束,将误差和误差变化控制在规则表之内,并量化化)映射到论域[-1.1]内部
(模糊
e1=(1-exp(-10*e(1,k)))/(1+exp(-10*e(1,k)));
e2=(1-exp(-0.01*e(2,k)))/(1+exp(-0.01*e(2,k)));
%由NFC得到系统的控制率
u(k)=k3*NFC(e1,e2,a,b,w);
%求微分方程,四阶龙格-库塔法求解微分方程(系统模型)x为系统的状态量。
c1=runge_kutta(k*h,x(:
k));
c2=runge_kutta(k*h+h/2,x(:
k)+h*c1/2);c3=runge_kutta(k*h+h/2,x(:
k)+h*c2/2);
c4=runge_kutta(k*h+h,x(:
k)+h*c3);x(:
k+1)=x(:
k)+h*(c1+2*c2+2*c3+c4)/6;
%记录输出的误差
e(1,k+1)=yd-x(2,k);
e(2,k+1)=e(1,k+1)-e(1,k);
%系统输出()
y(k)=x(2,k);
%%%%MNN各层网络值的计算%%%%
ifk<3
s1(1:
4)=[y
(1),0,u
(1),0];
else
forj=1:
1:
m1%MNNstep1(m1=4)
ifj<3
s1(j)=y(k-j+1);
else
s1(j)=u(k-j+1+q);%q=2
end
end
end
sum2=0;
sum3=0;
fori=1:
1:
m2%MNNstep2(m2=5)
forj=1:
1:
m1
sum2=sum2+w2x(i,j)*s1(j);
end
net2=sum2+theta2x(i);
s2(i)=(1-exp(-net2))/(1+exp(-net2));
sum3=sum3+w3x(i)*s2(i);%MNNstep3
end
net3=sum3+theta3x;
yx=ax*(1-exp(-net3))/(1+exp(-net3));%MNN结果,求出y的估计
值。
%%%MNN中求y对u*的导数值%%%
%y对u*的导数
delta3=(1/2)*ax*(1-yx/ax)*(1+yx/ax);
fori=1:
1:
m2
delta2(i)=0.5*(1-s2(i))*(1+s2(i));
end
%
dy_du=0;for
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 神经 模糊 控制器