摘 要: 通過分析多Agent通信的基本過程,以JADE為例對Agent請求和接收消息的過程進(jìn)行了詳細(xì)的剖析,重點(diǎn)分析了通信策略和傳遞方式。在傳遞方式中,應(yīng)答方可以直接回復(fù),也可以間接回復(fù),簡要地分析了這些方式的優(yōu)缺點(diǎn)。
關(guān)鍵詞: Agent;Agent通信;Agent通信語言;傳遞方式
隨著上網(wǎng)人數(shù)的增加,Agent技術(shù)正變得越來越流行,對Agent終端的使用需求也越來越強(qiáng)烈[1]。電子商務(wù)和Web扮演著越來越重要的角色,對開發(fā)者設(shè)計(jì)出能夠豐富用戶體驗(yàn)或使得后臺工作更便捷或更有效的Agent提出了重大挑戰(zhàn)[2]。Agent用于幫助用戶、雇員或者其他的Agent,這就涉及了Agent之間的協(xié)調(diào)、合作和通信的問題[3]。
隨著對功能更強(qiáng)大、效率更高和更通用的Agent的需求增加,開發(fā)者的壓力也隨之增加[4]。畢竟一個(gè)Agent能夠做的事情是有限的,如果讓一個(gè)Agent執(zhí)行太多的任務(wù),那么開發(fā)的復(fù)雜度和維護(hù)的復(fù)雜度將增加。就像其他任何類型的應(yīng)用一樣,對軟件的需求越多,要實(shí)現(xiàn)所需功能而花費(fèi)的工作量就越大[5]。Agent一般用來完成專門的任務(wù),做一件或多件任務(wù)非常好,但通常不會被設(shè)計(jì)成實(shí)現(xiàn)所有任務(wù)。如果多個(gè)Agent必須執(zhí)行更多的任務(wù),可以通過增加它們的復(fù)雜度(這也增加了開發(fā)工作量)或使它們聯(lián)合工作[6]來實(shí)現(xiàn)。為了使Agent之間的合作能夠成功,需要進(jìn)行有效的通信。
1 Agent的基本概念
在人工智能領(lǐng)域中,Agent通過傳感器感知環(huán)境,通過效應(yīng)器作用于環(huán)境,可以看成是一個(gè)機(jī)器人或其他實(shí)體。英國著名Agent理論研究者Jennings教授與 Wooldridge博士將其定義為[7-8]:Agent是一個(gè)具有自適應(yīng)性和智能性的軟件實(shí)體,能代表用戶或其他程序,以主動(dòng)服務(wù)的方式完成一項(xiàng)工作。該定義中增加了通信要求。
Agent的性質(zhì)主要有自主性、代理性、機(jī)動(dòng)性和智能性[9]。一個(gè)Agent主要由目標(biāo)模塊、感知器、效應(yīng)器、信息處理器和通信機(jī)制構(gòu)成[10]。目標(biāo)模塊描述了Agent通過一系列活動(dòng)所期望的目標(biāo);感知器用于獲取環(huán)境的狀態(tài)信息;信息處理器用于將從感知器中獲取的信息按照一定的協(xié)議進(jìn)行處理,以決定采取相應(yīng)的動(dòng)作,并通過效應(yīng)器作用于環(huán)境上。
2 Agent之間通信過程分析
可以把一些相互合作或在一起工作的Agent視為一個(gè)小社區(qū)。對任一個(gè)社區(qū),為了使其一直發(fā)揮功效,需要一個(gè)共同的語言和通信媒體。語言和通信媒體對Agent之間的合作非常重要,需要編寫專門的協(xié)議或語言,或者通過其他的協(xié)議(如HTTP)來發(fā)送請求。考慮到與共創(chuàng)系統(tǒng)的互操作性,選擇已有的Agent通信機(jī)制,使用一個(gè)共同的通信形式實(shí)現(xiàn)一個(gè)Agent與另一個(gè)Agent的通信。
2.1 Agent通信語言(ACL)
實(shí)現(xiàn)Agent之間的通信和互操作一直是Agent開發(fā)人員追求的目標(biāo)。正如不同國家的人溝通時(shí)需要一個(gè)共同的語言(英語)一樣,Agent之間的通信也需要一個(gè)共同的語言——Agent通信語言ACL(Agent Communication Language)。
ACL由FIPA(Foundation for Intelligent Physical)建議,是一個(gè)被提議的Agent通信的標(biāo)準(zhǔn)語言。另一個(gè)被提議的標(biāo)準(zhǔn)語言是KQML(Knowledge Query and Manipulation Language)。這兩種標(biāo)準(zhǔn)都是基于Searle于1960年發(fā)展的講話行為理論,該理論在20世紀(jì)70年代由Winograd和Flores加強(qiáng)并定義了一組行為和它們的意義。行為的內(nèi)容沒有標(biāo)準(zhǔn)化,隨著系統(tǒng)的不同而不同。為了使Agent理解其他的Agent,它們不僅需要使用相同的語言,而且還需要一個(gè)共同的本體。一個(gè)本體是Agent知識庫的一部分,它描述了一個(gè)Agent能夠處理的事情以及它們相互之間怎樣聯(lián)系在一起。設(shè)計(jì)一個(gè)ACL語言需要分別設(shè)計(jì)交互協(xié)議、通信行為和內(nèi)容語言。
2.2 FIFP與JADE
FIFP(Foundation for Intelligent Physical)是一個(gè)已被IEEE接納為第十一個(gè)標(biāo)準(zhǔn)委員會的針對Agent和多Agent的標(biāo)準(zhǔn)組織,致力于促進(jìn)基于Agent的技術(shù)和與其他技術(shù)標(biāo)準(zhǔn)的互操作性。主要做一些標(biāo)準(zhǔn)化工作,例如Agent傳輸、Agent通信、Agent管理、抽象體系結(jié)構(gòu)和應(yīng)用。在這些類別中,Agent通信是多Agent系統(tǒng)模型的主要核心。
目前有許多可用的Agent框架、協(xié)議、語言。一般來說,選擇合適的語言、框架、協(xié)議應(yīng)參照如下幾點(diǎn):(1)支持消息傳遞/查詢和數(shù)據(jù)交換;(2)可獲得相應(yīng)目標(biāo)平臺的實(shí)現(xiàn);(3)易用性;(4)支持文本和二進(jìn)制數(shù)據(jù)交換。
JADE(Java Agent Development Framework)是一個(gè)采用JAVA語言實(shí)現(xiàn)的軟件框架。JADE顯然符合上述幾點(diǎn)要求,因此,選用JADE框架作為樣例框架來說明Agent之間的通信過程。
2.3 JADE中Agent之間的通信
JADE運(yùn)行時(shí)發(fā)送由其他Agent發(fā)過來的消息。但是Agent何時(shí)從隊(duì)列中獲取消息進(jìn)行處理則由Agent的設(shè)計(jì)者來決定,過程如圖1所示。
JADE消息格式如下所示:
(1)消息的發(fā)送者。
(2)接收者列表。
(3)表明發(fā)送方想通過發(fā)送消息實(shí)現(xiàn)什么目標(biāo)的通信。假設(shè)通信行為是REQUEST,表示發(fā)送者想讓接收者執(zhí)行一個(gè)動(dòng)作;若是INFORM,表示發(fā)送者想讓接收者知道某個(gè)事實(shí);若是PROPOSE或者CFP(Call for Proposals),表示發(fā)送方想進(jìn)入?yún)f(xié)商。
(4)內(nèi)容包含了通過消息進(jìn)行實(shí)際交換的信息(例如,在一個(gè)REQUEST消息中要求執(zhí)行的動(dòng)作,或者在一個(gè)INFORM消息中發(fā)送者想透露一個(gè)事實(shí)等)。
(5)內(nèi)容語言表明了表述內(nèi)容時(shí)所用的語法。發(fā)送者和接收者都必須能夠編碼和解析符合語法規(guī)則的表達(dá)式。
(6)本體表明了在內(nèi)容中所使用的符號詞匯表。發(fā)送者和接收者都必須對這些符號賦予相同的意義以使通信有效地進(jìn)行。
(7)一些附加的域用于控制幾個(gè)并行的會話和指定接收一個(gè)諸如conversation-id、reply-with、in-reply-to和reply-by這樣的應(yīng)答的超時(shí)時(shí)間。在JADE中,一條消息被實(shí)現(xiàn)為jade.lang.acl.ACLMessage類的一個(gè)對象。并提供了get和set方法用于訪問由ACL格式指定的所有域。所有定義在FIPA說明書中的行為都被映射為ACLMessage類中的常數(shù)。
2.3.1 發(fā)送消息
在JADE中,發(fā)送一條消息到另一個(gè)Agent很簡單。首先只需將一個(gè)ACLMessage對象相應(yīng)的域填滿,調(diào)用Agent類的send()方法。例如,下面的代碼段創(chuàng)建一條消息通知一個(gè)呢稱為Peter的Agent,告訴它“今天出太陽了”:
ACLMessage msg=new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(new AID("Peter", AID.ISLOCALNAME));
msg.setLanguage("中文");
msg.setOntology("天氣預(yù)報(bào)");
msg.setContent("今天出太陽了");
send (msg);
2.3.2 接收消息
正如前面所提到的,JADE運(yùn)行過程中,消息到達(dá)時(shí)將自動(dòng)地被發(fā)送到一個(gè)接收者的私有消息隊(duì)列中。Agent可通過receive()方法從消息隊(duì)列中獲取消息。
ACLMessage msg=receive();
if(msg !=null)
{
Process the message
}
3 多Agent系統(tǒng)的通信策略分析
多Agent系統(tǒng)中,Agent間的通信方式主要分為兩類——黑板方式與信息傳遞方式。黑板方式即把信息放在廣泛可存取的“黑板”上,主要實(shí)現(xiàn)廣播通信。但是這種方式的實(shí)時(shí)性不高,難以滿足緊急情況的要求。消息傳遞方式是比較常見的一種方式。在該通信方式中,請求方事先需要知道應(yīng)答方的地址,發(fā)送方的消息中也應(yīng)包括自己的地址信息,以便應(yīng)答方能正確返回。Client_Agent與Server_Agent之間的通信過程如圖2所示。
對于應(yīng)答方Server_Agent來說,它可以采用直接回復(fù)或間接回復(fù)。
(1)直接回復(fù)方式:客戶端Agent(Client_Agent)發(fā)送一詢問信息到服務(wù)器端Agent(Server_Agent)并等待回答,服務(wù)器端Agent(Server_Agent)直接回復(fù)給客戶端Agent(Client_Agent)。最小通信時(shí)間為:服務(wù)器端Agent(Server_
Agent)的延遲與線路上的延遲之和。公式如下:
TDirect=tLine+tServer(1)
(2)間接回復(fù)方式:客戶端Agent(Client_Agent)發(fā)送一查詢信息到服務(wù)器端Agent(Server_Agent)并等待回答,服務(wù)器端Agent(Server_Agent)將回答放到第三方地址處,然后客戶端Agent(Client_Agent)再去該地址取走回答。最小通信時(shí)間為:服務(wù)器端Agent(Server_Agent)的延遲、線路上的延遲、客戶端Agent(Client_Agent)本身的延遲之和。公式如下:
TIndirect=tLine+tServer+tClient(2)
比較兩種方式,在直接回復(fù)方式中,客戶端Agent(Client_Agent)至少在TDirect時(shí)間范圍內(nèi)要始終保持某種內(nèi)部狀態(tài),這將占用其一部分內(nèi)部資源,但實(shí)時(shí)性較高。而間接回復(fù)方式中,客戶端Agent(Client_Agent)只需周期性地查看第三方地址,只有在真正接收時(shí),才恢復(fù)原來的內(nèi)部狀態(tài)。
本文主要討論了多Agent的通信方面的一些關(guān)注點(diǎn)。實(shí)際上,在Agent交互中,還存在協(xié)商、協(xié)調(diào)等方面的內(nèi)容,這些都要利用Agent通信機(jī)制。所以定義一個(gè)好的通信機(jī)制至關(guān)重要,從現(xiàn)有的Agent通信機(jī)制中選擇合適的機(jī)制同樣重要。FIPA是致力于實(shí)現(xiàn)多Agent之間互操作的重要規(guī)范,它設(shè)計(jì)了一套ACL語言標(biāo)準(zhǔn),對今后實(shí)現(xiàn)多Agent系統(tǒng)是一個(gè)很好的參考標(biāo)準(zhǔn)。
參考文獻(xiàn)
[1] JENNINGS N R.On Agent-based software engineering[J]. Artificial Intelligence,2000,11(7):277-296.
[2] CHAIB-DRAA.Industrial applications of distributed AI[J]. Comm.ACM,1995,38(11):47-53.
[3] 張慶.負(fù)載平衡系統(tǒng)中一種基于多agent和動(dòng)態(tài)冗余技術(shù)的通用機(jī)制[D].濟(jì)南:山東大學(xué),2007.
[4] 李燕.面向電子政務(wù)基于多Agent技術(shù)的協(xié)同辦公系統(tǒng)研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2003.
[5] 田洋.基于Agent的分布式工作流系統(tǒng)的研究[D].哈爾濱:哈爾濱工程大學(xué),2005.
[6] 陳海龍.多Agent系統(tǒng)通信策略[J].哈爾濱理工大學(xué)學(xué)報(bào),2007,12(1):86-89.
[7] 于紅彥.基于KQML的多Agent系統(tǒng)通信機(jī)制研究[D].長沙:中南工業(yè)大學(xué),2001.
[8] 瞿中.基于多Agent技術(shù)的通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(24):6051-6054.
[9] 趙杰,楊柳,李樹平.資源受限的多Agent系統(tǒng)通信研究[J].計(jì)算機(jī)科學(xué),2010,37(6):271-272.
[10] 王魯,王志良,楊溢.一種多Agent系統(tǒng)框架與協(xié)商機(jī)制研究[J].計(jì)算機(jī)應(yīng)用研究,2012,29(3):852-855,858.