




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于神经网络的马尾松毛虫精细化预报Matlab建模试验张国庆(安徽省潜山县林业局)1.数据来源马尾松毛虫发生量、发生期数据来源于潜山县监测数据,气象数据来源于国家气候中心。2.数据预处理为了体现马尾松毛虫发生发展时间上的完整性,在数据处理时,将越冬代数据与上一年第二代数据合并,这样,就在时间上保持了一个马尾松毛虫世代的完整性,更便于建模和预测。(1)气象数据处理根据松毛虫综合管理、中国松毛虫等学术资料以及近年来有关马尾松毛虫监测预报学术论文,初步选择与松毛虫发生量、发生期有一定相关性气象因子,包括卵期极低气温,卵期平均气温,卵期积温(日度),卵期降雨量,第1、2龄极低气温,第1、2龄平均气温,第1、2龄积温(日度),第12龄降雨量,幼虫期极低气温,幼虫期平均气温,幼虫期积温(日度),幼虫期降雨量,世代极低气温,世代平均气温,世代积温(日度),世代降雨量共16个变量。将来自于国家气候中心的气象原始数据,按年度分世代转换成上述16个变量数据系列。(2)发生量数据处理为了在建模时分析发生强度,在对潜山县19832014年原始监测数据预处理时,按照“轻”、“中”、“重”3个强度等级,分类按世代逐年汇总。(3)发生期数据处理首先对潜山县19832014年原始发生期监测数据按世代逐年汇总,然后日期数据转换成日历天,使之数量化,以便于建模分析。3.因子变量选择通过相关性分析和建模试验比较,第一代发生量因子变量选择第1、2龄极低气温,卵期极低气温,上一代防治效果,上一代防治面积;第二代发生量因子变量选择第1、2龄极低气温,卵期极低气温,上一代防治效果,上一代防治面积,第1、2龄降雨量,卵期降雨量;第一代幼虫高峰期因子变量选择第1、2龄平均气温,第1、2龄积温(日度),第1、2龄极低气温,卵期极低气温;第二代幼虫高峰期因子变量选择成虫始见期,卵期平均气温,卵期积温(日度),第1、2龄极低气温。将第一代发生量变量命名为s1y,因变量命名为s1x;第二代发生量变量命名为s2y,因变量命名为s2x;第一代幼虫高峰期变量命名为t1y,因变量命名为t1x;第二代幼虫高峰期变量命名为t2y,因变量命名为t2x。4.第一代发生量建模试验4.1程序代码程序代码(Simple Script)为:% Solve an Input-Output Fitting problem with a Neural Network% Script generated by Neural Fitting app% Created Wed Oct 28 19:28:48 CST 2015% This script assumes these variables are defined:% s1x - input data.% s1y - target data. x = s1x;t = s1y; % Choose a Training Function% For a list of all training functions type: help nntrain% trainlm is usually fastest.% trainbr takes longer but may be better for challenging problems.% trainscg uses less memory. NFTOOL falls back to this in low memory situations.trainFcn = trainlm; % Levenberg-Marquardt % Create a Fitting NetworkhiddenLayerSize = 10;net = fitnet(hiddenLayerSize,trainFcn); % Setup Division of Data for Training, Validation, Testingnet.divideParam.trainRatio = 90/100;net.divideParam.valRatio = 5/100;net.divideParam.testRatio = 5/100; % Train the Networknet,tr = train(net,x,t); % Test the Networky = net(x);e = gsubtract(t,y);performance = perform(net,t,y) % View the Networkview(net) % Plots% Uncomment these lines to enable various plots.%figure, plotperform(tr)%figure, plottrainstate(tr)%figure, plotfit(net,x,t)%figure, plotregression(t,y)%figure, ploterrhist(e)程序代码(Advanced Script)为:% Solve an Input-Output Fitting problem with a Neural Network% Script generated by Neural Fitting app% Created Wed Oct 28 19:29:03 CST 2015% This script assumes these variables are defined:% s1x - input data.% s1y - target data. x = s1x;t = s1y; % Choose a Training Function% For a list of all training functions type: help nntrain% trainlm is usually fastest.% trainbr takes longer but may be better for challenging problems.% trainscg uses less memory. NFTOOL falls back to this in low memory situations.trainFcn = trainlm; % Levenberg-Marquardt % Create a Fitting NetworkhiddenLayerSize = 10;net = fitnet(hiddenLayerSize,trainFcn); % Choose Input and Output Pre/Post-Processing Functions% For a list of all processing functions type: help cessFcns = removeconstantrows,mapminmax;cessFcns = removeconstantrows,mapminmax; % Setup Division of Data for Training, Validation, Testing% For a list of all data division functions type: help nndividenet.divideFcn = dividerand; % Divide data randomlynet.divideMode = sample; % Divide up every samplenet.divideParam.trainRatio = 90/100;net.divideParam.valRatio = 5/100;net.divideParam.testRatio = 5/100; % Choose a Performance Function% For a list of all performance functions type: help nnperformancenet.performFcn = mse; % Mean squared error % Choose Plot Functions% For a list of all plot functions type: help nnplotnet.plotFcns = plotperform,plottrainstate,ploterrhist, . plotregression, plotfit; % Train the Networknet,tr = train(net,x,t); % Test the Networky = net(x);e = gsubtract(t,y);performance = perform(net,t,y) % Recalculate Training, Validation and Test PerformancetrainTargets = t .* tr.trainMask1;valTargets = t .* tr.valMask1;testTargets = t .* tr.testMask1;trainPerformance = perform(net,trainTargets,y)valPerformance = perform(net,valTargets,y)testPerformance = perform(net,testTargets,y) % View the Networkview(net) % Plots% Uncomment these lines to enable various plots.%figure, plotperform(tr)%figure, plottrainstate(tr)%figure, plotfit(net,x,t)%figure, plotregression(t,y)%figure, ploterrhist(e) % Deployment% Change the (false) values to (true) to enable the following code blocks.if (false) % Generate MATLAB function for neural network for application deployment % in MATLAB scripts or with MATLAB Compiler and Builder tools, or simply % to examine the calculations your trained neural network performs. genFunction(net,myNeuralNetworkFunction); y = myNeuralNetworkFunction(x);endif (false) % Generate a matrix-only MATLAB function for neural network code % generation with MATLAB Coder tools. genFunction(net,myNeuralNetworkFunction,MatrixOnly,yes); y = myNeuralNetworkFunction(x);endif (false) % Generate a Simulink diagram for simulation or deployment with. % Simulink Coder tools. gensim(net);end4.2网络训练过程网络训练为:图1 第一代发生量网络训练过程4.3训练结果训练结果为:图2 第一代发生量网络训练结果训练样本、验证样本、测试样本的R值分别为0.875337、-1和1。误差直方图为:图3 第一代发生量网络训练结果误差直方图训练样本、验证样本、测试样本、所有数据回归图为:图4 第一代发生量网络训练结果回归图验证样本和测试样本R值均为1。5.第二代发生量建模试验5.1程序代码程序代码(Simple Script)为:% Solve an Input-Output Fitting problem with a Neural Network% Script generated by Neural Fitting app% Created Wed Oct 28 20:04:18 CST 2015% This script assumes these variables are defined:% s2x - input data.% s2y - target data. x = s2x;t = s2y; % Choose a Training Function% For a list of all training functions type: help nntrain% trainlm is usually fastest.% trainbr takes longer but may be better for challenging problems.% trainscg uses less memory. NFTOOL falls back to this in low memory situations.trainFcn = trainlm; % Levenberg-Marquardt % Create a Fitting NetworkhiddenLayerSize = 10;net = fitnet(hiddenLayerSize,trainFcn); % Setup Division of Data for Training, Validation, Testingnet.divideParam.trainRatio = 90/100;net.divideParam.valRatio = 5/100;net.divideParam.testRatio = 5/100; % Train the Networknet,tr = train(net,x,t); % Test the Networky = net(x);e = gsubtract(t,y);performance = perform(net,t,y) % View the Networkview(net) % Plots% Uncomment these lines to enable various plots.%figure, plotperform(tr)%figure, plottrainstate(tr)%figure, plotfit(net,x,t)%figure, plotregression(t,y)%figure, ploterrhist(e)程序代码(Advanced Script)为:% Solve an Input-Output Fitting problem with a Neural Network% Script generated by Neural Fitting app% Created Wed Oct 28 20:04:31 CST 2015% This script assumes these variables are defined:% s2x - input data.% s2y - target data. x = s2x;t = s2y; % Choose a Training Function% For a list of all training functions type: help nntrain% trainlm is usually fastest.% trainbr takes longer but may be better for challenging problems.% trainscg uses less memory. NFTOOL falls back to this in low memory situations.trainFcn = trainlm; % Levenberg-Marquardt % Create a Fitting NetworkhiddenLayerSize = 10;net = fitnet(hiddenLayerSize,trainFcn); % Choose Input and Output Pre/Post-Processing Functions% For a list of all processing functions type: help cessFcns = removeconstantrows,mapminmax;cessFcns = removeconstantrows,mapminmax; % Setup Division of Data for Training, Validation, Testing% For a list of all data division functions type: help nndividenet.divideFcn = dividerand; % Divide data randomlynet.divideMode = sample; % Divide up every samplenet.divideParam.trainRatio = 90/100;net.divideParam.valRatio = 5/100;net.divideParam.testRatio = 5/100; % Choose a Performance Function% For a list of all performance functions type: help nnperformancenet.performFcn = mse; % Mean squared error % Choose Plot Functions% For a list of all plot functions type: help nnplotnet.plotFcns = plotperform,plottrainstate,ploterrhist, . plotregression, plotfit; % Train the Networknet,tr = train(net,x,t); % Test the Networky = net(x);e = gsubtract(t,y);performance = perform(net,t,y) % Recalculate Training, Validation and Test PerformancetrainTargets = t .* tr.trainMask1;valTargets = t .* tr.valMask1;testTargets = t .* tr.testMask1;trainPerformance = perform(net,trainTargets,y)valPerformance = perform(net,valTargets,y)testPerformance = perform(net,testTargets,y) % View the Networkview(net) % Plots% Uncomment these lines to enable various plots.%figure, plotperform(tr)%figure, plottrainstate(tr)%figure, plotfit(net,x,t)%figure, plotregression(t,y)%figure, ploterrhist(e) % Deployment% Change the (false) values to (true) to enable the following code blocks.if (false) % Generate MATLAB function for neural network for application deployment % in MATLAB scripts or with MATLAB Compiler and Builder tools, or simply % to examine the calculations your trained neural network performs. genFunction(net,myNeuralNetworkFunction); y = myNeuralNetworkFunction(x);endif (false) % Generate a matrix-only MATLAB function for neural network code % generation with MATLAB Coder tools. genFunction(net,myNeuralNetworkFunction,MatrixOnly,yes); y = myNeuralNetworkFunction(x);endif (false) % Generate a Simulink diagram for simulation or deployment with. % Simulink Coder tools. gensim(net);end5.2网络训练过程网络训练为:图5 第二代发生量网络训练过程5.3训练结果训练结果为:图6 第二代发生量网络训练结果训练样本、验证样本、测试样本的R值分别为0.942388、0.999999和1。误差直方图为:图7 第二代发生量网络训练结果误差直方图训练样本、验证样本、测试样本、所有数据回归图为:图8 第二代发生量网络训练结果回归图验证样本和测试样本R值均为1,训练样本R=0.94239,所有数据R=0.89479。6.第一代幼虫高峰期建模试验6.1程序代码程序代码(Simple Script)为:% Solve an Input-Output Fitting problem with a Neural Network% Script generated by Neural Fitting app% Created Wed Oct 28 20:16:32 CST 2015% This script assumes these variables are defined:% t1x - input data.% t1y - target data. x = t1x;t = t1y; % Choose a Training Function% For a list of all training functions type: help nntrain% trainlm is usually fastest.% trainbr takes longer but may be better for challenging problems.% trainscg uses less memory. NFTOOL falls back to this in low memory situations.trainFcn = trainlm; % Levenberg-Marquardt % Create a Fitting NetworkhiddenLayerSize = 10;net = fitnet(hiddenLayerSize,trainFcn); % Setup Division of Data for Training, Validation, Testingnet.divideParam.trainRatio = 90/100;net.divideParam.valRatio = 5/100;net.divideParam.testRatio = 5/100; % Train the Networknet,tr = train(net,x,t); % Test the Networky = net(x);e = gsubtract(t,y);performance = perform(net,t,y) % View the Networkview(net) % Plots% Uncomment these lines to enable various plots.%figure, plotperform(tr)%figure, plottrainstate(tr)%figure, plotfit(net,x,t)%figure, plotregression(t,y)%figure, ploterrhist(e)程序代码(Advanced Script)为:% Solve an Input-Output Fitting problem with a Neural Network% Script generated by Neural Fitting app% Created Wed Oct 28 20:17:08 CST 2015% This script assumes these variables are defined:% t1x - input data.% t1y - target data. x = t1x;t = t1y; % Choose a Training Function% For a list of all training functions type: help nntrain% trainlm is usually fastest.% trainbr takes longer but may be better for challenging problems.% trainscg uses less memory. NFTOOL falls back to this in low memory situations.trainFcn = trainlm; % Levenberg-Marquardt % Create a Fitting NetworkhiddenLayerSize = 10;net = fitnet(hiddenLayerSize,trainFcn); % Choose Input and Output Pre/Post-Processing Functions% For a list of all processing functions type: help cessFcns = removeconstantrows,mapminmax;cessFcns = removeconstantrows,mapminmax; % Setup Division of Data for Training, Validation, Testing% For a list of all data division functions type: help nndividenet.divideFcn = dividerand; % Divide data randomlynet.divideMode = sample; % Divide up every samplenet.divideParam.trainRatio = 90/100;net.divideParam.valRatio = 5/100;net.divideParam.testRatio = 5/100; % Choose a Performance Function% For a list of all performance functions type: help nnperformancenet.performFcn = mse; % Mean squared error % Choose Plot Functions% For a list of all plot functions type: help nnplotnet.plotFcns = plotperform,plottrainstate,ploterrhist, . plotregression, plotfit; % Train the Networknet,tr = train(net,x,t); % Test the Networky = net(x);e = gsubtract(t,y);performance = perform(net,t,y) % Recalculate Training, Validation and Test PerformancetrainTargets = t .* tr.trainMask1;valTargets = t .* tr.valMask1;testTargets = t .* tr.testMask1;trainPerformance = perform(net,trainTargets,y)valPerformance = perform(net,valTargets,y)testPerformance = perform(net,testTargets,y) % View the Networkview(net) % Plots% Uncomment these lines to enable various plots.%figure, plotperform(tr)%figure, plottrainstate(tr)%figure, plotfit(net,x,t)%figure, plotregression(t,y)%figure, ploterrhist(e) % Deployment% Change the (false) values to (true) to enable the following code blocks.if (false) % Generate MATLAB function for neural network for application deployment % in MATLAB scripts or with MATLAB Compiler and Builder tools, or simply % to examine the calculations your trained neural network performs. genFunction(net,myNeuralNetworkFunction); y = myNeuralNetworkFunction(x);endif (false) % Generate a matrix-only MATLAB function for neural network code % generation with MATLAB Coder tools. genFunction(net,myNeuralNetworkFunction,MatrixOnly,yes); y = myNeuralNetworkFunction(x);endif (false) % Generate a Simulink diagram for simulation or deployment with. % Simulink Coder tools. gensim(net);end6.2网络训练过程网络训练为:图9 第一代幼虫高峰期网络训练过程6.3训练结果训练结果为:图10 第一代幼虫高峰期网络训练结果训练样本、验证样本、测试样本的R值分别为0.875337、-1和1。误差直方图为:图11 第一代幼虫高峰期网络训练结果误差直方图训练样本、验证样本、测试样本、所有数据回归图为:图12 第一代幼虫高峰期网络训练结果回归图验证样本和测试样本R值均为1。7.第二代幼虫高峰期建模试验7.1程序代码程序代码(Simple Script)为:% Solve an Input-Output Fitting problem with a Neural Network% Script generated by Neural Fitting app% Created Wed Oct 28 20:22:04 CST 2015% This script assumes these variables are defined:% t2x - input data.% t2y - target data. x = t2x;t = t2y; % Choose a Training Function% For a list of all training functions type: help nntrain% trainlm is usually fastest.% trainbr takes longer but may be better for challenging problems.% trainscg uses less memory. NFTOOL falls back to this in low memory situations.trainFcn = trainlm; % Levenberg-Marquardt % Create a Fitting NetworkhiddenLayerSize = 10;net = fitnet(hiddenLayerSize,trainFcn); % Setup Division of Data for Training, Validation, Testingnet.divideParam.trainRatio = 90/100;net.divideParam.valRatio = 5/100;net.divideParam.testRatio = 5/100; % Train the Networknet,tr = train(net,x,t); % Test the Networky = net(x);e = gsubtract(t,y);performance = perform(net,t,y) % View the Networkview(net) % Plots% Uncomment these lines to enable various plots.%figure, plotperform(tr)%figure, plottrainstate(tr)%figure, plotfit(net,x,t)%figure, plotregression(t,y)%figure, ploterrhist(e)程序代码(Advanced Script)为:% Solve an Input-Output Fitting problem with a Neural Network% Script generated by Neural Fitting app% Created Wed Oct 28 20:22:29 CST 2015% This script assumes these variables are defined:% t2x - input data.% t2y - target data. x = t2x;t = t2y; % Choose a Training Function% For a list of all training functions type: help nntrain% trainlm is usually fastest.% trainbr takes longer but may be better for challenging problems.% trainscg uses less memory. NFTOOL falls back to this in low memory situations.trainFcn = trainlm; % Levenberg-Marquardt % Create a Fitting NetworkhiddenLayerSize = 10;net = fitnet(hiddenLayerSize,trainFcn); % Choose Input and Output Pre/Post-Processing Functions% For a list of all processing functions type: help cessFcns = removeconstantrows,mapminmax;cessFcns = removeconstantrows,mapminmax; % Setup Division of Data for Training, Validation, Testing% For a list of all data division functions type: help nndividenet.divideFcn = dividerand; % Divide data randomlynet.divideMode = sample; % Divide up every samplenet.divideParam.trainRatio = 90/100;net.divideParam.valRatio = 5/1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论