田 珍,劉學會
(鄭州職業技術學院 軟件工程系,鄭州 450121)
隨著集成電路的發展,數字和模擬器件通常被繼承在單個芯片上。目前,模擬電路已被廣泛地應用于軍工、通信、儀表儀器和自動控制等領域。雖然模擬電路通常只占芯片面積的50%,但其發生故障的成本卻占芯片總成本的95%[1]。
由于模擬電路具有原件參數離散型、可測電壓節點數少、非線性和時間電壓的連續性等特征,使其較數字電路的故障診斷發展要復雜和緩慢。
傳統的對模擬電路進行故障診斷的方法主要是故障字典法,其具有所需測試點少和適合在線診斷的特點,但其需要先驗知識且存儲容量需求量大,因此不適合大規模電路故障診斷的需要[2]。
隨著人工智能的發展,出現了不少采用人工智能方法實現對模擬電路進行故障診斷的研究[3~5]。 人 工 神 經 網 絡 (Artif i cial Neural Network,ANN)是由大量神經元組成的龐大網絡,能實現復雜信息的存儲和處理。BP神經網絡[3]是一種多層前饋型的人工神經網絡模型, 其神經元通常采用S型函數,使其可以實現輸入和輸出之間的任意非線性映射,非常適合通常難以建立數學模型的故障診斷問題,但由于故障征兆的維數往往很大,使得BP神經網絡的輸入維數多,訓練時間長,限制了其進一步的發展。
為了實現對模擬電路進行故障診斷,文中提出了一種基于粗糙集和BP神經網絡的故障診斷方法。
粗糙集(Rough Set, RS)是波蘭科學院Z.Pawlak教授提出的一種數學分析和推理模型,它基于集合分類理論,從數據本身出發通過對數據的分析處理,去除冗余屬性從而找到隱藏在數據中的內在規律。目前,已經在機器學習、知識發現、模式識別等領域獲得廣泛應用。
定義1:信息系統S可以定義為四元組:S =<U,R,V, f >,其中,U={x1, x2,…, xn} 為對象的非空有限集合,R=CD為屬性集,其中C為條件屬性集,D為決策屬性集,且滿足為屬性r的值域;f (U×R)→V即為論域對象對應的屬性的到屬性值的映射。
定義2:對于信息系統S =<U,R,V, f >,對于任意屬性子集A∈R,可以定義A上的不可分辨關系IND(A),其中IND(A)的定義如式(1)所示:

定義3:對于信息系統S =<U,R,V, f >,R=CD為屬性集,其中C為條件屬性集,D為決策屬性集,存在 的子集A,AC,對于屬性t∈A,若滿足式(2):

則稱t在A中是不必要的,否則稱其是必要的。在公式(2)中,Ind表示滿足A的等價關系的交,如果對于任意t∈A都是必要的,則稱A是C的一個簡約。
C的所有簡約的集合記作RED(C), 的所有簡約的交集稱為核CORE(C),如式(3)所示:

為了克服BP神經網絡在樣本數據多、維數大的情況下的訓練時間過長,收斂速度過慢的問題。首先采用粗糙集對樣本數據進行屬性簡約,然后將經過屬性簡約的樣本數據置入到BP神經網絡模型中進行訓練,當BP神經網絡模型的各神經元權值、閥值均已訓練好后,再用訓練好的BP神經網絡模型進行故障診斷,其故障診斷模型如圖1所示:

圖1 文中故障診斷模型
定義4:基于屬性出現頻率的差別矩陣算法
輸入:信息系統S=<U, R,V, f >;
輸出:簡化的決策表S'=<U', R',V, f >;
步驟1:初始化核屬性集合CORE和簡約條件屬性集合RED;
步驟2:計算樣本數據對應的可辨識矩陣M,將M中的單屬性加入到核屬性集合CORE中;
步驟3:令RED=CORE;
步驟4:刪除可辨識矩陣M中包含CORE的所有項,并計算剩余的非空屬性值出現的頻率;
步驟5:選擇M中出現頻率最高的屬性a,并將其加入到RED中,并從M中刪除包含a的項;
步驟6:重復步驟5,直到M為空為止;
步驟8:重復步驟7,直到RED中的非核屬性被遍歷完為止,此時算法結束,輸出最終簡約條件集RED。
文中采用的BP神經網絡故障診斷模型采用三層典型網絡,可分為輸入層、隱層和輸出層,如圖2所示。

圖2 三層BP神經網絡模型
定義5:屬性簡約的BP神經網絡故障診斷算法
步驟1:首先通過定義4所示的基于屬性出現頻率的差別矩陣算法實現對樣本數據進行屬性簡約,得到簡約的屬性集,其維數為L;
步驟2:當訓練數據維數L確定后,則輸入層神經元的個數為L;
步驟3:根據故障種類來確定輸出神經元個數M;
步驟4:通過經驗公式(4)確定隱層神經元個數:

在式(4)中,q為1到10之間的一個隨機數。
步驟5:將步驟1得到的簡約后的樣本數據置入到圖2所示的BP神經網模型進行訓練,并根據公式(5)計算輸出端誤差:

式(5)中,Yj表示第j個輸出神經元的期望輸出,表示第j個輸出神經元的實際輸出;
步驟6:根據輸出層的誤差,按照誤差反向傳播算法對各神經元權值、閥值等進行調整;
步驟7: 當誤差滿足目標值時,訓練結束,此時的BP神經網絡模型即為故障診斷模型;
步驟8:輸入測試數據,采用訓練好的BP神經網絡進行故障診斷,得到故障診斷結果。
為了對文中方法進行驗證,采用圖3所示的模擬放大電路來進行故障診斷試驗,各參數如下:輸入信號源為幅值Vm=1000mV和頻率f =1000Hz的正弦信號,R1=400Ω,R2=1000Ω,R3=800Ω,R4=R7=R8=2000Ω,R5=600Ω,R6=900Ω, 電 容C1=C2=C3=C4=20uF。

圖3 某模擬放大電路
在圖3中,選擇電路圖中out1、out2、out3、out4和out5處的測量電壓為特征向量,分別部分電容、三極管和電阻進行故障診斷,得到1組樣本數據如表1所示。

表 1 測點電壓值對應的故障狀態
首先對表1中的數據進行離散化處理,再通過粗糙集進行屬性簡約得到的特征向量為out1、out2和out4,如表2所示。

表2 離散并簡約后的特征向量
從表2中可以看出,簡約后的特征向量僅3個,將其作為神經網絡的輸入端,則輸入端的神經元個數為3,故障種類一共為7種,采用二進制編碼所需要的輸出端神經元為4個,則根據公式(4)可以將隱層神經元定為5個,神經網絡為3-5-4結構。
采用表2的簡約樣本數據對網絡進行訓練,并采用8組測試數據進行故障診斷,得到的故障診斷準確率為98.34%。
采用文中基于粗糙集的BP神經網絡方法與傳統的BP神經網絡方法進行比較,得到的訓練曲線如圖4所示,從中可以看出:BP神經網絡和文中方法在迭代400次時,BP網絡的誤差為0.01,而文中方法的誤差已收斂到0.0001,這證明文中方法不僅使得BP神經網絡訓練速度加快,而且提高了診斷精度。

圖4 文中方法與BP神經網絡誤差對比
本文提出了一種能對模擬電路進行故障診斷的方法,能快速并精確地對模擬電路中的各種故障進行有效診斷。首先對樣本數據采用可辨識矩陣進行屬性簡約,然后將簡約后的特征向量置入
BP網絡輸入端進行訓練,將訓練后的神經網絡作為故障診斷推理模型。實驗表明經過粗糙集簡約后的BP神經網絡能正確地實現故障診斷,且與未進行簡約的BP神經網絡故障模型相比,誤差大為減少,具有重要的意義。
[1] 葉笠, 王厚軍, 田書林, 等.容差模擬電路軟故障診斷的一種方法[J].電工技術學報, 2011, 26(5): 119-125.
[2] 雷邵充, 邵志標, 梁峰.超大規模集成電路測試[M].北京: 電子工業出版社, 2008: 231-250.
[3] 宋麗偉, 彭敏放, 田成來, 沈美娥.基于PSO-RBF神經網絡的模擬電路診斷[J].計算機應用研究, 2012, 29(1): 72-74.
[4] 趙光權, 彭喜元, 馬勛亮.基于微分進化神經網絡的模擬電路故障診斷[J].測控技術學報, 2012, 26(1): 88-92.
[5] 鄧 森, 楊軍鋒, 郭明威, 郭創, 基于模糊SVM和虛擬儀器的模擬電路故障診斷研究[J].計算機測量與控制.2011.19(4): 762-765.
[6] Jian-Da Wu,Cheng-Kai Huang, Yo-Wei Chang.Fault diagnosis for internal combustion engines using intake manifold pressure and artif i cial neural network [J].Expert Systems with Applications,2010,37,949-958.
[7] Pawlak Z Rough sets[ J ].International Journal of Computer and Information Sciences, 1982 (11) : 341-356.