1 前言
基于專家系統的診斷方法是故障診斷領域中最引人注目的發展方向之一,也是目前應用最廣泛的一類智能診斷技術。作為整個系統核心的知識庫,傳統開發方法主要是以編程的方式實現,開發周期長,知識庫的更新與維護繁瑣。隨著診斷對象的復雜化、系統的大型化,診斷系統中知識庫的設計更加復雜,甚至影響推理機的設計,制約整個系統性能的提高。而在數據庫基礎上建立的知識庫,可以縮短系統的開發周期,并方便的實現知識庫的易維護性與可擴充性。
近年來,數據庫技術得到了新的發展,如數據挖掘、數據倉庫等,它們已在許多領域獲得應用,并取得了不錯的效果。然而,目前數據庫技術在專家系統領域的應用,仍然停留在知識庫管理者的水平上,這一定程度上阻礙了專家系統開發手段的提高。本文即在圖1所示系統的基礎上,結合開發裝備故障智能診斷系統的經驗,探討了數據挖掘及其相關技術,在實現知識自動獲取和簡化推理機設計方面應用的可能性。
圖1 數據庫及其相關技術系統圖
2 專家系統中數據挖掘算法
1)設對象集為U(i=1 to m),條件屬性集為C(j=1 to n),決策屬性集為D。
2)確定每一條件屬性的隸屬函數和語言變量值。
3)fori=1 to m,forj=1 to n對象的條件屬性值轉化為如下形式:
其中 是條件屬性 的第k個模糊區域, 是對象 在模糊區域中 的隸屬函數值,l=| |為條件屬性 的語言變量個數,將原始數據表轉化為帶有隸屬函數值的決策表。
4)由最大隸屬度法,取
= max( , …… ) 1≤k≤L
由此得到新表。
5)用粗糙集聯系度簡化決策表的屬性
具有條件屬性和決策屬性的知識表達系統可稱為決策表,記為T=(U,C,D, ),U為全集,C和D分別為條件屬性和決策屬性, 表示屬性值的集合。
每一個決策表都存在一個同異型集合聯系度:
(d)= (d)+ (d) i,可以唯一的分解為兩個決策表:
其中 = (d), = (d)
粗糙集數值聯系度為:
(d)= a+bi= + I (8)
當a=1,b=0時,決策表是相容的;當b≠0時,可分為相容決策表 和不相容決策表 。,由此可得到確定規則表和不確定規則表。
6)對相容決策表 ,約簡決策規則,即進行屬性值的約簡。設屬性子集:
={ |j=1,2,...,n, ∈C} (9)
滿足某一規則Fi相對于結果屬性集的聯系度為:
(d)=a+bi+cj= (x)+ (x)I+ (x)j (10)
由 屬性值組成的屬性集對決策集聯系度非空正域即可獲得該規則的最小屬性值簡化。
7)列出不相容決策表T2的條件屬性等價類,并給出模糊等價類矩陣,根據模糊等價類矩陣,求出對應的模糊等價類
8)令
= (u/ind(d)) 1 p | |
定義 的選擇函數為:
F( )= × 1 d | | (12)
其中, 為 對應模糊區間的值,|U/ind(d)|為 所在的決策等價類的個數。
9)比較 中F( )的大小,選取最大者作為最后的決策,并得到其置信度。
10)由以上可得到確定和不確定規則約簡后的最終的決策規則。
3 推理機的設計
靈活、高效且同知識庫相對獨立的推理機的設計,提高系統性能和系統的擴充起著重要作用。然而,對于用于故障診斷的中型或大型專家系統來說,由于涉及的知識種類比較多(可能包括電氣、機械、液壓等),上述的推理機并不容易獲得。不過,如果我們能充分利用數據庫技術,不僅可以簡化推理機的編制,也可提高推理機的性能。
實時數據信號的合理利用,應該是大多數故障診斷系統關心的問題,因為這可以大大提高故障搜索的效率。下面就以此為例,探討數據庫技術對推理機編寫的作用。
將知識整理表示成表,如表2所示。在此,假定所有的實時信號都能按照我們獲得數據的順序編號,且總是先獲得順序靠前的異常信號。實際上無論采用“監聽”還是其它方式,即使采樣頻率很高,我們獲得信號還是有一定的順序的。
在整理過程中,遵守以下原則:
(1)并發信號比較,多信號優先,即關聯三個信號的故障比兩個信號的故障排在前面。所以上述表格并發信號數為2的故障均排在了并發信號數為1的前面。
(2)在并發信號數相同的情況下,首先按首發信號升序排列,相同則按次發信號排列;所以F(1)排在了F(3)前面,F(3)排在了F(4)前面。
(3)就實際情況來講,許多借助信號判定故障的情況具有一定的不確定性,所以在此引入了模糊集的概念,即賦予每條判斷規則以可信度和設置閾值;當然也可給定每條信號一個可信度,借助某種合適的算法來確定相應規則的可信度。具體實現時,可在試用期借助歷史數據進行分析以調整可信度,正式使用時可根據判斷準確率進行微調。
以上所需要說明的是相同信號組合只能對應一類故障,可是在受限于當前實時信號數目時,一信號的發生可以得到有限的幾種可能,卻不能對應唯一故障時,這時可將幾種可能作為一種故障描述,以后結合設備改造和歷史數據庫進一步精確規則。
VC環境下上述問題的推理機示例程序:
Bool found=0;//
Extern int count;//
Extern int num[];//
Extern Crccordset m set;//
Extern Cwarndlg warndlg;//
M_set.open(Crecordset::dynaset);//
If(!m-set.iseof());
{ m-set.movefirst();
while(!m-set.isbof())
{ if(m-set.m-sigl= =num(0)&m-set.m-sig2= =num(1))//
{ if(!m-set.m-cf﹤T)//
found=1;
break;
}
m-set.movenext();
}
}
if(found)
{ warndlg.faultdesc=m-set.m-desc;
wantdlg.unfault=m-set.m-unfault;
warndlg.domodal();//
}
可以看出以上的推理機僅是由簡單的順序搜索算法組成,卻可以滿足復雜的實時故障的診斷,關鍵是我們結合知識庫的設計,充分利用了數據庫技術。同樣,利用數據庫技術可以簡化其它搜索策略的設計。
4 結束語 隨著應用的日趨廣泛,以及各類新技術的不斷涌現,用戶對智能故障診斷系統提出了更高的要求。在這種情況下,開發者應該積極將最新發展的技術,如模糊學、神經網絡、數據庫及其相關技術,積極體現并融入到系統的設計中,只有這樣才能在有限的時間與成本下,開發出性能最佳的應用系統。<