嵌入式轻量Agent平台的构建研究
扫描二维码
随时随地手机看文章
1 引言
多Agent系统是指由多个分布和并行工作的Agent通过协作完成某些任务或达到某些目标的计算系统。嵌入式多智能体是把嵌入式系统与多Agent相结合的技术,充分发挥了二者优势[1]。但是,多年来多Agent系统一直没有应用到嵌入式设备上。这是由于没有合适的Agent平台能够适应于软、硬件资源受到限制的嵌入式系统。KVM (Kilo-bytes Virtual Machine)的出现,使JAVA这种跨平台的语言成功应用于嵌入式设备中,同时也方便了嵌入式环境下的轻量Agent(Lightweight Agent)的实现。本文在ARM嵌入式环境下测试轻量级Agent平台。
2 面向Agent软件开发平台
JADE 是基于跨平台的JAVA语言,是一项旨在开发符合FIPA(Foundation for Intelligent Physical Agents)Agent标准的多Agent系统或程序的软件开发框架[2]。主机上运行的远程管理Agent ( Remote Manage Agent,RMA ),包括AMS(Agent Management System)、DF(Directory Facilitator)、ACC(Agent Communication Channel)三部分。
如果利用JDAE平台开发多Agent系统,运行环境必须具备JAVA虚拟机。但是,这么一个软件运行空间的大小远远超过普通嵌入式系统所能提供的存储空间。因此必须采用一种新的轻量化的Agent开发平台、框架,使其适应于嵌入式环境。
3 轻量Agent平台研究
3.1轻量化LEAP的研究
LEAP(Lightweight Extensible Agent Platform)是JADE运行在J2ME/CLDC下的版本,专门在手持设备等资源受限的环境中运行。LEAP运行在通信的上层,容器Container之间通过TCP/IP通信而不用关心物理连接方式[4]。
J2ME把运算功能有限、电力有限的嵌入式设备称作可连接外界、资源有限的设备,规定这类设备要执行JAVA程序必须满足某些特定条件(CPU速度等),这些必须满足的条件就定义在CLDC规范中。与标准版的JAVA—J2SE相比,J2ME/CLDC所支持的只有标准核心类库的子集合,对存储空间的需求在160KB~512KB之间。并且J2ME /CLDC添加支持嵌入式系统的扩充类库,如javax.microedition.io.*类库,不含有RMI。所以,LEAP直接使用TCP/IP套接字通信来连接不同的容器[4]。LEAP没有AMS和DF,为了实现这些功能,LEAP直接访问运行在其它机器上的JADE平台。分布在每一个嵌入式设备上的Agent的代码量就会大大减少,各Agent的功能不会减弱。
3.2轻量化平台的运行
LEAP有两种截然不同的运行方式,其中一种方式是将一个完整的容器运行在嵌入式设备上,即Stand alone 方式。另外一种为Split 方式,将容器划分成前台(FrontEnd)和后台(BackEnd),前台即运行在嵌入式设备上,后台运行在装有J2SE的主机上。
一个完整的容器启动需要首先启动AMS和DF。根据文献[3]的介绍,前台作为一个存储空间有限的设备,不可能运行大量代码,是轻量的。结果,前台启动后不会创建AMS与DF。同时,代码量的减少使得前台启动加快。后台部分运行在普通的主机上,前台对后台的依赖体现在后台必须在前台启动之前工作起来。
3.3轻量Agent平台改进
3.3.1 KDDIAP
由于环境等因素的影响,移动嵌入式设备在无线通信时经常会遇见通讯连接不稳定、设备不在信号覆盖的范围等问题。在无线设备上运行Agent会因为上述问题不能随时随地提供服务。
这种情况发生时,JADE-LEAP就不能很好地满足人们的需求。而这是由LEAP的特性决定的,LEAP应用于无线设备完全依赖于主PC机上的JADE平台,即采用Split运行方式。因此,实现嵌入式无线设备上的Agent管理,首先要保证通讯稳定,这在无线环境下实现就有些困难。针对这些问题,文献[6]提出了专门针对手机等无线通信设备的Agent平台架构KDDIAP。将移动设备和中央服务器分解成一个个符合FIPA的子平台。遵循FIPA是为了与其他类似平台方便地交互信息。与LEAP最大的区别就在于,移动设备上运行的子平台也具有AMS和DF功能。每个手机上都有相对完整的Container。
3.3.2混合模式轻量Agent平台
KDDIAP适合于无线环境下应用,在最初启动时需要创建AMS和DF。然而,JADE-LEAP启动时不用创建AMS和DF,速度显然会比KDDIAP快。在一个实际的复杂系统中,存在很多嵌入式设备,它们分别工作在有线连接的网络和无线网络的环境中,各自的存储资源也不尽相同。根据各自不同的特点,我们把KDDIAP与LEAP技术结合起来,对现有的Agent运行系统框架进行改进。如图1,有3个容器,Main Container运行在J2SE上,Container-1运行在J2ME/CLDC或Personal Java上,Container-2运行在J2ME/CLDC上;Container-2处于Split 方式,而Container-1类似于KDDIAP方式,它在启动时会创建AMS与DF。Container-2对应的设备应该有较好的通信保障,前台在启动之后如果也创建AMS和DF将总共用到大约40个JAVA类,不适合资源受限的嵌入式设备 。我们在前台仅仅创建一个Client Agent,可以随时访问后台,与后台交互信息,对于存储空间有限或处理器速度较慢的情况下确保了通信的实时性;相比之下Container-1处于无线环境,利用KDDIAP提供的方法可使Agent在任何时候提供服务,软件Agent的代码也会相应增加,对设备计算能力的要求会高一些,例如可以让软件Agent工作在ARM这样的高档硬件平台上。
这种改进能确保异构网络环境下轻量Agent的正常运行,并且使整个Agent系统软件精简灵活。同时,我们所做的改动仍然遵循FIPA 标准,以方便与其他符合FIPA的平台交互。[!--empirenews.page--]
图1 混合模式轻量Agent平台
4 轻量Agent在嵌入式环境下部署
4.1 KVM移植
为测试轻量Agent平台,我们将Agent平台移植到基于ARM的嵌入式系统。这种嵌入式系统以三星公司的 S3C2410 芯片(ARM9内核)作为应用处理器,实时操作系统采用 Linux 操作系统。针对嵌入式设备硬件资源有限的事实,CLDC规范定义一个简化版本的JAVA虚拟机,这个虚拟机通常被称为KVM(Kilo-bytes Virtual Machine) [5]。
图2 轻量化的系统结构
图3 编译后的KVM
建立轻量Agent运行的环境,需要在基于ARM与嵌入式操作系统的平台上移植KVM,使JAVA语言能够运行,如图2。而KVM的目的是创造一个尽可能小的且尽可能完整的JAVA虚拟机,使开发者不用像开发C语言一样关心硬件,而通过JAVA语言来进行开发,达到一次编译,各种平台使用的目的。图3表示编译好的KVM可以在ARM上运行。将KVM烧到目标平台上,便可以执行JAVA程序。
4.2 轻量Agent部署
根据改进的轻量Agent框架部署Agent平台,图4所示的JADE安装在运行J2SE的PC机上,Container-1和Container-2对应着轻量Agent运行的不同环境。
图1中的PDA处于无线通信方式,它的Agent平台一旦启动,便会自动创建AMS和DF。同时,PDA上Container-1立即到位于PC机上的JADE平台上注册。图1中的嵌入式设备是基于s3c2410的网络设备,通过网线与邻近的PC机通信。这里的嵌入式设备上软件Agent平台启动后不会创建AMS和DF,为获得相应的服务,嵌入式设备只需创建一个Client Agent,利用这个智能体随时通过网线访问后台即可。图4中Container-1和Container-2里面的所有Agent会注册到Main-Container所在的Agent平台。
完成注册后,各远端Agent与Main-Container所在的Agent平台通信,提供各自的信息,供其它平台上的Agent利用。异构网络环境下,各嵌入式实时设备协同工作就基于这些信息。Container-1中的Agent若要同Container-2中的Agent交互,需要找到临近的主机注册。注册到Main-Container所在的主机上之后,在主平台下与已经注册了的Container-2中的Agent 交互信息。
并不是所有的Container都能够提供注册服务,Container-2就是如此。提供注册与注销服务的平台,一般运行在资源丰富的PC机上,这样为嵌入式设备上运行的软件Agent减少了相应的服务,也减少了代码。
图 4 Agent的注册与部署结果
5 结论
JADE-LEAP框架下,位于资源有限设备上的Agent不具有AMS与DF创建的功能,为实现这一功能只有通过网络远程访问。在有线的网络环境下,实现这些功能并不难,可是一旦处于无线环境这种平台就不稳定了。KDDIAP作为对LEAP这种原有的轻量化平台的改进,解决了无线环境下实时获得Agent服务的问题,这是以增加代码量和平台启动时间为代价的。混合模式的轻量Agent平台结合了两种轻量平台的优点,保证了Agent平台轻量化、灵活性。
本文创新点:目前国内外使用的多代理系统开发平台很多,但是适合于嵌入式系统平台却不多。主要原因在于嵌入式系统资源受限、工作环境多变、原有代理开发平台代码量大。本文对原有的开发平台进行轻量化改进,使其适合嵌入式系统,并以S3C2410为例,研究了系统的构建方法。