首页 理论教育基于JADE的平台开发环境简介

基于JADE的平台开发环境简介

【摘要】:JADE 提供了智能体系统配置与运行的中间件技术和一组完善的图形化智能体开发和调试工具。JADE 是一套软件开发框架, 目的在于开发多agent 系统以及遵循FIPA 标准的智能agent 应用程序。如图7-1 所示, JADE 主要由如下包组成。

目前, 文献中和网络上可以查到的智能体系统开发工具或平台已达到100 多种, 其中不少是与FIPA 标准兼容的。 沈卫明对智能体系统开发平台做了详细的归纳和分类, 从商业化平台的角度, 主要有 Agent Builder, ABLE, ADK, Aglets Workbench, JACK,Concordia, Cybele, Voyager 等, 从学术科研的角度, 主要包括AADE, ABS, A-Globe, d-MARS, FIPA-OS, Grasshopper, InfoSleuth,JADE 等。 其中JADE 是目前应用最广的智能体系统开发平台, 尤其是在大学和研究机构被广泛用于基于智能体的原型系统的开发。本书采用JADE 进行原型系统的开发与设计, 在介绍JADE 之前,有必要对FIPA(Foundation of Intelligent Physical Agents)进行简单的介绍。

FIPA 组织于1996 年成立, 是一个致力于智能体技术工业化推广的国际标准化组织。 FIPA 开发了一整套智能体及其系统的标准规范, 目的是促进异构智能体及多智能体应用系统之间的互操作性。 智能体系统之间要想进行互操作, 不仅需要统一的智能体通信语言, 而且需要提供规范的智能体服务, 并采用共同的语义(指消息内容的本体)。 因此, FIPA 制定了智能体抽象参考模型(agent abstract reference model)和语义描述语言(FIPA-SL)。 FIPA 标准提供了一组预定义的智能体模型, 在该模型中, 主要有两个智能体运行平台, 提供了智能体的部署和运行环境, 包括计算机、 操作系统、 智能体支持软件、 FIPA 预定义智能体以及应用智能体。 每个平台都包括三种预定义智能体, 分别是目录服务智能体(directory facilitator, DF)、 智能体管理系统(agent management system, AMS)以及智能体通信通道(agent communication channgel, ACC)。 其中,目录服务智能体DF 提供了类似“黄页”的服务功能, 即智能体的注册服务和目录检索服务; AMS 提供所谓的“白页”功能, 即为智能体产生唯一标识, 并管理和监控同一服务平台下运行的所有智能体的生命周期活动, 如启动、 终止、 暂停、 转移等; ACC 则提供了同一平台或不同平台的智能体之间可靠、 有序和准确的消息与路由服务。 消息传输服务(message transport service, MTS)由多种底层消息传输协议(MTP), 比如HTTP、 TCP/IP、 CORBA IIOP 等实现。DF、 AMS 和ACC 是任何与FIPA 标准兼容的智能体平台所必须提供的智能体, 他们共同构成智能体平台的基础设施。 一个智能体平台必须有且仅有一个AMS, 但可以有一个或多个DF 存在, 多个DF 可以逐级注册, 组成联邦结构。 图7-1 显示一个FIPA 标准Agent 平台的参考结构。

在FIPA 标准中, 智能体之间采用智能体通信语言(Agent Communication Language, ACL)进行通信。 相比KQML 语言, FIPAACL 定义了一套更加完整和严密的形式化语义描述, 因而消除了智能体消息中可能含有的任何二义性。 以FIPA-ACL 为基础, FIPA组织还定义了一组智能体间会话的通用模式, 成为交互协议(Interaction Protocols)。 这些协议代表着两个或多个智能体信息交换的模式, 包括最简单的FIPA Request 协议和较复杂的交互过程,如合同网协议、 英国和荷兰拍卖协议等。

图7-1 一个FIPA 标准Agent 平台的参考结构

总之, FIPA 标准定义了一组与应用领域无关、 与智能体实现技术无关的通用规范, 目前已经成为多智能体系统研究与开发的主导标准。 而且从2005 年8 月开始, FIPA 正式成为IEEE 组织的一部分, 从此, FIPA 成为被工业界广为接受的智能体及其应用系统方面的唯一权威性标准。

JADE 是符合FIPA 标准的最著名的智能体系统开发平台, 其结构实现了FIPA 智能体架构体系中的所有组成部分, 包括以上提到的ACC、 AMS、 DF 以及智能体交互协议。 JADE 提供了智能体系统配置与运行的中间件技术和一组完善的图形化智能体开发和调试工具。 该平台可以运行于多种硬件系统, 而且可以通过远程图形界面控制智能体系统的运行和配置。

JADE 是一套软件开发框架, 目的在于开发多agent 系统以及遵循FIPA 标准的智能agent 应用程序。 它包括两个主要部分: 一个遵循FIPA 的agent 平台和一个开发Java agent 的软件包。 JADE是完全用Java 编写的, 要使用这个框架, agent 程序员应该遵守JADE 的规范, 用Java 编写Agents。

JADE 智能体平台可以运行于多台宿主机上, 每个宿主需要一个独立的JAVA 虚拟机, 也称为JADE 智能体容器。 JADE 容器为每个运行于其上的智能体维护一个独立的消息队列, 该队列中的消息可以通过“推”“拉”模式匹配等各种方式传送给相应的智能体。 智能体的通信模型建立在完全独立的不同层次上, 从上到下依次是交互协议、 信息信封、 ACL 描述、 消息内容、 封装结构、 Ontology 以及网络传输协议。 所采用的传输协议可以由JADE运行平台在系统运行时动态决定, 从而极大地提高了系统的灵活性和通信效率

如图7-1 所示, JADE 主要由如下包组成。

· jade.core 实现了系统的核心。 它包括必须由应用程序员继承的Agent 类; 除此之外, Behaviour 类是包含在jade.core.behaviours 子包里。 行为实现了一个agent 的任务或者意图。他们是逻辑上的活动单元, 能够以各种方式组成来完成复杂执行模式, 并且可以并行执行。 应用程序员通过编写行为和使它们相互连接的agent 执行路径来定义agent 操作。jade.lang.acl 子包可以根据FIPA 标准规范来处理Agent 通信语言。

· jade.content 包含了一些类来支持用户定义的本体和内容语言。 有一个单独的指南来描述如何使用JADE 来支持消息内容。 特别地, jade.content.lang.sl 包含了SL 编码, 既有解码器也有编码器。

· jade.domain 包含了由FIPA 标准定义描述Agent 管理实体的所有Java 类, 尤其是AMS 和DF agents, 它们提供生命周期、 白页服务、 黄页服务。 jade.domain.FIPAAgent Management 子包包含了FIPA-Agent-Management 本体和所有描述它的概念的类。 jade.domain.JADEAgentManagement 包含了为Agent 管理的JADE 扩展(例如, 为了监测消息, 控制agents 的生命周期, 等等), 包括本体和所有描述它的概念的类。 jade.domain.introspection 包含了用于JADE 工具(例如监测器和检查器)与JADE 内核之间交互域的概念。jade.domain.mobility 包含了全部用于通信有关移动性的概念。

· jade.gui 包含了一套通用的创建图形用户界面(GUIs)以显示和编辑AgentID, Agent 描述, ACL 消息(ACLMessages)的类。

· jade.mtp 包含了一个每个消息传输协议都应该实现的Java接口, 这样就可以容易地与JADE 框架实现集成。

· jade.proto 包含了一些用来构造标准交互协议(即fiparequest, fipa-query, fipa-contract-net, fipa-subscribe 以及其他一些由FIPA 定义的协议)的类, 以及一些帮助应用程序员创建他们自己协议的类。

FIPA 包含了为基于IIOP 消息传输由FIPA 定义的IDL 模块。

最后, jade.wrapper 包提供了JADE 高层函数的封装, 这些函数允许把JADE 作为一个库使用, 外部的Java 应用程序可以启动JADE agents 和agent 容器。

JADE 和某些简化平台管理和应用程序开发工具绑定在一起。每个工具都包含在jade.tools 里一个独立的子包。 通常, 可使用如下工具:

· 远程管理Agent(Remote Management Agent, 简写RMA), 作为一个平台管理和控制的图形控制台。 RMA 的首个实例能够以命令行选项(“-gui”)开始, 但是可以启动超过一个GUI。 JADE 通过在多RMAs 中简单的多点传送事件给它们来维护一致性。 而且, RMA 控制台可以启动其他JADE工具。

· 虚拟Agent(Dummy Agent)是一个监测和调试工具, 由图形用户界面和内在JADE agent 组成。 使用GUI, 就可以构成ACL 消息, 然后把它们发送给其他agents; 还可以显示全部已发送或者已接收的ACL 消息列表, 这些消息以时间戳信息结束, 可以允许agent 对话记录和排演。

· 监测器是一个可以在ACL 消息传递时截取它们并使用类似UML 顺序图的符号图形化地显示它们的agent。 它在调试agent 时非常有用, 可以观察它们如何交换ACL 消息。

· 检查器是一个允许监测一个agent 生命周期, 它所交换的ACL 消息以及执行时行为的agent。

· DF GUI 是一个完全的图形用户界面, 被JADE 的默认目录服务器(DF, Directory Facilitator)以及用户可能需要的每个其他的DF 所使用。 以这样一种方式, 用户可能创建一个黄页的域或者子域的复杂网络。 GUI 允许以一种简单和直观的方式控制一个DF 的知识库, 把一个DF 与其他DF 联合起来, 以及远程控制(注册/注销/修改/搜索)上层DF 和下层DF(实现了域和子域的网络)的知识库。

· 日志管理Agent 是一个可以设置运行日志信息的agent, 例如在日志层次, 针对JADE 和应用程序具体指明的使用Java日志的类。

· 套接字代理Agent(Socket Proxy Agent)是一个简单的agent,作为一个在JADE 平台和平常的TCP/IP 连接之间的双向网关, 遍历了JADE 所拥有的传输服务的ACL 信息被转化成简单的ASCII 字符串, 通过套接字连接被发送出去。Viceversa, ACL 消息经过TCP/IP 连接, 通过隧道技术传给JADE 平台。 这个agent 非常有用, 例如, 要处理网络防火墙或者向平台交互提供在网络浏览器中的Java Applets。

JADE 应用在系统平台开发的时候, 主要存在以下几个特点:

· 分布式Agent 平台。 Agent 平台可以分散在几个主机上(假设它们可以通过RMI 连接起来)。

· 从远方主机用图形用户界面来管理Agent 和Agent 容器。

· 在开发基于JADE 的多Agent 应用程序时, 可以利用调试工具。

· 平台内的Agent 移动性, 包括传递Agent 的状态和代码(当需要的时候)。

· 通过行为模型, 对多个平行、 并行的Agent 活动的支持。JADE 以无优先权的方式对Agent 行为进行调度。

· FIPA 标准的Agent 平台, 包括AMS (Agent 管理系统)、 DF(目录服务)和ACC(Agent 通信通道)。 这三个组成部分在Agent 平台启动时被自动激活。

· 为了多域的应用程序, 许多FIPA 标准的DF 在运行时可以被启动。 在程序中, 每个域是一组逻辑Agent, 它们提供的服务通过一个公共的设备被公布出来。 每个DF 继承了GUI和所有由FIPA 定义的标准功能(即注册、 注销、 修改、 搜索Agent 标识符的功能和在网内连接DF 的功能)。

· 在同一个Agent 平台内有效率的ACL 消息传输。 事实上,消息在传送时是以JAVA 对象被编码, 而不是字符串, 这样是为了避开编组和未编组的程序。 当消息跨越平台边界的时候, 它们被自动转换为FIPA 标准的语法、 编码方式、传输协议。 这种转换对于Agent 执行者来说是透明的, 它们只需要处理JAVA 对象。

· FIPA 交互协议库是现成可用的。

· 通过AMS, Agent 可以自动进行注册和注销。

· 符合FIPA 标准的命名服务: 在启动时, Agent 从平台上获取它们的GUID(全球唯一标识)。

· 对应用程序定义的相关语言和概念的支持。

· 程序内接口, 它允许外部应用程序启动自治的Agent。

JADE 目前在研究领域被广泛应用于基于智能体的原型系统的开发。 在制造系统应用发面, 众多学者应用JADE 对基于多智能体的生产计划或调度系统进行仿真平台的开发。 上海交通大学的王世进应用JADE 平台设计了基于过滤定向搜索的内部自治调度和集成Q-学习的协商机制, 并实现了相关的辅助功能和仿真。晏涛以JADE 及JESS 为主开发工具, 对生产调度系统进行深入分析, 并提供了相应的仿真平台。 王芹提出了基于多Agent 技术的电力调度自动化系统的功能组成和拓扑结构, 并开发了基于JADE 的系统平台。 隆清琦等提出了供应链多智能体模型, 并设计了两类Agent 和用于分布仿真的时间同步机制, 利用JADE 实现了供应链系统的仿真平台开发。 Lin 和Long 在半导体晶元复杂生产背景下, 应用JADE 进行了基于多智能体的仿真调度平台开发, 该平台对晶元调度过程进行了架构分析, 提供了灵活的协作控制机制。