鄭海燕 ,肖 羽 ,曾德熹
1.長江水利委員會水文局上游局,四川宜賓 644007
2.深圳富晉天維信息通訊技術有限公司,廣東深圳 518010
地下水系統(tǒng)作為自然環(huán)境的組成部分,其水質特征是系統(tǒng)本體與系統(tǒng)環(huán)境綜合作用的結果。在水質預測過程中,往往只掌握地下水的水質特征值,卻很難搞清系統(tǒng)內部的發(fā)展演化過程以及外部諸因素對系統(tǒng)的作用。即系統(tǒng)的輸出信息明確,而結構信息和關系信息不明確。所以,地下水系統(tǒng)屬于灰色系統(tǒng)把灰色模型用于地下水水質預測,無疑能夠體現地下水系統(tǒng)的灰色特征。
灰色系統(tǒng)按照預測問題的特征,可分為5種基本類型,即數列預測、災變預測、季節(jié)災變預測、拓撲預測和系統(tǒng)綜合預測。這5種類型的預測方法,都是地理學中重要而且常用的預測方法。GM(1,1)模型是常用的一種灰色模型,用于單個時間序列的動態(tài)預測。就是對某一指標的發(fā)展變化情況所作的預測,其預測的結果是該指標在未來各個時刻的具體數值。
灰色模型以微分方程為描述形式,它所揭示的是事物發(fā)展的連續(xù)過程,它符合地下水質量的漸變規(guī)律。模型的建立過程即是對地下水系統(tǒng)的辨識過程,運用確知的水質數據去揭示系統(tǒng)的動態(tài)特征,但由于其它信息的不明確,因而這個過程是灰色的逆運算過程。地下水水質預測模型就是基于最基本的灰色GM(n,h)模型[3]建立起來的。其中h表示變量的個數,n表示微分方程的階次,n越大則模型所描述的內涵可能越豐富,但階次過高的系統(tǒng)其特征方程的求解困難,而且精度不一定高,其結果也不是解析的,所以我們通常建立n=1的GM模型。
由于地下水系統(tǒng)的結構信息和關系信息不明確,因此建模時只需要考證水質特征值的動態(tài)變化規(guī)律,即變量唯一,h=1,那么所需建立的模型就是GM(1,1)模型,其一般表示形式如下所示:
式中:a為模型系數;u為待辨識參數。
GM(1,1)模型的建模和預測:
1)數據處理。將原始數據列X(0)(i)作一次累加,得到生成數據列X(1)(k),
2)構成數據矩陣B與數據列Yn:
式中:n為監(jiān)測數據個數。
3)計算模型系數a和待辨識參數u,
[a,u]T=(BTB)-1BTYn
4)建立時間響應模型:
5)將時間響應離散化:
6)將K值代入離散化模型公式,計算出X(1)(k)
7)將預測累加值 X(1)(k) k∈{n+1,n+2,…}還原為預測值X(0)(k) k∈{n+1,n+2,…}。
1)平均精度檢驗
將計算出的與實測值X(0)(k)對照,算出逐對殘差:
然后計算出平均相對誤差如果平均精度符合實際要求,即可進行預測。2)后驗差檢驗
為了判斷預測值的可靠性,采用后驗差進行檢驗,計算出實測標準差(S1)和殘參標準差(S2)。
計算后驗差比值C,及小誤差概率P。
然后就可以根據數據表進行預測精度檢驗了,本系統(tǒng)因為運用于實際,
所以就只用了前一種檢測方法,根據所給數據,結果完全符合要求。
本研究是實現“地下水污染預警系統(tǒng)”之預測模塊,擬采用與整個系統(tǒng)其他開發(fā)人員分工合作,相互配合的軟件開發(fā)方式。以Visual C++ 6.0 Windows應用程序開發(fā)工具作為開發(fā)平臺,利用動態(tài)鏈接庫技術,實現GM(1,1)預測模型編程,在深入研究ArcView二次開發(fā)語言Avenue調用外部動態(tài)鏈接庫的方法的基礎上,開發(fā)出能提供給系統(tǒng)方便調用接口的動態(tài)鏈接庫。在Windows中,應用程序通過一種稱為“動態(tài)鏈接庫”(Dynamic-Link Library,簡稱DLL)的特殊函數集來實現代碼和資源的共享,以最大限度地節(jié)約空間。在Windows下使用動態(tài)鏈接庫可以使多個應用程序之間共享代碼和資源,從而提高運行效率。
Avenue能夠直接地調用DLL中的函數,并且可以相互的傳遞數據。在Avenue中的DLL和DLLProc類提供了支持DLL載入和調用的函數。
在調用DLL中的對象之前需要先創(chuàng)建一個DLL類的實例,當你想調用時再為每個函數、進程創(chuàng)建一個DLLProc 實例。當一個DLL對象被創(chuàng)建,這個DLL就被載入內存然后被使用。當這個對象被撤銷時,它將自動地釋放內存。
調用DLL中的函數可能需要傳遞一些參數,可能還會返回值。輸入、輸出變量在你創(chuàng)建DLLProc實例時創(chuàng)建。ArcView支持多種類型的參數,更多了解請閱讀DLLProc類的詳解。創(chuàng)建和執(zhí)行一個DLL函數需要4步:
1)首先必須有一個系統(tǒng)所需要的DLL;
2)裝載DLL并且構造它;
3)用DLLProc 類分別為每一個函數在你向調用的DLL中,但是你必須要注意輸入輸出變量的類型;
4)用DLLProc 調用你需要的DLL函數,傳入相關的參數,是否任何函數返回的參數都能夠存儲在Avenue變量中。
整個模塊設計流程圖(見圖1):
圖1 程序設計流程圖
以焦作市地下水污染預警系統(tǒng)中的地下水質的各方面預測例說明灰色系統(tǒng)的應用。
從上表可以看出決定地下水水質的因子很多,我們可以對每個因子分別進行預測其未來變化情況;也可以綜合打分之后,直接對整體水質進行預測,二者均可。
地下水水質變化正好吻合GM(1,1)模型,符合地下水系統(tǒng)的灰色特征,模型適用性好,預測結果與環(huán)境狀況吻合。
圖2 預測模型在ArcView下的應用實現
在詳細地知道了地下水的水質變化規(guī)律和GM(1,1)的預測機理,并對焦作市地下水污染預警系統(tǒng)采用本系統(tǒng)對地下水水質進行預測,符合地下水系統(tǒng)的灰色特征,模型適用性好,預測結果與環(huán)境狀況吻合。
圖3 對金箭公司井中PH值的預測結果
[1]楊位欽,顧嵐.時間序列分析與動態(tài)數據建模[M].北京:北京理工大學出版社,1988.
[2]朱東海,任愛珠,江見鯨.ArcView應用開發(fā)中動態(tài)鏈接庫方法研究[J].計算機工程,2000,26(9).
[3]張興和,等.灰色系統(tǒng)理論在地下水水質預報中的應用[J].長春地質學院學報,1988(2).