孟 萍
(蘭州交通大學 自 動化學院,蘭州 7 30070)
故障診斷就本質而言是一類分類問題。支持向量機(Support Vector Machine)具有在小樣本下即可獲得滿意的學習效果以及保證所求解為全局最優解等優點, 因此基于 SVM 的分類方法具有很好的分類應用價值, 被廣泛用于故障診斷, 人臉識別等領域中[1~2], 并獲得了很好的實際效果。
本文基于SVM和模糊評判理論,根據故障特征和故障類型的不確定性,力求尋找一種智能的綜合評判算法,建立實用而高效的故障診斷模型。
設U=(u1, u2,…, um)為故障類型組成的集合;C=(c1, c2,…, cm)為故障類型的危害的權數集合,其中各個元素ci對應于故障集相應元素ui,表示ui相對“嚴重”的隸屬度;V=(v1, v2,…, vn)為征兆集。則評判矩陣的建立方法如下:
設故障類型第i個元素ui對征兆集的第j個元素vj的隸屬度為rij,則對征兆vj分析的結果可用模糊集合Ri表示為:Ri=(ri1, ri2,…,rim),則對于所有故障的評判矩陣為:

下面來確定rij,rij的確定是主觀地根據專家應驗來確定,同時也考慮其他原因,本文用加權統計方法求隸屬函數,由經驗統計資料,故障相關率(此樣本關聯故障的概率),對應故障反應,故障樣本采集(獲取或觀察)的難易程度(或者幅值的變化程度)4個因素來分析,分別用下面的符號表示:
X1:故障樣本統計(故障樣本出現的次數)
(很多、比較多、大、中、小、比較小、非常小)
X2:故障相關率(此樣本關聯故障的概率)
X3:對應故障反應
X4:故障樣本采集(獲取或觀察)難易程度。
其中X1的評分可用公式(2)來獲得:

式中,Nui表示故障ui發生的次數,Nvj表示ui故障發生時vj出現的次數。
對于X2,X3,X4可由表1來確定。
故障的評分集合表示如下:

每一個征兆集的評分集合與權數集合,算出相應的隸屬度rij

表1 故障因素與隸屬度

支持向量機是基于結構風險最小化原理的學習算法,通過把數據映射到高維空間,使分類間隔最大化的方式來分類。由于該算法具有很好的理論基礎和很強的泛化能力,已得到廣泛應用,如基因表達數據的分析。但是當訓練樣本的特征數很高時,分類器的計算復雜度增加 ,且冗余特征會降低分類精度,如何在用支持向量機對樣本分類之前,選擇合理有效的特征子集顯得尤其重要。
故障源的提取可以看作是全部變量中選取部分特定變量, 即為一個組合優化問題。本文利用改進的離散PSO并結合SVM得到一個故障源提取算法。改進的離散PSO 算法如下:

其中:xid為粒子當前位置。粒子由診斷數據中全體變量組成, 取值為 0 或 1, 0表示對應變量被選中, 1代表該變量參與計算。rand ()為[ 0, 1 ]均勻分布的隨機數。pid為粒子自身最值, gid為全體最值, vid表示速度,這里為[ 0,1 ]均勻分布隨機數。rand(xid)表示對xid進行隨機賦值。α為一可調參數,其初始值可以設為一個較大值, 以保證粒子能夠充分搜索解空間, 避免陷入局部最優值:隨著粒子進化,更改α為一較小值以保證算法穩定,快速收斂。一般α初始值設為0.2~0.3,最后降為0.1。該PSO 離散算法的收斂速度同優化后的遺傳算法GA算法相當, 但其簡單易實現, 同時需要設置的變量也比GA 少, 因此更具有吸引力。
適應度函數用來評價每個粒子的表現, 在這里即為粒子選中的變量在故障診斷中表現的性能。具體實現時,將對每個粒子選中的變量的數據進行提取和預處理, 并分為訓練集和測試集。利用訓練集訓練SVM , 并用測試集數據對得到的SVM進行測試, 其正分率即為該粒子的適應度。考慮到過多的變量會增加故障診斷系統的復雜性和實時性,改進適應度函數為:

f (xid)為粒子的最終適應度函數;f ( id )為該粒子對應的SVM正分率;mc為該粒子選中的變量數;mall為系統采集數據全部變量數; p為調整參數, 平衡最大正分率與變量個數, 根據具體的系統變量數以及故障診斷要求設置。
基于離散PSO 和SVM 特征選擇算法的具體實現如下:(1)初始化粒子群。(2)對每一個粒子計算其適應度函數。(3)將粒子的適應度與其自身最值比較,如果大于,則更新自身最值。(4)選出歷史中最大適應度值作為全局最值。(5)根據13 節給出的離散公式更新粒子群。(6)判斷是否滿足終止準則,是則結束, 否則跳轉第(2)步。
當連續幾次迭代適應度沒有明顯提高或是達到預先設定的最大迭代次數即認為滿足終止準則,結束迭代。
為了驗證本診斷方法,選取故障診斷的對象為機車的供電機組。
表2給出某機車的供電機組故障征兆和故障類型的頻譜關系。

表2 機車的供電機組故障與征兆
根據前面介紹的方法構建K矩陣,并進一步求解出R矩陣。表3給出了不對中對應的K矩陣。

表3 轉子不對中與征兆的評分集合
每行做為SVM的訓練樣本,只是對一組數據做分析計算,在實際工程應用中,需要進行大量的計算得到需要的訓練樣本,選擇30組數據進行訓練,輸出模式如表4。

表4 輸出模式
利用Matlab進行仿真訓練,并用一組數據進行驗證,可信度為0.86,說明上述方法是有效的。
通過對故障樣本進行模糊化處理,再進行SVM的訓練,得到了令人滿意的效果,對于研究裝置故障診斷和數據采集具有一定的現實意義。今后的工作還可以利用各種優化算法,對SVM進行優化,從而達到更理想的效果。
[1]陳長征,胡立新,周 勃,費朝陽.設備振動分析與故障診斷技術[M]. 北京:科學出版社,2007,5.
[2] Fu L M.Rule learning by searching on adapt nets.In:AAAIed.proceedings of the 9thNational ConferenceonArificialIntelligence[C].Anaheim, CA:AAAI Pess,1991,590-595.
[3] 李良敏,屈梁生. 基于遺傳編程和支持向量機的故障診斷模型[J].西安交通大學學報,2004,38(3).
[4] 王宏漫,歐宗瑛. 采用PCA特征和SVM分類的人臉識別[J]. 計算機輔助設計與圖形學學報,2003,15(4):416-420, 431 .