王 通, 羅真偉
(沈陽工業大學 電氣工程學院, 沈陽 110870)
在油田生產過程中,技術人員通常根據井下泵的工作狀態判斷生產工況,進而調整采油工藝措施,提高采油效率,保障油田安全運行[1].
抽油井井下泵的工作狀態可以通過泵功圖直接反映[2-3],油田通過泵功圖分析井下工況的方法主要有灰色關聯度分析法[4]及傅里葉描述子的圖形相似性分析法[5].上述方法通過圖形相似性比較來判斷油井工況,但在油田生產過程中,存在示功圖采集不準確、生產波動等現象.李春生等[6-7]利用支持向量機對提取的泵功圖特征向量建立了工況識別模型;李訓銘等[8-10]利用灰度矩陣提取特征向量,并用神經網絡建立工況識別模型.支持向量機、神經網絡等算法在工況識別中易將不平衡數據中小類作為噪聲,并且將其丟棄.針對以上工況識別過程中所面臨的參考功圖選取不準確,數據集不平衡等問題,本文提出了結合SMOTE算法的改進隨機森林算法進行抽油井泵的工況識別,從而提高采油效率,更好推進油井工況識別的數字化、智能化.
油井工況識別首先需要把地面采集的懸點示功圖轉換為泵功圖.根據Gibbs模型,將抽油桿視為一根井下傳導線,建立一維帶阻尼的波動方程[11]為
(1)
式中:u(t)為地面示功圖懸點位移函數;a為應力波在抽油桿柱中的傳播速度;c為阻尼系數.
利用邊界條件,最終可得抽油桿柱任意深度的載荷和位移隨時間的變化方程,即可以求出泵功圖,對應此模型解的傅里葉級數形式為
(2)
式中:σ0、ν0、On、Qn均為傅里葉系數;Er為抽油桿的彈性模量;Ar為抽油桿的截面積.
轉換后的泵功圖包含豐富的有桿抽油系統工作狀態信息.當井下設備工況變化時,泵功圖會跟著發生圖形變化,顯示出某一工況相應的圖形特征,是正確、迅速識別工況的重要基礎.常見的工況有以下幾種:泵工作正常、供液不足、氣體影響、出砂影響、游動閥漏、固定閥漏、油井結蠟、上碰泵、下碰泵.
不同工況的對稱度、波動程度、示功圖的四角曲率變化等各不相同,通過網格化對泵功圖灰度矩陣特征提取可以反映圖形的幾何特征,從而達到工況識別的效果.
泵功圖特征向量的選擇對井下工況識別準確性有直接的影響.泵功圖特征參數提取主要有傅里葉描述子、面積法、差分曲線法、矩特征向量和灰度矩陣的泵功圖特征提取算法[12].本文采用識別率高的灰度矩陣特征提取方法,其特征參數少,識別率高,主要步驟如下:
1) 將泵功圖數據進行無量綱歸一尺度處理,消除泵功圖量綱對數據的影響.
2) 泵功圖網格化.將歸一化后的泵功圖放到一個2∶1的矩形網格中,使泵功圖的四邊與網格矩形的四邊相切.
3) 邊緣灰度賦值.在泵功圖經過輪廓曲線的網格灰度值均賦值為“1”,其余網格賦值為“0”,形成了一個以“1”和“0”組成的矩陣.
4) 灰度矩陣生成.在邊界內部逐步加1,外部逐步減1,最終獲得網格化的泵功圖灰度矩陣.
5) 求解灰度矩陣特征值.灰度矩陣特征值的提取是在泵功圖灰度矩陣上計算灰度均值、灰度方差、灰度偏度、灰度峰值、灰度能量和灰度熵,表示了泵功圖灰度矩陣的數據統計特征,從而反映圖形的形狀特質[13].泵功圖的灰度矩陣各特征值提取表達式為:

(3)
式中:b為泵功圖的灰度級數;B(b)為某一灰度b的元素個數;p(b)為灰度級的概率.
② 灰度方差σ2表達式為
(4)
③ 灰度偏度D表達式為
(5)
④ 灰度峰值P表達式為
(6)
⑤ 灰度能量E表達式為
(7)
⑥ 灰度熵T表達式為

(8)
利用以上表達式計算訓練樣本和測試樣本的灰度特征值數據,各種工況的參考灰度特征向量值如表1所示.

表1 參考工況灰度特征向量值Tab.1 Values of gray-level feature vector under reference conditions
通過灰度矩陣特征提取泵功圖的六個數理統計特征值,可以有效反映各種工況泵功圖的幾何形狀,用于隨機森林的有桿抽油系統井下工況識別.
在采油過程中,油井各種工況出現次數是不均衡的.對于這種現象,大多數分類算法不能對小類做出有效識別,導致分類效果很差.SMOTE是由Chawla等人提出的一種向上采樣方法,目的是解決小類中樣本數量過少的問題.SMOTE通過合成新的小類樣本來減輕類別的不平衡,其主要思想是在相距較近的小類樣本之間進行線性插值,從而生成新的小類樣本,計算表達式為
Snew=S+rand(Si-S) (i=1,2,…,n)
(9)
式中:Snew為新插值的樣本;S為原始樣本數據;rand為0~1的隨機數;Si為原始樣本數據的最鄰近k個樣本中隨機選取的n個樣本.
SMOTE算法對油田示功圖不平衡數據處理時,首先獲取工況的測試數據集S最近的k個鄰樣本,再從中隨機選擇n個,通過與原數據集邊界值對比,獲取符合要求的新樣本Snew,算法流程圖如圖1所示.
隨機森林算法[14]使用有放回的Bootstrap采樣生成多個訓練樣本集,每個樣本都訓練成一個決策樹,而未被采樣的訓練樣本將用來估計分類器的泛化能力.利用隨機森林來實現油井工況識別,可以提高模型泛化性.

圖1 SMOTE流程圖Fig.1 Flow chart of SMOTE

DA-RF工況識別步驟如下:
1) 隨機選取各工況的部分灰度矩陣特征值作為訓練數據集,其它數據為測試集.訓練集數據與測試集數據比例控制為2∶1.
2) 初始化隨機森林參數(nTree,mtry)和蜻蜓算法參數,包括:相鄰半徑、慣性權重、分離度、對齊度、內聚度、食物因子和避敵因子.
3) 將識別準確率作為適應度函數,通過DA算法對隨機森林參數nTree和mtry尋優.
4) 利用Bootstrap方法對灰度特征值進行重采樣,產生R個訓練集.
5) 利用每個訓練集生成對應的決策樹,并且在每個非葉子節點選擇屬性前,以分裂屬性集中的屬性大小mtry對該節點進行分裂.
6) 每棵樹都完整成長,不進行修枝.
7) 對于測試集樣本,利用每個決策樹進行測試,最終得到對應的工況類別數據集.
8) 采用投票的方法,得到投票選擇眾數,即將決策樹中輸出最多的工況作為測試集樣本所屬的工況.
本文將SMOTE、DA算法結合隨機森林算法用來識別井下工況.首先將采集到的地面示功圖轉換為泵功圖,在泵功圖的基礎上,采用灰色矩陣特征值提取算法提取泵功圖的六個灰度特征值;然后在選取的訓練集數據R上用SMOTE算法計算得到新的數據集Rnew,利用得到的數據集創建隨機森林,在隨機森林參數優化基礎上,選取蜻蜓算法得到最優參數nTree和mtry;最后將測試集代入得到最優的決策樹森林,完成油井的井下泵的工況識別.具體的SMOTE-DA-RF算法流程圖如圖2所示.

圖2 基于SMOTE-DA-RF的油井工況識別流程圖Fig.2 Identification flow chart of oil well operating condition based on SMOTE-DA-RF algorithm
本文選取遼河油田某廠的376組示功圖數據進行SMOTE-DA-RF算法的建模與測試實驗仿真.
將每類工況的原始數據集E分為訓練集R和測試集G,訓練集數據與測試集數據比例大致為2∶1.通過SMOTE算法將訓練集R轉換為新的訓練集Rnew,實驗中各種工況數據組數如表2所示.

表2 實驗數據集Tab.2 Experimental data sets
利用DA對隨機森林的參數進行尋優,將DA的初始參數設置為在[0.4,0.9]之間的自適應線性遞減參數值.隨機森林(nTree,mtry)初始值設置為(100,12),nTree的范圍為[1,500],mtry的范圍為[1,100].
根據DA算法得到的隨機森林最佳參數nTree為287,mtry為31,建立隨機森林決策樹,對測試集數據G進行仿真測試,得到最終的工況識別結果.為驗證本文方法的有效性,采用灰色關聯度方法GRA、支持向量機算法SVM、隨機森林算法RF進行對比.測試集工況識別結果分別如圖3所示.

圖3 測試集工況識別結果Fig.3 Identification results of test set for working condition
從圖3可以看出,灰色關聯度工況分析法的準確性依賴于示功圖的灰度特征向量,容易誤判.通過與其它機器學習法比較,SMOTE-DA-RF算法的識別正確率較高,特別是在小類工況上,識別效果進一步加強.該改進算法可以提高工況識別準確率,為油田后續生產措施的指定提供了參考,具有一定的工程應用價值.
本文建立了基于SMOTE-DA-RF算法的有桿抽油系統井下工況識別模型,采用SMOTE算法平衡少類數據,提高了基于示功圖的油井識別泛化性能;利用DA算法選擇隨機森林最優參數,進一步提高了工況識別性能;通過隨機森林算法簡化運算,提高了井下泵工況識別的準確率,避免了神經網絡學習效率緩慢的問題,解決了灰色關聯度分析法泵功圖相似工況識別不準確和依賴參考灰度矩陣的問題.