本發(fā)明涉及一種工業(yè)過程故障檢測方法,尤其是涉及一種基于粒子群優(yōu)化核獨立元分析模型的故障檢測方法。
背景技術:
近年來,隨著計算機技術的飛速發(fā)展與廣泛應用,現(xiàn)代化的工業(yè)過程已逐步走向“大數(shù)據(jù)時代”。工業(yè)過程尤其是流程工業(yè)過程擁有了相當豐富的生產數(shù)據(jù)資源,為數(shù)據(jù)驅動的故障檢測研究提供了充實的數(shù)據(jù)基礎。通常來講,數(shù)據(jù)驅動的故障檢測方法不需要過程對象精確的機理模型,只需針對過程正常運行的采樣數(shù)據(jù)進行分析,定義出一個描述正常數(shù)據(jù)波動范圍的區(qū)域,即可實施在線故障檢測。多變量統(tǒng)計分析算法(如主元分析、偏最小二乘、獨立元分析算法)在這一領域中受到了廣泛的關注與研究,各種改進的新型算法層出不窮。以獨立元分析(independentcomponentanalysis,ica)為例,針對采樣數(shù)據(jù)間的相關性,目前有基于動態(tài)ica模型的故障檢測方法;針對過程數(shù)據(jù)的非線性特性,可以采用核ica(kernelica,kica)算法建立非線性非高斯的故障檢測模型。相比于主元分析法,ica因為在提取獨立元的過程中考慮了數(shù)據(jù)的高階統(tǒng)計信息,可以處理非高斯分布的數(shù)據(jù)對象。而現(xiàn)代工業(yè)過程因其自身的復雜性,采樣數(shù)據(jù)通常是不滿足高斯分布的。因此,ica算法更適合于監(jiān)測現(xiàn)代工業(yè)過程對象。
在目前被廣泛使用的ica求解算法中,fastica算法因其迭代求解過程簡單快速而得到了使用者們的青睞。然而,已有研究文獻指出,fastica算法由于利用了牛頓迭代法的原理,遇到二次凸函數(shù)時容易陷入局部最優(yōu)值。若初始值設置不當,fastica算法還有可能不收斂。另外,fastica算法通常要求先利用主元分析對數(shù)據(jù)進行白化處理,并且假設白化后的數(shù)據(jù)是較好的獨立元初始值。為了克服這些缺點,國內學者提出利用粒子群優(yōu)化(particleswarmoptimization,pso)算法取代fastica算法中采用牛頓迭代法,可直接用于分析原始過程數(shù)據(jù)。它保證了優(yōu)化算法能夠收斂到全局最優(yōu)點,并在實際應用中取得了滿意的效果。這種pso-ica算法雖然克服了牛頓迭代法的缺點,但是卻比牛頓法更加耗時。可幸的是,將pso-ica用于故障檢測時,因只在離線建模階段涉及求解獨立元,算法的時效性不會限制它應用于故障檢測??墒?,pso-ica算法依舊是線性變換算法,無法有效地挖掘非線性過程數(shù)據(jù)的有用信息。傳統(tǒng)的kica算法雖然能處理非線性數(shù)據(jù),但是從kica建模過程來講,它其實是先利用核主元分析對數(shù)據(jù)進行白化處理后,再實施fastica迭代求取獨立元。若是簡單地將pso-ica算法用于處理核主元分析白化后的數(shù)據(jù),一方面導致所提取的獨立元并非直接由原始數(shù)據(jù)而來,另一方面還會增加相應計算耗時。因此,這種非線性擴展的方式是不可取的,還違背了pso-ica算法可直接用于分析原始數(shù)據(jù)的初衷。
另一種可行的思路是直接將pso-ica算法應用于處理非線性數(shù)據(jù),這就需要利用核學習技巧。在處理非線性過程數(shù)據(jù)的建模方法中,核學習技巧可謂是最常見的,也是最簡單實用的。例如,主元分析算法就是借鑒核學習而擴展成能處理非線性數(shù)據(jù)的核主元分析法。核學習技巧的基本原理是通過構造內積而避免確定非線性映射函數(shù)的具體形式。也就是說,利用核學習方法,我們不知道原始數(shù)據(jù)非線性映射后的結果,只知道他們的內積。若pso-ica算法利用核學習技巧,關鍵的技術難點在于如何構造原始數(shù)據(jù)經非線性映射后的內積??梢韵胂蟮氖?,基于核學習的pso-ica算法是一種直接型的非高斯非線性建模方法。它不需要數(shù)據(jù)的白化預處理,可以直接針對原始數(shù)據(jù)提取出非線性的獨立元并建立相應的模型。這一點對于有效地定義正常數(shù)據(jù)的活動區(qū)域是有直接意義的,相應故障檢測模型檢測效果也會得到顯著的改善。
技術實現(xiàn)要素:
本發(fā)明所要解決的主要技術問題是:如何利用核學習技巧將pso-ica算法擴展成能直接處理非線性過程數(shù)據(jù)的建模方法并基于此建立相應的故障檢測模型。本發(fā)明解決上述技術問題所采用的技術方案為:一種基于粒子群優(yōu)化核獨立元分析模型的故障檢測方法,包括以下步驟:
(1)從生產過程的歷史數(shù)據(jù)庫中找出該過程對象在正常運行狀態(tài)下的采樣數(shù)據(jù)組成訓練數(shù)據(jù)矩陣x∈rn×m,并對x中每個變量進行標準化處理,得到均值為0,標準差為1的新矩陣
(2)設置核函數(shù)參數(shù)c=5m后,按照下式計算核矩陣k∈rn×n中的第(i,j)個元素:
上式中,下標號i=1,2,…,n與j=1,2,…,n,exp表示以自然常數(shù)e(約為2.71828)為底的指數(shù)函數(shù),符號||||表示計算向量的長度。
(3)依據(jù)如下公式對矩陣k進行中心化處理,即:
上式中,方陣l∈rn×n中各元素都為1。
(4)設置pso算法的參數(shù),一般取最大迭代次數(shù)imax=1000,粒子群數(shù)n=max(20,2m)(表示取20與2m兩數(shù)中的最大值),加速常數(shù)β1與β2都等于2,慣性權重δ按照如下所示公式從最大值δmax=1.2線性遞減到δmm=0.4:
上式中,i表示pso算法的迭代次數(shù),其取值范圍是0≤i≤imax。
(5)令下標號k表示提取的第k個非線性獨立元,并初始化k=1。
(6)任意初始化n個粒子w1,w2,…,wn后,運行pso算法待迭代次數(shù)完成后得到對應于第k個非線性獨立元的分離向量ak,那么相應的非線性獨立元為
(7)判斷k≥3n/4?若否,置k=k+1后返回步驟(6);若是,則執(zhí)行下一步驟(8)。
(8)將所有得到的分離向量組成矩陣w=[a1,a2,…,ak]∈rn×k,所有的非線性獨立元組成矩陣s=[t1,t2,…,tk]∈rn×k。
(9)將矩陣s中的各列按非高斯性大小進行降序排列后,選取前d列非高斯性大的獨立元構建非線性的故障檢測模型,并保留模型參數(shù)集θ。
(10)在線收集最新采樣時刻的樣本數(shù)據(jù)xnew∈rl×m,并對其進行同樣的標準化處理得到
(11)按照下式計算核向量z∈rl×n中的各個元素zi(i=1,2,…,n),即:
(12)依據(jù)下式計算得到中心化的核向量
其中,行向量l=[1,1,…,1]∈rl×n。
(13)調用模型參數(shù)集θ實施在線故障檢測。
與現(xiàn)有方法相比,本發(fā)明方法的優(yōu)勢在于:
首先,本發(fā)明方法是直接應用于訓練數(shù)據(jù),避免了傳統(tǒng)kica方法的白化處理過程。由于白化處理過程有可能會扭曲原始數(shù)據(jù)的部分信息,本發(fā)明方法因不涉及白化處理而不會受其影響。其次,本發(fā)明方法不僅利用了核學習技巧而且還使用pso算法迭代求取非線性獨立元,使原始的pso-ica算法成功擴展成可以處理非線性非高斯數(shù)據(jù)的建模方法。最后,本發(fā)明方法不僅限于建立故障檢測模型,該方法還可以應用于其他涉及非線性數(shù)據(jù)信號源分離上。相比于傳統(tǒng)的kica方法,本發(fā)明方法可以說是一種更為優(yōu)選的非線性建模與數(shù)據(jù)分析方法。
附圖說明
圖1為本發(fā)明方法的實施流程圖。
圖2為pso算法搜尋分離向量ak的實施流程圖。
具體實施方式
下面結合附圖對本發(fā)明方法進行詳細的說明。
如圖1所示,本發(fā)明提供了一種基于粒子群優(yōu)化核獨立元分析模型的故障檢測方法,該方法的具體實施步驟如下所示:
步驟1:從生產過程的歷史數(shù)據(jù)庫中找出該過程對象在正常運行狀態(tài)下的采樣數(shù)據(jù)組成數(shù)據(jù)矩陣x∈rn×m,并對x中每個變量進行標準化處理,得到均值為0,標準差為1的新矩陣
步驟2:設置核函數(shù)參數(shù)c=5m后,按照下式計算核矩陣k∈rn×n中的第(i,j)個元素:
上式中,下標號i=1,2,…,n,j=1,2,…,n,exp表示以自然常數(shù)e(約為2.71828)為底的指數(shù)函數(shù),符號||||表示計算向量的長度。
步驟3:依據(jù)如下公式對矩陣k進行中心化處理,即:
上式中,方陣l∈rn×n中各元素都為1。
步驟4:設置pso算法的參數(shù),一般取最大迭代次數(shù)imax=1000,粒子群數(shù)n=max(20,2m)(表示取20與2m兩數(shù)中的最大值),加速常數(shù)β1與β2都等于2,慣性權重δ按照如下所示公式從最大值δmax=1.2線性遞減到δmim=0.4:
上式中,i表示pso算法的迭代次數(shù),其取值范圍是0≤i≤imax。
步驟5:令下標號k表示提取的第k個非線性獨立元,并初始化k=1。
步驟6:任意初始化n個粒子w1,w2,…,wn后,運行pso算法待迭代次數(shù)完成后得到對應于第k個非線性獨立元的分離向量ak,那么相應的非線性獨立元為
①置i=0,開始執(zhí)行pso迭代過程;
②按照如下所示公式計算每個粒子wq∈rn×l所對應的適應度值jq:
jq=e[g(sq)](11)
其中,q=1,2,…,n為粒子標號,e表示求取均值,函數(shù)g(sq)=log[cosh(sq)],自變量sq的計算方式如下所示:
③將當前迭代次數(shù)中取得最大適應度值的粒子記做c∈rn×l,將每個粒子在其整個迭代歷史中取得最大適應度值的位置記做bq∈rn×l,并依照如下所示公式更新各個粒子的運行速度vq∈rn×1,即:
vq=δ·vq+β1·rand1·(bq-wq)+β2·rand2·(c-wq)(12)
其中,rand1和rand2是在區(qū)間[0,1]內的任意隨機數(shù)。
值得注意的是,當?shù)螖?shù)i=0時,pso算法剛開始迭代運行,這時候有b=c。
④按照如下所示公式更新每個粒子,即:
wq=wq+vq(13)
⑤判斷i>imax?若否,置i=i+1后返回②進行下一次迭代;若是,執(zhí)行⑥;
⑥輸出當前迭代次數(shù)中取得最大適應度值的粒子wbest,該粒子即是對應于第k個非線性獨立元的分離向量
步驟7:判斷k≥3n/4?若否,置k=k+1后返回步驟6;若是,則執(zhí)行步驟8。
步驟8:將所有得到的分離向量組成矩陣w=[a1,a2,…,ak]∈rn×k,所有的非線性獨立元組成矩陣s=[t1,t2,…,tk]∈rn×k。
步驟9:將矩陣s中的各列按非高斯性大小進行降序排列后,選取前d列非高斯性大的獨立元構建非線性的故障檢測模型,具體的實施過程如下所示:
①按照如下公式分別計算t1,t2,…,tk的非高斯性大小fg,即:
fg={e[g(tg)]-e[g(u)]}2(15)
其中,下標號g=1,2,…,k,函數(shù)g(u)=log[cosh(u)],u表示一任意均值為0,標準差為1的高斯分布的隨機變量;
②按f1,f2,…,fk數(shù)值大小進行降序排列,并依據(jù)前d個較大數(shù)值所對應的下標號分別從矩陣s與矩陣w中選出相應的列,對應組成矩陣
③依據(jù)如下公式分別計算監(jiān)測統(tǒng)計量
上式中,算子diag表示取矩陣對角線上的元素組成列向量。
④分別計算向量
⑤保留模型參數(shù)集
步驟10:在線收集最新采樣時刻的樣本數(shù)據(jù)xnew∈rl×m,并對其進行同樣的標準化處理得到
步驟11:按照下式計算核向量z∈rl×n中的各個元素zi(i=1,2,…,n),即:
步驟12:依據(jù)下式計算得到中心化的核向量
其中,行向量l=[1,1,…,1]∈rl×n。
步驟13:利用步驟9中保留的模型參數(shù)集θ實施在線故障檢測,具體的實施過程如下所示:
首先,計算得到該新樣本數(shù)據(jù)所對應的非線性獨立元
然后,計算監(jiān)測統(tǒng)計量
最后,判斷是否滿足
上述實施例僅是對本發(fā)明的優(yōu)選實施方式,在本發(fā)明的精神和權利要求的保護范圍內,對本發(fā)明做出的任何修改和改變,不應排除在本發(fā)明的保護范圍之外。