基于JACK平台的多Agent系统设计方法研究

时间:2022-06-10 10:00:37

基于JACK平台的多Agent系统设计方法研究

摘要:随着信息技术的飞速发展,应用软件变得越来越复杂,其智能化程度也越来越高。面向Agent软件开发技术就是在此背景下应运而生的,并迅速成为软件工程领域的一个研究热点。JACK平台是以BDI模型为基础,基于JAVA语言的多Agent系统开发环境。此外,它还支持Prometheus等主流面向Agent软件开发方法。通过一个具体项目案例“图书智能推荐系统”给出了JACK平台下多Agent系统的设计与实现方法。

关键词:JACK Agent Prometheus

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2014)05-0069-02

面向Agent的软件工程是近年来软件工程领域里出现的一个重要的前沿研究方向,它试图将Agent理论和技术与软件工程的思想、原理和原则相结合,从而为基于Agent系统的开发提供工程化手段。

Prometheus方法涵盖了开发多Agent系统的各个阶段,是一种非常成功的面向Agent软件开发方法。它以BDI Agent作为Agent的内部结构,以Agent集成开发工具JACK作为系统的实现工具。

JACK是一款基于JAVA语言的多Agent集成开发环境,该平台能够非常灵活的应用于许多计算环境中,用它开发的多Agent系统具有很高的敏捷性和可靠性,而且系统的执行效率很高。目前,JACK已广泛应用于电信、制造业、电子商务等诸多领域智能系统的开发。

1 Agent和面向Agent软件工程方法

1.1 Agent和BDI Agent定义

Agent技术起源于人工智能,一直以来,对究竟什么是Agent这一问题,学术界始终未能达成一致。在这里,我们引用Wooldridge和Jennings为Agent下的定义[1]:Agent是处在某个环境中的计算机系统,该系统有能力在此环境中自主行动以实现其设计目标。Agent具有自治性、反应性、社会性和能动性四个方面的特点。

Rao和Georgeff所提出的BDI Agent体系结构[2]是现今常用的一种描述单个agent的有效途径,该结构由三部分组成:信念(brief)、期望(desire)、意图(intention)。信念是Agent关于世界、环境和其它Agent信息的内部表示。Agent根据自己的知识以及环境的变化修改自己的信念。期望是Agent的目标,这些目标有的自己能够完成,有的则需要借助其它Agent来完成。意图由期望转化而来,是Agent对自己和其它Agent承诺执行的动作,意图可以是正在执行的行动,也可以是将执行的行动。可以看出,BDI模型是一种事件驱动的体系结构。

1.2 面向Agent软件工程方法

面向Agent软件开发方法一直都是面向Agent软件工程研究的核心,到目前为止,人们已经研究出了十几种软件开发方法,Prometheus方法就是其中的成功典范。该方法以BDI模型作为Agent的内部结构,以JACK平台作为系统的实现工具,涵盖了开发Agent系统的各个阶段。

Prometheus方法包括以下三个阶段[3]。

(1)系统分析阶段:主要任务是识别系统的基本功能,系统要实现的目标,用例场景,系统的输入(即感知)以及系统的输出(即行为)。

(2)体系结构设计阶段:主要任务是确定系统包含哪些Agent以及这些Agent之间是如何交互的,Prometheus方法使用Agent UML交互图来定义Agent之间的交互过程。

(3)详细设计阶段:主要任务是设计Agent的内部结构设计。将Agent分解为若干能力(Capability)的集合。能力代表了一个Agent所提供的功能,每个能力又可以包含任意多个子能力(Sub-capability),这样可以组成一个层次化结构。

2 JACK平台简介

JACK平台[4]是Agent Oriented Software Ltd公司开发的基于JAVA语言的多Agent集成开发环境,它以BDI模型作为Agent的内部模型,提供给用户一种称为team model的模块来设计多Agent系统。此外,它还支持Prometheus等主流面向Agent软件开发方法,所有这些都使得JACK成为开发Agent系统的一款优秀工具。

2.1 JACK Agent Language

JACK Agent Language(JAL)是一种基于JAVA的Agent程序设计语言,它在面向对象的基础上引入了Agent,Capability,Event,Plan,BeliefSet这一些全新的概念,使其可以满足开发多Agent系统的需要。

下面对这些概念做简要介绍:(1)Agent:用于定义软件Agent的各种行为,它包括Agent拥有的数据和能力、可以响应的事件以及为达到某种目的采取的行动规划。(2)Capability:Agent的可重用组件,相当于面向对象技术中的模块。它内部封装了诸如事件(event),计划(plan),子能力等关于推理的组成要素,它描述了一个Agent所具有的能力。(3)Plan:它规定了Agent为实现某个目标或在处理某个事件时所采取的动作序列。(4)Event:与面向对象技术中的事件的概念相类似,Event可以激发Agent采取某种规划(Plan)来对其进行处理。(5)BeliefSet:用来表示Agent的信念信息。在JACK中,信念集用关系数据模型来表示。信念集中的信念信息是自动维护更新的并能自动的保持数据的一致性。

2.2 JACK WebBot组件

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

3 基于JACK平台的多Agent系统设计方法

在前两节中,我们对Prometheus方法和JACK平台做了简要介绍,不难看出,将二者结合起来,就可以设计和实现一个功能完备的多Agent系统。具体步骤如下。

(1)借助UML用例图确定系统要实现的功能,并从中提取出系统所要实现的目标,并把这些目标组织成一种层次结构。(2)将系统功能进行分组,相互关联的功能聚合在一起形成Agent类型,利用Agent认知图来描述Agent之间的关联,定义Agent的描述文件。 (3)利用AgentUML交互图描述Agent的交互协议。(4)设计Agent的内部结构,首先将Agent所具有的功能进一步优化重组,对于那些关系密切的功能可以将它们聚合为能力(Capability)。接下来就是设计每个能力的内部结构,每个能力是由计划(Plan),事件(Event),和所使用的数据集组成的。(5)在JACK平台上用JAL语言实现Agent、能力(Capability),计划(Plan)、数据集等概念。

下面结合一个图书智能推荐系统说明基于JACK的多Agent系统的设计过程。个性化推荐系统可以根据用户购买图书的偏好信息,向用户推荐他们喜欢购买的图书,同时它还具有分析用户购买记录,动态修正用户偏好信息的功能。

根据以上功能分析,依据Prometheus方法设计系统的内部结构,如图2所示。

从图2中可以看到,该系统具有两个Agent,[PublicRecommending]负责向所有用户提供畅销书和打折图书的推荐。[Personalized Recommending]负责为不同用户提供个性化推荐。计划Prepare MatchedDB会首先根据数据集PreferenceDB中的用户关注类型对数据集BookDB进行扫描,从而过滤掉那些用户不感兴趣类型的图书信息,然后按照定义的匹配数据库格式进行转化,从而得到匹配数据库。最后根据PreferenceDB的信息生成用户偏好向量。计划Matchmaking 会按照预先定义的匹配方法将用户的个人偏好信息与匹配数据库中的图书信息进行相似度匹配,并将匹配结果写入匹配数据库。计划PushRecommendation负责将最满足用户要求的5本图书按照图书类型的比例推荐给用户。

在完成系统结构设计后,就可以在JACK平台上将相应的元素如Agent、Plan、Event、BriefSet等映射成JAL语言的源代码。这里鉴于篇幅所限,就不再详细列出系统的源程序了。系统实现效果如图3所示。系统会根据用户的个人偏好信息以及对购买记录的分析,为每个用户提供个性化的图书推荐。

4 结语

面向Agent软件开发技术是近年来软件工程领域的一个研究重点,本文首先介绍了Agent和BDI Agent的基本概念,在此基础上对Prometheus方法和集成开发环境JACK做了详细说明。最后,结合一个具体项目案例“图书智能推荐系统”阐述了基于JACK平台的多Agent系统的设计过程。

参考文献

[1]M.Wooldridge and N.R.Jennings.Intelligent agents:theory and practice[J].The Knowledge Engineering Review,1995,10(2):115-152.

[2]Rao A.and Georgeff M.BDI-agents:from theory to practice[A].In Proc.of the First Intl.Conf.on Multiagent Systems[C],Springer,1995:162-173.

[3]Lin Padgham and Michael Winikoff.Prometheus:A Methodology for Developing Intelligent Agents[A].In Proceedings of AOSE 2002[C],Springer,2002:130-143.

[4]P.Busetta,R.R?nnquist,A.Hodgson,and A.Lucas.JACK Intelligent Agents-Components for Intelligent Agents in Java[R].Technical Report TR1201,AOS,2012.

上一篇:基于无线传感网的矿井环境监测系统设计 下一篇:Composite数据虚拟化服务技术