江河潮水水位的预测方法 【技术领域】
本发明属于自动化技术领域,涉及一种江河潮水水位的预测方法。
背景技术
一些江河大潮的潮水来势汹涌、水声轰隆磅礴、潮头陡立,每年都要吸引数十万游人驻足两岸观潮。与此相反的另一面,这些江河大潮的水势和水下暗流湍变莫测也对生活在两岸的人民、游客生命财产造成了很大的威胁。据数据统计,每年都会有人因不了解江河大潮的水势命丧于此。由此可见,分析和预测江河大潮的潮水水位和大潮来临时间的变化规律对于保护游客和两岸人民的生命和财产的安全就变得非常的有意义了。
传统的潮时预报方法有传播时间法和隔离滞后时间法,而潮水水位预测方法则是根据前一天的潮水水位高度预测后一天的潮位高度,或者根据前一个水文站点的高度预测后一个站点的水位高度。上述经验性的方法一定程度弱化了潮水受到潮汐、径流、河道地形和风力风向等多重因素的影响关系,弱化了他们之间所存在的某种高维非线性的映射关系。本发明力图运用近年来所发展起来的BP人工神经网络理论,利用其高度容错、并行处理数据及可以逼近任意非线性函数的能力来建立一个对潮位和潮时预测的模型,以期做出一个逼近真实值的预测效果。
【发明内容】
本发明的目的针对现有技术的不足,提供一种江河潮水水位的预测方法,本发明方法利用历史数据对潮水的水位进行自动识别、监测和跟踪,并实现预报。
本发明的具体步骤是:
步骤(1).以MATLAB 6.5的工具箱函数库中的神经网络函数以及潮水水位和时间的历史数据为基础构建神经网络模型。具体方法为:
①获取潮水水位和时间的连续历史数据N组。潮水水位与时间数据正常情况一天有四组数据,分别为日潮水高潮位的时间和水位值、日潮水低潮位的时间和水位值、夜潮水高潮位的时间和水位值、夜潮水低潮位的时间和水位值。将这N组数据分为前后两组,前面的数据组为训练样本数据组Ni组,后面的数据组为测试样本数据组Nj组,其中N=Ni+Nj,Ni/Nj=2~4。
②确定神经网络的训练模型为三层,输入层为4个节点,中间隐含层为50个节点,输出层为1个节点。用newff函数创建BP神经网络函数,其中网络参数设置为:神经元传输函数选用tansig函数(双曲正切S形传输函数),输出层传输函数选用purelin函数(线性传输函数),网络训练方法选用traingdx函数,训练步数5000次,训练精度为0.1。
步骤(2).利用MATLAB 6.5工具箱函数中的神经网络训练函数train函数进行网络训练,然后利用MATLAB 6.5工具箱函数中的仿真函数sim函数进行网络测试。具体方法为:
③利用MATLAB 6.5工具箱函数中的神经网络训练函数train函数进行网络训练的方法是:将训练样本数据组转化为4×(Ni-3)的矩阵作为train函数的输入参数,运行train函数进行训练,训练过程将以达到精度要求或者达到训练步骤数为停止条件。训练结束后将由系统自动生成一个神经网络模型,各权值系数隐含,可在MATLAB 6.5系统中查看。
训练样本数据组Ni转化为4×(Ni-3)的矩阵的具体方法是:将训练样本数据组Ni的第一个数据到第四数据组成第一列,将训练样本数据组的第二个数据到第五数据组成矩阵的第二列,将训练样本数据组的第三个数据到第六数据组成矩阵的第三列,依次类推,直到组成4×(Ni-3)的矩阵。
④利用MATLAB 6.5工具箱函数中的仿真函数sim函数进行网络测试的方法是:将测试样本数据组转化为4×(Nj-3)的矩阵作为sim函数的输入参数进行网络测试。
测试样本数据组转化为4×(Nj-3)的矩阵的具体方法是:将测试样本数据组的第一个数据到第四数据组成第一列,将测试样本数据组的第二个数据到第五数据组成矩阵的第二列,将测试样本数据组的第三个数据到第六数据组成矩阵地第三列,依次类推,直到组成4×(Nj-3)的矩阵。
步骤(3).使用经网络训练和网络测试后的神经网络模型和MATLAB 6.5工具箱函数的sim函数对下一个高潮位水位值或者下一个低潮位水位值进行预测。具体方法是:在sim函数中输入最后四组的数据作为sim函数的输入参数,经sim函数计算后得到下一组数据的预测值,此预测值即为下一个高潮位水位值或者下一个低潮位水位值。
本发明采用将江河潮水的历史数据按规则训练神经网络模型进行预测,其最大的优点是能够仅仅使用历史潮水数据较为准确的短期预测潮水水位值。和现行传统预报的方法相比,这种方法可以完全忽略风向、降雨、给排水、河床变化等不确定因素影响,从而实现仅仅依靠历史数据进行潮水水位的预测。忽视其他潮水水位因素影响仅仅依靠历史数据低成本地进行潮水水位预测,这正是本发明的主要目的和最大优点。
【具体实施方式】
针对钱塘江的某水文站潮水水位预测,具体实施步骤如下:
步骤(1).以MATLAB 6.5的工具箱函数库中的神经网络函数以及钱塘江潮水水位和时间的历史数据为基础构建神经网络模型。具体方法为:
①获取钱塘江某水文站1990年1410组潮水水位的水文数据。潮水水位与时间数据正常情况一天有四组数据,分别为日潮水高潮位的时间和水位值、日潮水低潮位的时间和水位值、夜潮水高潮位的时间和水位值、夜潮水低潮位的时间和水位值。将这N组数据分为前后两组,前面的数据组为训练样本数据组1000组,后面的数据组为测试样本数据组410组;
②确定神经网络的训练模型为三层,输入层为4个节点,中间隐含层为50个节点,输出层为1个节点。用newff函数创建BP神经网络函数,其中网络参数设置为:神经元传输函数选用tansig函数(双曲正切S形传输函数),输出层传输函数选用purelin函数(线性传输函数),网络训练方法选用traingdx函数,训练步数5000次,训练精度为0.1。具体如下:
net=newff(minmax(p),[50 1],{’tansig’,’purelin’},’traingdx’,’learngdm’,’mse’);
其中,如上参数构建的网络以网络名称net表示。
训练终止步骤数为5000次,训练误差精度为0.1,具体设置如下:
net.trainParam.epochs=5000;
net.trainParam.goal=0.1;
步骤(2).利用MATLAB 6.5工具箱函数中的神经网络训练函数train函数进行网络训练,然后利用MATLAB 6.5工具箱函数中的仿真函数sim函数进行网络测试。具体方法为:
③利用MATLAB 6.5工具箱函数中的神经网络训练函数train函数进行网络训练的方法是:将训练样本数据组转化为4×997的矩阵作为train函数的输入参数,运行train函数进行训练,具体为:net=train(net,p,t);其中,train函数参数表中的net表示构建的原始网络,p表示输入的训练样本组的矩阵,t表示用于反向修正权值的真实样本。训练过程将以达到精度要求或者达到训练步骤数为停止条件。训练结束后将由系统自动生成一个神经网络模型,各权值系数隐含,可在MATLAB 6.5系统中查看。
④利用MATLAB 6.5工具箱函数中的仿真函数sim函数进行网络测试的方法是:将测试样本数据组Nj转化为4×407的矩阵作为sim函数的输入参数进行网络测试。具体为:a=sim(net,p);其中,net为训练完成的网络,p为测试样本组的矩阵,a为使用网络输出的仿真值。
步骤(3).使用经网络训练和网络测试后的神经网络模型和MATLAB 6.5工具箱函数的sim函数对下一个高潮位水位值或者下一个低潮位水位值进行预测。具体方法是:在sim函数中输入最后四组的数据作为sim函数的输入参数,经sim函数计算后得到下一组数据的预测值,此预测值即为下一个高潮位水位值或者下一个低潮位水位值。
采用本发明的使用神经网络对潮水预测方法,通过使用仓前水文站1990年的1410组数据实验表明,水位预测的精度可以达到0.1米,其相对误差率控制在5%以下。