灵魂-放水

为学日益,为道日损。

BlogJava 首页 新随笔 联系 聚合 管理
  296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks

Mobile Agent 通信语言研究

***

(**大学网络**实验室,**

 

摘要: 作为 Agent 间通信的关键, Agent 通信语言( Agent Communication Language ACL )已经得到学术界和企业界的广泛研究。本文分析了 ACL 的一些共同特征,并重点对 KQML Knowledge Query and Management Language )进行了分析。

关键词: 移动 Agent ,互操作性, ACL KQML

 

1 引言

目前,多 Agent 系统 (Multi-agent Systems, MAS) 广泛应用在如并行设计与制造、电子商务、语音识别、机器人控制、生产计划与调度等不同领域中。多 Agent 系统内部( intra-MAS )或不同多 Agent 系统之间( inter-MASs )的各个异构 Agent 必须通过通信,实现知识与信息共享,才能进行交互和协商,进而分工合作解决复杂的异构性问题。因此, Agent 之间的互操作性 (interoperability) 是多 Agent 系统的核心,而 Agent 通信语言( Agent Communication Language, ACL )是实现 Agent 之间互操作性的基础和关键。本文分析了 ACL 的一些共同特征,并重点分析了 KQML

2 相关理论或技术基础

2.1 言语行为理论(Speech-act Theory[1]

  大部分 ACL 都基于言语行为理论。言语行为理论是关于人类通信交流的一种形式化 模型,其基本原理是关于人类通信交流的一种形式化模型,其基本原理是:说话者所说的话语不仅仅陈述一个事实,而且是说话者做出的带有某种意图的动作。一个言语行为( Speech act )有三类相关的动作:表达方式( Locution ):语法上惯用的话语;表达意图( Illocution ):说话者传递给听者的言语表达行为,包括语内行为力( illocutionary )和命题( proposition );表达效果( Per locution ):作为表达意图的结果产生的效果。例如,“你不要打开机器”是个表达方式,传达的“不要打开机器”是表达意图,听者接收到后不打开机器就是表达效果。一般地,一个言语行为代表一个 ACL 中所用到的消息类型( message type )。 Searle 根据语内行为力把消息类型分成五个部分:

断定语( Assertives ):提供确定某件事情的信息(例如:机器开着);

指示语( Directives ):发送者发送导向性的消息给接收者(例如:打开机器);

承诺语( Commissives ):发送者表明将来完成某种动作(例如:我将打开机器);

许可语( Permissives ):允许接收者执行某种动作(例如:你可以开机器);

禁止语( Prohibitives ):禁止某些动作的执行(例如:你不能打开机器);

Singh 提出的社会代理思想中,补充增加了两类消息类型,即:宣称语( Declaratives - 说明某个事件,如,这台机器命名为 A ;和表述语( Expressives - 表达感情和评价,如,我希望这台机器是开着的。

消息类型的分类提供了一个能够定义通信交流模式的结构,这样, ACL 才能在此基础上发展起来。 ACL 的通信原语( Primitive )是消息的核心,一般是类似“ tell ”,“ ask ”等的动词。通信原语是 Agent 通信不可再分的“基本单元”。

3 Agent Communication Language

3.1 ACL 的基本框架

作为一种 Agent 通信语言,有其一定的规范框架,如图 1 。两个 Agent 进行交互通信时,需要传输层的传输协议(如 TCP/IP,HTTP,IIOP,SMTP )支持; ACL 本身位于逻辑层上,定义各个 Agent 能够理解交流的消息类型和意思。

1  ACL 的基本框架

一般的 ACL 规范框架包括消息的类型,消息格式,语义描述和内容语言等几个部分,以及支持的共享本体和采用的交互协议。

消息类型:第一部分所述,目前认为 ACL 的消息类型有 7 种。 FIPA  ACL KQML 的消息类型只属于断定语或者指示语。一般一个通信原语属于一种消息类型。

消息格式:定义通信原语和消息参数(如发送者,接收者,消息 ID ,协议和内容语言等)。通信原语和消息参数的定义采用既定的语法,以此来表示消息是如何构架的。

语义描述:语义使 Agent 消息具有精确意思的基础。

内容语言:内容语言是表达给定领域事实的语言工具,是理解 Agent 通信语言的概念框架,用来表述多个 Agent ACL 进行交互过程中双方能共同理解的信念、期望和意图。

共享本体:共享本体定义一个对话领域的概念(通常用词汇表示)和概念之间相互关系的规范。两个 Agent 只有存在共享本体,才能解释交互通信。共享本题是 Agent 通信语言的支撑。

交互协议:用来方便 Agent 通信的交互模式。

解码器 / 编码器:由于网络阻塞, ACL 消息对象可能不能发送到远处的平台,这样在通信的两端可能需要解码器 / 编码器把 ACL 消息转换成两边都能相互理解的字符串或者其他形式。

3.2 KQML                         

3.2.1 KQML 的结构 [3]

KQML 语言可以定义为一种层次结构型的语言。 KQML 可以分为 3 个层次(如图 2 所示),从里到外依次为内容层、消息层、通信层。内容层描述的是 agent 传递消息的真正内容,这些内容可以用实现 agent 的编程语言来表示。 KQML 可以采用任何形式的语言(无论是 ASCII 字符串还是二进制流)来描述,使得 KQML 的语言实现形式与内容层的含义无关,增强了异构 Agent 之间的交互性。

消息层是 KQML 结构中最为重要的部分,它确定 Agent 传递消息所使用的协议以及提供消息内涵所对应的行为原语,消息内涵对于 KQML 是完全透明的,因此消息层还包括对消息内涵的语言、采用的 ontology 的属性的描述。

通讯层包括了一系列消息特征,描述了通讯底层参数,包括消息接收者和发送者的标识以及通讯相连的标识。

2 KQML 的三个层次

3.2.2 KQML 的语法

KQML 的消息语法,采用类似 LISP 的语法描述,用一个通信原语开头,紧跟参数名称( parameter name )和参数值( parameter value )。如图 3 所示是一般的 KQML 消息语法,圆括号的起始处为行为原语名称,其余以冒号开头的是 KQML 的保留关键字。

3 KQML 的消息语法表述

每一条 KQML 消息被称为一种行为原语( performative ),接收到 KQML 消息的 Agent 根据消息的类型产生不同的动作。但是 KQML 语言规范中并没有对每一种语言表述都进行了严格的定义,因此这种语言规范仍需要不断地扩充。而且由于 Agent 所应用的环境不同,它的语言表述的范围也会根据环境的不同而有许多变化。原始的规范并不能满足所有用户的需求,因此可以根据实际需要建立一种扩展的 KQML 语言 [4]

3.2.3 KQML 的预留原语

常用的预留的行为原语通常可以被分为以下几类 [4]

1 )基本询问原语(如 evaluate, ask-if, ask-in, ask-one, ask-all, ask-about

2 )简单询问回答原语(如 reply, sorry

3 )多重询问回答原语(如 stream-in, stream-all

4 )通信信息原语(如 tell, achieve, cancel, untell, unachieve

5 )发生器原语(如 standby, ready, next, rest, discard, generator

6 )能力定义原语(如 advertise, subscribe, monitor, import, export

7 )网络原语(如 register, unregister, forward, broadcast, route

3.2.4 KQML 的语义 [3]

一个正确的语义有助于确切地定义该语言及其合适的用途。 T.Fini 采用 Speech Act 理论简单地给出了 KQML 语义的形式化描述。 KQML 行为原语的语义通常包括如下六个部分:

1.       行为原语直觉意义上的自然语言描述;

2.       用于描述意会行为的逻辑表达式。实际上,这是自然语言的形式化表示;

3.       用于表示 Agent 发送、接收和处理行为原语的必须状态的前置条件;

4.       用于表示发出行为原语后或收到行为原语后,还未回答的状态的后置条件;

5.       用于表示发送者的最终状态(发送行为原语的意图得到满足)的完成条件;

6.       任何有利于对行为原语理解的自然语言评论。

如果接收者有非空的前置条件,表明对此行为原语的响应是对建立其前置条件的行为原语的某种响应。但对收到发起对话的行为原语的接受者来说,前置条件是不需要的。在一次对话中,发送者的后置条件应该是消息接收者的前置条件的一个子集。当一条行为原语发出时,完成条件是其后置条件的一个子集,此类行为原语只要成功发出并被对方处理就完成了。

为了描述行为原语、前置条件、后置条件和完成条件,首先定义 Agent 的认知状态(采用一阶谓词逻辑)如下:

1.       Bel Bel(A, P) 表示对 A 来说 P 为真,其中 P 是用 A 应用的语言写成的表达式。也可以说 P 存在于 Agent A 的知识库或虚拟知识库 VKB 内。

2.       Know Know(A, P) 表示 A 认可 P 的知识状态。

3.       Want Want(A, P) 表示 Agent A 期望用 P 描述的事件或状态发生。

4.       Intent Intent(A, P) 表示 A 愿意做 P

例如行为原语 Ask-if(A, B, X) ,按上述介绍,其语义形式化描述如下:

1.       A 希望知道 B 关于 X 的真值状态。

2.       Want(A, Know(A, Y)) 。其中 Y 可能是: Bel(B, Y), Bel(B, NOT(X)) NOT(bel(B, X)) 。因此 Pre(A) 表示为 want(A, Know(A, bel(B, X))) want(A, know(A, bel(B, NOT(X)))) want(A, Know(A, NOT(bel(B, X))))

3.       Pre(A) want(A, know(A, Y)) ( 也可包含条件 NOT(know(A,Y))) Pre(B) :无。

4.       Post(A):intend(A, know(A, Y))

5.       Completion(A) Know(A, Y)

6.       NOT(bel(A, Y)) bel(A, NOT(Y)) 是两个不同的概念。(在某些特定的系统中是一样的。)

 

 

 

4 结论及未来工作

每一条 KQML 消息被称为一种表述,接收到 KQML 消息的 Agent 根据消息的类型产生不同的动作。但是 KQML 语言规范中并没有对每一种语义表述都进行了严格的定义,这种语言规范仍可以被不断扩充。而且由于 Agent 所应用的环境不同,它的语言表述的范围也会根据环境的不同而有许多变化。原始的规范比不能满足所有用户的需求,可以结合实际进行扩展。

前段时间由于把研究的重点放在移动 Agent 平台之间的互操作方面,后来发现需要对 ACL 有个理解。在接下来的两周里,将着重对 KQML FIPA-ACL 两种主流通信语言,进行更深一步的研究,并阅读相应的规范原文。

参考文献

[1]           王世进,周炳海,陶丽华,悉立峰 Agent 通信语言综述。

[2]           林和平,余元辉 基于 KQML 的移动 Agent 通信机制的分析。

[3]           董红梅 基于 XML Agent 交互机制研究。

[4]           罗健,王成良 基于 KQML Agent 通信体系结构设计

posted on 2007-01-14 12:10 放水老倌 阅读(1157) 评论(0)  编辑  收藏 所属分类: Mobile Agent

只有注册用户登录后才能发表评论。


网站导航: