本發(fā)明屬于測控技術(shù)領(lǐng)域,具體是一種基于支持向量機的錢塘江潮時預(yù)報方法。
背景技術(shù):
當(dāng)東海潮進入杭州灣后,由于河口突然由寬變窄,促進水位的驟然升高,形成明顯的潮頭,隨著后面潮水的繼續(xù)涌入,最終形成了驚濤駭浪,萬馬奔騰的壯觀涌潮奇景,即為聞名中外的錢塘江涌潮。隨著錢塘江流域經(jīng)濟迅速發(fā)展,外來游客和居住人口逐年增加,為保障沿江居民安全、船舶航行安全以及沿岸工程設(shè)施,精確的涌潮預(yù)報越發(fā)受到各方關(guān)注。
實際應(yīng)用中,錢塘江涌潮預(yù)報主要采用依據(jù)經(jīng)驗?zāi)P偷母羧諟蠓?,即通過前一天涌潮到達各個站點的時間預(yù)報該天涌潮到達各個站點的時間。這類方法主要缺點是受預(yù)報日當(dāng)天江道地形、涌潮的流速、風(fēng)向及大小和上游洪水等自然因素的影響,使得預(yù)報精度不夠理想。
支持向量機(Support Vector Machine-SVM),是近年發(fā)展起來的一種適用于小樣本的統(tǒng)計學(xué)習(xí)理論。與人工神經(jīng)網(wǎng)絡(luò)相比,具有結(jié)構(gòu)簡單、計算效率高、所需訓(xùn)練樣本少以及泛化能力強等優(yōu)點。這些特點使其更適用于錢塘江涌潮預(yù)報。
技術(shù)實現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術(shù)的不足,提供一種基于支持向量機的錢塘江潮時預(yù)報方法,目的在于對錢塘江潮時進行準(zhǔn)確預(yù)報。
該方法的具體步驟是:
步驟1:讀取歷史涌潮到達時間td(n)、對應(yīng)站點和聞家堰的前一次高潮位g(n-1)、gw(n-1),根據(jù)連續(xù)兩日涌潮到達時間計算隔日時間差數(shù)據(jù)dt(n),以分鐘作為單位,
dt(n)=td(n+1)-td(n) n=1,2,3,... (1)
步驟2:歷史高潮位數(shù)據(jù)和連續(xù)兩日隔日時間差數(shù)據(jù)進行歸一化處理
根據(jù)式(2)對歷史高潮位數(shù)據(jù)進行歸一化,
其中xmax為歷史高潮位數(shù)據(jù)中的最大值,xmin為歷史高潮位數(shù)據(jù)中的最小值。x為待處理的歷史高潮位數(shù)據(jù),為歷史高潮位數(shù)據(jù)歸一化處理后的值。
連續(xù)兩日隔日時間差數(shù)據(jù)歸一化處理方法為:
步驟3:根據(jù)預(yù)報日從歷史數(shù)據(jù)中挑選同條件下的數(shù)據(jù)構(gòu)造訓(xùn)練樣本。
農(nóng)歷上,不同年相似月的數(shù)據(jù)可近似認(rèn)為同條件下的數(shù)據(jù),而其他不同月的數(shù)據(jù)為不同條件下的數(shù)據(jù)。這里根據(jù)預(yù)測日期的不同而分別建立訓(xùn)練模型,選擇的訓(xùn)練樣本同預(yù)測日期為同條件下的數(shù)據(jù),即選擇訓(xùn)練樣本與預(yù)測日期不同年相似月的數(shù)據(jù)。另一方面,隨著時間延遲增大,不同年相似月數(shù)據(jù)相關(guān)性亦逐漸減小,為保證訓(xùn)練樣本與預(yù)測日的相關(guān)性足夠大,選擇預(yù)測日期近5年內(nèi)相似月份的隔日時間差數(shù)據(jù)作為訓(xùn)練樣本。
利用歸一化后的歷史數(shù)據(jù)構(gòu)造訓(xùn)練樣本,將預(yù)報日前4個連續(xù)兩日隔日時間差4日中最后一次涌潮高潮水位以及相應(yīng)的聞家堰高潮水位作為5個輸入,第i日的隔日時間差作為輸出值。以此類推可以構(gòu)建輸入矩陣P和目標(biāo)矩陣T。因此輸入矩陣P每行為6個數(shù)據(jù),目標(biāo)矩陣每行為1個數(shù)據(jù)。同樣,該兩矩陣均為N-3行,N為歷史數(shù)據(jù)長度。
其中,i表示預(yù)測目標(biāo)日的農(nóng)歷日序號;k表示預(yù)測目標(biāo)年份序號,例如k=0表示預(yù)測年,k=1表示預(yù)測年前一年,以此類推。
步驟4:利用訓(xùn)練樣本訓(xùn)練支持向量機模型。
調(diào)用Matlab7.10.0函數(shù)庫中的svmtrain函數(shù)進行支持向量機模型訓(xùn)練,主要參數(shù)包括核函數(shù)選取、損失函數(shù)ε和懲罰因子參數(shù)C的確定。支持向量機常用核函數(shù)包括多項式核函數(shù)、徑向基函數(shù)(RBF)核函數(shù)、Sigmoid核函數(shù),通常選用RBF函數(shù);損失函數(shù)ε決定了回歸誤差期望,其取值大小將會影響相應(yīng)模型的支持向量數(shù)量以及泛化能力,ε取值越大,相應(yīng)模型支持向量減小,預(yù)測精度越低,反之亦然,ε一般取為(0.0001~0.01);懲罰因子參數(shù)C主要用于平衡逼近誤差以及模型復(fù)雜度,C的值越大,相應(yīng)模型擬合誤差則越小,對數(shù)據(jù)的擬合程度越高,但模型復(fù)雜程度亦越大,C一般取為(1~1000);
步驟5:利用步驟4得到的支持向量機模型結(jié)合輸入?yún)?shù)得到預(yù)測數(shù)據(jù)。
為了預(yù)測第j天的隔日時間差,將第j日的前4個連續(xù)兩日隔日時間差4日中最后一次涌潮高潮水位以及相應(yīng)的聞家堰高潮水位作為5個輸入,調(diào)用Matlab7.10.0函數(shù)庫中的svmpredict函數(shù)預(yù)測第j日的隔日時間差
步驟6:反歸一化處理隔日時間差,計算預(yù)測潮時。
利用公式(5)對預(yù)測隔日時間差dt(j)predict進行反歸一化處理,通過式(6)得到預(yù)測隔日時間差絕對值
td,predict(j)=t(j-1)+dt(j) (6)
t(j-1)表示第j-1日的涌潮到達時間。
本發(fā)明的有益效果是:
1.本方法根據(jù)預(yù)報日不同而分別建立訓(xùn)練模型,從歷史數(shù)據(jù)中挑選同條件下的數(shù)據(jù)構(gòu)造訓(xùn)練樣本,使得預(yù)報模型更加準(zhǔn)確,預(yù)測結(jié)果更加可靠。
2.支持向量機是一種適用于小樣本、泛化能力強的預(yù)測模型,使得本方法具有更高泛化能力,同時分析時間較短滿足在線分析需求。
3.整個分析過程快速方便,容易被使用者掌握,同時易于編程實現(xiàn)。
附圖說明
圖1為基于支持向量機的錢塘江潮時預(yù)報方法流程圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的方法作進一步描述。
如圖1所示,為基于支持向量機的錢塘江潮時預(yù)報方法流程圖,具體實施步驟如下:
步驟1:讀取歷史涌潮到達時間td(n)、對應(yīng)站點和聞家堰的前一次高潮位g(n-1)、gw(n-1),根據(jù)連續(xù)兩日涌潮到達時間計算隔日時間差數(shù)據(jù)dt(n),以分鐘作為單位,
dt(n)=td(n+1)-td(n) n=1,2,3,... (1)
步驟2:歷史高潮位數(shù)據(jù)和連續(xù)兩日隔日時間差數(shù)據(jù)進行歸一化處理
根據(jù)式(2)對歷史高潮位數(shù)據(jù)進行歸一化,
其中xmax為歷史高潮位數(shù)據(jù)中的最大值,xmin為歷史高潮位數(shù)據(jù)中的最小值。x為待處理的歷史高潮位數(shù)據(jù),為歷史高潮位數(shù)據(jù)歸一化處理后的值。
連續(xù)兩日隔日時間差數(shù)據(jù)歸一化處理方法為:
步驟3:根據(jù)預(yù)報日從歷史數(shù)據(jù)中挑選同條件下的數(shù)據(jù)構(gòu)造訓(xùn)練樣本。
農(nóng)歷上,不同年相似月的數(shù)據(jù)可近似認(rèn)為同條件下的數(shù)據(jù),而其他不同月的數(shù)據(jù)為不同條件下的數(shù)據(jù)。這里根據(jù)預(yù)測日期的不同而分別建立訓(xùn)練模型,選擇的訓(xùn)練樣本同預(yù)測日期為同條件下的數(shù)據(jù),即選擇訓(xùn)練樣本與預(yù)測日期不同年相似月的數(shù)據(jù)。另一方面,隨著時間延遲增大,不同年相似月數(shù)據(jù)相關(guān)性亦逐漸減小,為保證訓(xùn)練樣本與預(yù)測日的相關(guān)性足夠大,選擇預(yù)測日期近5年內(nèi)相似月份的隔日時間差數(shù)據(jù)作為訓(xùn)練樣本。
利用歸一化后的歷史數(shù)據(jù)構(gòu)造訓(xùn)練樣本,將預(yù)報日前4個連續(xù)兩日隔日時間差4日中最后一次涌潮高潮水位以及相應(yīng)的聞家堰高潮水位作為5個輸入,第i日的隔日時間差作為輸出值。以此類推可以構(gòu)建輸入矩陣P和目標(biāo)矩陣T。因此輸入矩陣P每行為6個數(shù)據(jù),目標(biāo)矩陣每行為1個數(shù)據(jù)。同樣,該兩矩陣均為N-3行,N為歷史數(shù)據(jù)長度。
其中,i表示預(yù)測目標(biāo)日的農(nóng)歷日序號;k表示預(yù)測目標(biāo)年份序號,例如k=0表示預(yù)測年,k=1表示預(yù)測年前一年,以此類推。
步驟4:利用訓(xùn)練樣本訓(xùn)練支持向量機模型。
調(diào)用Matlab7.10.0函數(shù)庫中的svmtrain函數(shù)進行支持向量機模型訓(xùn)練,主要參數(shù)包括核函數(shù)選取、損失函數(shù)ε和懲罰因子參數(shù)C的確定。支持向量機常用核函數(shù)包括多項式核函數(shù)、徑向基函數(shù)(RBF)核函數(shù)、Sigmoid核函數(shù),通常選用RBF函數(shù);損失函數(shù)ε決定了回歸誤差期望,其取值大小將會影響相應(yīng)模型的支持向量數(shù)量以及泛化能力,ε取值越大,相應(yīng)模型支持向量減小,預(yù)測精度越低,反之亦然,ε一般取為(0.0001~0.01);懲罰因子參數(shù)C主要用于平衡逼近誤差以及模型復(fù)雜度,C的值越大,相應(yīng)模型擬合誤差則越小,對數(shù)據(jù)的擬合程度越高,但模型復(fù)雜程度亦越大,C一般取為(1~1000);
步驟5:利用步驟4得到的支持向量機模型結(jié)合輸入?yún)?shù)得到預(yù)測數(shù)據(jù)。
為了預(yù)測第j天的隔日時間差,將第j日的前4個連續(xù)兩日隔日時間差4日中最后一次涌潮高潮水位以及相應(yīng)的聞家堰高潮水位作為5個輸入,調(diào)用Matlab7.10.0函數(shù)庫中的svmpredict函數(shù)預(yù)測第j日的隔日時間差
步驟6:反歸一化處理隔日時間差,計算預(yù)測潮時。
利用公式(5)對預(yù)測隔日時間差dt(j)predict進行反歸一化處理,通過式(6)得到預(yù)測隔日時間差絕對值
td,predict(j)=t(j-1)+dt(j) (6)
t(j-1)表示第j-1日的涌潮到達時間。