專利名稱:江河潮水水位的預(yù)測方法
技術(shù)領(lǐng)域:
本發(fā)明屬于自動化技術(shù)領(lǐng)域,涉及一種江河潮水水位的預(yù)測方法。
背景技術(shù):
一些江河大潮的潮水來勢洶涌、水聲轟隆磅礴、潮頭陡立,每年都要吸 引數(shù)十萬游人駐足兩岸觀潮。與此相反的另一面,這些江河大潮的水勢和水 下暗流湍變莫測也對生活在兩岸的人民、游客生命財(cái)產(chǎn)造成了很大的烕脅。 據(jù)數(shù)據(jù)統(tǒng)計(jì),每年都會有人因不了解江河大潮的水勢命喪于此。由此可見, 分析和預(yù)測江河大潮的潮水水位和大潮來臨時(shí)間的變化規(guī)律對于保護(hù)游客和 兩岸人民的生命和財(cái)產(chǎn)的安全就變得非常的有意義了。
傳統(tǒng)的潮時(shí)預(yù)報(bào)方法有傳播時(shí)間法和隔離滯后時(shí)間法,而潮水水位預(yù)測 方法則是根據(jù)前一天的潮水水位高度預(yù)測后一天的潮位高度,或者根據(jù)前一 個(gè)水文站點(diǎn)的高度預(yù)測后一個(gè)站點(diǎn)的水位高度。上述經(jīng)驗(yàn)性的方法一定程度 弱化了潮水受到潮汐、徑流、河道地形和風(fēng)力風(fēng)向等多重因素的影響關(guān)系, 弱化了他們之間所存在的某種高維非線性的映射關(guān)系。本發(fā)明力圖運(yùn)用近年
來所發(fā)展起來的BP人工神經(jīng)網(wǎng)絡(luò)理論,利用其高度容錯(cuò)、并行處理數(shù)據(jù)及可 以逼近任意非線性函數(shù)的能力來建立一個(gè)對潮位和潮時(shí)預(yù)測的模型,以期做 出 一個(gè)逼近真實(shí)值的預(yù)測效果。
發(fā)明內(nèi)容
本發(fā)明的目的針對現(xiàn)有技術(shù)的不足,提供一種江河潮水水位的預(yù)測方法, 本發(fā)明方法利用歷史數(shù)據(jù)對潮水的水位進(jìn)行自動識別、監(jiān)測和跟蹤,并實(shí)現(xiàn) 預(yù)報(bào)。
本發(fā)明的具體步驟是
步驟(l).以MATLAB 6. 5的工具箱函數(shù)庫中的神經(jīng)網(wǎng)絡(luò)函數(shù)以及潮水水位 和時(shí)間的歷史數(shù)據(jù)為基礎(chǔ)構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。具體方法為
①獲取潮水水位和時(shí)間的連續(xù)歷史數(shù)據(jù)W組。潮水水位與時(shí)間數(shù)據(jù)正常情況一天有四組數(shù)據(jù),分別為日潮水高潮位的時(shí)間和水位值、日潮水低潮位 的時(shí)間和水位值、夜潮水高潮位的時(shí)間和水位值、夜潮水低潮位的時(shí)間和水 位值。將這W組數(shù)據(jù)分為前后兩組,前面的數(shù)據(jù)組為訓(xùn)練樣本數(shù)據(jù)組iV,.組, 后面的數(shù)據(jù)組為測試樣本數(shù)據(jù)組氣.組,其中W = TV,. + 7Vy , 7V,./7Vy = 2 ~ 4 。
② 確定神經(jīng)網(wǎng)絡(luò)的訓(xùn)練模型為三層,輸入層為4個(gè)節(jié)點(diǎn),中間隱含層為 50個(gè)節(jié)點(diǎn),輸出層為l個(gè)節(jié)點(diǎn)。用newff函數(shù)創(chuàng)建BP神經(jīng)網(wǎng)絡(luò)函數(shù),其中網(wǎng) 絡(luò)參數(shù)設(shè)置為神經(jīng)元傳輸函數(shù)選用tansig函數(shù)(雙曲正切S形傳輸函數(shù)), 輸出層傳輸函數(shù)選用purelin函數(shù)(線性傳輸函數(shù)),網(wǎng)絡(luò)訓(xùn)練方法選用 traingdx函數(shù),訓(xùn)練步數(shù)5000次,訓(xùn)練精度為O. 1。
步驟(2).利用MATLAB 6. 5工具箱函數(shù)中的神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)train函數(shù) 進(jìn)行網(wǎng)絡(luò)訓(xùn)練,然后利用MATLAB 6. 5工具箱函數(shù)中的仿真函數(shù)sim函數(shù)進(jìn)行 網(wǎng)絡(luò)測試。具體方法為
③ 利用MATLAB 6. 5工具箱函數(shù)中的神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)train函數(shù)進(jìn)行網(wǎng) 絡(luò)訓(xùn)練的方法是將訓(xùn)練樣本數(shù)據(jù)組轉(zhuǎn)化為4x(iV,-3)的矩陣作為train函數(shù) 的輸入?yún)?shù),運(yùn)行train函數(shù)進(jìn)行訓(xùn)練,訓(xùn)練過程將以達(dá)到精度要求或者達(dá) 到訓(xùn)練步驟數(shù)為停止條件。訓(xùn)練結(jié)束后將由系統(tǒng)自動生成一個(gè)神經(jīng)網(wǎng)絡(luò)模型, 各權(quán)值系數(shù)隱含,可在MATLAB 6.5系統(tǒng)中査看。
訓(xùn)練樣本數(shù)據(jù)組7V,.轉(zhuǎn)化為4x(A^-3)的矩陣的具體方法是將訓(xùn)練樣本數(shù) 據(jù)組 的第一個(gè)數(shù)據(jù)到第四數(shù)據(jù)組成第一列,將訓(xùn)練樣本數(shù)據(jù)組的第二個(gè)數(shù) 據(jù)到第五數(shù)據(jù)組成矩陣的第二列,將訓(xùn)練樣本數(shù)據(jù)組的第三個(gè)數(shù)據(jù)到第六數(shù) 據(jù)組成矩陣的第三列,依次類推,直到組成4x(7V,.-3)的矩陣。
④ 利用MATLAB 6. 5工具箱函數(shù)中的仿真函數(shù)sim函數(shù)進(jìn)行網(wǎng)絡(luò)測試的方 法是將測試樣本數(shù)據(jù)組轉(zhuǎn)化為4x(乂-3)的矩陣作為sim函數(shù)的輸入?yún)?shù)進(jìn) 行網(wǎng)絡(luò)測試。
測試樣本數(shù)據(jù)組轉(zhuǎn)化為4x(乂,3)的矩陣的具體方法是將測試樣本數(shù)據(jù) 組的第一個(gè)數(shù)據(jù)到第四數(shù)據(jù)組成第一列,將測試樣本數(shù)據(jù)組的第二個(gè)數(shù)據(jù)到 第五數(shù)據(jù)組成矩陣的第二列,將測試樣本數(shù)據(jù)組的第三個(gè)數(shù)據(jù)到第六數(shù)據(jù)組成矩陣的第三列,依次類推,直到組成4x(A^-3)的矩陣。
步驟(3).使用經(jīng)網(wǎng)絡(luò)訓(xùn)練和網(wǎng)絡(luò)測試后的神經(jīng)網(wǎng)絡(luò)模型和MATLAB 6. 5工 具箱函數(shù)的sim函數(shù)對下一個(gè)高潮位水位值或者下一個(gè)低潮位水位值進(jìn)行預(yù) 測。具體方法是在sim函數(shù)中輸入最后四組的數(shù)據(jù)作為sim函數(shù)的輸入?yún)?數(shù),經(jīng)sim函數(shù)計(jì)算后得到下一組數(shù)據(jù)的預(yù)測值,此預(yù)測值即為下一個(gè)高潮 位水位值或者下一個(gè)低潮位水位值。
本發(fā)明采用將江河潮水的歷史數(shù)據(jù)按規(guī)則訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型進(jìn)行預(yù)測, 其最大的優(yōu)點(diǎn)是能夠僅僅使用歷史潮水?dāng)?shù)據(jù)較為準(zhǔn)確的短期預(yù)測潮水水位 值。和現(xiàn)行傳統(tǒng)預(yù)報(bào)的方法相比,這種方法可以完全忽略風(fēng)向、降雨、給排 水、河床變化等不確定因素影響,從而實(shí)現(xiàn)僅僅依靠歷史數(shù)據(jù)進(jìn)行潮水水位 的預(yù)測。忽視其他潮水水位因素影響僅僅依靠歷史數(shù)據(jù)低成本地進(jìn)行潮水水 位預(yù)測,這正是本發(fā)明的主要目的和最大優(yōu)點(diǎn)。
具體實(shí)施例方式
針對錢塘江的某水文站潮水水位預(yù)測,具體實(shí)施步驟如下 步驟(l).以MATLAB 6.5的工具箱函數(shù)庫中的神經(jīng)網(wǎng)絡(luò)函數(shù)以及錢塘江潮 水水位和時(shí)間的歷史數(shù)據(jù)為基礎(chǔ)構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。具體方法為
① 獲取錢塘江某水文站1990年1410組潮水水位的水文數(shù)據(jù)。潮水水位 與時(shí)間數(shù)據(jù)正常情況一天有四組數(shù)據(jù),分別為日潮水高潮位的時(shí)間和水位值、 曰潮水低潮位的時(shí)間和水位值、夜潮水高潮位的時(shí)間和水位值、夜潮水低潮 位的時(shí)間和水位值。將這7V組數(shù)據(jù)分為前后兩組,前面的數(shù)據(jù)組為訓(xùn)練樣本 數(shù)據(jù)組1000組,后面的數(shù)據(jù)組為測試樣本數(shù)據(jù)組410組;
② 確定神經(jīng)網(wǎng)絡(luò)的訓(xùn)練模型為三層,輸入層為4個(gè)節(jié)點(diǎn),中間隱含層為 50個(gè)節(jié)點(diǎn),輸出層為l個(gè)節(jié)點(diǎn)。用newff函數(shù)創(chuàng)建BP神經(jīng)網(wǎng)絡(luò)函數(shù),其中網(wǎng) 絡(luò)參數(shù)設(shè)置為神經(jīng)元傳輸函數(shù)選用tansig函數(shù)(雙曲正切S形傳輸函數(shù)), 輸出層傳輸函數(shù)選用purelin函數(shù)(線性傳輸函數(shù)),網(wǎng)絡(luò)訓(xùn)練方法選用 traingdx函數(shù),訓(xùn)練步數(shù)5000次,訓(xùn)練精度為O. 1。具體如下
net二newff (mi腦ax (p) , [50 l], {, tansig, , , purelin,} , , traingdx, , , learngdm, , , mse,);其中,如上參數(shù)構(gòu)建的網(wǎng)絡(luò)以網(wǎng)絡(luò)名稱net表示。 訓(xùn)練終止步驟數(shù)為5000次,訓(xùn)練誤差精度為0. 1,具體設(shè)置如下
net.trainParam. epochs二5000; net.trainPaxam. goal二O.1;
步驟(2).利用MATLAB 6. 5工具箱函數(shù)中的神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)train函數(shù) 進(jìn)行網(wǎng)絡(luò)訓(xùn)練,然后利用MATLAB 6. 5工具箱函數(shù)中的仿真函數(shù)sim函數(shù)進(jìn)行 網(wǎng)絡(luò)測試。具體方法為
③利用MATLAB 6. 5工具箱函數(shù)中的神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)train函數(shù)進(jìn)行網(wǎng) 絡(luò)訓(xùn)練的方法是將訓(xùn)練樣本數(shù)據(jù)組轉(zhuǎn)化為4x997的矩陣作為train函數(shù)的輸 入?yún)?shù),運(yùn)行train函數(shù)進(jìn)行訓(xùn)練,具體為net=train(net, p, t);其中,train
函數(shù)參數(shù)表中的net表示構(gòu)建的原始網(wǎng)絡(luò),p表示輸入的訓(xùn)練樣本組的矩陣, t表示用于反向修正權(quán)值的真實(shí)樣本。訓(xùn)練過程將以達(dá)到精度要求或者達(dá)到訓(xùn) 練步驟數(shù)為停止條件。訓(xùn)練結(jié)束后將由系統(tǒng)自動生成一個(gè)神經(jīng)網(wǎng)絡(luò)模型,各 權(quán)值系數(shù)隱含,可在MATLAB 6. 5系統(tǒng)中查看。
利用MATLAB 6. 5工具箱函數(shù)中的仿真函數(shù)sim函數(shù)進(jìn)行網(wǎng)絡(luò)測試的方 法是:將測試樣本數(shù)據(jù)組^.轉(zhuǎn)化為4x407的矩陣作為sim函數(shù)的輸入?yún)?shù)進(jìn)行
網(wǎng)絡(luò)測試。具體為『sim(net,p);其中,net為訓(xùn)練完成的網(wǎng)絡(luò),p為測試樣本 組的矩陣,a為使用網(wǎng)絡(luò)輸出的仿真值。
步驟(3).使用經(jīng)網(wǎng)絡(luò)訓(xùn)練和網(wǎng)絡(luò)測試后的神經(jīng)網(wǎng)絡(luò)模型和MATLAB 6. 5工 具箱函數(shù)的sim函數(shù)對下一個(gè)高潮位水位值或者下一個(gè)低潮位水位值進(jìn)行預(yù) 測。具體方法是在sim函數(shù)中輸入最后四組的數(shù)據(jù)作為sim函數(shù)的輸入?yún)?br>
數(shù),經(jīng)sim函數(shù)計(jì)算后得到下一組數(shù)據(jù)的預(yù)測值,此預(yù)測值即為下一個(gè)高潮 位水位值或者下一個(gè)低潮位水位值。
采用本發(fā)明的使用神經(jīng)網(wǎng)絡(luò)對潮水預(yù)測方法,通過使用倉前水文站1990 年的1410組數(shù)據(jù)實(shí)驗(yàn)表明,水位預(yù)測的精度可以達(dá)到0. 1米,其相對誤差率 控制在5%以下。
權(quán)利要求
1.江河潮水水位的預(yù)測方法,其特征在于該方法包括如下步驟步驟(1)以MATLAB 6.5的工具箱函數(shù)庫中的神經(jīng)網(wǎng)絡(luò)函數(shù)以及潮水水位和時(shí)間的歷史數(shù)據(jù)為基礎(chǔ)構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,具體方法為①獲取潮水水位和時(shí)間的連續(xù)歷史數(shù)據(jù)N組;潮水水位與時(shí)間數(shù)據(jù)正常情況一天有四組數(shù)據(jù),分別為日潮水高潮位的時(shí)間和水位值、日潮水低潮位的時(shí)間和水位值、夜潮水高潮位的時(shí)間和水位值、夜潮水低潮位的時(shí)間和水位值;將這N組數(shù)據(jù)分為前后兩組,前面的數(shù)據(jù)組為訓(xùn)練樣本數(shù)據(jù)組Ni組,后面的數(shù)據(jù)組為測試樣本數(shù)據(jù)組Nj組,其中N=Ni+Nj,Ni/Nj=2~4;②確定神經(jīng)網(wǎng)絡(luò)的訓(xùn)練模型為三層,輸入層為4個(gè)節(jié)點(diǎn),中間隱含層為50個(gè)節(jié)點(diǎn),輸出層為1個(gè)節(jié)點(diǎn);用newff函數(shù)創(chuàng)建BP神經(jīng)網(wǎng)絡(luò)函數(shù),其中網(wǎng)絡(luò)參數(shù)設(shè)置為神經(jīng)元傳輸函數(shù)選用tansig函數(shù),輸出層傳輸函數(shù)選用purelin函數(shù),網(wǎng)絡(luò)訓(xùn)練方法選用traingdx函數(shù),訓(xùn)練步數(shù)5000次,訓(xùn)練精度為0.1;步驟(2)利用MATLAB 6.5工具箱函數(shù)中的神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)train函數(shù)進(jìn)行網(wǎng)絡(luò)訓(xùn)練,然后利用MATLAB 6.5工具箱函數(shù)中的仿真函數(shù)sim函數(shù)進(jìn)行網(wǎng)絡(luò)測試,具體方法為③利用MATLAB 6.5工具箱函數(shù)中的神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)train函數(shù)進(jìn)行網(wǎng)絡(luò)訓(xùn)練的方法是將訓(xùn)練樣本數(shù)據(jù)組轉(zhuǎn)化為4×(Ni-3)的矩陣作為train函數(shù)的輸入?yún)?shù),運(yùn)行train函數(shù)進(jìn)行訓(xùn)練,訓(xùn)練過程將以達(dá)到精度要求或者達(dá)到訓(xùn)練步驟數(shù)為停止條件;訓(xùn)練結(jié)束后將由系統(tǒng)自動生成一個(gè)神經(jīng)網(wǎng)絡(luò)模型,各權(quán)值系數(shù)隱含,可在MATLAB 6.5系統(tǒng)中查看;訓(xùn)練樣本數(shù)據(jù)組Ni轉(zhuǎn)化為4×(Ni-3)的矩陣的具體方法是將訓(xùn)練樣本數(shù)據(jù)組Ni的第一個(gè)數(shù)據(jù)到第四數(shù)據(jù)組成第一列,將訓(xùn)練樣本數(shù)據(jù)組的第二個(gè)數(shù)據(jù)到第五數(shù)據(jù)組成矩陣的第二列,將訓(xùn)練樣本數(shù)據(jù)組的第三個(gè)數(shù)據(jù)到第六數(shù)據(jù)組成矩陣的第三列,依次類推,直到組成4×(Ni-3)的矩陣;④利用MATLAB 6.5工具箱函數(shù)中的仿真函數(shù)sim函數(shù)進(jìn)行網(wǎng)絡(luò)測試的方法是將測試樣本數(shù)據(jù)組轉(zhuǎn)化為4×(Nj-3)的矩陣作為sim函數(shù)的輸入?yún)?shù)進(jìn)行網(wǎng)絡(luò)測試;測試樣本數(shù)據(jù)組轉(zhuǎn)化為4×(Nj-3)的矩陣的具體方法是將測試樣本數(shù)據(jù)組的第一個(gè)數(shù)據(jù)到第四數(shù)據(jù)組成第一列,將測試樣本數(shù)據(jù)組的第二個(gè)數(shù)據(jù)到第五數(shù)據(jù)組成矩陣的第二列,將測試樣本數(shù)據(jù)組的第三個(gè)數(shù)據(jù)到第六數(shù)據(jù)組成矩陣的第三列,依次類推,直到組成4×(Nj-3)的矩陣;步驟(3)使用經(jīng)網(wǎng)絡(luò)訓(xùn)練和網(wǎng)絡(luò)測試后的神經(jīng)網(wǎng)絡(luò)模型和MATLAB 6.5工具箱函數(shù)的sim函數(shù)對下一個(gè)高潮位水位值或者下一個(gè)低潮位水位值進(jìn)行預(yù)測,具體方法是在sim函數(shù)中輸入最后四組的數(shù)據(jù)作為sim函數(shù)的輸入?yún)?shù),經(jīng)sim函數(shù)計(jì)算后得到下一組數(shù)據(jù)的預(yù)測值,此預(yù)測值即為下一個(gè)高潮位水位值或者下一個(gè)低潮位水位值。
全文摘要
本發(fā)明涉及一種江河潮水水位的預(yù)測方法。傳統(tǒng)的潮時(shí)預(yù)報(bào)方法有傳播時(shí)間法和隔離滯后時(shí)間法,上述方法一定程度弱化了潮水受到潮汐、徑流、河道地形和風(fēng)力風(fēng)向等多重因素的影響關(guān)系。本發(fā)明的具體步驟是首先以MATLAB 6.5的工具箱函數(shù)庫中的神經(jīng)網(wǎng)絡(luò)函數(shù)以及潮水水位和時(shí)間的歷史數(shù)據(jù)為基礎(chǔ)構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,然后利用工具箱函數(shù)中的神經(jīng)網(wǎng)絡(luò)訓(xùn)練函數(shù)train函數(shù)進(jìn)行網(wǎng)絡(luò)訓(xùn)練,利用仿真函數(shù)sim函數(shù)進(jìn)行網(wǎng)絡(luò)測試,最后使用經(jīng)訓(xùn)練和測試后的神經(jīng)網(wǎng)絡(luò)模型對下一個(gè)高潮位水位值或者下一個(gè)低潮位水位值進(jìn)行預(yù)測。本發(fā)明使用歷史潮水?dāng)?shù)據(jù)進(jìn)行短期潮水水位值預(yù)測,這種方法可以完全忽略風(fēng)向、降雨、給排水、河床變化等不確定因素影響。
文檔編號G06N3/00GK101625732SQ200910101080
公開日2010年1月13日 申請日期2009年8月3日 優(yōu)先權(quán)日2009年8月3日
發(fā)明者峰 何, 峰 吳, 王建中, 王瑞榮, 薛安克, 鄒洪波 申請人:杭州電子科技大學(xué)