1. 首页
  2. 文档大全

智能控制理论实验二(仿真).docx

上传者:niupai11 2022-07-14 17:28:23上传 DOCX文件 437 KB
实验二BP神经网络的仿真研究
一、 实验目的
掌握BP网络的结构。
完成BP算法的程序实现。
二、 实验内容及要求
用BP网络逼近非线性函数。
设计网络结构及参数并用MATLAB进行仿真。
改变网络结构并由仿真结果讨论网络性能。
写出仿真实验报告。
三、 实验内容及步骤
选取非线性函数为f (x) = e[-1.9(x+0.5)] sin( 10 x)
(1)程序实现
绘制所要逼近的非线性函数。
程序如下,要逼近的函数曲线见图1:
p=[-2:0.05:2];
t=exp(-1.9*(p+0.5)).*sin(10*p);
plot(p,t);
xlabel('p');
ylabel('t');
title (要逼近的函数曲线);
图1要逼近的函数曲线图
网络建立
应用函数newff()建立BP网络,网络包含一层隐含层和一层输出层, 隐含层神经元的个数设为10,输出层神经元数目为1.选择隐含层神经元 和输出层神经元传递函数分别为tansig()和purelin()。网络训练算法 采用trainlm()算法。网络建立好后,用未经训练的BP网络对非线性函 数进行逼近,误差较大。见图2。
net=newff([-2,2],[10,l],{'tansig','purelin'},'trainlm');
net=init(net);
y1=sim(net,p);
plot(p,t,'-',p,y1,'--');
xlabel('p');
ylabel('t/yl');
title('未训练的BP网络输出和原函数曲线);
legend(要逼近的函数曲线,'未训练BP网络的逼近曲线);
网络训练
应用train ()函数对网络进行训练,将最大训练次数设定为1000,
训练精度设定为0.01,其余参数缺省。在训练45次后达到精度要求,见 图3。
net.trainParam.epochs=1000;
net.trainParam.goal=0.01;
net=train(net,p,t);
TRAINLM, Epoch 0/1000, MSE 13.9344/0.01, Gradient 326.08/le-010
TRAINLM, Epoch 25/1000, MSE 3.26253/0.01, Gradient 465.103/1e-010
TRAINLM, Epoch 45/1000, MSE 0.00997401/0.01, Gradient 8.29341/1e-010
0 5 10 15 20 25 30 35 40 45
[st叩 Tr&ini!石「I Epochs
-sem'eooanmcrLI Ll e」
TRAINLM, Performance goal met.
寸 Training with TRAIHL1
Eile Edit ]£i ew Ins er t Tools Uesk top itindow Help
Performance is O.ULiyy/4Ul, Goal is 0.01
10
101
10°
10'1
10'2
10'3
图3
仿真测试
应用训练好的BP网络进行逼近,绘制网络输出曲线,并与原函数和 未训练的网络的输出进行比较。见图4。
y2=sim(net,p);
plot(p,t,'-',p,y1,'--',p,y2,'*');
xlabel('p');
ylabel('t/y1/y2');
title(采用trainlm函数训练后的输出');
legend(要逼近的函数曲线,'未训练的BP网络逼近曲线,'训练后BP网络的
逼近曲线)
图4采用trainlm函数训练后的输出
⑤改变网络结构,当隐含层神经元个数分别为n=30和n=50时,网络仿
真过程如下:
n=30
未训练的网络输出与原函数比较
Training vith TRAIRL1
Eile Edit Ili ew Ins er t IuoIe Ilesk top 'H i rulow Help
MCJe-Llj'ecloBr-=UJ'j 匚一 u-e」
网络训练过程
训练后的输出比较

智能控制理论实验二(仿真)


文档来源:https://www.taodocs.com/p-695253835.html

文档标签:

下载地址