1 引言
多Agent系統(tǒng)是指由多個分布和并行工作的Agent通過協(xié)作完成某些任務(wù)或達到某些目標的計算系統(tǒng)。嵌入式多智能體是把嵌入式系統(tǒng)與多Agent相結(jié)合的技術(shù),充分發(fā)揮了二者優(yōu)勢[1]。但是,多年來多Agent系統(tǒng)一直沒有應(yīng)用到嵌入式設(shè)備上。這是由于沒有合適的Agent平臺能夠適應(yīng)于軟、硬件資源受到限制的嵌入式系統(tǒng)。KVM (Kilo-bytes Virtual Machine)的出現(xiàn),使JAVA這種跨平臺的語言成功應(yīng)用于嵌入式設(shè)備中,同時也方便了嵌入式環(huán)境下的輕量Agent(Lightweight Agent)的實現(xiàn)。本文在ARM嵌入式環(huán)境下測試輕量級Agent平臺。
2 面向Agent軟件開發(fā)平臺
JADE 是基于跨平臺的JAVA語言,是一項旨在開發(fā)符合FIPA(Foundation for Intelligent Physical Agents)Agent標準的多Agent系統(tǒng)或程序的軟件開發(fā)框架[2]。主機上運行的遠程管理Agent ( Remote Manage Agent,RMA ),包括AMS(Agent Management System)、DF(Directory Facilitator)、ACC(Agent Communication Channel)三部分。
如果利用JDAE平臺開發(fā)多Agent系統(tǒng),運行環(huán)境必須具備JAVA虛擬機。但是,這么一個軟件運行空間的大小遠遠超過普通嵌入式系統(tǒng)所能提供的存儲空間。因此必須采用一種新的輕量化的Agent開發(fā)平臺、框架,使其適應(yīng)于嵌入式環(huán)境。
3 輕量Agent平臺研究
3.1輕量化LEAP的研究
LEAP(Lightweight Extensible Agent Platform)是JADE運行在J2ME/CLDC下的版本,專門在手持設(shè)備等資源受限的環(huán)境中運行。LEAP運行在通信的上層,容器Container之間通過TCP/IP通信而不用關(guān)心物理連接方式[4]。
J2ME把運算功能有限、電力有限的嵌入式設(shè)備稱作可連接外界、資源有限的設(shè)備,規(guī)定這類設(shè)備要執(zhí)行JAVA程序必須滿足某些特定條件(CPU速度等),這些必須滿足的條件就定義在CLDC規(guī)范中。與標準版的JAVA—J2SE相比,J2ME/CLDC所支持的只有標準核心類庫的子集合,對存儲空間的需求在160KB~512KB之間。并且J2ME /CLDC添加支持嵌入式系統(tǒng)的擴充類庫,如javax.microedition.io.*類庫,不含有RMI。所以,LEAP直接使用TCP/IP套接字通信來連接不同的容器[4]。LEAP沒有AMS和DF,為了實現(xiàn)這些功能,LEAP直接訪問運行在其它機器上的JADE平臺。分布在每一個嵌入式設(shè)備上的Agent的代碼量就會大大減少,各Agent的功能不會減弱。
3.2輕量化平臺的運行
LEAP有兩種截然不同的運行方式,其中一種方式是將一個完整的容器運行在嵌入式設(shè)備上,即Stand alone 方式。另外一種為Split 方式,將容器劃分成前臺(FrontEnd)和后臺(BackEnd),前臺即運行在嵌入式設(shè)備上,后臺運行在裝有J2SE的主機上。
一個完整的容器啟動需要首先啟動AMS和DF。根據(jù)文獻[3]的介紹,前臺作為一個存儲空間有限的設(shè)備,不可能運行大量代碼,是輕量的。結(jié)果,前臺啟動后不會創(chuàng)建AMS與DF。同時,代碼量的減少使得前臺啟動加快。后臺部分運行在普通的主機上,前臺對后臺的依賴體現(xiàn)在后臺必須在前臺啟動之前工作起來。
3.3輕量Agent平臺改進
3.3.1 KDDIAP
由于環(huán)境等因素的影響,移動嵌入式設(shè)備在無線通信時經(jīng)常會遇見通訊連接不穩(wěn)定、設(shè)備不在信號覆蓋的范圍等問題。在無線設(shè)備上運行Agent會因為上述問題不能隨時隨地提供服務(wù)。
這種情況發(fā)生時,JADE-LEAP就不能很好地滿足人們的需求。而這是由LEAP的特性決定的,LEAP應(yīng)用于無線設(shè)備完全依賴于主PC機上的JADE平臺,即采用Split運行方式。因此,實現(xiàn)嵌入式無線設(shè)備上的Agent管理,首先要保證通訊穩(wěn)定,這在無線環(huán)境下實現(xiàn)就有些困難。針對這些問題,文獻[6]提出了專門針對手機等無線通信設(shè)備的Agent平臺架構(gòu)KDDIAP。將移動設(shè)備和中央服務(wù)器分解成一個個符合FIPA的子平臺。遵循FIPA是為了與其他類似平臺方便地交互信息。與LEAP最大的區(qū)別就在于,移動設(shè)備上運行的子平臺也具有AMS和DF功能。每個手機上都有相對完整的Container。
3.3.2混合模式輕量Agent平臺
KDDIAP適合于無線環(huán)境下應(yīng)用,在最初啟動時需要創(chuàng)建AMS和DF。然而,JADE-LEAP啟動時不用創(chuàng)建AMS和DF,速度顯然會比KDDIAP快。在一個實際的復(fù)雜系統(tǒng)中,存在很多嵌入式設(shè)備,它們分別工作在有線連接的網(wǎng)絡(luò)和無線網(wǎng)絡(luò)的環(huán)境中,各自的存儲資源也不盡相同。根據(jù)各自不同的特點,我們把KDDIAP與LEAP技術(shù)結(jié)合起來,對現(xiàn)有的Agent運行系統(tǒng)框架進行改進。如圖1,有3個容器,Main Container運行在J2SE上,Container-1運行在J2ME/CLDC或Personal Java上,Container-2運行在J2ME/CLDC上;Container-2處于Split 方式,而Container-1類似于KDDIAP方式,它在啟動時會創(chuàng)建AMS與DF。Container-2對應(yīng)的設(shè)備應(yīng)該有較好的通信保障,前臺在啟動之后如果也創(chuàng)建AMS和DF將總共用到大約40個JAVA類,不適合資源受限的嵌入式設(shè)備 。我們在前臺僅僅創(chuàng)建一個Client Agent,可以隨時訪問后臺,與后臺交互信息,對于存儲空間有限或處理器速度較慢的情況下確保了通信的實時性;相比之下Container-1處于無線環(huán)境,利用KDDIAP提供的方法可使Agent在任何時候提供服務(wù),軟件Agent的代碼也會相應(yīng)增加,對設(shè)備計算能力的要求會高一些,例如可以讓軟件Agent工作在ARM這樣的高檔硬件平臺上。
這種改進能確保異構(gòu)網(wǎng)絡(luò)環(huán)境下輕量Agent的正常運行,并且使整個Agent系統(tǒng)軟件精簡靈活。同時,我們所做的改動仍然遵循FIPA 標準,以方便與其他符合FIPA的平臺交互。[!--empirenews.page--]
圖1 混合模式輕量Agent平臺
4 輕量Agent在嵌入式環(huán)境下部署
4.1 KVM移植
為測試輕量Agent平臺,我們將Agent平臺移植到基于ARM的嵌入式系統(tǒng)。這種嵌入式系統(tǒng)以三星公司的 S3C2410 芯片(ARM9內(nèi)核)作為應(yīng)用處理器,實時操作系統(tǒng)采用 Linux 操作系統(tǒng)。針對嵌入式設(shè)備硬件資源有限的事實,CLDC規(guī)范定義一個簡化版本的JAVA虛擬機,這個虛擬機通常被稱為KVM(Kilo-bytes Virtual Machine) [5]。
圖2 輕量化的系統(tǒng)結(jié)構(gòu)
圖3 編譯后的KVM
建立輕量Agent運行的環(huán)境,需要在基于ARM與嵌入式操作系統(tǒng)的平臺上移植KVM,使JAVA語言能夠運行,如圖2。而KVM的目的是創(chuàng)造一個盡可能小的且盡可能完整的JAVA虛擬機,使開發(fā)者不用像開發(fā)C語言一樣關(guān)心硬件,而通過JAVA語言來進行開發(fā),達到一次編譯,各種平臺使用的目的。圖3表示編譯好的KVM可以在ARM上運行。將KVM燒到目標平臺上,便可以執(zhí)行JAVA程序。
4.2 輕量Agent部署
根據(jù)改進的輕量Agent框架部署Agent平臺,圖4所示的JADE安裝在運行J2SE的PC機上,Container-1和Container-2對應(yīng)著輕量Agent運行的不同環(huán)境。
圖1中的PDA處于無線通信方式,它的Agent平臺一旦啟動,便會自動創(chuàng)建AMS和DF。同時,PDA上Container-1立即到位于PC機上的JADE平臺上注冊。圖1中的嵌入式設(shè)備是基于s3c2410的網(wǎng)絡(luò)設(shè)備,通過網(wǎng)線與鄰近的PC機通信。這里的嵌入式設(shè)備上軟件Agent平臺啟動后不會創(chuàng)建AMS和DF,為獲得相應(yīng)的服務(wù),嵌入式設(shè)備只需創(chuàng)建一個Client Agent,利用這個智能體隨時通過網(wǎng)線訪問后臺即可。圖4中Container-1和Container-2里面的所有Agent會注冊到Main-Container所在的Agent平臺。
完成注冊后,各遠端Agent與Main-Container所在的Agent平臺通信,提供各自的信息,供其它平臺上的Agent利用。異構(gòu)網(wǎng)絡(luò)環(huán)境下,各嵌入式實時設(shè)備協(xié)同工作就基于這些信息。Container-1中的Agent若要同Container-2中的Agent交互,需要找到臨近的主機注冊。注冊到Main-Container所在的主機上之后,在主平臺下與已經(jīng)注冊了的Container-2中的Agent 交互信息。
并不是所有的Container都能夠提供注冊服務(wù),Container-2就是如此。提供注冊與注銷服務(wù)的平臺,一般運行在資源豐富的PC機上,這樣為嵌入式設(shè)備上運行的軟件Agent減少了相應(yīng)的服務(wù),也減少了代碼。
圖 4 Agent的注冊與部署結(jié)果
5 結(jié)論
JADE-LEAP框架下,位于資源有限設(shè)備上的Agent不具有AMS與DF創(chuàng)建的功能,為實現(xiàn)這一功能只有通過網(wǎng)絡(luò)遠程訪問。在有線的網(wǎng)絡(luò)環(huán)境下,實現(xiàn)這些功能并不難,可是一旦處于無線環(huán)境這種平臺就不穩(wěn)定了。KDDIAP作為對LEAP這種原有的輕量化平臺的改進,解決了無線環(huán)境下實時獲得Agent服務(wù)的問題,這是以增加代碼量和平臺啟動時間為代價的?;旌夏J降妮p量Agent平臺結(jié)合了兩種輕量平臺的優(yōu)點,保證了Agent平臺輕量化、靈活性。
本文創(chuàng)新點:目前國內(nèi)外使用的多代理系統(tǒng)開發(fā)平臺很多,但是適合于嵌入式系統(tǒng)平臺卻不多。主要原因在于嵌入式系統(tǒng)資源受限、工作環(huán)境多變、原有代理開發(fā)平臺代碼量大。本文對原有的開發(fā)平臺進行輕量化改進,使其適合嵌入式系統(tǒng),并以S3C2410為例,研究了系統(tǒng)的構(gòu)建方法。