Agent的概念由Minsky在其1986年出版的《思维的社会》一书中提出。Minsky认为社会中的某些个体经过协商之后可求得问题的解,这些个体就是Agent。他还认为Agent应具有社会交互性和智能性。从此,Agent的概念便被引入人工智能和计算机领域,并迅速成为研究热点。Agent技术在上世纪90年代成为热门话题,甚至被一些文献称为软件领域下一个意义深远的突破,其重要原因之一在于,该技术在基于网络的分布计算这一当今计算机主流技术领域中,正发挥着越来越重要的作用。一方面,Agent技术为解决新的分布应用问题提供了有效途径;另一方面,Agent技术为全面准确地研究分布计算系统的特点提供了合理的概念模型。
在分布计算领域,人们通常把在分布式系统中持续自主发挥作用的、具有以下特征的活着的计算实体称为Agent。
1. 自主性
Agent具有属于其自身的计算资源和局部于自身的行为控制机制,能够在没有外界直接操纵的情况下,根据其内部状态和感知到的环境信息,决定和控制自身的行为。例如,SNMP中的agent就是独立运行在被管理单元上的自主进程。
2. 交互性
Agent能够与其他Agent(包括人),用Agent通信语言实施灵活多样的交互,能够有效地与其他Agent协同工作。例如,一个Internet上的用户需要使用Agent通信语言向主动服务Agent陈述信息需求。
3. 反应性
Agent能够感知所处的环境(可能是物理世界,操纵图形界面的用户,或其他Agent等),并对相关事件作出适时反应。例如,一个模拟飞机的Agent能够对用户的操纵作出适时反应。
4. 主动性
Agent能够遵循承诺采取主动行动,表现出面向目标的行为。例如,一个Internet上的主动服务Agent,在获得新的信息之后能够按照约定主动将其提交给需要的用户;一个工作流管理Agent,能够按照约定将最新的工作进展情况主动通报给有关的工作站。
具有上述特性的计算实体可以是类Unix进程(或线程)、计算机系统、仿真器、机器人。从系统实现的层次上分析,在上面列举的应用中,纯软件形态的Agent就是指具有上述特性的类Unix进程。在上述4个特性中,前3个是基本的。人们也称具有上述前3个特性的计算实体为反应式Agent。在经典的客户/服务器计算模型中,服务器就是一种典型的反应式Agent。一些学者对Agent概念赋予了更拟人化的要求,例如分布式人工智能领域的学者,要求Agent具有知识、信念、意图等认知特性;CSCW领域的学者,要求Agent具有更友好的人-机交互方式。当然,目前在主流的分布计算领域为人们广泛认同的Agent概念,是具有上述4个特性的计算实体。
结构
当初,人们在研究并发计算的过程中,为了刻划若干个同时处于执行过程中的计算单位,引入了"进程"的概念,并逐步形成了具有特定技术内涵的进程结构。当今,人们在研究分布计算的过程中发现,分布式系统中广泛存在着用已有的计算机概念难以准确描述的自主行为实体,于是引入了"Agent"的概念。因此研究Agent的体系结构成为分布计算领域的重要课题。
Agent的体系结构是指构造Agent的特殊方法学,它描述了组成Agent的基本成分及其作用、各成分的联系与交互机制、如何通过感知到的内外部状态确定Agent应采取的不同行动的算法,以及Agent的行为对其内部状态和外部环境的影响等等。目前,人们已提出的Agent的体系结构大致可分为以下三类。
1. 审慎式体系结构(Deliberative Architecture)
该体系结构的特点是Agent中包含了显式表示的世界符号模型,Agent的决策是通过基于模板匹配和符号操作的逻辑(或准逻辑)推理作出的,如同人们通过"深思熟虑"后作出决定一样,因此被称为审慎式的体系结构。该体系结构在(分布式)人工智能领域占主导地位。我们可以认为构造经典的基于知识的系统,就是按照这种体系结构构造Agent的雏形的。因此,也可以说该体系结构的存在与现代人工智能的历史一样长。
2. 反应式体系结构(Reactive Architecture)
该体系结构的特点是Agent中包含了感知内外部状态变化的感知器、一组对相关事件作出反应的过程,和一个依据感知器激活某过程执行的控制系统,Agent的活动是由于受到内外部某种"刺激"而发生的,因此被称为反应式的体系结构。该体系结构在目前主流的分布式系统中占主导地位。本文列举的分布式应用中所涉及的Agent基本上是反应式体系结构。
我们甚至可以认为一个计算机基本系统,也是一个按照这种体系结构构造的Agent的雏形。
因此,也可以说该体系结构的存在与现代计算机系统的历史一样长。
3. 混合式体系结构(Hybrid Architecture)
该体系结构的特点是Agent中包含了审慎式和反应式两个子系统,通常这两个子系统是分层次的,前者建立在后者的基础之上。这种体系结构的研究与实验目前在人工智能领域较为活跃,我们认为有关成果将对分布式系统中Agent应用功能的增强产生直接影响。例如,已经有研究工作在模拟飞行员的Agent中加入基于符号表示和推理的各种规划与决策能力,以提高模拟飞行员的适应性。
目前,我们正在研究开发一种具体的反应式Agent体系结构。在该结构中,Agent由事件处理系统、方法集和内部状态集三个主要成分构成。其中,事件处理系统是Agent的行为控制系统。Agent的活性表现为它的事件处理系统,在该Agent的生命期内始终持续自主地工作着。在该结构中,事件是与Agent有特定关联的特殊状态(如外部某服务请求到达、内部某特定状态被修改或超过设定的阈值等)。事件处理系统涉及事件感知、事件适配和事件处理分发3个环节的活动。Agent的事件感知器时刻捕捉其所关注的事件状态的出现,并根据事件状态的类型启动相应的事件适配器工作;事件适配器获取相关事件信息作识别,并将识别结果提交给相应的事件处理分发器,启动有关的事件处理方法执行。Agent的方法集体现了该Agent事件处理能力的成分,描述了Agent处理相关事件的方法。方法的执行由事件处理分发器引发,在其执行过程中可能影响Agent的内部状态,从而导致新事件的发生。Agent的内部状态集是表现该Agent当前状态的成分,其中包括表征事件的状态。在Agent的行为过程中,该Agent的内部状态可能会不断发生变化。
Agent之间的消息传递机制通过消息事件的处理实现。假设Agent A具有消息事件的处理能力,其接收服务请求的典型工作过程如下:一个传递给A的服务请求导致消息事件的发生。A的(消息)事件感知器将及时检测该事件的发生,从而引发A的(消息)事件适配器接收此消息;消息事件适配器按照Agent之间的消息传递协议,分析识别该消息为服务请求类型,进而引发A的(请求)事件处理分发器,并将有关适配信息提交给该分发器;(请求)事件处理分发器则根据适配信息选择相应的服务方法执行。
Agent的事件处理机制不仅可以有效地实现客户/服务器计算中传统的客户直接请求/服务器被动服务的机制,而且为实现Agent之间以及Agent与外部环境之间更为主动灵活的交互机制奠定了基础。例如,通过定义特定的故障事件,使担负系统管理的Agent能够主动向Manager报告关键故障的发生,甚至独自处理故障;通过定义特定的时钟事件,可以实现Agent之间以及Agent与用户之间的定时服务;通过定义特定的内部状态修改事件,实现Agent之间共有信息副本的一致性维护;通过定义特定的信息查询事件,使Agent在收到与查询相关的信息后,主动向信息需求者提供信息服务等等。
如同主流操作系统都提供了多进程的并发系统开发和运行环境一样,为多Agent的分布式应用系统的运行开发和建立分布计算环境也日显重要。按照此类环境承诺的Agent的体系结构分类,相关的支持环境也可分为三大类。
1. 面向审慎式体系结构的支持环境
此类支持环境通常建立在知识系统支持技术和主流网络计算技术的基础上,进一步提供了Agent程序设计语言和Agent通信语言等工具。
2. 面向反应式体系结构的支持环境
此类支持环境通常建立在分布式对象技术的基础上。因为反应式Agent的体系结构与对象的结构存在很大的相似性,利用带有专门控制器的对象可以实现反应式Agent。在此类支持环境中提供各种控制器的框架,以及基于框架的Agent定义与生成工具。
3. 面向混合式体系结构的支持环境
此类支持环境可以建立在层次化的分布式对象技术和知识系统技术的基础上。
从主流的分布计算术技术和应用角度分析,我们认为发展分布式对象技术对多Agent应用系统的支持,将是一项十分有意义的工作。我们正在研究如何在ORB(对象请求中介)技术的基础上,通过纵向或横向扩展实现主动服务机制,使其在分布式对象环境中能够方便地实现具有自主性、交互性、反应性和主动性的Agent。
一个新的概念和技术在计算机领域能够引起广泛关注,甚至"火"起来,通常是由于以下因素所至:
(1)它在解决计算机主流技术及其应用的瓶颈问题上提供了有效的途径。
(2)它在开拓计算机技术新的应用领域方面发挥了关键的作用。
进入80年代,个人计算机和工作站的普及以及网络通信技术的迅速发展,使拥有个人计算机或工作站的广大用户,迫切需要共享或集成分布于网络上的丰富信息资源,用以廉价获得超出局部计算机能力的高品质服务,并逐步实现计算机支持的协同工作。在这样的需求驱动下,分布计算成为影响当今计算机技术发展的关键技术力量。分布计算术目前还处于客户/服务器计算的中间阶段,由于受到新的应用需求的冲击,开始向分散对等的协同计算方向发展,将Agent的概念和技术引入分布计算已成为这一发展阶段的重要特征。
从逻辑上讲,一个分布式系统可以定义为由多个相互作用的Agent组成的系统,各种分布式系统的差异主要表现为其中Agent的角色和交互方式上的差别。例如分布式客户/服务器系统是这样的分布式系统,其中的Agent或为客户或为服务器,交互关系仅限于客户主动请求/服务器被动服务的交互方式。然而,这种基于Agent的分布式系统观使人们跳出了客户/服务器系统的局限,适应了应用需求的发展。从发展的角度看,我们认为,"Agent"的概念在分布计算术中的地位和作用,可以与"进程"的概念在并发计算中的地位和作用相类比。
问题
目前,常规的分布计算术是基于经典的客户/服务器计算模型的,即将分布式应用分解为客户和服务器两大部分,服务器只有在接到客户的请求后方能提供服务。这些技术是在共享分布资源的应用背景下形成的,在解决新的分布式应用方面存在诸多局限性。从以下几个目前人们较为关心的分布式应用需求中,我们不难发现问题所在。
1. 从"人找信息"到"信息找人"
目前绝大多数的Internet应用是建立在客户/服务器计算模型基础上的,这就使得通过Internet进行信息分布和查找的应用不可避免地存在以下问题:一方面,信息提供者不能适时地将信息主动提供给最需要的用户;另一方面,信息使用者不知道到哪里能够找到急需的信息。越来越多的人开始为Internet上形形色色的庞杂信息所累,"逛"Internet的感觉真有点象逛商业街的感觉:疲劳、茫然;需要的东西不知道在何处寻找,不需要的东西却强烈地冲击人们的视野。盲目被动的搜寻导致网上流动的有效信息占有率大大降低,使已经十分紧俏的网络带宽被浪费。人们希望服务器能够根据客户的需求主动提供信息,实现"信息找人"。然而,常规的分布计算技术却难以胜任,原因之一就是经典的客户/服务器计算技术不支持主动服务机制。
2. 并行工程
尽管现代企业在其产品设计制造过程的诸多环节上,卓有成效地采用了各种计算机辅助工具,但各环节之间仍存在着数据共享和部门协同的沟痕,影响了产品设计制造的整体进度和质量。为此,人们提出了并行工程(CE)的概念,其核心思想就是以分布式的企业计算环境为基础设施,实现产品设计制造全过程以及相关资源的优化组合,使各部门最大限度地协同工作,减少中间环节对产品设计制造的进度和质量的影响。然而,常规的分布计算技术同样难以胜任此类协同工作的应用。因为经典的客户/服务器计算技术不支持服务器对客户的直接控制,也不支持客户应用之间直接的群体感知。
3. 分布式交互仿真
仿真器早已在教育、训练、制造和娱乐等诸多领域的应用中显示出其重要的价值。但是单一仿真器的应用局限性很大,例如孤立的军用仿真器,不能适应现代战争环境对武器系统综合效能分析的需要,或对战斗人员进行接近战场环境训练的要求。为了更好地发挥现有仿真器的作用,减少训练费用,美国国防部支持了称为分布式交互仿真(DIS)的研究,其初衷是将各类仿真器和计算机通过网络连接起来,在此基础上建立虚拟的战场环境,以提高仿真训练的实效性。显然,常规的分布计算技术更难以胜任此类应用。因为,DIS中的行为实体是不能简单地用"客户"和"服务器"两类角色来刻划的。
概括地讲,常规的分布计算技术的局限源于经典的客户/服务器计算模型的局限,即: 将分布式应用中的自主行为实体简单地划分为"客户"和"服务器"两类; 客户与服务器之间的交互关系仅限于客户主动请求/服务器被动响应的非对等关系。
Agent的概念和技术出现在分布式应用系统的开发之中,并表现出明显的实效性。以下列举几项人们在分布式应用方面所从事的涉及Agent的研究和开发工作,从中我们可以初步体会到Agent概念和技术的意义。
1. 利用Agent技术改善Internet应用
例如,研制"信息找人"的Agent。它具有"需求"与"服务"的集散能力,它接受信息分布者有关信息要点的注册,以及信息查询者有关信息需求要点的注册。该Agent根据这些信息,主动通知用户谁能够提供其所需信息,或主动通知信息提供者谁目前需要其所能提供的信息。
2. 利用Agent技术实现并行工程的思想
例如,利用Agent技术开发工作流管理者。它能够向各工作站下达工作流程和进度计划,主动引导各工作站按照工作流程和进度计划推进工作,受理并评价各工作站工作进展情况的报告,以及集中管理各类数据等等。
3. 利用Agent技术开发分布式交互仿真环境
例如,将飞行训练仿真器与计算机网络上的若干工作站连接起来,在工作站上实现多个模拟飞机的Agent,与仿真器构成可交互的空战仿真环境。受训人员操作这种置于交互仿真环境中的仿真器,不仅能够体验各种操纵飞机的技能,而且能够通过与智能化的自主模拟战机的交互,实践各种空战战术行为(单一飞行训练仿真器能支持前者,但不能支持后者)。
实际上,Agent的概念并非是今天才出现在分布计算领域的,它在分布式系统自身的管理中早已被使用了。例如,在80年代形成的基于TCP/IP的互联网络管理技术SNMP中就采用了manager/agent模型。在该模型中,agent是运行在被管理单元上的自主行为实体,它能够对被管理单元上的相关事件作出反应、响应manager发来的管理命令等等。然而直到今天,Agent的概念和技术在分布计算领域才引起人们的重视,因为它在解决当今分布式应用面临的普遍问题上产生了实际效果。