?

鉆井液設計專家系統規則庫的檢測算法

2020-02-18 15:20習文風
計算機工程與應用 2020年4期
關鍵詞:庫中鄰接矩陣環路

李 建,習文風

西南石油大學 計算機科學學院,成都610500

1 引言

鉆井液設計專家系統結合來自于領域專家的經驗規則庫,應用基于規則的推理技術,通過鉆井地層的地質結構、地層特征和油氣井信息等數據來設計滿足條件的鉆井液體系和配方,以達到快速優質鉆井的目的,同時也能有效地保存經驗數據和避免重復性工作[1-2]。

但是,隨著規則的不斷增加,規則庫日益繁雜,對規則庫的維護已經成為制約專家系統效率的重要因素。一般而言,對規則庫的維護主要包括從屬、冗余、環路和沖突四方面[3]。

針對規則庫的維護問題,文獻[4]研究了規則庫添加新的規則后對冗余的判別、處理以及校驗的實現方法,但并未對環路和沖突等問題進行研究;文獻[5]討論了規則庫的一致性檢測,并對沖突消解進行了研究,但并未提及對冗余和環路等問題的檢測;文獻[6]結合有向超圖和生成樹,提出了一種能夠去除從屬和冗余的算法,但沒有研究環路和沖突等問題;文獻[7]研究了粗糙集理論,通過對決策表進行屬性約簡來去除冗余規則,并對剩余規則進行排序,但同樣沒有提及對環路和沖突等問題的處理;文獻[8]提出了一種基于知識約簡的Petri網模型簡化方法,利用知識約簡中的屬性約簡方法,去除了Petri網對應的產生式規則的冗余規則和冗余條件;文獻[9]提出了一種基于Petri網的冗余檢測算法;文獻[10]在有向超圖的基礎上提出了一種規則庫的合并算法,并且研究了如何檢測冗余、環路和沖突,但算法所構建的鄰接矩陣規模太大,導致效率較低。

總的來說,目前應用于規則庫維護的方法主要有表格法、基于Petri網的方法、基于圖的方法和基于代數插值的方法等[11-14]。其中,有向圖因其便于表示規則之間的關系而成為研究規則庫維護的重要工具。又因為鉆井液設計專家系統中的規則很多都是多對一的關系,所以本文引入有向超圖來表示規則[15-18]。

為了避免不能將規則庫中問題全部檢測而影響推理效率和推理準確性的不利后果,本文提出了一種能夠檢測從屬、冗余、環路和沖突等全部問題的算法,同時降低了算法中矩陣的規模,保證了運算效率。

本文首先介紹了如何用有向超圖來表示規則庫中的規則以及如何構建對應的鄰接矩陣,然后討論了可達矩陣的概念和計算,并在此基礎上給出了規則庫的檢測算法,最后通過實驗對算法的可行性和有效性加以驗證。

2 鉆井液設計專家系統規則庫

2.1 鉆井液的功用及體系

在鉆井中用作洗井的流體被稱為鉆井流體,因為鉆井流體多屬于液體,氣體型鉆井液很少被使用,所以簡稱為“鉆井液”。

鉆井時,鉆井液除了需要保護所鉆油氣儲層外,還擔負著以下任務:潤滑、冷卻鉆具、熱穩定性、巖層穩定性、平衡壓差、較強的清井及攜巖能力等。這些都是由于地下鉆井油氣層的差異性和復雜情況以及不同井型對鉆井液設計提出的要求。

鉆井液體系種類隨著具體要求和鉆井液技術的進步而逐漸增多。目前,國內外分類鉆井液的方法有很多種,根據體系組成特點和流體介質的不同,可以把鉆井液分為油基、合成基、水基、氣體型四種類型,每種類型又包含多種鉆井液,如圖1所示。

2.2 規則庫

規則庫是鉆井液設計專家系統的核心部分,專家系統的所有操作都是圍繞規則庫進行的。在對規則庫進行增刪改等操作時,若沒有考慮到規則知識結構的應有變化,容易導致規則庫出現問題,從而不能推理出正確的結果。

一般情況下規則庫中的問題主要包括:

從屬:存在能產生相同規則,但條件卻是包含關系的兩條規則。

圖1 鉆井液體系分類

冗余:存在兩條等價的規則。

環路:一組規則互相推出,會使推理進入死循環。

沖突:兩條規則在相同條件下產生相互矛盾的結果。

由上述可知,在對規則庫進行增刪改等操作后有必要對其進行檢測,以保證它能正確有效地發揮作用。

3 有向超圖及其鄰接矩陣

3.1 規則的表達形式

一個規則的一般形式可以表達為:

IF x1∧x2∧…∧xnTHEN xn+1

可簡寫:

其中,規則的左部稱為規則的條件部分,或叫作規則前件;右部稱為規則的結論部分,或叫作規則后件。上述規則的含義為:如果條件部分x1,x2,…,xn都得到滿足,則執行結論部分xn+1。

而如果規則的條件部分只包含一個選擇子,則該規則稱為簡單規則,否則稱為復合規則。例如,規則R:

IF泥頁巖成分>50%∧含砂量>10%THEN鉆井液類型為鹽水鉆井液

則規則R為復合規則,將R的前提記為ante(R),結論記為cons(R),其中前者為由兩個選擇子組成的集合。

3.2 有向超圖與鄰接矩陣

有向超圖是有向圖的推廣,它是在無向超圖中每條超邊的基礎上添加方向所得。

定義1(有向超圖)有向超圖是由有限非空頂點集V和有向超邊集E組成的有序對H=(V,E)。有向超邊e∈E是有序對(T(e),H(e)),其中T(e)為有向超邊e的尾點集,H(e)為有向超邊e的頭點集,T(e)與H(e)均為V的非空子集,且T(e)∩H(e)=?。

與有向圖不同,在有向超圖中,超邊e所連接的可以是由多個頂點組成的點集,這一性質適用于表示含有復合規則的規則庫。

利用有向超圖可以將規則庫(下述規則為示例所用,其選擇子x無實際意義)表示為如圖2所示形式。

圖2 規則庫的有向超圖表示

規則1 x1→x2;

規則2 x2→x4;

規則3 x3∧x4→x5,記為R1;

規則4 x3∧x6→?x2,記為R2。

假設規則庫中有n個選擇子(其中?x選擇子有d個),分別記為x1,x2,?x2,…,xn-d,并假設規則庫中有m條復合規則,分別記為R1,R2,…,Rm。

定義2(鄰接矩陣An×n)如果規則庫中不存在前提包含xi結論為xj的規則,記Ai,j=0;如果規則庫中包含簡單規則xi→xj,記Ai,j=1,而若包含簡單規則xi→?xj,則Ai,j+1=-1,若對應的?xi→xj,則Ai+1,j=-1,而?xi→?xj,則將規則轉換為其逆否命題xj→xi;如果規則庫中存在復合規則Rm,其前提包含xi,結論為xj,則Ai,j表示為二元組(xi,Rm),而若結論為?xj,則Ai,j表示為二元組-(xi,Rm)。

根據鄰接矩陣的定義可得圖2有向超圖的鄰接矩陣為:

鄰接矩陣可以通過掃描規則庫得到。顯然,在掃描過程中,如果元素|Ai,j|=1,則所有前提包含xi且結論為xj的復合規則均為從屬規則,從規則庫中刪除;如果元素Ai,j=±(xi,Rm),則所有從屬于Rm的復合規則均從規則庫中刪除。

3.3 有向超圖的路徑長度

定義3(路徑長度)路徑長度指該路徑從起點到終點所經過的最長路徑。即從xi到xj的某條路徑長度為k的條件是:對該路徑的最后一條規則R(顯然其結論為xj),從xi到ante(R)中至少一個元素的路徑長度為k-1。

如圖3所示,從x1到x5存在兩條路徑:(1)x1→x2,x2→x4,x3∧x4→x5;(2)x1→x3,x3∧x4→x5。在路徑(1)中,由規則的傳導性可知x1到x4的路徑長度為2,而規則x3∧x4→x5的ante(R)中蘊含了規則x2→x4的cons(R),因此路徑(1)中從x1到x5的路徑長度為3,同理可得路徑(2)中從x1到x5的路徑長度為2,取最長路徑得圖3中從x1到x5的路徑長度為3。

圖3 有向超圖的路徑長度

4 有向超圖的可達矩陣

4.1 可達矩陣的定義

有向超圖的可達矩陣有兩種:

若計算完Ek仍未檢測到冗余、環路、沖突,則Ek內元素絕對值均為0或1。為了便于后續的計算,將當前總可達矩陣Ek中非零元素的路徑長度存入矩陣Fn×n。

由定義3有向超圖的路徑長度可得Fn×n的定義為:

由定義可知,如果當前Dk中至少有一個元素絕對值為1,則Fn×n中對應位置的元素為k。因此,將Fn×n初值賦為,當計算完Dk(k=2,3,…)時,Fn×n更新為:

4.2 計算總可達矩陣E k+1

由鄰接矩陣的定義可知,將A中絕對值不為1的元素賦值為0,即可得到一步可達矩陣D1n×n和一步總可達矩陣E1n×n。

假設Dk和Ek都已求得,欲求Ek+1,需要先計算Dk+1。那么:

可得:

規定(矩陣中所有元素在計算過程中取絕對值參與計算,得出結果后再保持與同號):若=0或Al,j=0,l=1,2,…,n,則若=1?(xp,R′),且記R′為xp∧xq→xj,則:

5 規則庫檢測算法

本文提出了一種針對規則庫中從屬、冗余、環路和沖突的檢測算法,算法的具體步驟如下:

(1)整理規則庫,根據定義1所定義的有向超圖來表示規則庫中的規則。

(2)根據定義2構建出該有向超圖的鄰接矩陣An×n。

(3)預處理鄰接矩陣,判定并刪除An×n中的從屬規則:如果元素1,則所有前提包含xi且結論為xj的復合規則均為從屬規則,從規則庫中刪除;如果元素Ai,j=±(xi,Rm),則所有從屬于Rm的復合規則均從規則庫中刪除。

(4)將An×n中絕對值不為1的元素賦值為0得到一步可達矩陣和一步總可達矩陣,再將An×n中所有元素取絕對值得到路徑長度矩陣Fn×n,同時判斷:若||≥1,則規則庫中存在環路;若||=1且=-1或者|=1且||=-1,則規則庫中存在沖突。

算法流程圖如圖4所示。

圖4 算法流程圖

該算法的復雜度與規則庫的規模、選擇子的數量以及路徑長度有關。假設規則庫中規則的數量為m,選擇子的數量為n,路徑長度最長為r。

計算鄰接矩陣An×n需要掃描規則庫,該步驟的復雜度為O(m)。由計算Dk+1=Dk?A,復雜度為O(n3);計算復雜度為O(n2);計算Fn×n+→Fn×n,復雜度為O(n2);掃描,檢測冗余、環路和沖突的復雜度為O(n2)。

最大循環次數為r,因此總的復雜度為O(m)+r(O(n3)+O(n2)+O(n2)+O(n2)),約等于O(m+rn3+3rn2)。

因為算法中的矩陣大多是稀疏矩陣,所以還可以利用零元素節省大量存儲、運算和程序運行時間,從而進一步確保效率。

6 實驗

6.1 實例驗證

以下為鉆井液設計專家系統規則庫中的部分規則:

x1→x2;(若鉆井液類型為水基,則對漏失類型為滲漏的地層有效)

x1→x3;(若鉆井液類型為水基,則對漏失類型為完全漏失的地層有效)

x1→x6;(若鉆井液類型為水基,則對漏失類型為嚴重完全漏失的地層有效)

x4→x6;(若采用剪切稠化堵漏劑,則對漏失類型為嚴重完全漏失的地層有效)

x4→?x3;(若采用剪切稠化堵漏劑,則對漏失類型為完全漏失的地層無效)

x2∧x3→x4,記為R1;(若地層漏失類型為滲漏或者完全漏失,則應采用剪切稠化堵漏劑)

x4∧x5→x1,記為R2。(若采用剪切稠化堵漏劑,并且加入細粒橋堵劑,則其適用于水基類型鉆井液)

將上述規則表示為圖5所示的有向超圖。

圖5 案例所述規則的有向超圖表示

將圖5表示為鄰接矩陣得:

將A中絕對值不為1的元素賦值為0可得D1和E1,再將所有元素取絕對值得到F:

判斷E1,未檢測到冗余、環路或沖突,計算D2:

D2=D1?A

由式(2):存在規則R1:x2∧x3→x4,由于F1,2=F1,3=1,可得D21,5=1。

判斷E2,未檢測到冗余、環路或沖突,計算D3:

由式(1):存在規則R2:x4∧x5→x1,由于F1,5=2≤2,可得D31,1=1。

根據第5章的檢測算法判斷E3:|=1≥1,檢測到環路,即x1可達x1;E13,3=1且E13,4=-1,檢測到沖突,即x1可達x3同時可達?x3;E31,7=2≥1,檢測到冗余,即x1通過兩條路徑可達x6。

可以看出,本算法能夠有效地檢測出規則庫中存在的從屬、冗余、環路和沖突等全部問題,且整個算法的計算過程較為簡單快速。

6.2 對比分析

本算法能夠有效地檢測出規則庫中的從屬、冗余、環路和沖突等全部問題,相較于文獻[4-9]中提出的算法,針對于其中的一種或幾種,本算法能夠將規則庫中的問題更加全面地檢測出來。

根據文獻[10]中算法得到圖5的鄰接矩陣為:

將A中絕對值不為1的元素賦值為0得到D1、E1和F:

對比本節實例驗證部分可以看出,本算法構建的鄰接矩陣規模大約減小了3/4,同時后續所有參與運算的矩陣規模都隨之大大減小,使得運算效率獲得了較大提升。

7 結論及展望

本算法結合有向超圖和鄰接矩陣來表示規則,通過計算可達矩陣和總可達矩陣來檢測規則庫中存在的問題。實驗表明,本文提出的算法能夠準確地檢測出規則庫中存在的從屬、冗余、環路和沖突等全部問題,而且算法構建的鄰接矩陣規模較小,參與運算的矩陣又大多是稀疏矩陣,因此計算過程較為簡單快速,從而確保了效率。而當規則結論部分為由若干選擇子組成的集合時,對規則庫從屬、冗余、環路和沖突的檢測有待進一步研究。

另外,當規則的數量很大時,參與計算的矩陣規模也會變得很大,算法的效率可能會隨之下降,這時可以先對規則進行分類處理,為其設計一個分類算法,本文的下一步工作將圍繞著這個問題展開。

猜你喜歡
庫中鄰接矩陣環路
輪圖的平衡性
英語專業學士學位論文摘要的元話語特征研究
街頭的人
外差式光鎖相環延時對環路性能影響
功能強大的濾鏡庫
從今天開始
選取環路切換策略的高動態載波跟蹤算法研究*
基于鄰接矩陣變型的K分網絡社團算法
基于子模性質的基因表達譜特征基因提取
單脈沖雷達導引頭角度跟蹤環路半實物仿真
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合