多Agent系统理论及其应用研究

2014-09-17 14:18:39杨永健
电脑知识与技术 2014年22期

杨永健

摘要:随着信息技术的飞速发展,应用软件变得越来越复杂,其智能化程度也越来越高。多Agent技术就是在此背景下应运而生的,并迅速成为软件工程领域的一个研究热点。在介绍Agent定义和特点的基础上,全面阐述了多Agent系统的体系结构和两种主要的Agent通信语言(KQML, FIPA-ACL),最后对多Agent系统的主要应用做了详细论述。

关键词: Multi-Agent;KQML;FIPA-ACL

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)22-5293-04

多Agent技术是近年来软件工程领域里的一个研究重点。多Agent系统(Multi-Agent System)是由分布式计算环境中的多个可交互的智能Agent组成的。其中,每个Agent被认为是一个独立的计算实体。在分布式环境下,它们有能力控制自身的行为和状态,并且能对环境的变化做出应激反应。更为重要的是,其能与环境中的其他Agent进行交互并协同工作,完成一个大规模、复杂的计算任务。这也正是多Agent系统较之单Agent智能系统的优势所在。

1 Agent定义及其特点

1.1 Agent定义

Agent技术是人工智能、分布式计算、现代软件工程等技术融合的产物。那么,agent的具体含义是什么呢?这里我们援引Wooldridge和Jennings为Agent下的定义[1]:Agent是处在复杂计算环境中的计算机软件或硬件系统,该系统有能力在此环境中自主行动以实现其设计目标。

1.2 Agent的基本特性

通常认为,Agent具有自治性、反应性、社会性和能动性四个主要特点。

1) 自治性:Agent具有高度的智能性,它可以依据内部设定的规则在没有其他对象干预的情况下完成既定的功能目标,并且有能力控制自己的行为和内部状态。

2) 反应性:每个Agent可以通过特定的感受器(如传感器等硬件设备)感知周围环境的各类信息,在环境参数发生改变时,能够根据其所掌握的知识规则进行自主学习和状态调整以适应环境的改变。

3) 社会性:在分布式计算环境中,存在着功能各异的众多Agent实体。当处理一些复杂问题时,通常需要许多Agent相互协作,共同完成任务。

4) 能动性:Agent应该主动的采取某些动作来完成特定的任务。

2 多Agent系统的体系结构

随着信息技术的飞速发展,人们已经进入了一个“数据大爆炸”时代,云计算、大数据处理等新技术不断涌现并应用到人们的日常生活中。由于人们所要解决的应用问题变得越来越复杂,而单Agent系统在自主学习、知识挖掘以及数据分析处理等方面存在诸多限制,无法满足人们的需求。因此,多Agent系统的研究逐渐成为分布式人工智能领域的热点。

2.1 多Agent系统的定义

多Agent系统包含多个互相通信的Agent,不同的Agent 有不同的作用范围。某些情况下,作用范围可能会重叠,而同时Agent之间还存在着依赖关系,它们之间既有竞争关系也有协作关系,如图1所示。

从体系结构图中可以看出,多Agent系统是一种“自组织”系统,可以以一种几乎透明的方式添加或移除Agent。此外,该系统非常适合于计算资源分散的分布式计算环境,通过Agent之间的协作和互操作,不仅可以极大扩展系统的计算能力用以解决复杂的实际问题,也可以很好地提高系统的易维护性和功能扩展性。

2.2 基于FIPA规范的MAS框架结构

图2展示了基于FIPA(Foundation for Intelligent Physical Agents 智能物理Agent基金会)规范的MAS结构[2]。可以看出这是一个三层的框架。首先,非Agent技术开发的应用程序与Agent提供的用户接口进行交互,利用Agent的计算功能来实现自己的目标。每个Agent都设计了与用户程序交互的API接口,用户程序可以以一种完全透明的方式使用Agent系统所提供的功能。第二,多个Agent之间的管理和通信是由AMS(Agent管理系统)和DF(目录管理器)实现的。AMS提供了命名服务功能(在同一个平台下的每个Agent都拥有唯一的一个名字),具有在某个容器(环境)内创建和撤销Agent的功能。DF则提供了黄页功能和白页功能,Agent可以查询环境中具有某种特定功能的Agent。ACL(Agent通信语言)是整个系统的核心,它规定了Agent的通信方式以及消息格式。位于整个系统最底层的是通信协议,包括HTTP,IIOP,SMTP等常见的协议均可以作为Agent的通信协议。

2.3 Agent之间的通信机制

通信一直都是计算机科学的核心问题之一。多Agent系统的一个重要特性就是社会性,Agent并不是孤立存在的,他们共处在一个环境之中,彼此之间存在着合作,竞争等机制,而Agent之间的通信是实现合作和竞争等机制的基础。表1给出了Agent通信的协议栈结构。从中可以看出,Agent通信语言提供的是一种高层的通信机制。下面重点介绍最为重要的两种Agent通信语言:KQML(Knowledge Query and Manipulation Language)和FIPA-ACL(Agent Communication Language)。

1) KQML通信语言

KQML(Knowledge Query and Manipulation Language)是一种基于言语行为(Speech Act)理论的知识和信息交换协议和语言,是KSE(Knowledge-Sharing Effort)项目的一部分,该项目旨在构建可共享的大规模知识库。KQML[3,4]是一种基于消息的通信语言,消息具有固定的格式:每条消息有一个语义词,可将其看作消息的标志,此外KQML消息中含有多个具有特定语义的参数,如表2所示。

这条消息的含义是:发送者想查询图书《C++ Programming》的价格。在这条消息中,ask-all是动作原语词,它的含义是一个Agent向其他所有Agent征询,并且需要得到应答。消息的内容是查询图书的价格。:receiver即消息的接收者,为存储着图书信息的服务器。:language规定了内容的表达语言,本例中使用的是标准LISP语言。:ontology规定了消息所用的术语集,本例中的术语集为所有图书的价格信息。

尽管KQML为多Agent间的通信提供了一种较好的机制,并且取得了成功,但是其自身仍存在某些缺陷:

· KQML的基本语义词集合缺乏严格的约束,这就造成不同的KQML系统间的不可互操作性。

· KQML的语义没有严格的定义,这就造成在使用KQML时的随意性很大,这也是导致互操作性差的一个重要原因。

· KQML的消息传送机制缺乏严格定义。

KQML存在的这些缺陷使人们开始研究新的Agent通信语言,FIPA随后开发出一种新型的Agent通信语言,它弥补了KQML的众多缺陷,与此同时也保留了KQML的优点。

2) FIPA-ACL通信语言

ACL表面上与KQML很相似,其消息的语法也与KQML非常类似。表3给出了ACL的参数说明。

3 多Agent技术的应用

近年来,多Agent技术受到了学术界和产业界的广泛关注,具有广阔的应用前景。目前,多Agent技术在工业、商业、教育等领域已经得到应用。下面重点介绍一下该技术的一些典型应用领域。

1) 在智能信息检索中的应用

传统的信息检索方式需要建立在稳定的数据传输基础上,并且客户端每次检索除了从服务端获取到有用的数据外,还会下载很多无用信息,不仅浪费了宝贵的网络通信资源而且智能化程度很差。多Agent系统可以提供动态执行检索和异步计算功能,Agent根据用户请求,在服务端动态执行搜索并返回用户感兴趣的内容,既降低了网络带宽消耗又提高了检索效率。

2) 在工作流中的应用

传统的工作流系统只是按照预先定义好的流程执行相应的工作处理流程,无法对外界的新情况及时做出反应,系统各模块之间也缺乏协同机制,致使系统灵活性较差,而这些方面恰恰是多Agent系统的优势所在。因此,将Agent技术引入工作流系统中,可以有效提高系统的适应性和灵活性。

3) 在电子商务中的应用

Agent技术应用于电子商务可以为用户和商家提供资源智能发现、网上虚拟市场交易等一系列个性化服务。基于Agent技术的电子商务平台不但可以为商业主体提供在Internet上搜索所需商品的智能技术,并且可以创造出独立于交易双方的调控方来全面管理线上交易,从而有效降低了交易消耗的时间和精力,同时也提供了很好的安全性保障机制。

4 结束语

本文首先从Agent的定义和特性分析入手,详细阐述了多Agent系统的定义、特点和体系结构。在此基础上,重点介绍了KQML和FIPA-ACL两种Agent通信语言。最后,就多Agent技术目前的主要应用领域进行了分析和阐述。随着技术标准的不断完善以及高效便捷的系统开发平台的出现,多Agent技术一定会得到越来越广泛的应用。

参考文献:

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

[2] FIPA Specifications. http://www.fipa.org.

[3] Tim Finin, Don McKay, Rich Fritzson, and Robin McEntire. KQML: an information and knowledge exchange protocol. In Kazuhiro Fuchi and Toshio Yokoi, editors, Knowledge Building and Knowledge Sharing. Ohmsha and IOS Press, 2010.

[4] Yannis Labrou and Tim Finin. A semantics approach for KQML-a general purpose communication language for software agents. In Third International Conference on Information and Knowledge Management,2000.