摘 要: 通過分析FIPA-ACL規范集合的系統組成、通信機制等,提出了基于FIPA-ACL的污水處理智能化系統的Multi-Agent通信方案,確定了其通信方式、通信策略與通信協議,并給出了具體實現。
關鍵詞: 污水處理 多智能體 多代理 FIPA MAS multi-agent JADE
分布式人工智能(Distributed Artificial Intelligence,DAI)理論主要研究在邏輯上或物理上分散的智能系統如何并行地、相互協作地進行問題求解[1]。作為DAI研究的一個重要分支和前沿學科,基于多智能體系統(Multi-Agents System,MAS)的分布式智能系統已受到控制領域研究人員的極大關注[2][4]。MAS的基本思想是將大的復雜系統建造成小的、彼此能相互通信及協調的、易于管理的Agent(智能體,代理)。當單一智能系統沒有足夠的知識、資源和信息去解決一個復雜的問題時,有必要研究如何使較多的小型智能系統之間相互協調、相互合作,以解決較大規模的復雜問題。本文基于Multi-Agent理論對于復雜系統的強大表現力及其開放性、智能化的特性,提出了一種構建污水處理智能化系統通用模型的新思想,用MAS理論集成污水處理系統中分散分布的眾多模型和參數,從而有效解決污水處理這一復雜工業過程的控制問題。
1 基于Multi-Agent的污水處理分布式智能化系統
基于Multi-Agent的污水處理智能化系統模型結構如圖1所示。系統中每個Agent根據環境信息完成各自承擔的工作,多個Agent分工協作,形成一個有組織、有秩序的群體,共同完成特定的任務。
執行Agent位于現場層,實現參數采集及現場控制的功能;沖突消解Agent是該智能化系統的核心,其功能是通過對任務規劃信息、故障信息、系統狀態信息以及其他Agent的協作請求信息等的融合,對 Agent行為所產生的沖突進行消解;數據服務Agent的功能是為其他Agent提供統一、靈活的訪問實時數據庫的接口;軟測量Agent的功能是通過易測變量與難測變量之間的數學關系,實現難測變量的測量;故障診斷Agent是一個專家系統,可對污泥膨脹、污泥解絮、曝氣池泡沫等故障現象進行診斷,并提出解決對策。
Agent間相互交換信息、進行協調或合作、解決超出單個Agent能力或知識的問題,并真正具有社會性的關鍵是Agent間可以通信。因此, Agent通信是Multi-Agent系統研究的重要問題之一。
2 MAS的通信語言
Agent通信語言(Agent Communication Language,ACL)提供了Agent之間交換信息和知識的工具,使Agent之間相互作用達到求解問題的目的。ACL使Agent通信建立在知識級別(Knowledge Level)上,從而使Agent間的通信效率大大高于傳統的分布式計算中的通信。
目前主要有兩種ACL,一種是1993年美國ARPA的KSE 研究小組提出的KQML(Knowledge Query and Manipulation Language);另一種是1997年歐洲的FIPA(Foundation for Intelligent Physical Agents)協會制定的開放性標準FIPA-ACL。FIPA標準由一系列規范組成,用于規范一個應用程序內部Agent之間和不同應用程序Agent之間的互操作,并對多Agent應用程序互操作中相應的功能模塊進行標準化。由于FIPA-ACL在構建新的原語方面具有很強的能力,并且采用SL(Semantic Language)作為它的內容語言來描述Agent的狀態,所以,FIPA-ACL有逐漸代替KQML的趨勢。
2.1 FIPA-ACL的系統組成
FIPA標準由一系列規范組成,每個規范對多Agent應用程序互操作中相應的功能模塊進行標準化。FIPA-ACL規范集合在整個FIPA規范中的位置及其內部的功能規范組成結構如圖2所示。
由圖2可見,FIPA-ACL規范集合是整個FIPA標準中極其重要的組成部分,它與Agent管理規范集合、Agent消息傳輸規范集合構成了FIPA標準的主體部分。Interaction Protocols規范集合定義了FIPA-ACL可采用的互操作協議(如請求互操作協議);Communicative Acts規范集合則將Agent在使用FIPA-ACL進行通信過程中的各種語言行為單元(如:request、agree、refuse等)規范為一個CAL(Communicative Acts Library)庫規范;Content Languages規范集合定義了應用在FIPA-ACL消息的內容上不同的表示方式(如:SL),它們可提供不同標準的編碼形式。
2.2 FIPA-ACL通信機制
Agent之間的通信是通過構造、封裝、傳輸ACL消息進行的,ACL消息的主要結構如表1所示。
Agent A為了和Agent B進行通信,首先應該構建ACL消息。如果B提供的服務應采用請求互操作協議,則ACL的Protocol參數就設為fipa-request。A是此次互操作對話的發起者,它與B的第一次通信應視為請求互操作協議的第一個請求動作,這在CAL庫規范中描述為request行為,所以ACL的performative參數應為request。封裝好整個ACL消息后,Agent A選用適當的編碼方式將其編碼,形成有效載荷(Payload),然后再添加信封,信封中包含A和B進行通信所使用協議對應的協議地址。最后,A采用此傳輸協議將信息傳送給Agent B。Agent B收到A發送的消息并根據消息具體的內容加以判斷后,按照請求互操作協議所規定的操作流程對A進行回答。
3 系統的通信技術與實現
基于FIPA-ACL的污水處理Multi-Agent智能化系統是在開源Java項目JADE(Java Agent Development Framework)提供的多Agent平臺上實現的。JADE完全符合FIPA標準,為多Agent系統的開發者提供了一個功能強大的開發框架,使開發者無需親自從頭實現FIPA的具體規范就能開發出符合FIPA標準的多Agent系統。
3.1 通信方式的確定
MAS通信主要有四種連接方式:黑板模式、聯邦方式、廣播方式、點到點方式。通信傳遞方式有消息傳遞、方案傳遞兩種。本系統Agent之間通信前都通過Agent管理平臺提供的服務查詢機制來定位欲通信的Agent,然后兩個Agent進行直接通信;而Agent之間傳輸的信息是互操作命令、參數和操作結果,沒有設計到方案傳遞。所以本系統采用的是點對點的消息傳遞通信方式。
3.2 通信策略
本系統中的數據服務Agent、沖突消解Agent、故障診斷Agent分別為整個系統中的其他Agent提供數據查詢和寫入服務、沖突識別和消解服務、故障診斷服務,請求每種服務的Agent必須要先定位到服務提供者,這就要求一種服務注冊和定位機制。FIPA標準中定義了在Agent系統中必須存在的DF(Directory Facilitator)Agent。上述三個服務提供者啟動時就會在DF中注冊自己提供的服務,如:某個執行Agent需要沖突消解服務時,它會通過查詢DF來得到沖突消解Agent的通信地址和服務使用的互操作協議等信息,然后根據互操作協議規定的對話方式與協調Agent通信。
JADE提供了默認的DF Agent,服務提供者(如數據服務Agent)欲注冊自己的服務,其主要代碼如下:
Service Description sd=new Service Description( );
//創建服務描述對象,描述服務屬性
DF Agent Description DFad=new DF Agent Description( );
//創建自身描述對象,描述自身信息
Codec language=new SLCodec( );//采用SL內容語言規范
Ontology ontology=Basic Ontology.getInstance( );
//采用基本本體語言構建服務描述對象
sd.setName(getLocalName( ));
sd.setType(″SwageDisposeDataService″);//為服務命名,其他Agent查詢服務時就用此名字
sd.addProtocols(InteractionProtocol.FIPA_REQUEST);
//服務所采用的互操作協議
sd.addLanguages(language.getName( ));
sd.addOntologies(ontology.getName( ));
//構建自身描述對象
DFad.addProtocols(InteractionProtocol.FIPA_REQUEST);
DFad.addLanguages(language.getName( ));
DFad.addOntologies(ontology.getName( ));
DFad.setName(getAID( ));
//使自身具有構建的服務描述對象
DFad.addServices(sd);
try{
DFService.register(this,DFad);//在平臺提供的默認DF中注冊自己的服務
}catch(FIPAException e){
//處理異常
}
當沖突消解Agent需要此服務時,可通過下面的代碼來搜索DF,并定位到此服務的提供者,即數據服務Agent[6]。
…… //部分變量申明與上段代碼相同
DFAgentDescription dfd[ ];//用于存儲提供此服務的
//Agent描述信息(服務提供者可能不止一個)
//構建服務描述對象
sd.setType(″SwageDisposeDataService″);
sd.addLanguages(language.getName( ));
sd.addOntologies(ontology.getName( ));
sd.addProtocols(InteractionProtocol.FIPA_REQUEST);
DFad.addServices(sd);
try{
dfd=DFService.search(this,DFad);//在默認DF中搜索服務提供者
…… //與服務提供者通信
}catch (FIPAException e){
//處理異常
}
3.3 通信協議
本系統Agent之間通信都采用請求互操作協議,即ACL消息的protocol參數均為fipa-request,用UML表示的該協議流程如圖3所示。
Agent提供服務所需的參數和操作結果都包含在ACL消息的content參數中。
3.4 通信內容
在本系統中,Agent之間的通信內容是封裝在自定義的CSO(Communication Seriable Object)類中,通過JADE提供的串行化接口,可將CSO對象作為ACL消息的content參數在任意Agent之間傳遞,能達到很好的可擴展效果。CSO的類結構如下:
public class CSO implements Serializable {
private String[ ] arg;//服務參數
private float[ ] value;//服務結果
private String comment;//注釋
……
}
系統中的數據服務Agent提供數據查詢和數據寫入服務,它根據服務使用者在CSO.arg[ ]中傳送的參數進行實時數據庫操作,并將查詢結果存儲在CSO.value[ ]中返回給請求者。沖突消解Agent接收執行Agent的沖突識別請求(此請求不帶參數),并根據沖突識別算法的需要請求數據服務Agent的數據查詢服務或故障診斷Agent的故障診斷服務,將消解結果命令或無沖突命令存放于CSO.arg[0]中,再向執行Agent傳送。故障診斷Agent向沖突消解Agent提供故障診斷服務時也需要從CSO.arg[ ]中獲取參數,并將診斷結果存放于CSO.value[ ]中,以表明請求診斷的故障是否出現。
本文基于FIPA-ACL提出了污水處理Multi-Agent智能化系統的通信技術,確定了其通信方式、通信策略與通信協議,并給出了JADE 3.1軟件開發平臺上的實現方法。
參考文獻
1 胡舜耕,張莉,鐘義信.多Agent系統的理論、技術及其應用. 計算機科學,1999;26(9)
2 Holger V.Intelligent agents for supervision and control:a perspective.IEEE International Symposium on Intelligent Control - Proceedings,2000:P339
3 劉金錕,龔報均,楊樹青.高爐分布式智能控制系統的研究. 浙江大學學報,2000;34(2)
4 王俊普,陳暤,徐楊等.基于Agent的集散遞階智能控制的研究.控制與決策,2001;16(2)