摘要:BP學習算法是一種單向傳播的多層前向網絡,Matlab中的神經網絡工具箱以人工神經網絡理論為基礎。本文基于Matlab的工具箱,結合沁水樊莊區塊晉試1-6井和TL003井的抽排實驗數據對煤層氣井產量進行預測,驗證了BP神經網絡在沁水樊莊區塊預測煤層氣井產量的可行性,且BP算法收斂速度快,誤差小,值得推廣。
關鍵詞:BP神經網絡 煤層氣井 產量預測
1.引言
人工神經網絡(ArtificialNeuralNetworks,ANN),是近幾年來國內外一個前沿研究領域,它是人工構造的模擬人腦功能而構建的一種網絡,BP神經網絡是結構較簡單、應用最廣泛的一種模型,BP神經網絡是Rumelhart等在1986年提出的。它是一種單向傳播的多層前向網絡,一般具有三層或三層以上的神經網絡,包括輸入層、中間層(隱層)和輸出層[1],其模型見圖1所示。
Matlab中的神經網絡工具箱是以人工神經網絡理論為基礎,利用Matlab語言構造出許多典型神經網絡的傳遞函數、網絡權值修正規則和網絡訓練方法。網絡的設計者可根據自己的需要調用工具箱中有關神經網絡的設計與訓練的程序,免去了繁瑣的編程過程。
沁水煤層氣田劃分為樊莊、潘莊、鄭莊3個區塊,總面積3630km2,煤層氣總資源量4500×108m3,其中中石油登記區總含氣面積為1090.87km2,煤層氣總資源量為2655.98×108m3。樊莊區塊總含氣面積為398.23km2,煤層氣總資源量為1043.3×108m3,已探明352.26×108m3[2]。截止2008年,樊莊-鄭莊區塊已經完成59口探井、評價井和48口水平井以及638口開發井的鉆探。根據煤層氣井產氣量對不同井進行組網是經濟有效的進行采氣作業的好辦法,那么在開采之前對煤層氣井產氣量進行預測就十分必要。本文利用晉試1-6井的參數,以煤層埋深、煤層厚度、含氣量、滲透率和含氣飽和度作為輸入因子,日產氣量為輸出因子,選擇合適的隱層,構建影響沁水樊莊區塊煤層氣井日產氣量的BP網絡模型,運用Matlab軟件進行預測。
2.BP神經網絡設計的基本方法
Matlab的NNbox提供了建立神經網絡的專用函數newff()[3]。用newff函數來確定網絡層數、每層中的神經元數和傳遞函數,其語法為:
net=newff(PR,[S1,S2,#8943;,SN],{TF1,TF2,TFN},BTF,BLF,PF)
式中:PR表示由每個輸入向量的最大最小值構成的R×2矩陣:Si表示第i層網絡的神經元個數;TF表示第i層網絡的傳遞函數,缺省為tansig,可選用的傳遞函數有tansig,logsig或purelin;BTF表示字符串變量,為網絡的訓練函數名,可在如下函數中選擇:traingd、traingdm、traingdx、trainbfg、trainlm等,缺省為trainlm;BLF表示字符串變量,為網絡的學習函數名,缺省為learngdm;BF表示字符串變量,為網絡的性能函數,缺省為均方差“mse”。
2.1網絡層數
BP網絡可以包含不同的隱層,但理論上已經證明,在不限制隱層節點數的情況下,兩層(只有一個隱層)的BP網絡可以實現任意非線性映射。本文所建立的模型擬采用三層的BP網絡。
2.2輸入層節點數
輸入層起緩沖存儲器的作用,它接受外部的輸入數據,因此其節點數取決于輸入矢量的維數。本論文輸入因子為煤層埋深、煤層厚度、含氣量、滲透率和含氣飽和度,即輸入層的輸入矢量的維數為5,故輸入層節點數為5。
2.3輸出層節點數
輸出層節點數取決于兩個方面,輸出數據類型和表示該類型所需的數據大小。在設計輸人層和輸出層時,應該盡可能的減小系統規模,使系統的學習時間和復雜性減小。結合預測要求本論文設計輸出層為產氣量一個輸出因子。
2.4隱層節點數
一個具有無限隱層節點的兩層BP網絡可以實現任意從輸入到輸出的非線性映射。但對于有限個輸入模式到輸出模式的映射,并不需要無限個隱層節點,這就涉及到如何選擇隱層節點數的問題,至今為止,尚未找到一個很好的解析式,隱層節點數往往根據前人設計所得的經驗和自己進行試驗來確定。一般認為,隱層節點數與求解問題的要求、輸入輸出單元數多少都有直接的關系。另外,隱層節點數太多會導致學習時間過長;而隱層節點數太少,容錯性差,識別未經學習的樣本能力低,所以必須綜合多方面的因素進行設計。
隱層節點數的初始值可先由以下兩個公式中的其中之一來確定[4,5]。
+a(1)
或(2)
式中,m、n分別為輸入結點數目與輸出結點數目,a為1~10之間的常數。
2.5數據歸一化
因為原始數據幅值大小不一,有時候還相差比較懸殊。如果直接投人使用,測量值大的波動就壟斷了神經網絡的學習過程,使其不能反映小的測量值的變化。所以,在網絡訓練之前,輸人數據和目標矢量都要經過歸一化處理。根據公式可將數據“歸一化”,即限定在[0.1,0.9]區間內。歸一化公式為:
×0.8+0.1(3)
3.BP算法及預測模型的建立
3.1BP算法
1)初始化網絡及學習參數;
2)從訓練樣本集合中取一個樣本,并作為輸入向量送入網絡;
3)正向傳播過程,對給定的輸入樣本,通過網絡計算得到輸出樣本,并把得到的輸出樣本與期望的樣本比較,如有誤差超出限定范圍,則執行第4步;否則返回第2步,輸入下一個樣本;
4)反向傳播過程,即從輸出層反向計算到第一隱層,修正各神經元的連接權值,使用誤差減小。
3.2煤層氣井日產氣量預測模型
為了預測煤層氣井日產氣量,需要關注很多因素,濾去相關度過低的因子,根據經驗確定輸入因子為煤層埋深、煤層厚度、含氣量、滲透率和含氣飽和度,輸出因子為日產氣量。現以表1所示的沁水樊莊區塊晉試1-6井的參數作為訓練樣本進行訓練,對TL003井的數據進行預測。輸出層結點代表日產氣量,神經網絡的預測模型采用5-5-1,即輸入層5個神經元,根據公式(2)計算隱層神經元數確定為5,1個輸出神經元。設定最大的迭代次數為1000次,系統全局誤差小于0.0005。傳遞函數為tansig,訓練函數為traingdx。根據經典的BP算法,采用Matlab編程,樣本訓練結果見圖2,TL003的數據作為預測樣本,預測結果如下:
TRAINGDX,Epoch0/1000,MSE0.363349/0.0005,Gradient0.113892/1e-006
TRAINGDX,Epoch25/1000,MSE0.358319/0.0005,Gradient0.124151/1e-006
TRAINGDX,Epoch50/1000,MSE0.336296/0.0005,Gradient0.165309/1e-006
TRAINGDX,Epoch75/1000,MSE0.151697/0.0005,Gradient0.201026/1e-006
TRAINGDX,Epoch100/1000,MSE0.0491568/0.0005,Gradient0.0479309/1e-006
TRAINGDX,Epoch125/1000,MSE0.0250848/0.0005,Gradient0.0155269/1e-006
TRAINGDX,Epoch150/1000,MSE0.00622656/0.0005,Gradient0.010656/1e-006
TRAINGDX,Epoch162/1000,MSE0.000461385/0.0005,Gradient0.00289131/1e-006
TRAINGDX,Performancegoalmet.
Y=270731423536329726622672
煤層氣井日產氣量實際值為2700,3146,3519,3292,2634,2721。誤差為0.0026,當樣本較少時可以接受的誤差范圍內。并且收斂速度快。模擬效果圖見圖3。將預測樣本TL003的數據輸入已建立的預測模型,得出預測值為2765,實測值為2773,誤差為0.0029,預測效果較好。
4.結論
用Matlab編編寫的基于BP網絡的沁水樊莊區塊煤層氣井產氣量預測程序,計算結果表明,誤差較小,預測值與實測值吻合較好,所建立的模型具有較好的實用性,說明煤層埋深、煤層厚度、含氣量、滲透率和含氣飽和度的數據影響煤層氣井的產氣量,同時驗證BP算法可以用于煤層氣井產氣量的預測。
目前所進行的預測試驗中數據的樣本較少,且產氣量動態變化,今后擬建立一個動態預測系統,為煤層氣井日產氣量的預測提供新的方法,為生產提供依據,該技術值得推廣。
參考文獻:
[1]飛思科技產品研發中心.神經網絡理論與Matlab7實現[M].北京:電子工業出版社.2006:100-105.
[2]王憲花,盧霞.沁水煤層氣田樊莊區塊煤層氣開發經濟評價[J].天然氣工業,2004,24(5):137-139.
[3]周開利,康耀紅.神經網絡模型及其Matlab仿真程序設計[M].北京:清華大學出版社,2005.
[4]徐廬生.微機神經網絡[M].北京:中國醫藥科技出版社,1995.
[5]高大啟.有教師的線性基本函數前向三層神經網絡結構研究[J].計算機學報,1998,21(1):80-85.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文