資源簡介
bp神經網絡進行交通預測的Matlab源代碼
BP 神經網絡用于預測
使用平臺 - Matlab7.0
數據為1986年到2000年的交通量 ,網絡為3輸入,1輸出
15組數據,其中9組為正常訓練數據,3組為變量數據,3組為測試數據

代碼片段和文件信息
clc
clear
All_error=[];%所有誤差存儲
%---------------------------------------------------
%原始數據
%---------------------------------------------------
year=1986:2000;%數據是從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]‘;%輸入數據,共15組,每組3個輸入
t=[176?235?378?429?561?651?467?527?668?841?526?480?567?685?507];%輸出數據,共15組,每組1個輸出
%---------------------------------------------------
%數據歸一化處理
%mapminmax函數默認將數據歸一化到[-11],調用形式如下
%[yps]?=%mapminmax(xyminymax)
%x需歸化的數據輸入
%ymin,ymax為需歸化到的范圍,不填默認為歸化到[-11]
%y歸一化后的樣本數據
%ps處理設置,ps主要在結果反歸一化中需要調用,或者使用同樣的settings歸一化另外一組數據
%---------------------------------------------------
[normInputps]?=?mapminmax(p);
[normTargetts]?=?mapminmax(t);
%---------------------------------------------------
%數據亂序,及分類處理
%將輸入的15組數據的20%,即3組,用來作為測試數據;
%?樣本的20%,即3組,用來作為變化數據;
%另外9組用來正常輸入,用來訓練;
%dividevec()用來重新隨機抽取上述三種分類的數據,原來的順序被打亂
%函數調用的語法
%[trainVvalVtestV]?=?dividevec(ptvalPercenttestPercent)
%輸入p為輸入數據,t為輸出數據
%valPercent為訓練用的變化數據在總輸入中的百分比
%testPercent為訓練用的測試數據在總輸入中的百分比
%輸出trainVvalVtestV分別為按亂序及相應百分比,抽取得到的數據
%另外,打亂后的數據,p和t都是對應的,請放心使用
%---------------------------------------------------
testPercent?=?0.20;??%?Adjust?as?desired
validatePercent?=?0.20;??%?Adust?as?desired
[trainSamplesvalidateSamplestestSamples]?=?dividevec(normInputnormTargetvalidatePercenttestPercent);
for?j=1:20
%---------------------------------------------------
%?設置網絡參數
%---------------------------------------------------???
NodeNum1?=?20;?%?隱層第一層節點數
NodeNum2=40;???%?隱層第二層節點數
TypeNum?=?1;???%?輸出維數
TF1?=?‘tansig‘;TF2?=?‘tansig‘;?TF3?=?‘tansig‘;%各層傳輸函數,TF3為輸出層傳輸函數
%如果訓練結果不理想,可以嘗試更改傳輸函數,以下這些是各類傳輸函數
%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‘);%網絡創建
%---------------------------------------------------
%?設置訓練參數
%---------------------------------------------------???
net.trainParam.epochs=10000;%訓練次數設置
net.trainParam.goal=1e-6;%訓練目標設置
net.trainParam.lr=0.01;%學習率設置應設置為較少值,太大雖然會在開始加快收斂速度,但臨近最佳點時,會產生動蕩,而致使無法收斂
%---------------------------------------------------
%?指定訓練參數
%---------------------------------------------------
%?net.trainFcn?=?‘traingd‘;?%?梯度下降算法
%?net.trainFcn?=?‘traingdm‘;?%?動量梯度下降算法
%
%?net.trainFcn?=?‘traingda‘;?%?變學習率梯度下降算法
%?net.trainFcn?=?‘traingdx‘;?%?變學習率動量梯度下降算法
%
%?(大型網絡的首選算法)
%?net.trainFcn?=?‘trainrp‘;?%?RPROP(彈性BP)算法內存需求最小
%
%?(共軛梯度算法)
%?net.trainFcn?=?‘traincgf‘;?%?Fletcher-Reeves修正算法
%?net.trainFcn?=?‘traincgp‘;?%?Polak-Ribiere修正算法內存需求比Fletcher-Reeves修正算法略大
%?net.trainFcn?=?‘traincgb‘;?%?Powell-Beal復位算法內存需求比Polak-Ribiere修正算法略大
%
%?(大型網絡的首選算法)
%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求解非線性方程組
評論
共有 條評論