陳海彬,郭金玉,謝彥紅
(沈陽化工大學 信息工程學院,遼寧 沈陽 110142)
現(xiàn)代化工工業(yè)具有大規(guī)模、高危性、多變量的特點,隨著設備結構日趨復雜,其故障類別日益增多,反映故障狀態(tài)、特征的變量也相應增加.在實際檢測過程中,為了使檢測準確可靠,總要采集盡可能多的數(shù)據(jù)樣本,以獲得足夠多的信息.
當前,對工業(yè)過程故障檢測的研究方法有3類[1-2]:基于數(shù)學模型的方法、基于人工智能的方法和基于數(shù)據(jù)驅動的方法.基于數(shù)據(jù)驅動的方法正成為故障檢測領域內的研究熱點.常用的是統(tǒng)計過程控制(Statistics Process Contol,SPC)方法.統(tǒng)計過程控制(SPC)的基本概念是通過判斷當前數(shù)據(jù)是否在正常數(shù)據(jù)附近來檢測故障,這種判斷是基于當前數(shù)據(jù)所在正常數(shù)據(jù)的概率密度基礎上的.通常估計多維空間的概率密度很困難.為了避免估計多維概率密度函數(shù)及處理過程的非線性和時變性,Peter He Q 提出了基于k 近鄰規(guī)則(k-Nearest Neighbor Rule,kNN)的故障檢測算法[3-4],這種方法簡單、直觀,不足之處是計算量較大,因為對每一個待分類的樣本都要計算它到全體已知樣本的距離,才能求得它的k 個最近鄰點.
一條生產線在生產過程中往往會出現(xiàn)幾種不同工況,而對于采集到的數(shù)據(jù)樣本的分類邊界常常是不確定的.這種多工況的生產過程阻礙了kNN 故障檢測方法的在線應用.因為在數(shù)據(jù)工況不明了的情況下,不加區(qū)分地對其進行kNN 故障檢測很容易產生誤報或者漏檢情況.為了減少計算量,提高故障檢測準確性,本文研究基于改進K-means 理論的kNN 故障檢測方法.首先利用改進K-means 方法對仿真生成的青霉素數(shù)據(jù)進行聚類,然后利用kNN 方法進行故障檢測,并與未進行分類而直接進行kNN 故障檢測的方法進行了比較.
J.B.MaeQueen 在1967 年提出的K-means 算法是一種應用非常廣泛的聚類算法.K-means 算法屬于聚類方法中一種典型的劃分方法,它是一種首先給出聚類類別數(shù)的聚類算法.1999 年Jian等對K-means 算法進行了改進,其基本操作是子類合并,通過定義兩個子類中心的最小距離的閾值θ,來獲得最優(yōu)的子類數(shù)量和子類中心.該算法實際上通過定義一個合適的θ,折中考慮了模型的準確性和復雜性[5].
算法的輸入是待分類樣本{x1,x2,…,xn},以及兩個子類中心的最小距離閾值θ.算法的輸出是子類數(shù)量C,子類中心{W1,W2…Wc}.
聚類算法的具體步驟為:
(1)在空間內放置k 個數(shù)據(jù)點,這些數(shù)據(jù)點代表初始聚類的中心,一般是從樣本中均勻抽取的.
(2)若兩個子類中心的距離小于預定的閾值θ,剔除其中一個聚類中心.
(3)將每個對象分配到離它最近的中心聚類.
(4)Inum次迭代后,若某子類中心沒有俘獲一定數(shù)量的樣本,則剔除該類.
(5)當所有對象都分配之后,重新計算出k個中心點的位置.
(6)如果算法滿足收斂條件則結束,否則返回步驟2.
(收斂條件有:兩次迭代中的聚類中心距離的變化小于一個很小的數(shù)ε,或者每個子類中樣本到子類中心的距離平方和以及子類之間的距離平方和達到最小)
改進K-means 算法是目前用于科學研究的聚類算法中極具影響的一種技術,它能夠很好地根據(jù)數(shù)據(jù)的特性將數(shù)據(jù)收斂為K 類.對于多工況數(shù)據(jù),由于不同工況的工作條件不同,采集到的數(shù)據(jù)特性也會有所不同,從而利用改進Kmeans 算法可以很好地將不同工況的數(shù)據(jù)分別聚為一類.同時,從以上過程可以看出:改進Kmeans 算法的主要優(yōu)點在于算法簡單、快速,且能有效處理大規(guī)模數(shù)據(jù),能夠很好地彌補kNN計算量大的缺點.
基于kNN 的故障檢測算法的思想是正常樣本的軌跡與訓練樣本的軌跡相似,而故障樣本的軌跡偏離訓練樣本的軌跡,故障樣本與最近鄰訓練樣本的距離大于正常樣本相應的距離.通過確定訓練樣本與最近鄰的訓練樣本距離的分布,就可以定義具有一定置信水平的閾值.如果未分類的樣本與最近鄰訓練樣本的距離小于閾值,則這個樣本是正常的;否則樣本是故障的[3-4].基于kNN 的故障檢測方法由兩部分構成:建立模型和故障檢測.
(1)建立模型
①在訓練數(shù)據(jù)集合中找到每個樣本的k 個最近鄰.
②對每個樣本計算k 個最近鄰距離的平方和.第i 個樣本的k 個最近鄰距離的平方和定義為:
③確定進行故障檢測的閾值.由于D2i 的分布逼近非中心的χ2分布,可以確定具有置信水平α 的閾值確定閾值的另外一種常用方法是在正常操作條件下基于訓練數(shù)據(jù).
(2)故障檢測
對未分類的樣本X,故障檢測部分由3 步組成:
①從訓練集合中找到樣本X 的k 個近鄰.
一條生產線在生產過程中往往會出現(xiàn)幾種不同工況,而對于采集到的數(shù)據(jù)樣本的分類邊界常常是不確定的,因此,需要對采集到的原始數(shù)據(jù)進行聚類.下面運用改進K-means 方法進行聚類,然后利用kNN 方法進行故障檢測,從而使故障診斷能夠更加精確.基于改進K-means 的kNN 方法綜合了兩種方法的優(yōu)點,由建立模型和故障檢測兩步組成.具體步驟為:
(1)建立模型
①通過改進K-means 將原始建模數(shù)據(jù)分為C 個類,每一類的中心為Wc(c=1,2,…,C);
②利用kNN 方法,計算每類k 個鄰近距離平方和的閾值.建立模型過程如圖1 所示.
圖1 基于改進K-means 的kNN 建模流程Fig.1 kNN modeling flow chart based on improved K-means
(2)故障檢測
①對新的待檢測樣本,分別與每類的中心Wc求距離,將該樣本分配到離它最近的中心聚類;
②在該待檢測樣本所在的聚類中,通過kNN 方法進行故障檢測,判斷其是正常還是故障.具體過程如圖2 所示.
圖2 基于改進K-means 的kNN 故障檢測流程Fig.2 kNN fault detection flow chart based on improved K-means method
青霉素作為一種抗生素,具有廣泛的臨床醫(yī)用價值,其生產過程是一個典型的非線性、動態(tài)、多階段間歇生產過程[6].文中運用的數(shù)據(jù)來自美國Illinois 州立理工學院AliCinar 領導的過程監(jiān)控與技術小組設計的青霉素生產仿真軟件Pensim 2.0.通過該軟件可以仿真不同初始條件下的青霉素生產過程的各個變量.影響青霉素發(fā)酵過程的可在線測量變量主要有空氣流量、攪拌功率、底物流加速度、溫度、反應體積等[7].
選取3 種工況75 個正常批次,其中每批次18 個變量,采樣樣本400(每1 h 采樣1 次).3 種工況反應體積分別設為130、160 和190 L,每種工況各產生25 個批次.為驗證該方法對多工況故障診斷的效果,對應3 種工況,在200 h 對通風率和攪拌功率分別加入5 %、10 %的斜坡誤差,直到結束,每種工況各產生4 批故障數(shù)據(jù).
間歇過程數(shù)據(jù)是三維矩陣,在進行故障檢測前需要對數(shù)據(jù)進行預處理.將每一批次的二維數(shù)據(jù)按時間展開成一維數(shù)據(jù),如圖3 所示.
圖3 數(shù)據(jù)展開方法Fig.3 Data unfold method
圖3 中I 表示采樣批次,J 表示變量,K 表示采樣時刻.對于每一批次,將每一個采樣時刻所有變量的數(shù)據(jù)橫向展開可得到一個1 ×(400 ×18)的矩陣,所有建模數(shù)據(jù)展開后得到一個75 ×(400 ×18)的二維矩陣,所有故障數(shù)據(jù)展開后得到一個12 ×(400 ×18)的二維矩陣.
圖4 為通過改進K-means 對75 批次的正常數(shù)據(jù)進行聚類的結果.其中75 批次數(shù)據(jù)分成了3 類,表明75 批次數(shù)據(jù)是在3 種不同工況下產生的,這與數(shù)據(jù)采集仿真時的設定一致.
圖4 基于改進K-means 方法的青霉素數(shù)據(jù)聚類Fig.4 The penicillin data clustering based on improved K-means method
為了驗證模型的有效性,現(xiàn)從3 種工況中各隨機抽取2 個批次作為校驗批次,加入故障數(shù)據(jù),從而得到新的建模數(shù)據(jù)為69 ×(400 ×18),新的待檢測數(shù)據(jù)為(12 +6)×(400 ×18).
在傳統(tǒng)kNN 故障檢測方法中k 的取值為3,如圖5 所示前12 個批次為故障批次,后6 個批次為校驗批次.圖中虛線對應95 %的控制限.從圖5 中可以看出:傳統(tǒng)kNN 故障檢測方法可以檢測到所有的12 個故障批次,但是對第1 個工況的1 個校驗批次產生了誤報情況.對于產生這種結果有兩種原因:(1)控制限設置為95 %,允許5 %的誤差出現(xiàn),造成了1 個校驗批次的誤報;(2)3 種不同工況的數(shù)據(jù)統(tǒng)一處理,將會把整體數(shù)據(jù)的控制限向下拉低,使平均距離較大工況的數(shù)據(jù)更容易超出控制限,產生誤報.
圖5 傳統(tǒng)kNN 的故障檢測Fig.5 The traditional kNN fault detection
基于改進k-means 的kNN 故障檢測算法首先對3 種工況進行建模,對待檢測的批次進行工況歸屬判斷,然后通過對應工況的kNN 故障檢測模型進行檢測,其中k 取值為3.檢測結果如圖6 所示.圖中虛線對應95 %的控制限.
圖6 基于改進K-means 的kNN 故障檢測Fig.6 kNN fault detection based on improved K-means method
從圖6 可以看出:基于改進K-means 的kNN 故障檢測不但完全檢測出了所有的12 個故障批次,而且對6 個校驗批次沒有產生誤報,提高了準確性.同時,可以確定在傳統(tǒng)kNN 的故障檢測中,第1 工況產生的1 個校驗批次誤報情況,不是由正常的5 %誤差引起的,而是由數(shù)據(jù)分類不精確造成.
由于各工況的χ2分布不同會引起各工況控制限的不同,通過先分類再進行故障檢測的方法,可以精確地計算出每種工況的95 %控制限,而不是將所有樣本混為一談.同時,通過先分類再建模,對校驗批次進行kNN 故障檢測時,待測批次不需要與全部的69 個建模批次求歐式距離,只需要先與3 個聚類中心求距離,判斷該待測批次的工況歸屬后,再與所在工況的23 個建模批次求歐式距離,大大縮減了故障檢測時間.
通過對比可以看出:基于改進K-means 的kNN 故障檢測算法對于多工況特性的生產過程故障檢測可以取得較好的效果.但對于單一工況生產過程,采集到的數(shù)據(jù)特性全都相似,利用改進K-means 聚類最終會收斂為一類,此時改進K-means 的kNN 故障檢測方法與傳統(tǒng)的kNN故障檢測方法檢測效果一致,但計算量卻增大,有待進一步改進.
間歇生產過程復雜的非線性和多工況特性,使傳統(tǒng)的kNN 單一模型進行故障檢測的難度加大.基于改進K-means 聚類kNN 故障檢測方法對間歇過程分工況建模,能夠更好地描述各工況的機理特性,大大提高了故障檢測的準確性.將該方法應用于青霉素批次過程的故障檢測中,通過和傳統(tǒng)的kNN 故障檢測結果相比較,表明改進K-means 聚類kNN 故障檢測方法提高了故障檢測的準確性和實時性.在實際生產中有重要的指導意義.
[1]劉強,柴天佑,秦泗釗,等.基于數(shù)據(jù)和知識的工業(yè)過程監(jiān)視及故障診斷綜述[J].控制與決策,2010,25(6):801-807.
[2]萬福才,鄂佳.統(tǒng)計過程監(jiān)控綜述[J].沈陽大學學報,2009,21(3):101-103.
[3]He P Q,Wang Jin.Principal component based knearest-neighbor rule for semiconductor process fault detection[C]//American Control Conference,June 11-13,2008.Seattle:conference Publications,2008:1606-1611.
[4]He P Q,Wang Jin.Fault Detection Using the k-nearest Neighbor Rule for Semiconductor Manufacturing Processes[J].IEEE Transactions on Semiconductor Manufacturing,2007,20(4):345-354.
[5]曹文平.一種有效k-均值聚類中心的選取方法[J].計算機與現(xiàn)代化,2008,15(3):95-97.
[6]劉世成,王海青,李平.青霉素生產過程的在線統(tǒng)計檢測與產品的質量控制[J].計算機與應用化學,2006,23(3):227-232.
[7]Birol G,Cinar A.A Modular Simulation Package for Fed-batch Fermentation:Penicillin Production[J].Computers &Chemical Engineering,2002,26(11):1553-1565.