神经网络自适应控制Word文档格式.docx

上传人:b****0 文档编号:12930334 上传时间:2022-09-30 格式:DOCX 页数:6 大小:66.31KB
下载 相关 举报
神经网络自适应控制Word文档格式.docx_第1页
第1页 / 共6页
神经网络自适应控制Word文档格式.docx_第2页
第2页 / 共6页
神经网络自适应控制Word文档格式.docx_第3页
第3页 / 共6页
神经网络自适应控制Word文档格式.docx_第4页
第4页 / 共6页
神经网络自适应控制Word文档格式.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

神经网络自适应控制Word文档格式.docx

《神经网络自适应控制Word文档格式.docx》由会员分享,可在线阅读,更多相关《神经网络自适应控制Word文档格式.docx(6页珍藏版)》请在冰豆网上搜索。

神经网络自适应控制Word文档格式.docx

二、间接自适应系统分析与建模

2.1系统的分析

系统过程动态方程:

y(k+1)=-0.8y(k)/(1+y2(k))+u(k),参考系统模型由三阶差分方程描述:

ym(k+1)=0.8ym(k)+1.2ym(k-1)+0.2ym(k-2)+r(k)

式中,r(k)是一个有界的参考输入。

如果输出误差ec(k)定义为ec(k)=y(k)-ym(k),则控制的目的就是确定一个有界的控制输入u(k),当k趋于正无穷时,ec(k)=0.那么在k阶段,u(k)可以从y(k)和它的过去值中计算得到:

u(k)=0.8y(k)/(1+y2(k))+0.8y(k)+1.2y(k-1)+0.2y(k-2)+r(k)

(1)

于是所造成的误差方程为:

ec(k+1)=0.8ec(k)+1.2ec(k-1)+0.2ec(k-2)

(2)因为参考模型是渐进稳定的,所以对任意的初始条件,它服从当k趋于无穷,ec(k)=0。

在任何时刻k,用神经元网络N2计算过程的输入控制,即

u(k)=-N[y(k)]+0.8y(k)+1.2y(k-1)+0.2y(k-2)+r(k) (3)

由此产生非线性差分方程:

y(k+1)=-0.8y(k)/(1+y2(k))+N[y(k)]+0.8y(k)+1.2y(k-1)+0.2y(k-2)+r(k) (4)

故设计的要点是设计一个神经网络来逼近0.8y(k)/(1+y2(k))。

2.2系统的建模设计过程

第一步,用BP神经网络逼近,神经网络的结构包含三层:

输入层、隐含层和输出层。

BP网络的训练过程如下:

正向传播是输入信号从输入层经隐层传向输出层,若输出层得到了期望的输出,则学习算法结束;

否则,转至反向传

播。

第二步,输入测试样本,对神经网络的逼近程度进行测试,将测试后的期

望输出与实际输出的曲线画出。

第三步,控制器设计。

将控制器设计为

u(k)=-N[y(k)]+0.8y(k)+1.2y(k-1)+0.2y(k-2)+r(k)。

系统的原理框图如下图所示。

参考模

e

r

控制器

过程

y

系统的原理框图若将控制器设计成u(k),则可得到相应曲线。

三、系统的MATLAB编程

clearall;

closeall;

x=[-10:

1:

10];

%训练样本输入fori=1:

21

d(i)=0.8*x(i)/(1+x(i)^2);

%目标函数,期望输出end

nx1=length(x);

%样本的大小y=zeros(1,nx1);

%输出初始化nx2=8;

%隐含层的神经元个数times=20000;

%学习次数

w1=0.05*rand(nx2,1);

%第一层的连接权值theta1=0.05*rand(nx2,1);

%第一层的阈值w2=0.05*rand(1,nx2);

%第二层的连接权值theta2=0.05*rand

(1);

%第二层的阈值ux=0.2;

%学习率

forn=1:

times

Epx=0;

%误差初始化fori=1:

nx1

s1=w1*x(i)-theta1;

%隐含层输入x1=1./(1+exp(-s1));

%隐含层输出s2=w2*x1-theta2;

%输出层输入y(i)=s2;

%输出层输出error=d(i)-y(i);

delta1=(error*(w2)'

).*x1.*(1-x1);

delta2=error;

w1=w1+ux*delta1*x(i);

%第一层权值修正w2=w2+ux*delta2*(x1)'

;

%第二层权值修正theta1=theta1-ux*delta1;

%第一层阈值修正theta2=theta2-ux*delta2;

%第二层阈值修正Epx=Epx+0.5*error^2;

%误差输出

endError(n)=Epx;

epoch(n)=n;

ifEpx<

=0.01

break;

endend

n,figure

(1);

subplot(221);

plot(x,d,'

b-'

x,y,'

r--'

);

title('

训练完后的期望输出与实际输出'

gridon;

subplot(222);

plot(epoch,Error);

训练误差输出'

xlabel('

epoch'

ylabel('

误差E'

gridon;

xt=[0:

20];

n3=length(xt);

%dt=sin(xt);

fori=1:

dt(i)=0.8*xt(i)/(1+xt(i)^2);

%目标函数,期望输出

end

fork=1:

n3

s1=w1*xt(k)-theta1;

x1=1./(1+exp(-s1));

s2=w2*x1-theta2;

yt(k)=s2;

Et(k)=dt(k)-yt(k);

endsubplot(223);

plot(xt,dt,'

xt,yt,'

r:

'

legend('

期望输出'

'

实际输出'

测试时的实际输出与期望输出'

subplot(224);

plot(xt,Et);

测试误差输出'

测试样本'

),ylabel('

误差

E'

%control

%u(k)=0.8*yf(k)+1.2*yf(k-1)+0.2*yf(k-2)+r(k);

%final_y(k+1)=-0.8*final_y(k)/(1+final_y(k)^2)+u(k);

xf=[0:

n=length(xf);

fori=1:

d(i)=0.8*xf(i)/(1+xf(i)^2);

%目标函数,期望输出fc(i)=0.8*xf(i)/(1+xf(i)^2);

yf(k)=s2;

end

u

(1)=0.8*yf

(1)+sin(2*pi/25);

u

(2)=0.8*yf

(2)+1.2*yf

(1)+sin(4*pi/25);

fork=3:

u(k)=0.8*yf(k)+1.2*yf(k-1)+0.2*yf(k-2)+sin(2*pi*k/25);

yt(k)=-fc(k)+u(k);

final_y(k)=yt(k);

if(k<

21)

fc(k+1)=0.8*yt(k)/(1+yt(k)^2);

figure

(2);

plot(xf,fc,'

--'

xf,d,'

%n1=length(fc)

%n2=length(d)figure(3);

plot(xf,u,'

xf,final_y,'

xf,fc,'

xf,(u-final_y),'

:

四、matlab仿真结果如下:

训练完后的期望输出与实际输出

训练误差输出

0.4

0.2

0.3

0 E

-0.2

0.1

下图所示的是利用神经网络训练后得到的仿真图:

-0.4

-10 -5 0 5 10

测试时的实际输出与期望输出

期望输出实际输出

0.2 E

0

0.05



0 100 200 300

epoch

测试误差输出

0 5 10 15 20

-0.05

测试样本

训练后的结果图

测试时和训练时的目标函数期望输出:

-0.1

-0.3

0 2 4 6 8 10 12 14 16 18 20

时得到的最后控制响应曲线为:

1.5

1

0.5

-0.5

-1

五、结论

由上述仿真结果可以看出,间接自适应控制的神经网络,可以对复杂的非线性和不确定系统进行智能控制,神经网络的逼近能力起了重要的作用。

神经网络对未知的过程进行离线辨识,再根据辨识结果以及参考模型进行控制器的设计,达到预期的效果。

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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