摘要:隨著Agent技術(shù)的發(fā)展,出現(xiàn)了多種基于多Agent遠(yuǎn)程協(xié)作故障診斷模型,但它們不能很好地滿足實時性要求較高系統(tǒng)的需求,因此本文以診斷Agent為基礎(chǔ),構(gòu)建了基于多Agent的遠(yuǎn)程協(xié)作故障診斷模型,并對模型采用了層次劃分,根據(jù)各層Agent的功能,采用合同網(wǎng)協(xié)議對Agent間任務(wù)進行分配協(xié)作,提高了系統(tǒng)故障診斷速度,從而為遠(yuǎn)程故障診斷的實現(xiàn)提供了支持。
關(guān)鍵詞:多Agent;遠(yuǎn)程協(xié)作故障診斷;診斷Agent;合同網(wǎng)協(xié)議
1 前言
隨著信息技術(shù)和現(xiàn)代工業(yè)的發(fā)展,遠(yuǎn)程協(xié)作故障診斷系統(tǒng)對實時性、自動性、智能性和網(wǎng)絡(luò)化等性能提出了越來越高的要求。多Agent技術(shù)可以為遠(yuǎn)程協(xié)作故障診斷系統(tǒng)的實現(xiàn)提供一條有效的途徑,因此在故障診斷領(lǐng)域已經(jīng)得到了廣泛的研究和應(yīng)用。多Agent(Multi-Agent System,MAS)系統(tǒng)提供了一種解決復(fù)雜問題的分而治之的方法,它把一個復(fù)雜、龐大的問題劃分為多個子問題,由一些具有一定功能的Agent分別處理這些子問題或者可以通過成員之間的合作完成某些單個Agent難以實現(xiàn)的子問題,最終實現(xiàn)問題的求解[1]。
遠(yuǎn)程協(xié)作故障診斷模型有兩種模式,一種是基于B/S結(jié)構(gòu);另一種是基于MAS?;贛AS的遠(yuǎn)程協(xié)作故障診斷系統(tǒng)克服了基于B/S結(jié)構(gòu)存在的缺陷,如網(wǎng)絡(luò)通信負(fù)載集中,經(jīng)常會形成網(wǎng)絡(luò)通信瓶頸,特別是對實時性支持很差等問題。文獻[3]也提出了一個基于多Agent系統(tǒng)的遠(yuǎn)程故障診斷系統(tǒng)模型,各個Agent結(jié)構(gòu)設(shè)計復(fù)雜,增加了通信Agent,各個Agent都要維護自己的資源庫,管理Agent在執(zhí)行中還生成很多Agent,這樣就增加了系統(tǒng)開銷,加大了系統(tǒng)的復(fù)雜度,提高了系統(tǒng)診斷的精度卻降低了系統(tǒng)響應(yīng)的速度。因此,本文提出了一種新的基于多Agent遠(yuǎn)程協(xié)作故障診斷模型,在該模型中管理Agent負(fù)責(zé)診斷任務(wù)和資源的分配及維護學(xué)習(xí)Agent,簡化了管理Agent的設(shè)計,取消了通信Agent,加入了交互Agent,用各Agent自己的通信接口代替通信Agent,簡化了系統(tǒng)的設(shè)計,并且各個診斷Agent可以相互合作,加快了系統(tǒng)響應(yīng)的速度。
2.基于多Agent的遠(yuǎn)程協(xié)作故障診斷模型
2.1遠(yuǎn)程協(xié)作故障診斷體系架構(gòu)
系統(tǒng)總體架構(gòu)采用分布式分層結(jié)構(gòu),如圖1所示。該體系結(jié)構(gòu)將遠(yuǎn)程協(xié)作故障診斷系統(tǒng)分為通信接口層、邏輯層和數(shù)據(jù)診斷資源接入層[2]。
通信接口層:該層的主要功能負(fù)責(zé)遠(yuǎn)程發(fā)送過來的診斷請求,判斷是否接收該診斷請求,并向邏輯層的故障診斷協(xié)作平臺報告當(dāng)前的診斷請求狀態(tài)。如果接收該診斷請求,則該層啟用故障診斷模塊,調(diào)用數(shù)據(jù)診斷資源接入層的知識庫進行診斷,并把診斷結(jié)果存入數(shù)據(jù)診斷資源接入層控制的故障信息表中,同時向請求遠(yuǎn)程診斷的診斷終端發(fā)回診斷結(jié)果。
邏輯層:在邏輯層中設(shè)計了一個遠(yuǎn)程故障診斷協(xié)作平臺,它是本系統(tǒng)總體架構(gòu)的核心,它提供了廣域范圍內(nèi)共享數(shù)據(jù)診斷資源的平臺,控制診斷任務(wù)的分解,建立了資源共享與多故障診斷系統(tǒng)協(xié)作機制,并利用診斷獲取各種有用知識,對其進行學(xué)習(xí)、提煉,以豐富數(shù)據(jù)診斷資源中的知識庫,不斷提高本系統(tǒng)自身的診斷智能和遠(yuǎn)程服務(wù)能力。
數(shù)據(jù)診斷資源接入層:遠(yuǎn)程協(xié)作故障診斷的最大特點是診斷資源與發(fā)送診斷請求的終端在地域上的分離,無法高效利用診斷資源,使本來可利用的資源浪費掉,但是,本遠(yuǎn)程協(xié)作故障診斷系統(tǒng)設(shè)計了數(shù)據(jù)診斷資源接入層,克服了診斷資源浪費的缺點,為診斷模塊提供了統(tǒng)一的通信接口,實現(xiàn)了資源的共享和高效利用,也方便管理和維護診斷資源。
2.2基于多Agent遠(yuǎn)程協(xié)作故障診斷模型設(shè)計
根據(jù)上小節(jié)提出的系統(tǒng)總體架構(gòu)分層思想及參考文獻4所提出的參考模型,本文設(shè)計了基于多Agent系統(tǒng)的遠(yuǎn)程協(xié)作故障診斷模型,結(jié)合系統(tǒng)體系結(jié)構(gòu),定義了交互Agent、診斷Agent和管理Agent,如圖2所示。下面詳述各個Agent功能。
交互Agent:當(dāng)遠(yuǎn)程終端向本遠(yuǎn)程協(xié)作故障診斷系統(tǒng)發(fā)出診斷請求時,激活通信接口層中的交互Agent,交互Agent判斷是否是本系統(tǒng)對應(yīng)的大型網(wǎng)絡(luò)內(nèi)的遠(yuǎn)程終端,如果不是,交互Agent產(chǎn)生一個回應(yīng)消息,拒絕執(zhí)行遠(yuǎn)程診斷,并將這次診斷請求寫入日志中以備后來查詢判斷是否有入侵者攻擊;如果發(fā)來的診斷請求恰好是本遠(yuǎn)程協(xié)作診斷系統(tǒng)規(guī)定的系統(tǒng)內(nèi)的診斷請求,交互Agent向管理Agent報告,并將診斷請求任務(wù)提交給管理Agent,管理Agent決定該診斷任務(wù)是否需要分成各診斷子任務(wù),并將分成的診斷子任務(wù)通過通信接口交給交互Agent,交互Agent根據(jù)各診斷子任務(wù)調(diào)用相對應(yīng)的診斷Agent,完成故障診斷,同時將診斷結(jié)果以消息的形式發(fā)回原診斷請求終端,通過通信接口把診斷結(jié)果在用戶接口模塊中顯示出來,可以供該遠(yuǎn)程協(xié)作故障診斷系統(tǒng)的用戶查看;用戶也可以輸入命令,調(diào)用交互Agent查詢故障信息。
診斷Agent:診斷Agent在交互Agent中,降低了管理Agent的控制復(fù)雜度,提高了本診斷系統(tǒng)的診斷效率。在交互Agent中的多個診斷Agent,它們互相獨立工作(在一定的條件下),有自己的推理機,采用目前比較流行的分析和推理算法,如神經(jīng)網(wǎng)絡(luò)Agent、遺傳算法Agent、專家系統(tǒng)Agent等智能故障診斷模型。診斷Agent接收交互Agent傳送來的診斷任務(wù),通過交互Agent提供的通信接口查詢數(shù)據(jù)診斷資源接入層中的故障信息表,查看是否有該診斷任務(wù)的故障案例,若有案例,則將診斷結(jié)果通過自身的通信接口直接返回給交互Agent,由交互Agent對其診斷結(jié)果進行處理;若沒有案例,診斷Agent也通過交互Agent提供的通信接口調(diào)用數(shù)據(jù)診斷資源接入層中相對應(yīng)的知識庫(該知識庫的選擇由管理Agent完成),啟動自己的推理機,完成故障診斷。
在診斷Agent診斷過程中,必然會出現(xiàn)診斷不了的故障,這時該診斷Agent利用交互Agent的通信接口向管理Agent報告,管理Agent會對這種情況進行處理,最終完成故障診斷。
管理Agent:管理Agent是本遠(yuǎn)程協(xié)作故障診斷系統(tǒng)的核心,它既充當(dāng)服務(wù)Agent的角色,維護各Agent的信息,又要負(fù)責(zé)管理各個診斷Agent,在遇到復(fù)雜的診斷請求時,它還要進行任務(wù)分解與結(jié)果匯總。管理Agent在接到交互Agent送來的診斷請求時,調(diào)用自身內(nèi)部策略庫中的任務(wù)分解策略和知識庫的維護信息,對交互Agent發(fā)送的診斷任務(wù)進行評價和決策,并將合適的診斷分任務(wù)和相對應(yīng)的知識庫返回給交互Agent,交互Agent針對各分診斷任務(wù)的特點,激活合適結(jié)構(gòu)的診斷Agent進行診斷。若診斷Agent不能診斷出結(jié)果,則該診斷Agent不向交互Agent報告,直接向管理Agent報告,管理Agent采用內(nèi)部策略庫中的多診斷Agent協(xié)作策略分析當(dāng)前報告的診斷Agent,然后查看策略庫中維護的多個Agent信息,最后向多個診斷Agent發(fā)出診斷請求,要求多個診斷Agent協(xié)作共同完成診斷任務(wù)。管理Agent負(fù)責(zé)匯總多診斷Agent協(xié)作完成的診斷結(jié)果,啟動學(xué)習(xí)Agent,經(jīng)學(xué)習(xí)Agent判斷處理,將各種有用信息規(guī)整加入數(shù)據(jù)診斷資源接入層中的知識庫和故障信息表,形成一個不斷增長的經(jīng)驗知識庫和故障信息表,可以防止以后診斷Agent面對同樣的任務(wù)時繼續(xù)向管理Agent發(fā)請求,以增強系統(tǒng)診斷的高效性、環(huán)境適應(yīng)性和智能性。
3 Agent間的協(xié)作
合同網(wǎng)協(xié)議(Contract Net Protocol,CNP)[5]在處理Agent間任務(wù)分配有一定的優(yōu)勢,特別是在分層次的系統(tǒng)任務(wù)中,因此適合本遠(yuǎn)程協(xié)作故障診斷系統(tǒng)的管理Agent和診斷Agent之間的任務(wù)分配關(guān)系,二者寫作關(guān)系如圖3所示。
在該模型中,管理Agent和診斷Agent構(gòu)成了合同關(guān)系。當(dāng)診斷Agent不能診斷當(dāng)前的診斷任務(wù)時,該診斷Agent向管理Agent報告診斷結(jié)果,管理Agent接到診斷結(jié)果后,通過自身策略庫中的評價策略,結(jié)合維護診斷Agent中的信息對該任務(wù)評估,最后把分析結(jié)果以廣播形式向各個診斷Agent發(fā)出,這些診斷Agent會根據(jù)自身的情況確定自己
是否可以診斷該任務(wù),然后向管理Agent發(fā)出報告請求分配任務(wù),同時設(shè)置一個等待時間,防止管理Agent不予響應(yīng)時無限止地等待下去,浪費診斷資源。管理Agent對向自己發(fā)出診斷請求的診斷Agent分配任務(wù),診斷Agent接到分配的任務(wù)后向管理Agent回報信息,這次合同協(xié)商成功。利用上述提到的合同網(wǎng)的任務(wù)協(xié)商方法可以實現(xiàn)任務(wù)的分配,提高協(xié)商過程以及任務(wù)分配的效率,可以克服一些傳統(tǒng)分配任務(wù)的缺點。
4 分析與仿真
設(shè)診斷Agent啟用推理機及完成故障診斷時間為Tk,系統(tǒng)維護各診斷Agent時間為Tv,診斷Agent存取故障信息表的時間為Tf,很明顯,如果診斷Agent調(diào)用推理算法和知識庫而不去查詢故障信息表,則有Tk>>Tf。分析文獻[3]提到的遠(yuǎn)程故障診斷系統(tǒng)模型,本地Agent完成一次故障診斷時間為:
(1)
如需請求遠(yuǎn)程診斷中心的協(xié)作診斷,則診斷時間為:
(2)
式中Td代表通信Agent處理診斷請求地址的時間,Tc代表通信Agent在不同網(wǎng)絡(luò)狀況下選取傳輸策略的計算時間,Tz代表管理Agent中綜合仲裁Agent處理時間,Ts代表管理Agent中數(shù)據(jù)挖掘Agent學(xué)習(xí)處理時間。
本文提出的多Agent遠(yuǎn)程協(xié)作故障診斷模型,診斷Agent完成一次診斷任務(wù)所需時間為(不需要任務(wù)分解):
(3)
若向管理Agent報告,需要診斷任務(wù)分解時,則完成一次診斷需要時間為:
(4)
式中Tm表示管理Agent分解任務(wù)所需時間,n表示管理Agent分解后的任務(wù)個數(shù),Tr表示診斷結(jié)果綜合時間,Tx表示學(xué)習(xí)Agent的學(xué)習(xí)時間。當(dāng)診斷任務(wù)分解為2-3個子任務(wù)時,隨著診斷請求的增加,系統(tǒng)中的學(xué)習(xí)機會不斷完善故障信息表(本文模型)和診斷Agent的知識庫(文獻模型),則響應(yīng)時間的計算就會以公式(1)、(3)為主。
在分布式監(jiān)控系統(tǒng)中,設(shè)1臺診斷設(shè)備監(jiān)控8臺被監(jiān)控設(shè)備,本文所提出的多Agent遠(yuǎn)程協(xié)作故障診斷模型與文獻[3]提到的遠(yuǎn)程故障診斷系統(tǒng)模型故障診斷響應(yīng)時間如圖4所示。
從圖4可以看出,隨著診斷請求次數(shù)不斷增加,本文提出的遠(yuǎn)程協(xié)作故障診斷模型的診斷響應(yīng)時間明顯比原來模型縮短,并且曲線趨于平緩狀,顯示了本文模型的高效性。
結(jié)束語
隨著現(xiàn)代工業(yè)的不斷發(fā)展,遠(yuǎn)程故障診斷要求突破傳統(tǒng)結(jié)構(gòu)的限制,多Agent技術(shù)起到極大的推動作用,使得多Agent系統(tǒng)在該領(lǐng)域得到了廣泛的研究。本文提出了一種基于多Agent的遠(yuǎn)程協(xié)作故障診斷模型,各個診斷Agent利用自己的結(jié)構(gòu)對故障進行診斷,互不影響,管理Agent采用合同網(wǎng)協(xié)議分配診斷任務(wù),不同的Agent都有自己的系統(tǒng)接口,可以和其它Agent協(xié)調(diào)通信,提高了系統(tǒng)的靈活性和擴展性;學(xué)習(xí)Agent豐富故障信息表,縮短了故障診斷時間,提高系統(tǒng)的響應(yīng)速度。仿真實驗表明,本文提出的模型確實提高了系統(tǒng)的響應(yīng)速度,為今后工程的具體實現(xiàn)提供了支持。
參考文獻
[1]李鳴,魏震生.多Agent的智能故障診斷系統(tǒng)[J].火力與指揮控制,2007,7(32):83-86
[2]肖小鋒,蔡金燕,馬颯颯.基于多Agent的智能監(jiān)測與診斷技術(shù)[J].計算機工程,2005,16(31):165-167
[3]蔣志忠,馮玉光,等.基于多Agent系統(tǒng)的遠(yuǎn)程故障診斷系統(tǒng)模型[J].計算機工程,2007,33(5):278-280
[4]熊育婷,楊慧,楊國慶.航空發(fā)動機故障診斷多Agent模型[J].計算機工程增刊,2005,(31):263-265
[5]Smith R G. The Contract Net Protocol: High Level Communication and Control in a Distributed Problem Solver. IEEE Transactions on Computers,1980, 29:1104-1113