資源簡介
bp神經(jīng)網(wǎng)絡(luò)進(jìn)行交通預(yù)測的Matlab源代碼
BP 神經(jīng)網(wǎng)絡(luò)用于預(yù)測
使用平臺 - Matlab7.0
數(shù)據(jù)為1986年到2000年的交通量 ,網(wǎng)絡(luò)為3輸入,1輸出
15組數(shù)據(jù),其中9組為正常訓(xùn)練數(shù)據(jù),3組為變量數(shù)據(jù),3組為測試數(shù)據(jù)

代碼片段和文件信息
clc
clear
All_error=[];%所有誤差存儲
%---------------------------------------------------
%原始數(shù)據(jù)
%---------------------------------------------------
year=1986:2000;%數(shù)據(jù)是從1986到2000年的
p=[493?372?445;372?445?176;445?176?235;176?235?378;235?378?429;...
????378?429?561;429?561?651;561?651?467;651?467?527;467?527?668;...
????527?668?841;?668?841?526;841?526?480;526?480?567;480?567?685]‘;%輸入數(shù)據(jù),共15組,每組3個輸入
t=[176?235?378?429?561?651?467?527?668?841?526?480?567?685?507];%輸出數(shù)據(jù),共15組,每組1個輸出
%---------------------------------------------------
%數(shù)據(jù)歸一化處理
%mapminmax函數(shù)默認(rèn)將數(shù)據(jù)歸一化到[-11],調(diào)用形式如下
%[yps]?=%mapminmax(xyminymax)
%x需歸化的數(shù)據(jù)輸入
%ymin,ymax為需歸化到的范圍,不填默認(rèn)為歸化到[-11]
%y歸一化后的樣本數(shù)據(jù)
%ps處理設(shè)置,ps主要在結(jié)果反歸一化中需要調(diào)用,或者使用同樣的settings歸一化另外一組數(shù)據(jù)
%---------------------------------------------------
[normInputps]?=?mapminmax(p);
[normTargetts]?=?mapminmax(t);
%---------------------------------------------------
%數(shù)據(jù)亂序,及分類處理
%將輸入的15組數(shù)據(jù)的20%,即3組,用來作為測試數(shù)據(jù);
%?樣本的20%,即3組,用來作為變化數(shù)據(jù);
%另外9組用來正常輸入,用來訓(xùn)練;
%dividevec()用來重新隨機(jī)抽取上述三種分類的數(shù)據(jù),原來的順序被打亂
%函數(shù)調(diào)用的語法
%[trainVvalVtestV]?=?dividevec(ptvalPercenttestPercent)
%輸入p為輸入數(shù)據(jù),t為輸出數(shù)據(jù)
%valPercent為訓(xùn)練用的變化數(shù)據(jù)在總輸入中的百分比
%testPercent為訓(xùn)練用的測試數(shù)據(jù)在總輸入中的百分比
%輸出trainVvalVtestV分別為按亂序及相應(yīng)百分比,抽取得到的數(shù)據(jù)
%另外,打亂后的數(shù)據(jù),p和t都是對應(yīng)的,請放心使用
%---------------------------------------------------
testPercent?=?0.20;??%?Adjust?as?desired
validatePercent?=?0.20;??%?Adust?as?desired
[trainSamplesvalidateSamplestestSamples]?=?dividevec(normInputnormTargetvalidatePercenttestPercent);
for?j=1:20
%---------------------------------------------------
%?設(shè)置網(wǎng)絡(luò)參數(shù)
%---------------------------------------------------???
NodeNum1?=?20;?%?隱層第一層節(jié)點(diǎn)數(shù)
NodeNum2=40;???%?隱層第二層節(jié)點(diǎn)數(shù)
TypeNum?=?1;???%?輸出維數(shù)
TF1?=?‘tansig‘;TF2?=?‘tansig‘;?TF3?=?‘tansig‘;%各層傳輸函數(shù),TF3為輸出層傳輸函數(shù)
%如果訓(xùn)練結(jié)果不理想,可以嘗試更改傳輸函數(shù),以下這些是各類傳輸函數(shù)
%TF1?=?‘tansig‘;TF2?=?‘logsig‘;
%TF1?=?‘logsig‘;TF2?=?‘purelin‘;
%TF1?=?‘tansig‘;TF2?=?‘tansig‘;
%TF1?=?‘logsig‘;TF2?=?‘logsig‘;
%TF1?=?‘purelin‘;TF2?=?‘purelin‘;
net=newff(normInputnormTarget[NodeNum1NodeNum2TypeNum]{TF1?TF2?TF3}‘traingdx‘);%網(wǎng)絡(luò)創(chuàng)建
%---------------------------------------------------
%?設(shè)置訓(xùn)練參數(shù)
%---------------------------------------------------???
net.trainParam.epochs=10000;%訓(xùn)練次數(shù)設(shè)置
net.trainParam.goal=1e-6;%訓(xùn)練目標(biāo)設(shè)置
net.trainParam.lr=0.01;%學(xué)習(xí)率設(shè)置應(yīng)設(shè)置為較少值,太大雖然會在開始加快收斂速度,但臨近最佳點(diǎn)時,會產(chǎn)生動蕩,而致使無法收斂
%---------------------------------------------------
%?指定訓(xùn)練參數(shù)
%---------------------------------------------------
%?net.trainFcn?=?‘traingd‘;?%?梯度下降算法
%?net.trainFcn?=?‘traingdm‘;?%?動量梯度下降算法
%
%?net.trainFcn?=?‘traingda‘;?%?變學(xué)習(xí)率梯度下降算法
%?net.trainFcn?=?‘traingdx‘;?%?變學(xué)習(xí)率動量梯度下降算法
%
%?(大型網(wǎng)絡(luò)的首選算法)
%?net.trainFcn?=?‘trainrp‘;?%?RPROP(彈性BP)算法內(nèi)存需求最小
%
%?(共軛梯度算法)
%?net.trainFcn?=?‘traincgf‘;?%?Fletcher-Reeves修正算法
%?net.trainFcn?=?‘traincgp‘;?%?Polak-Ribiere修正算法內(nèi)存需求比Fletcher-Reeves修正算法略大
%?net.trainFcn?=?‘traincgb‘;?%?Powell-Beal復(fù)位算法內(nèi)存需求比Polak-Ribiere修正算法略大
%
%?(大型網(wǎng)絡(luò)的首選算法)
%net.trainFcn?=?‘trainscg‘;?%?Scaled?Conjug
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6394??2010-09-30?10:27??BP_TrafficFlow\BP_TrafficFlow.m
?????目錄??????????0??2018-01-17?19:38??BP_TrafficFlow
-----------?---------??----------?-----??----
?????????????????6394????????????????????2
- 上一篇:遺傳算法完整MATLAB程序覆蓋法
- 下一篇:matlab求解非線性方程組
評論
共有 條評論