资源简介
公路运量主要包括公路客运量和公路货运量两方面。某个地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,已知该地区20年(1990-2009)的公路运量相关数据如下:样本数据较多,且已知影响数据的因素(三大因素:该地区的人数、机动车数量和公路面积),可考虑将其作为BP神经网络的训练集,对该神经网络进行训练,然后对训练好的神经网络进行测试,最后使用测试合格的神经网络进行预测工作。
代码片段和文件信息
numberOfSample = 20; %输入样本数量
%取测试样本数量等于输入(训练集)样本数量,因为输入样本(训练集)容量较少,否则一般必须用新鲜数据进行测试
numberOfTestSample = 20;
numberOfForcastSample = 2;
numberOfHiddenNeure = 8;
inputDimension = 3;
outputDimension = 2;
%准备好训练集
%人数(单位:万人)
numberOfPeople=[20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 41.93 44.59 47.30 52.89 55.73 56.76 59.17 60.63];
%机动车数(单位:万辆)
numberOfAutomobile=[0.6 0.75 0.85 0.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.1];
%公路面积(单位:万平方公里)
roadArea=[0.09 0.11 0.11 0.14 0.20 0.23 0.23 0.32 0.32 0.34 0.36 0.36 0.38 0.49 0.56 0.59 0.59 0.67 0.69 0.79];
%公路客运量(单位:万人)
passengerVolume = [5126 6217 7730 9145 10460 11387 12353 15750 18304 19836 21024 19490 20433 22598 25107 33442 36836 40548 42927 43462];
%公路货运量(单位:万吨)
freightVolume = [1237 1379 1385 1399 1663 1714 1834 4322 8132 8936 11099 11203 10524 11115 13320 16762 18673 20724 20803 21804];
%由系统时钟种子产生随机数
rand(‘state‘ sum(100*clock));
%输入数据矩阵
input = [numberOfPeople; numberOfAutomobile; roadArea];
%目标(输出)数据矩阵
output = [passengerVolume; freightVolume];
%对训练集中的输入数据矩阵和目标数据矩阵进行归一化处理
[sampleInput minp maxp tmp mint maxt] = premnmx(input output);
%噪声强度
noiseIntensity = 0.01;
%利用正态分布产生噪声
noise = noiseIntensity * randn(outputDimension numberOfSample);
%给样本输出矩阵tmp添加噪声,防止网络过度拟合
sampleOutput = tmp + noise;
%取测试样本输入(输出)与输入样本相同,因为输入样本(训练集)容量较少,否则一般必须用新鲜数据进行测试
testSampleInput = sampleInput;
testSampleOutput = sampleOutput;
%最大训练次数
maxEpochs = 50000;
%网络的学习速率
learningRate = 0.035;
%训练网络所要达到的目标误差
error0 = 0.65*10^(-3);
%初始化输入层与隐含层之间的权值
W1 = 0.5 * rand(numberOfHiddenNeure inputDimension) - 0.1;
%初始化输入层与隐含层之间的阈值
B1 = 0.5 * rand(numberOfHiddenNeure 1) - 0.1;
%初始化输出层与隐含层之间的权值
W2 = 0.5 * rand(outputDimension numberOfHiddenNeure) - 0.1;
%初始化输出层与隐含层之间的阈值
B2 = 0.5 * rand(outputDimension 1) - 0.1;
%保存能量函数(误差平方和)的历史记录
errorHistory = [];
for i = 1:maxEpochs
%隐含层输出
hiddenOutput = logsig(W1 * sampleInput + repmat(B1 1 numberOfSample));
%输出层输出
networkOutput = W2 * hiddenOutput + repmat(B2 1 numberOfSample);
%实际输出与网络输出之差
error = sampleOutput - networkOutput;
%计算能量函数(误差平方和)
E = sumsqr(error);
errorHistory = [errorHistory E];
if E < error0
break;
end
%以下依据能量函数的负梯度下降原理对权值和阈值进行调整
delta2 = error;
delta1 = W2‘ * delta2.*hidd
- 上一篇:用于优化和非线性规划问题的遗传算法.zip
- 下一篇:曲波变换重构
相关资源
- 基于BP神经网络对几种字体0-9的数字识
- 基于BP神经网络的盲均衡算法 C程序(
- 基于BP神经网络的语音情感识别系统
- BP神经网络解决手写数字识别问题 m
- BP神经网络实现手写数字识别matlab实现
- 应用BP神经网络逼近非线性函数
- 基于BP神经网络的无线传感器定位算法
- BP神经网络在隧道基坑工程中的实际运
- 利用BP神经网络实现手写体数字识别
- 利用BP神经网络对图像提取的MATLAB代码
- 基于MATLAB的BP神经网络应用绝对好资源
- 基于Matlab的遥感影像BP神经网络分类算
- matlab基于BP神经网络的人脸识别
- 基于BP神经网络的水上交通事故预测及
- zw_qq_15023225-7501331-S函数的BP神经网络
- BP神经网络MATLAB.zip
- 基于BP神经网络的人脸识别源码matla
- BP神经网络用于蚊子分类
- BP神经网络的人脸识别matlab代码
- BP神经网络人脸识别MATLAB.zip
- 基于BP神经网络的手写数字识别matla
- 基于BP神经网络的人脸识别代码
- bp神经网络 matlab代码 识别0到10的数字
- 基于BP神经网络的人脸识别系统_安大
- 基于MATLAB的BP神经网络的人脸朝向识别
- 基于S函数的BP神经网络PID控制器及S
- 基于bp神经网络字符识别系统 matlab代
- 光伏太阳能功率预测基于BP神经网络
- BP神经网络 手写体
- 基于BP神经网络的验证码识别matlab
评论
共有 条评论