胡亞楠,李春生,,張可佳,富 宇
(東北石油大學 a.計算機與信息技術學院; b.軟件學院,黑龍江 大慶 163318)
工業生產引發的大規模故障通常表現出不均勻性、漸進性和并存性等特點。為了在工業生產過程中改善產品質量、維護過程安全、提高生產效率,需要進行有效的故障診斷,這也是近幾十年來過程控制領域最熱門的研究方向之一[1-2]。針對故障診斷的研究多數基于分布式計算環境,通過對問題域的描述、分解和分配,將復雜問題分解為面向特定領域的診斷任務集,從而在子系統中采用相對簡單的診斷方法,并行協作解決大規模診斷問題[3]。因此,將故障診斷任務分解成獨立且粒度適宜的任務是故障診斷的關鍵。
目前,國內外學者對任務分解方法進行了大量的研究。文獻[4]以多代理協作的IT復雜應用管理模型為基礎,提出一種動態多角色的管理任務層級分解算法,以此提高多代理的執行效率和穩定性,以及執行子任務的多代理的負載平衡性。文獻[5]構建基于數據級任務分解的配電網分布式并行計算平臺,實現大規模配電網的實時分析計算,分別配置不同子系統實現任務生成、任務分解、任務派發以及子任務計算等功能。文獻[6]提出基于相關性的擴散任務規劃方法,結合粒子群聚類優化分解算法實現任務集劃分。文獻[7]提出基于綜合定量分析的產品定制任務分解系統模型,解決產品定制協同開發任務分解缺乏綜合定量分析的問題。但上述研究均未考慮在執行故障診斷任務過程中,清除無效冗余子任務以及提高子任務故障診斷的準確率的影響。
本文提出一種基于虛擬導診的故障診斷算法,通過虛擬導診對故障任務進行初始診斷,剔除冗余子任務,并根據初始診斷故障類型對任務進行分解與分類,以此提高故障診斷任務的處理效率,并利用標準測試函數和三元復合驅采出井卡泵故障診斷實例驗證該算法的有效性和準確性。
故障診斷模型主要包括任務分診與任務執行2個部分,其工作流程如圖1所示。

圖1 基于虛擬導診的故障診斷模型框架
由圖1可知,故障診斷的具體步驟如下:
步驟1用戶定義故障診斷任務。
步驟2虛擬導診監測到任務后,對故障診斷任務進行標記。
步驟3虛擬導診利用專家知識對標記后的任務進行推理,實現冗余任務的剔除,并對任務進行初始故障類型劃分,完成任務分解,即任務分診。
步驟4分診后的任務被放置在候診區,等待執行。
步驟5當MAS中有滿足執行任務所需能力的空閑Agent聯盟時,MAS接診。
步驟6接診后,MAS根據Agent的能力與任務粒度對分診后的任務進行分配。
步驟7在任務分配完成后,開始執行任務并生成故障任務診斷報告。
步驟8任務執行完成后,MAS將故障診斷報告反饋給用戶,至此結束一次故障任務診斷。
本文模仿醫院導診員的真實工作場景與工作職能,設計基于Agent的虛擬導診進行故障診斷任務的導診工作,實現任務的初期分揀和冗余任務清除,完成任務分解,并在分診過程中不斷更新知識庫,實現自我學習。虛擬導診的具體工作機制如圖2所示。

圖2 虛擬導診工作機制
本文虛擬導診的具體步驟如下:
步驟1對故障診斷任務進行標記,用W表示故障診斷類任務,把派送的任務標記為Wi。
步驟2生成任務矩陣。根據故障診斷任務的時間維、地域維及特征維,將任務轉換成任務矩陣,實現任務的符號化表述。其中,時間維表示為T={TTime1,TTime2,…,TTimem},地域維表示為L={WWell1,WWell2,…,WWelln}。任務矩陣表示形式如下:

步驟3將任務轉化為微粒化的任務立方體形式,便于任務的拆分與執行。一個任務立方體由故障診斷任務、任務度量和任務維組成,而任務維又由任務維屬性和任務維層次結構組成,如圖3所示。

圖3 任務立方體組成
將任務立方體定義為一個四元組TTC=(D,H,M,f)。其中各項描述如下:
1)D={d1,d2,…,dn}表示任務維屬性的集合,共有n個維,di表示第i個維度,di的值域用dom(di)表示,并記dom(D)=dom(d1)×dom(d2)×…×dom(dn),表示所有維屬性的值域。
2)H={(d1,L1),(d2,L2),…,(dn,Ln)}表示任務維層次集合,假設每個任務維只有一個層次結構,Li表示任務維di中的層次結構,用偏序關系“≤”表示,并引入一個隱含頂層層次屬性LAll,即Li表示為Li,1≤Li,2≤…≤Li,n≤LAll。
3)M={m1,m2,…,mk}表示任務度量屬性的集合,共有k個度量,mi表示第i個度量,mi的值域用dom(mi)表示,并記dom(M)=dom(m1)×dom(m2)×…×dom(mk),表示所有維屬性的值域。
4)f:dom(D)→dom(M)表示dom(D)到dom(M)的部分映射,是任務立方體的基,其中所有任務的粒度都是相同的。
步驟4利用專家推理機制實現任務清洗與分類,清洗冗余任務,并完成任務分解。
步驟5任務分解完成后,將任務放置在候診區,等待MAS的回應。
步驟6任務診斷完成后,虛擬導診根據MAS反饋的分診準確率更新自身推理知識庫,優化推理機制。
專家系統是實現故障診斷推理的常用方法之一[8-9]。其中,基于置信度的條件產生式規則,簡稱置信規則庫(Belief Rule Base,BRB),是常用的專家系統知識表達形式[10]。利用BRB系統對實際問題進行建模,當參數維度較高或關聯關系較復雜時,易導致搜索過程重復迭代,從而出現規則組合爆炸問題。為解決這一問題,文獻[11]提出統計效用的概念,文獻[12]利用灰靶理論、多維定標法、主成分分析來選擇關鍵前提屬性,從而減少前提屬性的數量,文獻[13]引入粗糙集理論,提出客觀的規則約簡方法。上述優化方法雖然不同程度地避免了組合爆炸問題,但造成BRB系統的推理能力有所下降。
為解決BRB參數取值及組合爆炸問題,文獻[14]提出擴展置信規則庫(Extended Belief Rule Base,EBRB),在前件規則中加入置信分布,并提出一種規則生成機制,通過訓練數據生成初始置信規則,降低規則組合爆炸概率。然而,知識規則中存在多條規則前件屬性相同但后件結果完全不同的規則不一致情況。針對這一問題,文獻[15]提出動態規則激活方法,基于“智能”規則激活,動態地選擇被激活的規則,在樣本數據生成的規則庫中尋找不一致性之間的平衡,從而獲得更好的性能,但該方法只考慮了規則的數量。文獻[10]提出一種基于帶精英策略的非支配排序遺傳算法(Non-dominated Sorting Genetic Algorithm Ⅱ,NSGA-Ⅱ)的激活規則多目標優化方法,將激活規則的不一致性與激活規則的激活權重總和分別作為目標函數,通過求解多目標優化問題獲得相對較優的激活規則集合,并用于最終的合成推理,但目標函數的組成缺少對前提屬性數量的考量。
本文借鑒基于分解的多目標粒子群優化算法(Multi-objective Particle Swarm Optimization Algorithm based on Decomposition,MPSO/D)[16],提出基于置信規則庫系統的激活規則優化方法,該方法以最終參與合成推理的激活規則集合的不一致性與激活權重和作為多目標優化問題的目標函數,通過MPSO/D求解不一致性更小的激活規則集合,從而降低不一致激活規則對推理準確性的影響。在此基礎上,通過標準測試函數和三元復合驅采出井卡泵故障診斷實例對本文方法的有效性與可行性進行實驗驗證。
EBRB由一系列置信規則組成,可表示為R={R1,R2,…,Rk,…,RL},其中,第k條置信規則Rk表示形式如下:
Rk:IF{A,αk}→THEN{(D1,β1,k),(D2,β2,k),…,
(DN,βN,k)}
(1)
其中,{A,αk}表示分布式置信度,可表示為如下形式:
k=1,2,…,L}

在文獻[14]的規則生成機制中,通過訓練數據生成初始置信規則。設Ui(i=1,2,…,Tk)為第k個訓練數據的第i個前件屬性,設輸入值為xi,專家將第i個前件屬性的參考值Ai,j與數值量建立如下對應關系:
γi,jmeansAi,j
(2)
若專家對參考值的傾向程度滿足γi,j+1>γi,j,則輸入值xi可等價表示分布式置信度的期望形式,具體如下:
E(xi)={(γi,j,αi,j),i=1,2,…,Tk,j=1,2,…,Ji}
(3)
αi,j的計算公式如下:
(4)
αi,j+1=1-αi,j,γi,j≤xi≤γi,j+1,j=1,2,…,Ji-1
(5)
αi,s=0,s≠j,j+1,s=1,2,…,Ji
(6)
由式(4)~式(6)可計算出EBRB的前件部分,與輸入值對應的輸出值yi可采用相同的論證方法得出。

(7)

(8)
EBRB系統中第k條置信規則的激活權重可由如下公式得出:
(9)

在獲得激活權重后,根據式(10)~式(13)將置信度βj,k轉化為基本可信值,具體如下:
mH,i=ωiβn,i
(10)
(11)
(12)
(13)
其中,n=1,2,…,N。通過使用證據推理方法計算評價結果的基本可信值,并轉化為置信度的形式,具體如下:
(14)
(15)
(16)
(17)
(18)
(19)
根據式(14)~ 式(19)得出具有置信分布形式的BRB推理輸出,如式(20)所示:
f(x)={(Dn,βn),n=1,2,…,N}
(20)
文獻[17]在ER解析算法的基礎上,推導出組合所有置信規則的計算公式,具體如下:
βj=
(21)
(22)
多目標優化問題(Multi-objective Optimization Problem,MOP)是使多個目標在給定區域上最優的問題,其數學表達式如下:
(23)

粒子群優化算法是求解MOP的方法之一[18],是一種隨機、基于種群和全局的進化算法。粒子群優化算法初始化為一群隨機粒子,通過迭代找到最優解。第k個粒子的速度表示為vk=(vk1,vk2,…,vkn),位置表示為xk=(xk1,xk2,…,xkn)。利用粒子當前的最優位置(pbest)和最佳鄰域粒子的位置(gbest)更新粒子的速度向量,則第k個粒子的速度和位置更新如下:
(24)
(25)
其中,j=1,2,…,n,t為代數,c1和c2為學習因子且c1=c2=2,r1和r2是介于[0,1]間的隨機數,w為慣性權重。

為了保持算法的多樣性,提高算法收斂速度,采用基于目標分解的粒子群優化算法,求解MOP。通過空間分解與解分類、種群分類更新策略維持目標函數解的多樣性,利用交叉操作與粒子群更新策略實現決策空間搜索,應用選擇策略實現局部或全局搜索。
3.1.1 空間分解與解分類
將MOP的目標空間Y分解為基于一組方向向量的子目標空間Y1,Y2,…,YN,并對所得解在子目標空間中進行分類,使得每個子目標空間至少有一個解。因此,對于含有N個方向向量的向量集R=(γ1,γ2,…,γN),得到當前解集POP,則目標空間的分解及解的分類可用如下公式表示:
(26)
Yi={F(x)|x∈Ω,
(27)
其中,Z=(Z1,Z2,…,Zm)是一個參考點Zi=min{fi(x)|x∈Ω},Δ(F(x),γi)是方向向量γi和F(x)-Z之間夾角的余弦值。如果pi(1≤i≤N)為空,則選取POP中Δ(F(x),γj)最大的解xi放入pi,使每個子目標空間中都至少有一個解,以此保持得到的解的多樣性。
通過式(26)將解集POP劃分為N類即p1,p2,…,pN,利用式(27)將目標空間Y劃分為N個子目標空間。
3.1.2 種群分類更新策略
精英策略通常能加快收斂速度,提高求解質量。因此,采用基于精英保留策略的更新策略,以保持解的多樣性和提高解質量。更新策略的細節如下:
1)若當前解pi的目標向量不在子目標空間Yi中,而新解目標向量在Yi中或新解支配當前解,則新解為Yi的當前解。
2)若pi在Yi中,當Yi中只有唯一解時,則選擇此解;當Yi中有兩個及以上解時,則新解的目標向量必須在Yi中,并且新解支配pi,若新解和pi互不支配,則新解的目標向量和方向向量γi夾角要小于pi的目標向量與γi的夾角。
由此可見,本文更新策略具有以下特性:
1)使每個子目標空間都有一個解,提高了目標空間中解的多樣性。
2)當非支配解和支配解同時存在于子目標空間時,選擇非支配解,使得解能夠快速收斂到Pareto前沿。
3)對于子目標空間,保留解的目標向量與對應子區域的方向向量的夾角越小,解在目標空間中分布越均勻。
然而,這種策略可能導致一些更好的解被丟棄。圖4為一種更新策略,通過5個加權向量γ1,γ2,γ3,γ4,γ5將目標空間劃分為5個子目標空間(Y1,Y2,Y3,Y4,Y5)。雖然解d優于解c,但在更新策略下,解d將被保留,而解c被丟棄,這可能會影響某些解的收斂性。為解決此問題,本文采用一種特定的選擇方案,在稀疏區域的一個解(無論其是否為非支配解)將更可能被選擇產生后代。

圖4 本文更新策略示意圖
3.1.3 交叉操作
MPSO/D使用粒子群優化算法(Particle Swarm Optimization,PSO)的交叉操作以及鄰域校正2種交叉操作。PSO的交叉操作實現全局搜索,鄰域校正進行局部搜索。其中,PSO的交叉操作使用式(24)和式(25)。鄰域校正通過當前粒子的鄰域進行搜索(利用鄰域信息對當前粒子進行關聯),可以提高解的質量并加速收斂到一個好的Pareto前沿,同時可改善局部搜索能力。在這項工作中,一個粒子x根據以下修正操作產生新的解:
xnew=x+0.5(x′-x″)
(28)
其中,x′為x的最佳鄰域粒子位置,x″為x的當前最優位置。
3.1.4 選擇策略
合適的選擇策略可以提高算法的性能。選擇策略的主要目標是幫助交叉粒子進行局部搜索和全局搜索,本文主要采用選擇策略來選擇產生的后代解,選擇策略主要有2種。
第1種擇策略用于選擇粒子,即式(28)中的x或者式(24)、式(25)中的xk。在更新策略后,保存在子區域中的支配解d,與兩個相鄰子區域的兩個非支配解b或e相比,它與相鄰子區域的解a、b、e、f距離可能更遠,換句話說,解d的鄰域相對稀疏。但是,此解及其相鄰解b或e在保持多樣性方面具有重要意義,該解及其相鄰解的子代更接近支配解d相應子區域的Pareto最優解,而非其他非支配解生成的子代。因此,這些解決方案應該分配相對較高的適應度值。為了達到此目的,在選擇粒子時,利用擁擠度距離計算解的適應度值,具體步驟如算法1所示。
算法1擁擠度距離計算算法
procedure CrowdingDistance(F)
N=|F|
for i=1,2,…,N do
F[i]dist=0
end for
for m=1,2,…,M do
SORT(F,m)
F[1]dist=F[N]dist=
for i=1,2,…,N do
end for
end for
end procedure

利用上述方式,選擇具有稀疏鄰域的解生成新解集。然后,通過二進制錦標賽選擇種群中最佳解作為父代種群以生成新解。
第2種選擇策略用于確定選擇粒子的最佳鄰域粒子位置及當前最優位置。為節省存儲空間,算法將粒子的pbest作為其以前最好的相鄰粒子,并在相鄰粒子中隨機選取。在單目標問題中,只有一個gbest,但在多目標優化問題中,存在一組非支配解集,每個非支配解都可以看作是引導非支配解向Pareto最優解移動的最優解。在此策略中,有兩種方法選擇gbest。第1種方法是從當前人群中隨機選擇一個最佳方案,從而幫助交叉操作進行全局搜索。實踐證明,利用相鄰解生成新的解可以提高算法的搜索能力。第2種方法是利用粒子的鄰域來確定gbest,其中gbest是相鄰粒子的非支配解,其目標向量與相鄰向量的中心向量的夾角最小。這種方法可以幫助交叉粒子進行局部搜索。
3.1.5 算法步驟
根據上述方法,基于分解的多目標粒子群優化算法的具體步驟如下:
步驟1初始化。給定N個方向向量(γ1,γ2,…,γN),t=0,隨機生成初始種群POP(t)和初始速度集V(t),大小為N,令Zi=max/min{fi(x)|x∈POP(t),1≤i≤m}。
步驟2產生新解。利用式(24)和式(25)或式(28)生成臨時種群pop的后代,得到新速度集V(t+1),后代集合標記為ο。
步驟3更新解。對每一個j=1,2,…,m,如果Zj>max/min{fi(x)|x∈ο},則更新Zj=max/min{fi(x)|x∈ο}。首先,通過式(26)對種群ο進行分類,然后通過更新策略選擇N個最優解,放入種群POP(t+1)中,更新t=t+1。
步驟4算法終止。如果滿足終止條件,則終止;否則,轉到步驟2。
在該算法中,每個粒子的pbest和gbest都不需要存儲,可減少存儲空間。同時,該算法保證每個子區域在每一代都有一個解,并在搜索過程中提高種群多樣性,當某些子區域的Pareto最優解比其他子區域的Pareto最優解更難獲得時,這一特點就顯得尤為重要。
本文采用基于MPSO/D的激活規則多目標優化算法,并設激活規則不一致性與激活規則權重為多目標優化的2個函數。設EBRB中有2條規則Rp和Rq,分別用Aatt表示規則的不一致性,用Ccon表示推理結果的相似度,則多目標優化函數中Aatt和Ccon的計算公式如下:
(29)
(30)
規則p和規則q之間的一致性可用以下公式表示:
Ccons(Rp,Rq)=
(31)
第i條規則的不一致性表示為如下形式:
(32)
因此,MPSO/D優化目標為:
minF(R)=(f1(R),f2(R))
(33)
在式(32)中,R表示最終參與ER合成推理的激活規則集合,l表示參與ER合成推理的激活規則總數。
基于MPSO/D的激活規則多目標優化算法流程如下:
步驟1計算EBRB中每條激活規則的激活權重,將激活權重大于0的規則組成激活規則集合R。
步驟2對集合R中規則進行編碼,將參與最終ER合成推理的規則標記為1,不參與則標為0。
步驟3利用式(33)求解規則集合R中激活規則之間滿足不一致性最小、激活權重和最大,且編碼為1的Pareto最優解集C。
步驟4從C中選擇編碼規則為2的規則組成最優解,參與最終ER合成推理,以此得出推理結論。
為了驗證算法的性能,采用如下2種方式進行測試實驗:
1)本文選用NSGA-Ⅱ、基于分解的多目標進化算法(Multi-Objective Evolutionary Algorithm Based on Decom-position,MOEA/D)[19]、多目標粒子群優化算法(Multi-Objective Particle Swarm Optimization,MOPSO)[20]算法與MPSO/D算法進行比較。通過標準測試函數驗證算法的收斂性與多樣性。
2)以三元復合驅采出井卡泵故障診斷為實例,選用NSGA-Ⅱ-EBRB系統、Liu-EBRB系統與基于MPSO/D算法的EBRB系統進行比較,驗證本文激活規則優化在故障診斷過程中任務分解階段的有效性。
本文采用的測試函數包括4個ZDT問題[21]和2個DTLZ問題[22],是當今國際EMO領域廣泛采用的測試函數,函數數學定義見表1。

表1 測試函數數學定義Table 1 Mathematical definitions of test functions
在表1中,ZDT1~ZDT3有30個決策變量,ZDT4有10個決策變量,DTLZ問題的決策變量和目標維數可以擴展到任何數目。本文中k和|xk|的取值[24]如下:
DTLZ1,k=3,|xk|=5
DTLZ2,k=3,|xk|=10
實驗參數設置如下:
1)實驗在英特爾Core i5處理器,3.2GB CPU,4.0 GB RAM的個人PC上完成。
2)種群規模為100個個體。
3)交叉概率0.8,變異概率0.3,迭代次數100。
表2給出4種算法30次獨立運行所得解的世代距離(Generational Distance,GD)、反世代距離(Inverted-Generational Distance,IGD)及超體積(Hypervolume,HV)指標的平均值與最優值的統計結果。由表2可知,對于度量指標GD,MPSO/D在ZDT1問題中劣于MOPSO與NSGA-Ⅱ,但優于MOEA/D,在問題ZDT3中MPSO/D只劣于NSGA-Ⅱ,優于其他2種算法。對于度量IGD,MPSO/D只在問題ZDT1上處于劣勢。對于度量HV,MPSO/D在ZDT1和ZDT3問題上劣于MOPSO算法,但優于其他2種算法。上述比較結果表明,在6個測試函數中,MPSO/D維持解的收斂性與多樣性的能力總體上要優于NSGA-Ⅱ、MOEA/D和MOPSO。為了更直觀地比較4種算法的性能,每種算法取30次運算按IGD值排序后的中間值,將該次得到的非支配解展示在圖5和圖6中。其中,圖5描述了4種對比算法在ZDT1~ZDT4上的非支配解,圖6描述了4種對比算法在DTLZ1、DTLZ2上得到的非支配解。由圖5、圖6可知,對于6個測試函數,MPSO/D、NSGA-Ⅱ、MOEA/D及MOPSO得到的非支配解都不能覆蓋整個Pareto前沿,但MPSO/D更接近于所有6個測試函數的Pareto前沿。上述結果表明,對于這6個測試函數,MPSO/D比NSGA-Ⅱ、MOEA/D和MOPSO更能維持解的多樣性。

表2 4種算法的GD,IGD和HV的度量值Table 2 Measure valus of GD,IGD and HV of four algorithms

圖5 4種算法在測試函數ZDT1~ZDT4上得到的非支配解

圖6 4種算法在測試函數DTLZ1和DTLZ2上得到的非支配解
為驗證本文算法的有效性,在三元復合驅采出井卡泵故障診斷中進行實驗。該實例的研究對象為大慶市某采油廠某三元復合驅區塊的437口采出井。由于井口加藥后易出現井筒結垢現象,長期結垢會引起舉升系統卡泵故障,影響油田產量,因此以結垢診斷作為卡泵故障診斷的任務分診條件。

實驗的測試數據為2017年某三元復合驅區塊437口采出井月度結垢數據,訓練數據按照一定比例分別從3個時間段隨機選取500組數據。因此,構建的EBRB系統共有1 500條規則,實驗利用本文算法構建MPSO/D-EBRB系統,并將實驗結果與NSGA-Ⅱ-EBRB系統及Liu-EBRB系統進行對比,衡量的指標為平均絕對誤差(Mean Absolute Error,MAE)。
表3給出Liu-EBRB系統、NSGA-Ⅱ-EBRB系統和MPSO/D-EBRB系統與測試數據真實輸出的誤判率與MAE值。由表3可知,Liu-EBRB系統對診斷的誤判個數明顯高于其他2種算法,同時,MPSO/D-EBRB系統相對于Liu-EBRB系統的MAE值減小82.3%,相對于NSGA-Ⅱ-EBRB系統減少54.8%,驗證了MPSO/D-EBRB系統的有效性。

表3 結垢診斷實例的實驗結果Table 3 Experimental results of scaling diagnosis examples
為進一步直觀地展示3種EBRB系統的診斷效果,繪制3種系統產生的推理輸出與測試數據的真實輸出的對比,如圖7所示。可以看出,Liu-EBRB系統的推理輸出和真實輸出的差距較大,而NSGA-Ⅱ-EBRB系統和MPSO/D-EBRB系統由于均減少了不一致規則,相對于Liu-EBRB系統錯誤率降低,提高了虛擬導診的分診推理能力,而MPSO/D-EBRB系統的推理輸出優于NSGA-Ⅱ-EBRB系統。

圖7 3個系統的實例測試比較Fig.7 Comparison of instance test of three systems
工業生產中造成故障的原因復雜多樣,且計算規模大,故障診斷常因數據推理不一致導致診斷準確率不高。因此,本文提出一種基于虛擬導診的任務分解算法,通過精準的任務分診提高故障診斷準確率。虛擬導診利用置信規則庫系統實現任務分診,采用基于MPSO/D算法的激活規則多目標優化方法,把最終參與合成推理的激活規則集合的不一致性以及激活權重和作為多目標優化問題的目標函數,通過MPSO/D算法求解不一致性更小的激活規則集合,從而降低不一致激活規則對于EBRB系統推理準確性的影響,提高EBRB系統的推理能力。實驗結果表明,與MOEA/D、MOPSO、NSGA-Ⅱ相比,該算法的推理準確性較高。如何減少算法的復雜度,并使虛擬導診根據故障需求自主學習知識,將是未來研究的重點。