基于组件的Agent框架研究

时间:2022-09-09 09:39:40

基于组件的Agent框架研究

摘要:首先介绍了组件技术和框架技术的思想和设计原则,并在此基础上提出了设计Agent结构应该遵循的原则;依照文中所述的各项原则,提出了一种基于组件的Agent框架,并对框架中的组件及工作原理进行了详细地描述。

关键词:框架;组件;Agent结构模型

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)06-11637-03

1 引言

多Agent系统(MAS)能够利用Agent的自主性、社会性、反应性等优秀特性,在处理分布、开放和异构的复杂问题时具有特殊的优点。因此,将现实系统建模为Agent组成的MAS加以研究,有利于问题的分析和解决,基于Agent的建模方法学因此成为了Agent研究的热点之一。

基于Agent的建模将Agent作为目标系统的基本抽象单位,采用相关的Agent技术,先建立组成系统的每个个体的Agent模型,然后采用合适的体系结构来组装这些个体Agent,最终建立整个系统的系统模型。

一个结构良好且易于实现的Agent结构在实现Agent的过程中具有极其重要的作用,只有以这种结构为基础才能构建出健壮的个体Agent。但是,由于对实际系统的分析中会得到的很多个体Agent,而且这些个体Agent往往因功能方面差异很大导致结构上的较大差异。因此,要建立一个较为通用的Agent结构模型并不容易。在这方面,国内外许多学者进行了广泛的研究,建立了如BDI模型、中科院的混合式模型等通用的Agent结构模型。

2 框架技术

在现代软件工程中,软件重用已经成为其中一个主要目标。代码重用通过面向对象语言的继承机制和编译技术已成为现实。为了提高软件生产过程的重用力度,软件领域的先驱者们开始进行一种新的尝试来提高软件生产力,他们不仅要重用旧的代码,而且要重用相似的分析设计结果和体系结构,来减少构造新软件系统的代价并提高软件的可靠性。基于框架的方式就是这样一种面向特定领域的重用技术。

框架指的是构成一类特定软件可复用设计的一组相互协作的类,描绘出了一个待建应用系统的主要结构。建立在框架基础上的应用程序只需要根据具体需求定制功能部分,因此能更容易地生成应用程序。利用框架生成的程序具有相似的结构,使它们更容易维护,用户看起来也更一致。

框架的设计必须确定一个适用于该领域所有应用的体系结构,因此设计的框架必须尽可能的灵活、可扩充。一个良好的框架通常有以下几个特点:

2.1 一组适当的通用功能集

功能集的选择要适当,以免框架过于庞大影响灵活性。通常只有被该领域中超过20%的应用使用的元素才加入框架。

2.2 合理的继承结构

框架中类组织层次结构的深度和广度要适当,以便于框架构造和用户使用。一般来说继承层次深能提供更多具体功能,但不易维护;反之易于维护但需要用户去实现许多功能。对于实时框架来说,宜采用浅层次结构以提高灵活性和性能。

2.3 开放性

框架应提供良好的接口,能插入其它组件,或用其它组件替换已有组件,增大用户选择范围,提高系统灵活性。另外框架要满足应用程序性能要求,符合资源约束。由于框架要考虑通用性,有些实现对特定应用来说不一定最优,可能降低系统性能。因此框架必须使用户能够在框架提供的功能和程序性能之间进行选择,必要时放弃框架提供的功能或重新实现该功能。

2.4 可移植性

框架的可移植性分为两种类型:利用框架把应用程序移植到新的目标环境,这种框架通常包含对不同处理器、支持硬件、操作系统的处理;在同一种目标环境下可以运行多种类型的应用程序。实时应用程序的移植性通常指应用程序在不同平台之间的移植。实时框架可以实现操作系统抽象层,使应用程序能在不同平台之间移植。

2.5 一致的命名和参数传递规则

优秀的框架必然易于使用。易用的一个准则是命名、函数参数传递方式等要保持一致。

2.6 对设计模式的支持,支持常用设计模式。

一个标准的框架如图1所示:

图1 一个典型的框架表示

特定领域可复用的应用系统软件框架,考虑了该领域应用系统的共性,确定了共同需要的类以及类与类之间的关系(包括结构与连接),但其缺点是忽略了每个类内部细节差别和仅在个别系统中出现的类,形成了系统的抽象类图。而组件技术的特点恰好可以对这种缺点进行弥补。

3 组件技术

组件是系统中一个可替换的物理部分,它遵循并提供了一组公共接口的实现。组件可由一组相关对象封装组成。它是一种比对象重用粒度更大的二进制软件构造模块。组件暴露给用户的只是接口信息,而把具体的实现细节完全隐藏起来,实现了真正意义上的封装,且具有“即插即用”的功能。在组件技术的概念模式下,软件系统可以被视为相互协同工作的对象集合,其中每个对象都会提供特定的服务,发出特定的消息,并且以标准形式公布出来,以便其他对象了解和调用。

由于组件技术的出现,软件开发的方式有了很大的变化,可以把软件开发的内容分成若干个层次,将每个层次封装成一个个的组件,在构建应用系统时,将这些组件有机地组装起来就成为一个系统,就像是用零件组装出一台机器一样。我们可以按需要设计出许多组件,在构建应用系统时可以根据自己的应用需求选择需要的组件,若发现某个组件有问题,只需要对它进行修改或替换掉就行了,而不必像传统开发方法那样对整个系统进行重构;同时,一个组件可以被多个应用系统使用。可以看出,组件技术的应用,可以使软件的可维护性和可重用性大大提高,显著地减少了应用软件开发的复杂度,避免了软件资源的极大浪费。

4 基于组件的Agent框架及实现

基于组件的框架,顾名思义,就是用组件设计、构造和扩展的框架。它为组件提供了可以重用的场景,同时也为组件提供了一个交换数据、控制错误和组件之间相互作用的标准方式。组件为框架提供了可替换的部件。基于组件的框架建筑于面向对象技术之上,但更具有抽象性和可重用性。

一个好的基于组件的Agent框架除了要满足框架设计的一般原则,还要既能够反应Agent和MAS的特点,又易于用面向对象的技术进行实现。具体说来,要满足以下几点设计要求:

(1)BDI(Belief-Desire-Intention)结构:Agent是一个智能体,它具有类似人的一些特征,如具有主动性、反应性、心智状态等特性,这使得Agent能够依据环境的不同和自身的心智状态做出不同的反应。

(2)主动交互:Agent之间的交互是主动交互,这意味着在完成一个目标的过程中,只有当个体Agent“认为”需要同其他Agent进行交互的时候,它才会发送交互请求。被请求的Agent可以选择对该请求进行响应并执行该请求所需要的动作,也可以选择不响应该请求。它的运行不受人或其他Agent的直接干涉。

(3)并发过程:在基于Agent的系统中,每个个体Agent都能根据其所处环境独立的进行任务处理,因此,每个个体Agent都需要一个独立的线程。

(4)目标导向:Agent是目标导向的,能够为实现一定的目标而规划行为步骤。

(5)与面向对象技术的自然衔接:由于最终用面向对象的技术来实现个体Agent,因此整个框架最好以一种面向对象的方式来表示。只有这样,才能使框架容易被面向对象的程序员理解,进而写出准确的个体Agent创建程序,可以采用UML建模语言对框架进行表示。

根据上述设计原则,一个基于组件的Agent框架如图2所示。图中显示了一个个体Agent应该包括三个组件―GUI组件,BDI组件和交互组件。GUI组件:GUI组件是Agent框架中负责与用户进行会话的组件。它的主要职责包括两部分:一是接受外部输入,包括数据、目标指定、任务指令等;二是负责将处理后的结果输出至Agent外部(显示器、打印机等外设)。按照面向对象的设计原则,GUI组件只负责接受数据、命令的显示,而数据的存储、命令的处理等工作由主程序或其他组件进行。观察者类负责观察用户界面中各控件的操作,触发相应的功能。现有的可视化程序设计技术为用户界面的设计提供了良好的支持,我们可以利用可视化程序设计平台容易地构造出友好的界面。

图2 基于组件的Agent框架

BDI组件:它的主要职责为:任务和目标的判断;以知识、能力、数据为基础,根据个体Agent的目标或其他输入,执行所需要的行为,在必要时向主程序请求产生交互行为。同时,该组件作为用户和数据库之间的主要的中间层,提供了对数据库、知识库、模型库等底层库的访问方法。

交互组件:交互组件负责执行Agent与其他Agent之间的交互动作,根据需要产生交互事件的实例,负责与目标Agent进行通讯、传递消息、发送和接受数据等。协同工作是MAS的重要特征,协同作业意味着Agent之间需要进行大量的交互行为。因此,我们将Agent中处理交互的部分单独作为一个组件设计,在物理实现时可以考虑设置单独的交互设备,使Agent能够应对大量的交互工作而不至影响任务。

除了以上三个组件外,还有一个主处理类―Main。该类的功能包括两方面:规定Agent的逻辑处理方法;负责不同组件之间的参数和消息传递。该类的引入,虽然增加了不同组件中类之间的耦合,但可以为各组件之间提供一个公共的平台,增强了框架的灵活性。

框架的工作原理为:首先,用户根据实际系统的分析和设计情况对框架中的各个抽象类实例化,产生一个具体的Agent实例;然后Agent对输入进行响应,并由GUI组件产生一个GUI实例接受用户输入,主程序根据处理逻辑将输入的信息传递给BDI组件或者通过交互组件传递给其他Agent;传递给BDI组件的消息使BDI组件产生一个BDI实例,该实例根据Agent自身的状态、知识、数据、偏好对信息进行处理,处理过程中若需要与其他Agent进行交互,则根据处理逻辑调用交互组件;交互组件接到主程序请求交互的信息后产生一个交互实例,该实例自身的处理逻辑和数据库中的地址表等资源完成与其他Agent的交互。

上述框架既考虑了一般指导框架设计的原则,又体现了Agent和多Agent系统的特点,而且用一种面向对象的方式进行表达,比较容易实现。在实际应用中,可以通过对该框架中各Agent组件和Main类的重写构造不同Agent。

现实世界问题是极其复杂的,而单个Agent的功能是极其有限的,单个Agent一般很难完成给定的任务,此时需要通过适当的体系机构把多个Agent组织起来形成多Agent系统,以共同承担一个任务,来弥补单个Agent的不足,使整个系统的能力超过单个Agent。例如:由五个Agent组装的决策支持系统结构为:

图3 基于Agent的DSS结构图

这里,以知识库管理Agent为例来说明如何利用该框架实现个体Agent。知识库管理Agent目标是管理并提供知识。任务包括两个方面:对知识库的管理和提供知识;该Agent本身的知识包括知识请求逻辑(用来判断其他部件对知识的请求信息)和知识管理逻辑(负责知识的增加、删除、检索、合法性判断等);交互对象为人机界面Agent(接收知识输入和提供知识的外部输出)、问题处理Agent(为处理机的进行辅助决策提供知识)。由此,可以确定Agent框架中各组件的属性和内容。用框架实现的知识库管理Agent如图4所示。

在该框架结构中包含了BDI组件、GUI组件、交互组件三部分,同时也包含了一个Main主处理类。其中,Main主处理类中包含了初始化、调用BDI事件、调用GUI事件、输入、输出结果五个操作;BDI Event中包含了环境判断、请求帮助等三个操作;GUI Event中包含了初始化、建立交互、数据转化等四个操作。

5 结束语

本文在吸取了框架技术和组件技术的思想,并综合了几种模型的优点的基础上,建立了一种具有良好的扩展性、适用性等特性,且易于用面向对象技术实现的基于组件的Agent框架结构,为多Agent系统的实现提供了保证。

图4 知识库管理Agent实现图

参考文献:

[1] 高晓峰, 尚利宏, 金惠华. 框架技术在嵌入式系统中的应用[J]. 计算机工程与应用,2002.22.

[2] 孔梦荣, 维西梅, 等. 基于组件技术的软件工程[J]. 水利电力机械,2003.

[3] Michael Wooldridge, 石纯一, 等译. 多Agent系统引论[M]. 电子工业出版社,2003.

[4] 童立, 马远良. 设计模式在基于组件的框架设计中的应用[J]. 计算机工程与应用,2002.17,123-128.

[5] 徐敏, 周定康. 组件技术在软件开发中的应用[J]. 计算机与现代化,2002,2:1-3.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:ADO.NET数据库访问技术研究 下一篇:利用GXML设计学科知识体系结构的灵活布局图