面向Agent的软件设计开发方法
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 Agent的体系架构

除了1.2节所给出的Agent概念之外,还需要强调一种不同的观点。这种观点把Agent看做是软件系统的建模抽象,面向Agent的软件工程就是基于这种观点。在这里,Agent通常用于模拟现实中的实体,软件系统被看做是为了实现预期功能而相互作用的一系列Agent。Agent凭借自主性、预动性和/或反应性等一系列特征,为应用程序开发人员描绘了一种很有前景的方法。更一般的,这意味着复杂应用程序可以在动态环境中运行。

基于这种观点,可以把Agent体系架构看做是软件模块的详尽集合,用带箭头的方框来表示数据和模块之间的数据流控制。Agent体系架构可以分为慎思型、反应型和混合型。慎思型体系架构是最先出现的,其标志就是采用明确表示的世界符号模型,基于模式匹配的决策进程和符号操作技术。因此,体系架构需要解决的问题就是:如何把真实世界转换为符号,以及如何有效准确地描述决策进程。一般来说,解决这些问题需要大量的计算,这使得慎思型体系架构不适合解决许多实际问题。这里不会详尽地阐述这个问题,因为它们与传统人工智能有着更多的联系,而与Agent方法联系较少,有兴趣的读者可以参阅(Ghallab等,2004)。这些困难导致了新的(和特定Agent)架构相继出现,如反应型和混合型体系架构。

反应型体系架构涵盖了范围广泛的方法,一般可以避免任何以符号为核心的世界模型或复杂的符号推理。由于这一点,这种类型的Agent对于环境变化可能会反应更迅速。由于它们简单,或许正因如此,反应型体系架构不可能用于开发那些“行为强依赖于执行历史”或“具有复杂推理”的Agent。

混合型体系架构努力整合慎思型和反应型体系架构中好的一面,主要是通过包含两个(或者更多)独立的构件:一个是协商型,另一个是反应型。慎思型构件负责规划和推理行为,反应型构件处理需要快速响应的重要事件。不过,构件间的准确关系和它们之间的控制取决于各自的具体架构。

信念—期望—意图(Belief-Desire-Intension,BDI)体系架构(Haddadi等,1996;Wooldridge,1999b)是混合型体系架构的一个重要类型。BDI体系架构是Agent的表示形式,Agent的行为可以被描述成好像拥有信念、期望和意图等思维状态。信念表示Agent拥有的知识,期望描述Agent追求的目标,意图说明Agent选择计划以实现哪些目标。

BDI体系架构形成了一个共享BDI观点的体系架构族,但是信念、期望和意图在系统功能中被分配的角色,以及表示和控制它们的形式,各不相同。虽然信念已经被充分理解,但是期望和意图所扮演的角色却受到了争议。当期望和意图同时指Agent想要达到的一个事物状态时,就意图而言,必须有一定的承诺去实现它们。因此,虽然Agent会有一些期望,但是它可能永远不会去开始完成这些任务;而意图却会引起Agent的一个行动。有几种理论试图通过描述信念、期望和意图之间的关系,来描述、分析和确定一个Agent的行为。这种理论背后的动机是多元化的,有一些理论旨在从观察者的角度(Ferguson,1995)来解释和预测Agent的行为,有一些则是用于设计Agent的体系架构(d'Inverno等,2004),还有的是用于支持从事集体活动的Agent进行推理(Jennings,1993)。

自从BDI体系架构出现以来,它们在Agent社区之中很流行,这主要是出于三个关键的理由:第一,基于意图概念对系统进行建模,对我们人类来说更加自然。第二,大部分BDI体系架构有一个基础良好的哲学和理论背景。第三,这些体系架构比纯粹的慎思型或反应型体系架构更灵活。作为混合型,BDI体系架构介于纯粹反应型和纯粹慎思型之间。因此,在高度变化的环境中运行时,它们不可能表现出和纯粹反应式系统一样的性能,但是可以根据特定的应用需求,通过调整推理和慎思策略来提升性能。

BDI体系架构不仅用于研究,还成功应用于商业领域和工业领域。例如,空中交通管理系统OASIS(Rao和Georgeff,1995),它的发展是基于一种BDI体系架构DMARS(d'Inverno等,2004),已经在悉尼机场测试成功。OASIS中的Agent分为两种类型:aircraft Agent和global Agent。每个aircraft Agent都同一架飞机相关联,并且控制该飞机的飞行。相比之下,global Agent负责aircraft Agent的先后顺序和协调工作。在运行期间,高达80个Agent并发运行,给控制器发出实时控制指令。

BDI体系架构的成功取决于以下方面:

● 应用程序编制是基于计划构建,方便于模块化和递增式的开发。

● 由系统来管理反应行为和面向目标行为之间的平衡,终端用户不需要参与复杂的低级语言编程,这改进了可靠性。

● 终端用户采用人类的思维状态来对知识进行编码,而不是低级语言。

迄今为止,已经提出了很多不同的体系架构,我们不可能在有限的篇幅里给出一个详尽彻底的回顾。因此,我们把回顾限定在一些具有代表性的体系架构上。在这个回顾中,我们不再讨论慎思型体系架构,因为它本质上和传统人工智能中的规划很相似,不是基于Agent计算的,回顾这种体系架构并不会增加本书的内容。

1.包容性体系架构

包容性体系架构(Brooks,1986)是Brooks对反应型体系架构的改进,其功能是基于行为存在和它们的抑制关系。每个行为都计划完成一个明确的任务,并且将感知到的输入和行为联系在一起。例如,交通控制应用程序有这样一个行为“如果发现前方有一个障碍,就改变方向”;把感知输入“前方有障碍”和任务“改变方向”联系在了一起。为了追求其目标,每个行为不断地检测环境状态,直到环境状态与感知输入相匹配,然后执行这种情况下的相关行为。在这个例子中,不断地检测环境,直到发现交通工具前的障碍,然后执行改变行为的指令。然而一个环境状态可能会匹配多个行为,因此采用抑制关系来指明优先权。根据这一抑制关系,行为被分为不同的层次,低层行为可以抑制高层行为,层次越高行为就越抽象(如图1.1所示,说明了感知输入、行为和动作之间的关系,虚线表示抑制关系)。

图1.1 包容性体系结构

例如,在交通工具的控制中,“避免碰撞”比“到达目的地”所处的空间层次更低,因为“避免障碍”的优先级高于“到达目的地”的优先级。

2.PRS

PRS(Procedural Reasoning System)(Georgeff等,1987)最初作为NASA工程的一部分被开发,具有良好的理论背景。在PRS中,信念、期望和意图被明确地描述,并且一起决定系统的行为。它们还会随着推理机制动态改变。如图1.2所示,PRS由解释程序和几个模块构成,模块包括数据库、目标栈、知识区域库和意图结构。数据库包含关于当前世界的事实,知识区域库所包含的知识区域(Knowledge Area,KA)分别是“如何完成任务的知识”和“如何在特定环境下做出反应的知识”。

KA由一个主体和调用条件组成。主体包含程序步骤,调用条件表明在什么情况下KA是可用的。KA库中的某些KA是针对特定应用的,而另一些则定位于PRS本身的通用管理,例如针对相关KA进行选择的策略。

与其他BDI体系架构相比较,在PRS中,目标代表了系统所期望的行为,而不是所要达到的静止状态。它们不仅在目标栈中被表示,还作为KA的一部分。意图是系统选择立即执行或将来执行的任务,由一个初始KA和完成任务过程中所调用的其他一些子任务构成。这样的意图被插入到意图结构中,意图结构实质上就是一个带优先权的列表。

图1.2 PRS架构的主要组件

为了简要起见,这里不再详细阐述PRS的操作细节。简言之,系统运行中的解释程序控制过程如下:在一个给定的时间,系统具有某些目标且持有某些信念,根据这些,某些KA变得可用,其中一个KA被选择执行且被置于意图结构中。当执行这个KA时,会产生一些目标且置于目标栈中。如果请求新的信念,就会应用一致性检查过程。新的信念和新的目标也可以激活某些新的KA,在这种情况下,解释程序可以决定去执行其他某些目标。这使得Agent更少地忠于意图,更多地去感知环境。事实上,PRS中的KA可以实现对环境变化的快速响应,这就形成了混合型体系架构中的反应组件,虽然并不是作为一个单独的体系架构组件。