楊永健
摘要:隨著信息技術(shù)的飛速發(fā)展,應(yīng)用軟件變得越來越復(fù)雜,其智能化程度也越來越高。多Agent技術(shù)就是在此背景下應(yīng)運(yùn)而生的,并迅速成為軟件工程領(lǐng)域的一個研究熱點(diǎn)。在介紹Agent定義和特點(diǎn)的基礎(chǔ)上,全面闡述了多Agent系統(tǒng)的體系結(jié)構(gòu)和兩種主要的Agent通信語言(KQML, FIPA-ACL),最后對多Agent系統(tǒng)的主要應(yīng)用做了詳細(xì)論述。
關(guān)鍵詞: Multi-Agent;KQML;FIPA-ACL
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)22-5293-04
多Agent技術(shù)是近年來軟件工程領(lǐng)域里的一個研究重點(diǎn)。多Agent系統(tǒng)(Multi-Agent System)是由分布式計算環(huán)境中的多個可交互的智能Agent組成的。其中,每個Agent被認(rèn)為是一個獨(dú)立的計算實體。在分布式環(huán)境下,它們有能力控制自身的行為和狀態(tài),并且能對環(huán)境的變化做出應(yīng)激反應(yīng)。更為重要的是,其能與環(huán)境中的其他Agent進(jìn)行交互并協(xié)同工作,完成一個大規(guī)模、復(fù)雜的計算任務(wù)。這也正是多Agent系統(tǒng)較之單Agent智能系統(tǒng)的優(yōu)勢所在。
1 Agent定義及其特點(diǎn)
1.1 Agent定義
Agent技術(shù)是人工智能、分布式計算、現(xiàn)代軟件工程等技術(shù)融合的產(chǎn)物。那么,agent的具體含義是什么呢?這里我們援引Wooldridge和Jennings為Agent下的定義[1]:Agent是處在復(fù)雜計算環(huán)境中的計算機(jī)軟件或硬件系統(tǒng),該系統(tǒng)有能力在此環(huán)境中自主行動以實現(xiàn)其設(shè)計目標(biāo)。
1.2 Agent的基本特性
通常認(rèn)為,Agent具有自治性、反應(yīng)性、社會性和能動性四個主要特點(diǎn)。
1) 自治性:Agent具有高度的智能性,它可以依據(jù)內(nèi)部設(shè)定的規(guī)則在沒有其他對象干預(yù)的情況下完成既定的功能目標(biāo),并且有能力控制自己的行為和內(nèi)部狀態(tài)。
2) 反應(yīng)性:每個Agent可以通過特定的感受器(如傳感器等硬件設(shè)備)感知周圍環(huán)境的各類信息,在環(huán)境參數(shù)發(fā)生改變時,能夠根據(jù)其所掌握的知識規(guī)則進(jìn)行自主學(xué)習(xí)和狀態(tài)調(diào)整以適應(yīng)環(huán)境的改變。
3) 社會性:在分布式計算環(huán)境中,存在著功能各異的眾多Agent實體。當(dāng)處理一些復(fù)雜問題時,通常需要許多Agent相互協(xié)作,共同完成任務(wù)。
4) 能動性:Agent應(yīng)該主動的采取某些動作來完成特定的任務(wù)。
2 多Agent系統(tǒng)的體系結(jié)構(gòu)
隨著信息技術(shù)的飛速發(fā)展,人們已經(jīng)進(jìn)入了一個“數(shù)據(jù)大爆炸”時代,云計算、大數(shù)據(jù)處理等新技術(shù)不斷涌現(xiàn)并應(yīng)用到人們的日常生活中。由于人們所要解決的應(yīng)用問題變得越來越復(fù)雜,而單Agent系統(tǒng)在自主學(xué)習(xí)、知識挖掘以及數(shù)據(jù)分析處理等方面存在諸多限制,無法滿足人們的需求。因此,多Agent系統(tǒng)的研究逐漸成為分布式人工智能領(lǐng)域的熱點(diǎn)。
2.1 多Agent系統(tǒng)的定義
多Agent系統(tǒng)包含多個互相通信的Agent,不同的Agent 有不同的作用范圍。某些情況下,作用范圍可能會重疊,而同時Agent之間還存在著依賴關(guān)系,它們之間既有競爭關(guān)系也有協(xié)作關(guān)系,如圖1所示。
從體系結(jié)構(gòu)圖中可以看出,多Agent系統(tǒng)是一種“自組織”系統(tǒng),可以以一種幾乎透明的方式添加或移除Agent。此外,該系統(tǒng)非常適合于計算資源分散的分布式計算環(huán)境,通過Agent之間的協(xié)作和互操作,不僅可以極大擴(kuò)展系統(tǒng)的計算能力用以解決復(fù)雜的實際問題,也可以很好地提高系統(tǒng)的易維護(hù)性和功能擴(kuò)展性。
2.2 基于FIPA規(guī)范的MAS框架結(jié)構(gòu)
圖2展示了基于FIPA(Foundation for Intelligent Physical Agents 智能物理Agent基金會)規(guī)范的MAS結(jié)構(gòu)[2]??梢钥闯鲞@是一個三層的框架。首先,非Agent技術(shù)開發(fā)的應(yīng)用程序與Agent提供的用戶接口進(jìn)行交互,利用Agent的計算功能來實現(xiàn)自己的目標(biāo)。每個Agent都設(shè)計了與用戶程序交互的API接口,用戶程序可以以一種完全透明的方式使用Agent系統(tǒng)所提供的功能。第二,多個Agent之間的管理和通信是由AMS(Agent管理系統(tǒng))和DF(目錄管理器)實現(xiàn)的。AMS提供了命名服務(wù)功能(在同一個平臺下的每個Agent都擁有唯一的一個名字),具有在某個容器(環(huán)境)內(nèi)創(chuàng)建和撤銷Agent的功能。DF則提供了黃頁功能和白頁功能,Agent可以查詢環(huán)境中具有某種特定功能的Agent。ACL(Agent通信語言)是整個系統(tǒng)的核心,它規(guī)定了Agent的通信方式以及消息格式。位于整個系統(tǒng)最底層的是通信協(xié)議,包括HTTP,IIOP,SMTP等常見的協(xié)議均可以作為Agent的通信協(xié)議。
2.3 Agent之間的通信機(jī)制
通信一直都是計算機(jī)科學(xué)的核心問題之一。多Agent系統(tǒng)的一個重要特性就是社會性,Agent并不是孤立存在的,他們共處在一個環(huán)境之中,彼此之間存在著合作,競爭等機(jī)制,而Agent之間的通信是實現(xiàn)合作和競爭等機(jī)制的基礎(chǔ)。表1給出了Agent通信的協(xié)議棧結(jié)構(gòu)。從中可以看出,Agent通信語言提供的是一種高層的通信機(jī)制。下面重點(diǎn)介紹最為重要的兩種Agent通信語言:KQML(Knowledge Query and Manipulation Language)和FIPA-ACL(Agent Communication Language)。
1) KQML通信語言
KQML(Knowledge Query and Manipulation Language)是一種基于言語行為(Speech Act)理論的知識和信息交換協(xié)議和語言,是KSE(Knowledge-Sharing Effort)項目的一部分,該項目旨在構(gòu)建可共享的大規(guī)模知識庫。KQML[3,4]是一種基于消息的通信語言,消息具有固定的格式:每條消息有一個語義詞,可將其看作消息的標(biāo)志,此外KQML消息中含有多個具有特定語義的參數(shù),如表2所示。
這條消息的含義是:發(fā)送者想查詢圖書《C++ Programming》的價格。在這條消息中,ask-all是動作原語詞,它的含義是一個Agent向其他所有Agent征詢,并且需要得到應(yīng)答。消息的內(nèi)容是查詢圖書的價格。:receiver即消息的接收者,為存儲著圖書信息的服務(wù)器。:language規(guī)定了內(nèi)容的表達(dá)語言,本例中使用的是標(biāo)準(zhǔn)LISP語言。:ontology規(guī)定了消息所用的術(shù)語集,本例中的術(shù)語集為所有圖書的價格信息。
盡管KQML為多Agent間的通信提供了一種較好的機(jī)制,并且取得了成功,但是其自身仍存在某些缺陷:
· KQML的基本語義詞集合缺乏嚴(yán)格的約束,這就造成不同的KQML系統(tǒng)間的不可互操作性。
· KQML的語義沒有嚴(yán)格的定義,這就造成在使用KQML時的隨意性很大,這也是導(dǎo)致互操作性差的一個重要原因。
· KQML的消息傳送機(jī)制缺乏嚴(yán)格定義。
KQML存在的這些缺陷使人們開始研究新的Agent通信語言,F(xiàn)IPA隨后開發(fā)出一種新型的Agent通信語言,它彌補(bǔ)了KQML的眾多缺陷,與此同時也保留了KQML的優(yōu)點(diǎn)。
2) FIPA-ACL通信語言
ACL表面上與KQML很相似,其消息的語法也與KQML非常類似。表3給出了ACL的參數(shù)說明。
3 多Agent技術(shù)的應(yīng)用
近年來,多Agent技術(shù)受到了學(xué)術(shù)界和產(chǎn)業(yè)界的廣泛關(guān)注,具有廣闊的應(yīng)用前景。目前,多Agent技術(shù)在工業(yè)、商業(yè)、教育等領(lǐng)域已經(jīng)得到應(yīng)用。下面重點(diǎn)介紹一下該技術(shù)的一些典型應(yīng)用領(lǐng)域。
1) 在智能信息檢索中的應(yīng)用
傳統(tǒng)的信息檢索方式需要建立在穩(wěn)定的數(shù)據(jù)傳輸基礎(chǔ)上,并且客戶端每次檢索除了從服務(wù)端獲取到有用的數(shù)據(jù)外,還會下載很多無用信息,不僅浪費(fèi)了寶貴的網(wǎng)絡(luò)通信資源而且智能化程度很差。多Agent系統(tǒng)可以提供動態(tài)執(zhí)行檢索和異步計算功能,Agent根據(jù)用戶請求,在服務(wù)端動態(tài)執(zhí)行搜索并返回用戶感興趣的內(nèi)容,既降低了網(wǎng)絡(luò)帶寬消耗又提高了檢索效率。
2) 在工作流中的應(yīng)用
傳統(tǒng)的工作流系統(tǒng)只是按照預(yù)先定義好的流程執(zhí)行相應(yīng)的工作處理流程,無法對外界的新情況及時做出反應(yīng),系統(tǒng)各模塊之間也缺乏協(xié)同機(jī)制,致使系統(tǒng)靈活性較差,而這些方面恰恰是多Agent系統(tǒng)的優(yōu)勢所在。因此,將Agent技術(shù)引入工作流系統(tǒng)中,可以有效提高系統(tǒng)的適應(yīng)性和靈活性。
3) 在電子商務(wù)中的應(yīng)用
Agent技術(shù)應(yīng)用于電子商務(wù)可以為用戶和商家提供資源智能發(fā)現(xiàn)、網(wǎng)上虛擬市場交易等一系列個性化服務(wù)?;贏gent技術(shù)的電子商務(wù)平臺不但可以為商業(yè)主體提供在Internet上搜索所需商品的智能技術(shù),并且可以創(chuàng)造出獨(dú)立于交易雙方的調(diào)控方來全面管理線上交易,從而有效降低了交易消耗的時間和精力,同時也提供了很好的安全性保障機(jī)制。
4 結(jié)束語
本文首先從Agent的定義和特性分析入手,詳細(xì)闡述了多Agent系統(tǒng)的定義、特點(diǎn)和體系結(jié)構(gòu)。在此基礎(chǔ)上,重點(diǎn)介紹了KQML和FIPA-ACL兩種Agent通信語言。最后,就多Agent技術(shù)目前的主要應(yīng)用領(lǐng)域進(jìn)行了分析和闡述。隨著技術(shù)標(biāo)準(zhǔn)的不斷完善以及高效便捷的系統(tǒng)開發(fā)平臺的出現(xiàn),多Agent技術(shù)一定會得到越來越廣泛的應(yīng)用。
參考文獻(xiàn):
[1] M.Wooldridge and N.R.Jennings. Intelligent agents: theory and practice[J]. The Knowledge Engineering Review,1995,10(2): 115-152.
[2] FIPA Specifications. http://www.fipa.org.
[3] Tim Finin, Don McKay, Rich Fritzson, and Robin McEntire. KQML: an information and knowledge exchange protocol. In Kazuhiro Fuchi and Toshio Yokoi, editors, Knowledge Building and Knowledge Sharing. Ohmsha and IOS Press, 2010.
[4] Yannis Labrou and Tim Finin. A semantics approach for KQML-a general purpose communication language for software agents. In Third International Conference on Information and Knowledge Management,2000.