首页 理论教育 移动Agent技术-Aglets、FIPA规范及系统开发

移动Agent技术-Aglets、FIPA规范及系统开发

时间:2023-11-23 理论教育 版权反馈
【摘要】:Aglets中的移动Agent 称为“Aglet”,是一个可移动的Java 对象。FIPA 是一个非营利组织,于1996 年建立于瑞士日内瓦。FIPA 建立的目的是为了提高异构系统之间的交互性,并为此制定一系列从体系结构、通信语言、内容语言到交互协议等的技术规范。FIPA 是一个可以公开利用的规范,它不是一项特定的应用技术,而是针对不同应用领域的通用技术。它也不是一项独立的技术,而是一套基本技术集,该技术集使得开发者可以开发出具有高度协同能力的复杂系统。

移动Agent技术-Aglets、FIPA规范及系统开发

一、开发语言及工具的选择

目前较为主流的开发语言为C 语言和Java 语言。C 语言产生已经近40年,功能极为强大,使用也较为广泛,如UNIX 系统就是采用C 语言开发的。但是,要掌握C 语言难度很大,如果掌握不熟练,很难开发出比较好的商业化程序,而且C 语言在安全性能上也表现不佳,在应用软件开发方面,采用C 语言可能具有一定的局限性。

Java 语言来自Sun 公司一个称为“Green”的项目,最初是为用户控制家用消费电子产品(如冰箱洗衣机等)而开发的一种面向对象的程序设计语言,它的最大特点是平台无关性。与C 语言相比,Java 语言主要有如下4 个优点。

(1)简单。Java 语言摒弃了C 语言中容易引发程序错误的地方,如指针和内存管理等,并且提供了丰富的类库和大量已经开发的项目源代码供参考。

(2)面向对象。C 语言支持的是面向过程的程序设计,这使得其在分布式的计算环境下不如Java 语言。

(3)动态。允许程序动态地装入运行过程中所需要的类,如果使用C 语言,每当在类中增加一个实例变量或成员函数后,都必须对所有的子类重新编译,否则会导致程序的崩溃

(4)可移植。Java 语言可以在任何配备Java 解释器和运行环境的任何系统中运行,与系统的体系结构无关。

上述4个优点比较符合Agent 的基本特征,也正是Agent 开发所需要的。所以,为了与Agent 开发平台进行更好的配合,本书选择Java语言进行基于议题偏好修改的Agent 劝说系统开发。相关的开发工具有很多,如Jbuilder、JDK 等,在这里主要选择目前较新并且使用较为普遍的Borland 公司的Jbuilder 工具进行开发。

二、Agent开发平台介绍和选择

随着Agent 的逐渐兴起和发展,各种有关Agent 的开发平台也随之产生并得到发展,目前较为主流的开发平台有以下8 个。

1. Aglets 平台

Aglets是最早基于Java的移动Agent 开发平台之一,是由IBM公司东京实验室开发的移动代理系统。Aglets 的设计非常简洁,且容易安装,随系统附带的例程丰富、简单实用,特别是它的源代码公开,并具有完整的说明文档,很适合应用开发和学习。Aglets的名字来源于“Agent”和“Applet”,可以简单地将其看成具有Agent 行为的Applet 对象[166]

Aglets中的移动Agent 称为“Aglet”,是一个可移动的Java 对象。一个Aglet 具有全球唯一的标识符,包含一些属性、方法和一个旅行计划,该旅行计划包含移动信息和错误处理机制。考虑到安全性,Aglet 不能直接被访问,而必须通过其代理。通过代理的引入,一方面防止Aglet 中的属性和方法被直接使用,另一方面也使Aglet 的地址具有透明性— —访问一个Aglet 时,只需要获得其代理的引用,而不必关心其具体位置。

Aglet以线程的形式产生于一台机器,需要时可以随时暂停正在执行的工作,并将整个Aglet 分派到另一台机器上,然后继续执行尚未完成的任务。从概念上讲,一个Aglet 就是一个移动Java对象,它支持自动运行的思想,可以从一个基于Aglet的主机移动到其他支持Aglet 的主机上[167]

Aglets包含一个运行Mobile Agent的服务器— —Tahiti 和一套类库,开发者基于它可以轻松地开发各种Agent 的应用,如创建移动Agent 和将Aglet 技术嵌入到它们的应用之中。

2. FIPA 开源工具包

FIPA-OS(Physical Agent-Open Source)是常用的基于FIPA 标准的Agent 工具包。

FIPA 是一个非营利组织,于1996 年建立于瑞士日内瓦。FIPA 建立的目的是为了提高异构系统之间的交互性,并为此制定一系列从体系结构、通信语言、内容语言到交互协议等的技术规范。FIPA 的主要思想是通过融合言语行为理论、谓词逻辑及公共的本体论,来提供一个标准的方法以理解Agent 之间的交流。FIPA 是一个可以公开利用的规范,它不是一项特定的应用技术,而是针对不同应用领域通用技术。它也不是一项独立的技术,而是一套基本技术集,该技术集使得开发者可以开发出具有高度协同能力的复杂系统。

FIPA 包括以下4 个基本内容。

(1)中间件支持,包括注册、定位服务、通信服务、移动性及安全性支持。

(2)Agent 通信语言,包括语义、交互协议、责任等。

(3)和本地软件的交互,将遗留系统或数据库包装起来。

(4)Agent 与人的交流,定义了交流内容与交流方式。

FIPA平台的主要功能是管理Agent 的生命周期、使Agent 能与平台内或平台外的Agent 通信、使之能访问平台提供的服务等。FIPA 的平台模型主要有以下4 个功能模块。

(1)AMS(Agent Management System)。AMS是FIPA 管理模型中必需的部分,相当于平台的管理者,它监控着Agent 对平台的访问。AMS保存着在该平台上活动的Agent 的ID,每个Agent 为了获得有效的ID,必须先向AMS 注册。

(2)DF(Directory Facilitator)。DF也是平台的必须部分,它提供平台内的黄页服务。Agent可以向DF注册自己的能力或服务信息,也可以从DF中查询提供有关服务的Agent的信息。

(3)MTS(Message Transport Service)。MTS 提供了不同Agent 之间的访问控制列表消息交互机制。

(4)FIPA是能被部署运行的物理实体,它不仅包括前面的AMS、DF、MTS,还包括底层硬件、操作系统和支撑软件,如JRE 等。FIPA 并没有规定AP的实现方式,平台的内部实现由Agent系统的开发者决定。

3. JACK 开发环境

JACK最初由宾夕法尼亚大学人体模型和模拟中心开发,是一款基于Java语言的多Agent集成开发环境。该平台能非常灵活地应用于许多计算机环境中,用其开发的Agent 系统具有很高的敏捷性和可靠性,而且系统的执行效率很高。目前,该系统已经被广泛应用于电信、制造业、电子商务等诸多领域的智能系统的开发[168]

(1)JAL 语言。JAL(JACK Agent Language)是一种基于Java 的Agent程序设计语言,它在面向对象的基础上引入了Agent、Capability、Event、Plant、Belief Set 这些全新的概念,使其足以开发多Agent系统的需要。下面对上述概念做个简要介绍:①Agent。Agent 用于定义软件Agent 的各种行为,它包括Agent 拥有的数据和能力、可以响应的事件以及为达到某种目的而采取的行动规划。②Capability。Capability是Agent 的可重用组件,相当于面向对象技术中的模块。它内部封装了诸如事件、规划、子能力等关于推理的组成要素,描述了一个Agent 所具有的能力。③Plan。Plan 规定了Agent 为实现某个目标或在处理某个事件时所采取的动作序列。④Event。与面向对象技术中事件的概念相类似,Event 可以激发Agent 采取某种规划来对其进行处理。⑤Belief Set。Belief Set 用来表示Agent 的信念信息。JAL 中信念集用关系数据模型来表示。信念集中的信念信息是自动维护更新的,并能自动地保持数据的一致性。

(2)JACK Web Bot 组件。JACK Web Bot 组件是JACK 开发环境的一个组件,利用Web Bot 可以开发面向Agent 的Web应用程序。Web Bot 能够将HTTP请求映射为JACK Agent能够处理的事件,依据Agent 的处理结果,可以动态生成网页,并以其作为HTTP 的应答。

4. JADE 软件框架

JADE(Java Agent Development Framework)是由TILAB 开发的一个独立的Java的API包,用于开发基于Agent 的符合FIPA智能多Agent 系统标准的软件框架。同样,JADE也是系统开发成功后Agent 的运行环境。它的目标是简化Agent 系统的开发过程与难度,同时保证与系统提供的服务以及各Agent 之间相一致。因此,JADE可以被看作一种Agent 中间件,可以用它来实现一个Agent 平台和开发框架。它负责处理所有那些与Agent 内部特性无关的东西,以及那些独立于具体应用的东西,如消息传递、编码和解析、Agent 生命周期等[169]

(1)JADE组成部分。JADE包括两个组成部分:遵守FIPA Agent 平台与发展Java Agent的一些软件包。由于它是用Java语言编写,因此具有面向对象程序设计的特性,程序设计者可利用它所提供的与Agent 有关的软件包来实现多Agent 系统,可以有效简化面向切面编程设计的复杂度

JADE的Agent 平台提供图形化的使用者界面,通过图形用户接口(GUI)来进行远程管理、监控以及Agent 状态的控制,GUI 的环境可以让Agent 开发者进行位于远程主机上Agent 的产生及启动Agent 的执行。

JADE架构上既包含开发应用Agent 所需的类库(如Java类),也包含提供基本服务、在运行Agent 前必须处于活动状态的运行时环境。JADE运行时的每一个实例都叫做“Container”,因为它“盛放”着Agent。所有Container的集合就是平台,它提供一个均匀的层,用来向Agent 和应用程序开发者隐藏下层结构(如硬件、操作系统、网络类型、Java 虚拟机等)的复杂性和多样性[170]

(2)JADE Agent 平台架构。由FIPA 定义的标准的Agent 平台模式由以下两个部分组成。

①Agent 管理系统(Agent Management System,简称AMS)是负责监督管理对Agent 平台的访问和使用的Agent,控制平台内Agent 的活动、生存周期及外部应用程序与平台的交互,规范Agent 在平台上用独一无二的名字来标识;在一个单独的平台上,只能有一个AMS。AMS 提供白黄页服务以及生命周期服务,它保留了一个Agent 标识符目录(AID)和Agent 状态信息。每个Agent 必须在AMS 注册,以获得一个有效的AID。②目录服务(Dilectoly Facilitatol,简称DF)是在平台上提供默认的黄页服务的Agent,负责对平台内的Agent提供黄页服务,注册服务类型以供查找。③消息传输系统又称Agent 通信通道(Agent Communication Channel,简称ACC),是控制平台内所有的信息交换,包括与远端平台进行信息交换的软件,控制平台内或不同平台之间的消息传输、消息编码、消息解析等。(www.xing528.com)

JADE完全参照这个标准体系结构。因此,当一个JADE平台启动的时候,AMS 和DF 就自动被建立,同时ACC 模块允许消息进行传输。

5. JAFMAS 系统

JAFMAS(Java-based Agent Franmework for Multi-agent Systems)是一个基于Java的多Agent 开发系统。它定义了开发多Agent应用的一般方法,同时提供一套服务。这些服务使Agent 应用开发人员不必从头开始构建多Agent 系统的协作机制,并且给多Agent 之间的通信、协作和交互提供服务。

JAFMAS注重Agent 之间的通信和交互,从而使整个系统实现统一的系统目标。多Agent应用系统开发人员在JAFMAS有关类的支持下开发具体的应用。

JAFMAS 的系统结构有用户接口层、应用层社会模型层、本地模型层、通信层等组成。每层有一组相关的Java 类来实现其功能,下层通过对上层提供透明的服务,并通过Java 构造跨平台的分布式系统。

构成JAFMAS的核心层有3层:通信模型层、社会模型层、多Agent 应用层。通信模型层又细分为通信语言层和通信协议层;社会模型层指Agent之间的交互,包括Agent 之间的会话、会话规则以及资源提供;多Agent 应用层给出Agent 的抽象类,供多Agent应用开发者依据特定应用继承。

(1)通信模型层。通信模型层又分为通信语言和通信协议两个子层。通信语言定义了基于KQML语言的消息类Message 和消息队类Msg Queue,通信协议提供基于Java RMI 的单目通信和基于UDP 的组内广播。类Multicast Com是扩展了Java 的Thread 类的对象。一个Agent 可有多个Multicast Com,这使得一个Agent 可以同时订购多个组,从而可同时接收、响应不同组的消息和请求。

(2)社会模型层。本层提供 Agent 进行交互、协作的会话类Conversation 和会话规则类Conv Rule 以供用户继承。Conversation 是Agent 为了完成某一任务和其他Agent 进行的交流。Requested Resource Provider保存了Agent 所需要的资源及提供这些资源的其他Agent 列表。同时,Agent 也响应其他Agent 提出的资源需求。

(3)多Agent应用层。该层提供Agent 基本抽象类供用户继承。在该层中,用户需要重写抽象类中的一些虚函数。

6. JATLite 软件包

JATLite(Java Agent Template,Lite)是斯坦福大学计算机科学系用Java 语言开发的一个软件包,用户可以利用JATLite 能够快速生成在因特网上通信的软件Agent。出于灵活性考虑,整个平台分为5个不同的层次,从上到下依次为协议层、路由层、KQML层、基本层和抽象层[171],具体层次如图8-1所示。

图8-1 JATLite 层次图

JATLite平台提供大量预定义的Java类,从Thread类扩展,具备Agent的运行自主性,并且通过封装机制使用户无需关心Agent 底层的通信实现,为用户快速构建Agent 提供了模板。Agent 之间的通信采用标准的Agent通信语言KQML语言,为异种平台之间的Agent 通信提供标准,编程者对多Agent的交互编程时,只需实现各个Agent中相应的方法,从而实现多Agent之间的通信。JATLite 的层次化、模块化特点,使得基于该平台开发的项目具有易扩展、易维护的特点,用户根据自己的需要决定从平台的不同层次进行扩展。通过该平台构建的Agent 本身不含“智能”的成分,“智能”的成分由用户自己加以实现[172]

7. Microsoft Agent 软件

Agent的中文含义是“代理”,但这里的“代理”是指一类专用软件,其作用是提供一种易于理解和使用的界面来接受用户的指令,代替用户完成一些比较繁琐的工作,或者为用户提供帮助[173]。Microsoft Agent 是一种服务器程序运行在Win98/2000XP操作平台上,为其他程序调用Agent 的客户程序。例如,利用VB、C+ +、Java、VFP、C 等开发应用软件,也可以是HTML 文件名中的Java Script、Visual Script 脚本语言代码,提供服务的ActiveX 控件,Microsoft Agent 能成为传统界面组成部分之一,原因在于它能够很好地与传统Window窗口、菜单以及其他应用软件的界面相[174,175]

Microsoft Agent 2.0版提供技术,为应用程序和网页创建创新型的会话界面。它提供了强大的动画功能,具有交互性和多功能性,非常易于开发。此外,Microsoft Agent 还是一种技术,为人与计算机进行通信提供了更自然的途径。该软件使开发人员能够将交互式动画人物纳入其应用程序和网页。这些角色可以通过文本、语音引擎或录制的音频,甚至可以接受口头的语音命令。Microsoft Agent 使开发人员能够将用户界面扩展到传统鼠标和键盘交互之外,利用明显的交互式个性来增强应用程序和网页,扩大用户和他们的计算机之间的交互,并使其人性化。

微软已经宣布对于Windows 7 及以后的产品都不再支持Microsoft Agent,但是仍然可以到微软官网下载修复补丁以支持该功能。现在国外已经有人制作了一款名为“Double Agent”的组件,其功能及代码与Microsoft Agent几乎一模一样,却可以完美地运行在Windows 7上。

8. Zeus 程序

Zeus 是英国BT 公司开发的一种以Java 技术为基础的应用程序。Zeus主要包括3 个组件,分别是Agent 组件库、Agent 系统创建工具和效用Agent。

Agent 组件库是软件组件的集合,这些软件组件对于完成多Agent 系统功能来说是必需的。Agent组件库中汇集了由Java编写的多种类,这些类向开发者提供了一种用尽量少的程序代码生成Agent 的方法。Agent系统创建工具用来开发应用层面的Agent 系统。效用Agent 包括一些有特定功能的Agent。

Zeus提供了快速开发多Agent 系统的集成环境。Zeus 定义了一个多Agent 系统的设计方法,并用可视化环境支撑,这种可视化环境可以根据用户的定制来产生Agent 的Java 源码

Zeus 有着自己的一套开发方法,其大致内容如下。

(1)分析:初步分析的目的在于建模和理解问题。Zeus 没有明确地对问题的分析提出任何特定的方法,而是留给开发者选择他们自己所喜爱的方法进行分析。然而,一个值得推荐的方法是使用角色建模。角色建模虽然借鉴了许多对象建模的思想与方法,但它仍是一种区别于对象建模的一种多Agent 系统分析设计方法。它的主要特点如下:

①与实际问题密切结合,反映的是以功能角色为单位的系统状况。它比对象建模所描述的层次要高,更接近于现实问题。②每个角色并不一定都要对应于Agent,但Agent至少是一种角色的反映。③角色有着良好的完备性、模块性、自治性。

这种方法的原则是开发者在建模时,要从问题中分析和寻找需要扮演的角色,以及要从各个角色(由相应的Agent实现)彼此之间的职责来考虑。

(2)设计:这个步骤包含将每个Agent 的角色职责转换为它们所表现的Agent 层面的问题,然后得到合适的解决方法。分析阶段需要理解问题的需求,而设计阶段则需要一些专业技术,如知道何时和怎样重用或是修改已有的解决方案

(3)现实应用:这一过程包括下面5 个分步骤(除了最后一步需要编程以外,其他步骤都可以通过Zeus 界面直接配置):

步骤1 Agent定义指定每个Agent 的属性:它所要执行的任务、可使用的初始资源和Agent 的初始计划等。

步骤2 任务定义:每一个Agent 在有限的时间内完成某一任务,达到某一结果,这期间要消耗一定数量的资源。这个步骤就是定义各个任务的代价、前提条件、所得结果、约束和一些预处理等。

步骤3 Agent 组织:在这个过程,使用可视化编辑器来定义Agent 之间的关系。这使开发者指定各个关系的属性,如优先级、对方Agent 被认为具有的信任值等。

步骤4 Agent 合作:这一阶段使用另一个可视化编辑器,以使得每个Agent 具有必要的群体交互策略。这些策略的适应性取决于Agent 的状态和角色。Zeus 工具包提供了一系列的策略,如合同策略、委托人-服务商策略等。

步骤5 Agent 执行:这一阶段在Zeus 生成器产生Agent 源代码之后进行。所有的外部动作(如任务和数据库的存取)由Zeus 工具包以回馈的方式产生,因而最后的步骤5 是唯一需要写程序代码的开发过程。

基于以上调研和分析,赵书良博士对此作出相关归纳总结[106],如表8-6所示。

表8-6 Multi-agent system 的CASE 工具和环境

在上述开发平台中,由于JADE 简化了相关应用的开发,并且使用的是Java 语言,因而得到广泛应用。目前国外已经有许多公司开始使用这种平台,其应用领域已经非常广泛。本书也选择这种开发平台来进行系统开发。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈