1 简介
BP神经网络模型是目前应用最为广泛神经网络之一。它的本质是通过对历史数据的学习找出数据变化趋势之间的非线性关系,并通过输出量与预期值之间的误差不断调整网络中各个单元的权重,使整个网络的误差最小。因此,为达到较好的预测精度,需要对网络预测模型自身的结构进行确定。
1)网络层数的设计。本文需要构建的预测模型,主要是用于研究在短时间交通流走势。在这种情况下,不需选择增加网络层数的办法而是选择增加隐含层神经元节点的数目来提高输出结果的精度。因此,本文选用单一隐层的 BP神经网络模型。
2)输入层神经节点的设计。在单因素预测中仅使用交通流作为原始数据.
3)传递函数和学习函数的设计。本文所设计的模型均采用了相同的隐含层传递函数tansig、输出层传递函数logsig和学习函数learngdm。
4)性能函数的确定。网络误差能直观的反映预测效果的好坏程度,是预测精度的具体反映。本文在构建 BP神经网络模型时选择均方误差来确定网络的误差情况。
5)隐含层神经节点的设计。在模型中其它参数值保持不变的情况下,本文通过调整隐含层神经节点的数目进行重复实验,通过对比输出误差,确定最佳隐含层神经元节点的数目。对于单因素 BP神经网络,当隐含层神经元节点的数目为24时,BP神经网络的均方误差最小,即对函数的逼近效果最好,此时的均方误差为1.1609;对于多因素 BP神经网络,隐含层神经元节点数目为5时,BP神经网络的均方误差达到最小,最小值为0.0126。根据以上分析,单因素 BP神经网络预测模型的结构为:单一隐含层和单一输出层;输入层神经节点数目为5 ;隐含层神经节点数目为24;输出层神经节点数目为1;隐含层传递函数、输出层传递函数、学习函数分别为tansig、logsig和learngdm;性能函数为 mse。
2 部分代码
clc
clear
load flow.mat
%--------------------------数据图
figure(1)
plot(data)
xlabel('时间,15min/单位')
ylabel('交通流量/量')
%训练数据归一化
%%%----------------数据归一化
[datan,dataps]=mapminmax((data)');
%-------------------------重构数据
%m=10;
%tau=1;
x=datan;
for t=10:2684
Data(:,(t-9))=[x(t-9) x(t-8) x(t-7) x(t-6) x(t-5) x(t-4) x(t-3) x(t-2) x(t-1) x(t) x(t+1)];
end
%--------------------------开始预测
%准备训练数据和测试数据
trn_data = zeros(11,2560);
test_data = zeros(11,100);
% prepare training data
trn_data=Data(1:11,1:2560);
Emape=sum(error)/LEN_DATA
Emse=mse(ERR)
Ermse=sqrt(Emse)
NMSE=var(ERR)/var(output)
figure(3)
plot(error);
xlabel('时间,15min/单位')
ylabel('相对误差')
err_mse=mse(error);
err_rmse=sqrt(err_mse);
3 仿真结果
4 参考文献
[1]师洪涛, 杨静玲, 丁茂生,等. 基于小波—BP神经网络的短期风电功率预测方法[J]. 电力系统自动化, 2011, 35(016):44-48.
部分理论引用网络文献,若有侵权联系博主删除。