神经模糊控制器.docx

上传人:b****2 文档编号:2321800 上传时间:2022-10-28 格式:DOCX 页数:15 大小:87.15KB
下载 相关 举报
神经模糊控制器.docx_第1页
第1页 / 共15页
神经模糊控制器.docx_第2页
第2页 / 共15页
神经模糊控制器.docx_第3页
第3页 / 共15页
神经模糊控制器.docx_第4页
第4页 / 共15页
神经模糊控制器.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

神经模糊控制器.docx

《神经模糊控制器.docx》由会员分享,可在线阅读,更多相关《神经模糊控制器.docx(15页珍藏版)》请在冰豆网上搜索。

神经模糊控制器.docx

神经模糊控制器

在本文中称为神经模糊控制器(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

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

当前位置:首页 > 人文社科 > 法律资料

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

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