嵌入式輕量Agent平臺的構(gòu)建研究
1 引言
本文引用地址:http://www.ex-cimer.com/article/152112.htm多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快。在一個實際的復雜系統(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的平臺交互。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論