




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、求用matlab編BP神經網絡預測程序求一用matlab編的程序 P1=3140 3767 4801 5288 5501 6157 6495 7061P2=127 133 130 125 136 140 142 142 T=455 544 642 668 731 792 862 918 % 創建一個新的前向神經網絡 net_1=newff(minmax(P1),10,1,tansig,purelin,traingdm)% 創建一個新的前向神經網絡 net_1=newff(minmax(P2),10,1,tansig,purelin,traingdm)% 當前輸入層權值和閾值inputWeigh
2、ts=net_1.IW1,1inputbias=net_1.b1% 當前網絡層權值和閾值layerWeights=net_1.LW2,1layerbias=net_1.b2% 設置訓練參數net_1.trainParam.show = 50;net_1.trainParam.lr = 0.05;net_1.trainParam.mc = 0.9;net_1.trainParam.epochs = 10000;net_1.trainParam.goal = 1e-3;% 調用 TRAINGDM 算法訓練 BP 網絡net_1,tr=train(net_1,P,T);% 對 BP 網絡進行仿真A
3、= sim(net_1,P);% 計算仿真誤差 E = T - A;MSE=mse(E)X1=7505 7972;%測試sim(net_1,X1)X2=145 146;%測試sim(net_1,X2) %不可能啊 我2009 28 對初學神經網絡者的小提示第二步:掌握如下算法:2.最小均方誤差,這個原理是下面提到的神經網絡學習算法的理論核心,入門者要先看高等數學(高等教育出版社,同濟大學版)第8章的第十節:“最小二乘法”。3.在第2步的基礎上看Hebb學習算法、SOM和K-近鄰算法,上述算法都是在最小均方誤差基礎上的改進算法,參考書籍是神經網絡原理(機械工業出版社,Simon Haykin著,
4、中英文都有)、人工神經網絡與模擬進化計算(清華大學出版社,閻平凡,張長水著)、模式分類(機械工業出版社,Richard O. Duda等著,中英文都有)、神經網絡設計(機械工業出版社,Martin T. Hargan等著,中英文都有)。4.ART(自適應諧振理論),該算法的最通俗易懂的讀物就是神經網絡設計(機械工業出版社,Martin T. Hargan等著,中英文都有)的第15和16章。若看理論分析較費勁可直接編程實現一下16.2.7節的ART1算法小節中的算法.4.BP算法,初學者若對誤差反傳的分析過程理解吃力可先跳過理論分析和證明的內容,直接利用最后的學習規則編個小程序并測試,建議看機器
5、學習(機械工業出版社,Tom M. Mitchell著,中英文都有)的第4章和神經網絡設計(機械工業出版社,Martin T. Hargan等著,中英文都有)的第11章。BP神經網絡Matlab實例(1)分類:Matlab實例采用Matlab工具箱函數建立神經網絡,對一些基本的神經網絡參數進行了說明,深入了解參考Matlab幫助文檔。% 例1 采用動量梯度下降算法訓練 BP 網絡。 % 訓練樣本定義如下: % 輸入矢量為 % p =-1 -2 3 1 % -1 1 5 -3 % 目標矢量為 t = -1 -1 1 1 close all clear clc % -% NEWFF生成一個新的前向
6、神經網絡,函數格式:% net = newff(PR,S1 S2.SNl,TF1 TF2.TFNl,BTF,BLF,PF) takes,% PR - R x 2 matrix of min and max values for R input elements% (對于R維輸入,PR是一個R x 2 的矩陣,每一行是相應輸入的邊界值)% Si - 第i層的維數% TFi - 第i層的傳遞函數, default = tansig% BTF - 反向傳播網絡的訓練函數, default = traingdx% BLF - 反向傳播網絡的權值/閾值學習函數, default = learngdm%
7、PF - 性能函數, default = mse% -% TRAIN對 BP 神經網絡進行訓練,函數格式:% train(NET,P,T,Pi,Ai,VV,TV),輸入參數:% net - 所建立的網絡% P - 網絡的輸入% T - 網絡的目標值, default = zeros% Pi - 初始輸入延遲, default = zeros% Ai - 初始網絡層延遲, default = zeros% VV - 驗證向量的結構, default = % TV - 測試向量的結構, default = % 返回值:% net - 訓練之后的網絡% TR - 訓練記錄(訓練次數及每次訓練的誤差)
8、% Y - 網絡輸出% E - 網絡誤差% Pf - 最終輸入延遲% Af - 最終網絡層延遲% -% SIM對 BP 神經網絡進行仿真,函數格式:% Y,Pf,Af,E,perf = sim(net,P,PiAi,T)% 參數與前同。% -% % 定義訓練樣本 % P 為輸入矢量 echo onP=-1, -2, 3, 1; -1, 1, 5, -3; % T 為目標矢量 T=-1, -1, 1, 1; % 創建一個新的前向神經網絡 net=newff(minmax(P),3,1,tansig,purelin,traingdm) % -% 訓練函數:traingdm,功能:以動量BP算法修正
9、神經網絡的權值和閾值。% 它的相關特性包括:% epochs:訓練的次數,默認:100% goal:誤差性能目標值,默認:0% lr:學習率,默認:0.01% max_fail:確認樣本進行仿真時,最大的失敗次數,默認:5% mc:動量因子,默認:0.9% min_grad:最小梯度值,默認:1e-10% show:顯示的間隔次數,默認:25% time:訓練的最長時間,默認:inf% -% 當前輸入層權值和閾值 inputWeights=net.IW1,1 inputbias=net.b1 % 當前網絡層權值和閾值 layerWeights=net.LW2,1 layerbias=net.b
10、2 % 設置網絡的訓練參數 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; % 調用 TRAINGDM 算法訓練 BP 網絡 net,tr=train(net,P,T); % 對 BP 網絡進行仿真 A = sim(net,P) % 計算仿真誤差 E = T - A MSE=mse(E) echo offfigure;plot(1:4),T,-*,(1:4),A,-o)1 B
11、 P神經網絡的原理及算法的基本步驟理 論上已證 明 ,一個 3層的 B P網絡能夠實現任意的連續映射 ,可以任意 精度逼近任何給定的連續函數 。1. 1B P神經網絡的原理B P (B ack P rop aga tion)神經網絡通常由具有多個節點的 輸入層 ( inp u t laye r) 、隱含層 ( h idden laye r) 和多個 或一個輸 出節點的輸出層 ( ou tp u t laye r)組成 ,其學習過程分為信息的 正向傳播過程和誤差的反向傳播過程兩個階段 。外部輸入 的信號經輸入層 、隱含層為止 。的神經元逐層處理 ,向前傳播到輸 出層 ,給出結果 。如果在輸出層得
12、不到期望輸出 ,則轉入逆 向傳播過程 ,將實際值與網絡輸出之間的誤差沿原連接通路 返回 ,通過修改各層神經元的連接權重 ,減少誤差 ,然后再轉 入正向傳播過程 ,反復迭代 ,直到誤差小于給定的值表1 19812005年全國總人口(單位:萬人)年份198119821983198419851986198719881989人口99622101541102495103604104639106008108000109614111191年份199019911992199319941995199619971998人口1143331158231171711185171198501211211223891236
13、26124810年份1999200020012002200320042005人口125909缺省127627128453129227129988130756模型二預測2001年2010年全國總人口(單位:萬人)年份20012002200320042005人口127699128457129220129987130758年份20062007200820092010人口131534132315133100133890134685 模型預測的全國總人口(1981年至2016年)(單位:萬人)年份198119821983198419851991人口9926610130810296710460010620
14、3115172年份199219931994199520012002人口116550117895119205120480127403128436年份200320042005200620072008人口129437130405131340132244133116133958年份200920102015202020252030人口134770135552139049141921144257146144年份203520402045205020602070人口147659148869149832150596151678152352年份208020902100210521102120人口152769153
15、026153185153240153283153344 模型四預測2011至2020年人口(單位:萬人)年份20112012201320142015全國總人口134668135478136325137185138036年份20162017201820192020全國總人口1388621396521404021411061417602.1利用Matlab Script節點實現在此以對一個非線性函數的逼近作為例子來說明實現流程,其中輸入矢量p=-10.051;目標矢量t=sin(2*pi*p)+0.1randn(size(p)。利用Mat-lab Script節點實現BP算法的過程如下:(1)新建
16、一個LabVIEW vi,在框圖程序中添加Matlab Script節點。(2)在節點內添加Matlab的動量BP算法實現代碼,并分別在節點左右邊框分別添加對應的輸入/輸出參數,如圖1所示。(3)在vi的前面板添加相應的控件,設置輸入參數,連接輸出控件。執行程序,結果如圖2、圖3所示。下面的代碼將重建我們以前的網絡,然后用批處理最速下降法訓練網絡。(注意用批處 理方式訓練的話所有的輸入要設置為矩陣方式)net=newff(-1 2; 0 5,3,1,tansig,purelin,traingd);第 23 卷 第 1 期陳龍等:MATLAB 神經網絡工具箱在河流水質預測中的應用73net.tr
17、ainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.epochs = 300; net.trainParam.goal = 1e-5;p = -1 -1 2 2;0 5 0 5; t = -1 -1 1 1; net=train(net,p,t);TRAINGD, Epoch 0/300, MSE 1.59423/1e-05, Gradient 2.76799/1e-10TRAINGD, Epoch 50/300, MSE 0.00236382/1e-05, Gradient0.0495292/1e-10TRAINGD, E
18、poch 100/300, MSE 0.000435947/1e-05, Gradient0.0161202/1e-10TRAINGD, Epoch 150/300, MSE 8.68462e-05/1e-05, Gradient0.00769588/1e-10TRAINGD, Epoch 200/300, MSE 1.45042e-05/1e-05, Gradient0.00325667/1e-10TRAINGD, Epoch 211/300, MSE 9.64816e-06/1e-05, Gradient0.00266775/1e-10TRAINGD, Performance goal m
19、et. a = sim(net,p)a =-1.0010 -0.9989 1.0018 0.9985用nnd12sd1 來演示批處理最速下降法的性能。 帶動量的批處理梯度下降法(TRAINGDM)net=newff(-1 2; 0 5,3,1,tansig,purelin,traingdm);net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 300; net.trainParam.goal = 1e-5;p = -1 -1 2 2;0 5 0
20、5; t = -1 -1 1 1; net=train(net,p,t);TRAINGDM, Epoch 0/300, MSE 3.6913/1e-05, Gradient 4.54729/1e-10TRAINGDM, Epoch 50/300, MSE 0.00532188/1e-05, Gradient0.213222/1e-10TRAINGDM, Epoch 100/300, MSE 6.34868e-05/1e-05, Gradient0.0409749/1e-10TRAINGDM, Epoch 114/300, MSE 9.06235e-06/1e-05, Gradient0.009
21、08756/1e-10TRAINGDM, Performance goal met. a = sim(net,p)a =-1.0026 -1.0044 0.9969 0.99923.1MATLAB 神經網絡工具箱的 GUI(圖形用戶界面)工具. 神經網絡工具箱的 GUI 工具主要包括:1)神經網絡 GUI 工具主窗口;2)神經網絡的建立 窗口;3)網絡訓練對話框;4)自適應參數設置對話框;5)權值顯示窗口. 通過神經網絡工具箱的 GUI 工具按鈕就能很方便地打開所建立的神經網絡的結構圖進行察看,也可以看到一個訓練過程的 偏差曲線變化圖.3.2神經網絡工具箱解決問題的一般步驟1)對待解決的問題進
22、行分析,根據各種網絡的特點選用合適的網絡模型;2)建立網絡;3) 對網絡初始化;4)對網絡進行訓練;5)對網絡進行仿真檢驗;6)應用網絡解決問題.4 系統的預測仿真4.1使用神經網絡 GUI 工具建立神經網絡的輸入樣本和目標樣本1)在 MATLAB 命令窗口輸入 nntool,打開圖形用戶界面工具主窗口,如圖 1 所示.2)單擊 New Data 按鈕,打開數據生成對話框. 建立輸入樣本 P,數據的輸入和設置如圖 2 所 示,單擊 Create 按鈕關閉對話框.3)依照上一步,輸入目標樣本 T ,數據類型選 Targets. 回到 GUI 工具的主窗口,單擊 Export按鈕彈出導出對話框,選
23、中變量 P 和 T,然后單擊 Export 按鈕,把變量 P 和 T 導出到工作區. 這為 仿真文件從工作空間調用導入數據做好了準備.4.2建立仿真模型文件進行預測運行 MATLAB 軟件中的 Simulink 仿真環境,在神經網絡模塊庫中調用神經網絡預測控制模塊 NN Predictive Controller,用模塊封裝技術建立河流水質數學方程模塊,連接信號源模塊和示波器模 塊后就建立了河流水質預測仿真文件 predwq.mdl,如圖 3,其中 From Workspace 模塊中是目標樣本 T 的數據,可以直接從工作區導入.雙擊神經網絡預測控制模塊 NN Predictive Contr
24、oller,彈出如圖 4 的窗口,此窗口用于設計模 型預測控制器,輸入控制器變量空間 N 2 和 Nu 、權值參數 和控制最優化參數 的值. 然后點擊 Plant Identification 按鈕,打開系統辨識窗口,從工作區導入輸入樣本 P,設置好其它參數后訓練網絡, 單擊 OK 按鈕,將訓練好的神經網絡模型導入到神經網絡預測控制模塊中, 在 NN PredictiveController 窗口中單擊 OK 按鈕,將控制器參數導入到 NN Predictive Controller 模塊中.圖 3 predwq.mdl 仿真文件圖 4 神經網絡預測控制模塊窗口系統模塊 System Mode
25、l 是用模塊封裝技術封裝的河流水質微分方程式(4)的仿真模塊,如圖5 所示.在 predwq Simulink 主窗口,仿真時間輸入 100,再單擊 Start simulation 命令按鈕開始仿真. 仿 真結束后,雙擊示波器模塊就可以查看仿真結果,如圖 6 所示. 對仿真結果和目標樣本的值進行比 較,根據它們的差值繪出預測誤差變化曲線,如圖 7 所示.圖 5 河流水質微分方程仿真模塊圖6 目標和預測結果圖5 結果與討論比較圖 6、圖 7 知,本文建立的網絡系統對水質參 數耗氧量的預測圖像和目標樣本基本一致. 把仿真預測 結果數據和實際目標樣本數據進行比較,正、負最大誤 差分別為 0.11
26、和0.06,最小誤差為 0,雖然還有偏差, 但誤差是在滿意的范圍之內. 因此,把河流水質的數學 模型用 MATLAB 神經網絡進行仿真預測,具有較高的 精度,為河流水質預測提供了方便的方法.圖 7 預測誤差的曲線變化利用NNToolbox 4.0.2架構神經網絡主要采用以下兩種方法:(1)使用網絡數據管理器(Network Data Manager)。具體操作為:在Launch Pad窗體中點擊Neural Network Toolbox目錄下的。nntool文件,即在計算機屏幕中央出現Network Data Manager窗體;點擊窗體中NewNetwork按鈕,根據提示設定網絡類型、網絡
27、結構、網絡算法和網絡激活函數即可生成用戶定義的神經網絡;點擊View按鈕可顯示該神經網絡的結構圖;點擊initialize、simu-late、train和adapt按鈕并設定參數可對神經網絡進行初始化、模擬、訓練和仿真;最后點擊Export按鈕可將網絡模擬、訓練和仿真的結果以文件的形式導出。該方法操作簡易,無需編寫程序代碼,即可完成神經網絡的構建、初始化、訓練和仿真等主要工作。但是該方法不能和MATLAB其他程序動態鏈接,網絡仿真結果只能以數據文件的形式導出,不能可視化顯示。(2)編寫MATLAB應用程序,即運用MATLAB語言引用神經網絡工具箱函數編寫程序代碼并保存為M文件,然后運行該文件
28、。該種方法可以根據研究人員的需要,調用MATLAB豐富的內部函數,并能和各類數據庫及其他應用程序(包括C、FOR-TRAN程序)動態鏈接,使神經網絡功能更為強大。本研究即采用該種方法,其中引用的重要算法、函數及參數將在第2、3節詳述。中國未來幾年人口總量的預測本文對所使用的序列數據進行 GM(1,1)模型維數優化時 得到最佳的維數是 58 維不等,均屬于短序列預測,只適合短 期的人口總量的預測,所以對 2008-2012 年共 5 個時間序列點 的中國人口總量進行預測,結果如表 2 所示。表 2 灰色人工神經網絡(GANN)模型對 2008-2012 年 中國人口總量預測的結果萬人年份2008
29、2009201020112012總人口132 663132 963133 706134 373135 025建立BP神經網絡預測模型在進行BP網絡預測模型設計時,主要考慮網絡的層數和每層中神經元的個數。神經網絡通過計算機程序實現對非線性映射逼近,在眾多語言中,MATLAB語言允許數學形式的語言編寫程序,比其他語言更接近我們書寫計算公式的思維方式。因此編程效率高,易學易懂。年份人 口總數 (萬人)198510585119861075071987109300198811102619891127041990114333- 6 -199111582319921171711993118517199411
30、985019951211211996122389199712362619981247611999125786200012674320011276272002128453200312922720041299882005130756采用單隱層的 BP 網絡進行預測3。建立兩層神經網絡,由于輸入樣本為 3 維的輸入向量,因此,輸入層一共有 3 個神經元,根據 Kolmogorov2定理,網絡應該為 3 7 3 的結構。 其中,threshold 設定了網絡輸入向量的取值范圍0,1,第一層神經元數為 3,傳函類型為LOGSIG,第二層神經元數為 7,傳函類型為PURELIN,采用動量梯度下降反向傳播算
31、法對 網絡進行訓練。中間層的神經元個數是很難確定的,而這又在很大程度上影響著網絡的預測 性能。當網絡的預測誤差最小時,網絡中間層的神經元數目就是最佳值。進行對比后,可見 中間層神經元個數為 8 時,網絡的預測性能最好。訓練結果如圖 1 所示,網絡的預報誤差如Performance is 9.89455e-005, Goal is 0.00010100.035-110 0.030.025T raining-B lue G oal-B la c k-210 0.020.015-310 0.010.005-4100-0.0050 50 100 150155 Epochs-0.0111.2 1.4 1
32、.6 1.822.2 2.4 2.6 2.83圖 1 訓練結果(中間層神經元數目:8)圖 2 網絡的預報誤差(中間層神經元數目:8)年份總人口數(萬人)200614080020071425002008146600200915100020101558002011159600201216210020131633002014163800201516400020161641002017164100201816410020191641002020164100,每行語句前都有一個符號“”,此即命令提示符。在此符號后(也只能 在此符號后)輸入各種語句并按 Enter 鍵,方可被 MATLAB 接收和執行。執
33、行的結果通常 就直接顯示在語句下方,如圖 1.2 所示。不同類型語句用不同顏色區分。在默認情況下,輸入的命令、函數、表達式以及計算 結果等采用黑色字體,字符串采用赭紅色,if、for 等關鍵詞采用藍色,注釋語句用綠色。因為 MATLAB 是一個多功能集成軟件,不同的功能需要使用不同的文件格式去表現, 所以 MATLAB 的文件也有多種格式。最基本的是 M 文件、數據文件和圖形文件,除此之 外,還有 MEX 文件、模型文件和仿真文件等。下面分別予以說明。(1) M 文件,以.m 為擴展名,所以稱為 M 文件。M 文件是由一系列 MATLAB 語句組 成的文件,包括命令文件和函數文件兩類,命令文件
34、類似于其他高級語言中的主程序或主 函數,而函數文件則類似于子程序或被調函數。MATLAB 眾多工具箱中的(函數)文件基本上是 M 函數文件。因為它們是由 ASCII 碼表 示的文件,所以可由任一文字處理軟件編輯后以文本格式存放。(2) 數據文件,以.mat 為擴展名,所以又稱 MAT 文件。在討論工作空間窗口時已經涉 及到 MAT 文件。顯然,數據文件保存了 MATLAB 工作空間窗口中變量的數據。(3) 圖形文件,以.fig 為擴展名。主要由 MATLAB 的繪圖命令產生,當然也可用 File菜單中的 New 命令建立。(4) MEX 文件,以.mex 或.dll 為擴展名,所以稱 MEX
35、文件。MEX 實際是由 MATLAB Executable 縮寫而成的,由此可見,MEX 文件是 MATLAB 的可執行文件。(5) 模型和仿真文件,模型文件以.mdl 為擴展名,由 Simulink 仿真工具箱在建立各種 仿真模型時產生。仿真文件以.s 為擴展名。鍵盤輸入語句(input)其調用格式有(1) x = input(prompt):顯示提示字符串prompt,要求用戶鍵盤輸入 x 的值。(2) x = input(prompt,s):顯示提示字符串prompt,要求用戶鍵盤輸入字符型變量 x 的 值,不至于將輸入的數字看成是數值型數據。6.3.2屏幕輸出語句(disp)屏幕輸出最
36、簡單的方法是直接寫出欲輸出的變量或數組名,后面不加分號。此外,可 以采用 disp 語句,其調用格式為 disp(x)。6.3.3M 數據文件的存儲/加載(save / load)1. save 語句其調用格式有(1) save:將所有工作空間變量存儲在名為 MATLAB.mat 的文件中。(2) save filename:將所有工作空間變量存儲在名為 filename 的文件中。(3) save filename X Y Z:將工作空間的指定變量 X、Y、Z 存于名為 filename 的文件中。2. load 語句其調用格式有(1) load:如果 MATLAB.mat 文件存在,則加載 MATLAB.mat 文件中存儲的所有變量 到工作空間;否則返回一錯誤信息。(2) load filename:如果 fil
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設備保管使用協議書
- 共同成立子公司協議書
- 保潔員簽到合同協議書
- app商城代理協議書
- 花草修剪合同協議書
- 門市出租調價協議書
- 船舶買賣交接協議書
- 門市租房安全協議書
- 南寧房地產合作協議書
- csc公派留學協議書
- 兒童2型糖尿病診治指南(2025)課件
- 《ETF相關知識培訓》課件
- 攪拌站申請書
- 印刷廠印刷安全事故應急預案
- 單病種填報要求(更新至20240911)
- 《西安市建筑工程安全生產標準化圖冊(2023版)》
- 光伏發電監理規劃
- DB 3705T 42-2024 海岸線遙感監測技術規范
- 《譫妄護理查房》課件
- 投資學(湖南大學)知到智慧樹章節測試課后答案2024年秋湖南大學
- 《建筑工程設計文件編制深度規定(2016版)》
評論
0/150
提交評論