在多Agent系统中,要实现不同Agent之间的协作求解和行为协调,首先这些Agent之间必须能够交换信息,即能够进行通信,因此通信是Agent之间协作的基础。本节主要讨论Agent通信的概念、方式和语言。
(一)Agent通信的基本问题
Agent通信是多Agent系统中不同Agent之间的信息交换,需要解决的基本问题包括通信方式、通信语言、通信协议和对话管理四方面。
1.通信方式
Agent通信方式是指不同Agent之间的信息交换方式。例如,是直接把信息发给其他一个或若干Agent,还是间接地把信息放到一个共享的公共数据区,由需要这些信息的Agent来决定。常用的通信方式有消息传送和黑板系统等。
2.通信语言
Agent通信语言是指相互交换信息的Agent之间共同遵守的一组语法、语义和语用的定义。其中,语法描述通信符号如何组织,语义描述通信符号代表的含义,语用描述消息在环境状态和Agent心智状态下的解释。Agent通信语言是Agent之间进行信息交换的媒介,常用的Agent通信语言有知识查询与操纵语言KQML等。
由于异质系统中的Agent可能使用不同的计算机语言或知识表示语言,因此现有的Agent通信语言多采用分层结构的形式,即将通信行为和通信内容相分离。通信行为是指通信要执行的动作,通信内容是指通信行为所传送的领域事实等。通常,通信语言只描述通信行为,具体的通信内容则由更高层的相互作用框架来实现。
3.对话管理
Agent之间的单个信息交换是Agent通信语言需要解决的基本问题,但Agent之间可能不仅交换单个信息,往往需要交换一系列信息,即需要进行对话。对话是指Agent之间不断进行信息交换的模式,或者说是Agent之间交换一系列消息的过程。
对话管理是指对Agent之间的对话过程的管理。其管理目标与Agent之间的关系有关:当相互对话的Agent之间的目标相似或者相同时,对话管理的目标应该是维护全局的一致性,并且不与Agent的自治性冲突;当相互对话的Agent之间的目标有冲突时,对话管理的目标应该是使得每个Agent的利益最大。
4.通信协议
Agent通信协议包括Agent通信时使用的低层的传输协议和高层的对话协议。其中,低层的传输协议是指Agent通信中实际使用的低层传输机制,如TCP、HTTP、FTP、SMTP等。高层的对话协议是指相互对话的Agent之间的协调协商协议。对话协议用来说明对话的基本过程和响应消息的各种可能。常用的描述对话协议的方法有有限状态自动机和Petri网等。
在上述四个问题中,由于对话管理和通信协议都与具体的应用密切相关,因此下面主要讨论通信方式和通信语言。
(二)Agent通信方式
这里主要讨论消息传送和黑板模型这两种最常用的Agent通信方式。
1.消息传送
消息传送是Agent之间的一种直接通信方式。在这种通信方式中,一个Agent(称为发送者)可以直接将一个特定的消息传送给另一个Agent(称为接收者)。所谓消息,实际上是一个具有一定格式的信息结构,它由相应的通信语言来定义,不同通信语言所定义的消息格式可能不同。在消息通信方式中,消息是Agent之间进行信息交换的基本单位。消息传送通信原理如图14-1所示。
图14-1 消息传送通信原理
消息传送的另一种特例被称为广播。广播是指一个Agent发出的消息可同时送给多个或一组Agent。
消息传送是多Agent系统中实现灵活复杂协调策略的基础,当Agent之间需要交换一系列消息时,可通过对话管理来实现。
2.黑板模型
黑板模型也是一种广泛使用的通信方式,可支持多Agent系统的分布式问题求解。在多Agent系统中,黑板提供了一个公共的工作区,Agent之间可以通过这个工作区来交换数据、信息和知识。黑板模型的基本工作方式是:首先由某个Agent在黑板上写入信息项,然后系统中需要该信息项的Agent可通过访问黑板来使用该信息项。系统中的每个Agent都可在任何时候访问黑板,查询是否有自己所需要的新的信息。在黑板通信方式中,Agent之间不进行直接通信,每个Agent都是通过黑板交换信息,并独立完成各自求解的子问题。
黑板模型多用在任务共享和结果共享的系统中。在这种情况下,如果系统中的Agent很多,那么黑板中的数据可能剧增。这样,当每个Agent访问黑板时,都需要从大量的信息中去搜索自己所感兴趣的信息。为提高Agent的访问效率,更合理的黑板模型应该是为不同类型的Agent提供不同的区域。
(三)Agent通信语言KQML
知识查询与操纵语言KQML(Knowledge Query and Manipulation Language)是目前最著名的一种Agent通信语言,由美国DARPA的知识共享计划KSE(Knowledge Sharing Effort)研究机构在20世纪90年代开发。KSE开发KQML的主要目的是为了解决基于知识的系统之间以及基于知识的系统和常规数据库系统之间的通信问题。实际上,KSE同时发布的还有知识交换格式KIF(Knowledge Interchange Format),主要是为了形成KQML的内容部分。在实际应用中,KQML可基于某种元标记语言来实现。下面主要讨论KQML,包括其语言结构、保留的行为原语参数、保留的行为原语和通信服务器等。
1.KQML的结构
从结构上看,KQML是一种层次结构型语言,可分为通信、消息和内容三个层次。
通信层描述的是通信协议和与通信双方有关的一组属性参数,如发送者和接收者的身份、与通信有关的标志等。
消息层是KQML的核心,描述的是与消息有关的言语行为的类型。“言语行为”是“通过言语所能完成的行为”的简称。按照语言学家的观点,语言不仅用来说明和描述事物,还经常被用于“做事情”,即引起行为的发生,这种行为就被称为“言语行为”。消息层的基本功能是确定传递消息所使用的协议和与传递消息有关的语言行为等。(www.xing528.com)
内容层是消息所包含的真正内容,这些内容可以是任何表示语言、ASCII字符或二进制数形式。实际上,KQML的实现并不需要关心消息中内容部分的具体含义。
KQML消息也称为“行为(performative)原语”或行为表达式,其基本格式是用“()”括起来的一个表。表中的第1个元素是消息行为的名称,后面的元素是一系列参数名及其参数的值。KQML消息可简单地表示为:
(消息行为名称
:参数名1参数值1
:参数名2参数值2
...
)
其中,“消息行为名称”用来指出该消息所引发的语言行为类型,由KQML保留的行为原语关键字来描述;“参数名”及其值用来指出消息的属性、要求和内容等,由KQML保留的行为原语参数关键字来描述,每个参数名都必须以“:”开始,后接相应的参数值。
KQML的最大特点是消息的参数以关键词为索引,并且参数的顺序是无关的。由于KQML消息的参数以关键词为标志,而不是以它们所在的位置为标志,因此采用不同语言的异质系统之间能够方便地分析和处理这些消息。
2.KQML保留的行为原语参数
KQML规范中定义了一部分常用的行为原语参数名和与其相关的一些参数值的含义,这些参数被称为保留参数。其含义是任何使用这些参数名的行为原语必须与规范的定义相一致。行为原语的保留参数是Agent通信中最基本、最常用的关键词。对他们进行统一定义,有助于保证Agent之间在通用参数语义上的一致性,可加快异质系统间信息交换和理解的速度。
3.KQML保留的行为原语
KQML中定义的行为原语称为保留的行为原语。KQML明确定义了每个保留的行为原语的意义、相关属性和必须遵守的格式。KQML中的行为原语可分为交谈类、干预和对话机制类及网络类三种。
(1)交谈类原语
这类原语用来实现Agent间一般信息的交换。下面给出其中最常用的5条交谈类原语:
①ask-if—:sender想知道:receiver是否认为:content为真。
②ask-one—:sender想知道:receiver中:content为真的一个示例。
③tell-:sender向:receiver表明:content在:sender中为真。
④reply-:sender向:receiver传送一个对:receiver的:content的回答。
⑤advertise-:sender承诺处理嵌入在advertise原语里的所有消息。
(2)干预和对话机制类原语
这类原语用于干预和调整正常的对话过程。正常的对话过程一般是Agent A发送一条消息给Agent B,当需要应答或谈话需要继续时,Agent B发送响应消息,如此循环,直到对话结束。下面给出干预对话原语中最常用的两条原语:
①error—:sender不能理解所接收的以:in-reply-to为标志的消息,即发送者认为它所接收的前一条消息出错。
②sorry—:sender理解接收到的消息,消息在语法、语义方面都正确,但:sender不能提供任何应答;或者:sender能够提供进一步的应答,但由于某种原因,它决定不再继续提供。sorry意味着Agent要终止当前的对话过程。
(3)网络类原语
网络类原语是为了满足计算机网络通信与服务需要而设立的行为原语,主要由推进器Agent使用,或者其他Agent通过“advertise”原语来使用。下面给出常用的三条原语:
①register—:sender向:receiver宣告其存在性,以及与物理地址有关的符号名。
②forward—:sender希望:receiver传送一条消息给另一个Agent。
③recommend-one—:sender请求:receiver推荐一个能够处理:content的Agent。
4.KQML通信服务器
为提高分布式处理的透明性,KQML引入了一个专门用来提供通信服务的特殊的Agent类型,即被称为通信服务器的facilitator。facilitator负责各种通信服务,如维护服务名称的注册,为命名的服务提供消息,进行基于内容的路由选择,为消息提供者和客户端提供代理,提供调解和翻译服务等。在一般情况下,每组本地Agent(或一个Agent域)共同使用一个facilitator。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。