1、Agent通信语言KQML的扩展与应用摘 要 Agent可以看成计算机和人工智能领域中的一个实体。它通过传感器感知环境,通过效应器作用于环境。Agent为了达到一定的目标,有着自成规律地执行任务的工作模式。 KQML是Agent的一种通信语言和协议,它定义了一套严格的语法规范,提供了Agent通信标准。本文中我们首先介绍了Agent和KQML的基本理论、Visual c#以及Socket,其次详细介绍了本系统的发送和接收消息算法,接下来我们运用软件工程的思想来介绍本软件的开发过程:需求分析、总体设计、详细设计、编码与测试。需求分析阶段,确定了系统的主要功能;总体设计阶段,分析了系统的结构,给出
2、了系统流程图;详细设计阶段,利用伪代码描述了实现系统功能所需要的程序模块;之后,编码和测试,系统运行正常。最后一章简要介绍了改进系统需要的工作。关键词:Agent理论与KQML扩展;Visual Studio.NET;C#;消息发送与接收。Abstract前 言目 录第一章 绪 论 2第二章 Agent概述和MAS 22.1 Agent概述 22.2 MAS 22.3 Agent之间的交互和协作 2第三章 Agent通信语言KQML 23.1 KQML概念及语法结构 23.2 支持KQML的参考模型 23.3 KQML协议 23.4 KQML语义 23.5 扩充的KQML原语及语义分析 2第四
3、章 KQML的扩展与应用 24.1开发环境介绍 24.2系统需求分析 24.3系统的总体设计 24.4系统的详细设计 34.5系统编码与运行结果 3第五章 前景与展望 3结 论参考文献致 谢第一章 绪 论智能Agent在许多方面有着重要的应用意义, 如信息服务、电子商务、协同工作、教育等领域,Agent扮演着越来越重要的角色。系统与网络管理计算机系统本身的资源量就非常巨大,系统管理的整个趋势正在朝着傻瓜化的方向发展,其中很大一部分原来由系统管理员手工干的事情,现在已经由计算机代管了。系统管理的界面变得更加友好,在系统本身的复杂性不断提高的情况下,驾驭系统资源的复杂性反而在不断降低,代管系统的自
4、主性也在逐步提高。在网络管理方面,随着Client/Server计算成为主流,完成固定功能的Agent的存在和应用已经成为事实,分布在不同设备上监视设备状况,并随时向主机报告数据的Agent,已经是当今网管系统中很平常的一部分了。但是, 这些从事部分系统/网络管理的Agent目前还不能称为智能Agent,它们的智能化程度仍然有待提高。即使作为非系统/网络管理员和操作员的用户,也会有为系统和网络设定常规服务、向系统和网络预约特殊服务的需要,智能Agent是满足用户这种需要的最合适的帮手。KQML作为Agent最重要的通信语言和协议之一,随着Agent技术的发展,其应用范围越来越广泛。例如:在多移
5、动机器人仿真系统中,KQML 已成了通信语言的事实标准,许多智能体软件都支持 KQML 或向这个标准靠拢。移动机器人具有感知性、反应性和自主性,所以多移动机器人系统是一个典型的多智能体系统(Multi-agent System),KQML 也就成了多移动机器人之间通信的首选语言;在多代理船体装配CAPP系统中,各个代理相互协商、合作求解,这就需要一种规范来统一代理间的通讯,KQML作为知识查询和操纵语言,其规范最为成熟,很好地解决了这一问题。因此, KQML应用研究已是一件意义深远的科研项目。我们知道KQML定义了一组预留的通信行为原语,然而使用现有的通信原语有时不足以体现出Agent在协作时
6、对待活动的态度,同时又不能满足它们原有的语义含义。KQML通信原语对任务交互原语定义的缺乏,不能明确表明Agent之间的态度和目标,不利于任务的实现,所以本文针对KQML的内容进行了扩充,并设计和分析了扩充的Sql语句结构与语义,在Visual c#.net中利用Socket实现了KQML消息的发送、接收和解析,完成了KQML扩展的实现与应用。下文详细介绍了本毕业课题的相关知识、实现过程和结果。第二章 Agent概述和MAS2.1 Agent概述2.1.1 Agent的定义在计算机和人工智能领域中,Agent可以看成是一个实体。它通过传感器感知环境,通过效应器作用于环境。Agent为了达到一定
7、的目标,有着自成规律地执行任务的工作模式。著名Agent理论研究者、英国的Wooldridge博士和Jennings教授认为:Agent是一个具有自主性、社会能力、反应性和能动性等性质的基干硬件或(更经常的)基于软件的计算机系统,该定义允许在更宽范围的环境中设计Agent,而且其中增加了通信要求。2. Agent的性质(1)代理性(Agent) a它是代表用户工作的; b它可以把其他资源包装起来,引导并代替用户对这些资源进行访问,成为便于通达这些资源的枢纽和中介。(2)智能性(Intelligence)在这方面,智能Agent可以做很多有高技术含量的工作。例如,理解用户用自然语言表达的对信息资
8、源和计算资源的需求;帮助用户在一定程度上克服信息内容的语言障碍;捕捉用户的偏好和兴趣;推测用户的意图并为其代劳;等等。(3)自主性(Autonomy)一个智能Agent应该是一个独立自主的计算实体。它应能在无法事先建模的、动态变化的信息环境中,独立规划复杂的操作步骤,解决实际问题,在用户不参与的情况下,独立发现和索取符合用户需求的可利用资源与服务。最近J.McCarthy等人正在探讨如何构造能对自身状态有所感知的智能Agent。(4)机动性(Mobility)在网络计算环境下,一个Agent可以看成是代表用户驻网络的常设机构,它可以在网络上灵活机动地访问各种资源和服务,还可以就完成特定任务同其
9、他智能Agent进行协商和合作,甚至把自己迁移到网络中的其他主机上去执行任务。这样的精灵在网络上游弋 ,是对网络安全性、个人隐私性和管理方面的巨大挑战。3. Agent的基本结构结构图如下: (1)目标模块 (2)感知器 (3)信息处理器 (4)效应器 (5)通讯机制4.Agent体系结构: Agent能感知周围环境,接受用户和其它Agent的任务和请求,并根据自身知识和规则作出决策和行动。从这些性质和功能上的特点考虑出发,Agent的结构如下:(1) 用户接口:在用户和Agent间提供一个界面,用户可向Agent提出任务请求;(2) Agent控制单元:是Agent的主要部件。其功能如下:1
10、. 持续接收来自用户和其他Agent通信的信息。当检测到一个任务信息时,处理分析信息类型并启动相关操作;2. 接受一个任务定义,启动一个目标搜索程序,在它的自有知识库检索用户需要的信息或其它Agent要求的信息;3. 选出参与合作的一个或者若干个Agent,从而构成一个合作系统; (3)通讯接口:在Agent之间提供一个接口,由一组信息规则和过程驱动,由控制单元通过网络发送和接收信息。 (4)知识仓库:Agent自身具有的信息和知识,以及与其它Agent协作必须具有的信息和知识实现任务。 Agent理想模型 一个Agent接受它能完成的任务后,就启动程序:如果任务超出了Agent任务求解能力,
11、Agent就寻找合作Agent并将任务交给合作Agent进行问题求解。在下列情况下Agent间需要合作,合作有以下情况:(1) 一个Agent没有完成任务的办法,Agent向具有相关领域专家知识的其它Agent或以前有关类似求解经验的Agent提出请求。在这个合作中Agent共享问题求解能力和结果;(2) 一个Agent缺少完成某一任务的信息,它应向拥有信息Agent提出帮助请求;(3) 一个Agent只具有完成部分任务的能力,几个Agent共同完成任务。4、Agent功能的实现要求:跨平台一致语法,最小资源代价,支持移动语义 面向Agent的编程技术(AOP,Agent Oriented P
12、rogramming)2.2 MAS2.2.1 MAS概念MAS就是多主体系统,即multi-agent。它是将多个自治的、异构的Agent松散耦合成为网络群体,通过协作,利用集体的智慧做出决策或解决问题的Agent系统22。MAS中,各个Agent实体可以单独地完成任务,必要时可以通过通信合作共同完成某些任务。可以将某些任务进行化分,并且根据各个Agent的特性和状态来分配任务,使它们并行执行任务,这种合作机制可以减少工作的时间。MAS系统的主要特征就是任务共享和结果共享:1、任务共享就是指单个Agent可以花费较少的资源和较少的通信就可以完成子问题,这是建立在对整个任务进行适当的分解之上的
13、。2、结果共享就是指Agent之间通过共享部分结果的形式互相协调合作,适用于在多个Agent之间有结果交互的情况。在MAS系统中,环境可以分为两部分:外部环境和内部环境。外部环境就是指除Agents以外的环境,比如Agents所处的位置、所处环境的状态变化等;内部环境就是指Agent自身的一些特性,比如Agent的学习能力、对外界的感应能力,自我状态调整的能力等,这些特性与它所要完成的任务有关。2.2.2 MAS的特点根据Agent与MAS的概念定义,可以发现MAS一般具有以下一组特点:(1) 行为实体的高度自治和灵活性Agent是构成MAS的基本成分。每个Agent封装了状态和行为,能够对其
14、内部状态和行为实施完全自主地控制,因而具备状态自主性和行为自主性。此外,Agent的行为具有不同程度的灵活性,包括反应性、社会性和自发性。因此,从行为特征上看,构成MAS的Agent与软件工程中的其他行为实体(如过程、函数、对象、进程等)有着明显的差别,主体具有高度自治和灵活性的行为特征。 (2)行为实体间的结构相关性构成MAS的Agent相对独立,不同的Agent之间可能存在各种结构关系,以服务于系统的整体设计目标。Agent之间的结构关系是多样化的,不同的结构关系将对相关Agent的交互作用产生不同的影响。在复杂的MAS中,Agent之间的结构关系在系统运行过程中会动态地发生改变。(3)行
15、为实体间灵活和复杂的交互在MAS中,不同的Agent之间通过高层的交互来实现灵活多样的合作、协商和竞争。因此,从行为交互方面,主体之间的交互与软件工程中其他行为实体之间的交互有本质性的差别。Agent之间的交互通常基于某种Agent通信语言,它能够在语义和知识层次上表达复杂的交互意图和内容,并且由Agent在运行阶段来动态确定。(4)无全局控制 一般地,MAS无全局控制能力,在系统中没有一个Agent可以完全控制其他Agent的行为以及环境状态的变迁,不能对系统的运行进行充分和完全的协调和控制。这是由于系统中的每个Agent都是自主的行为实体,主体的行为只能对系统的演化产生部分、有限的影响。
16、(5)无全局的观点 对于绝大多数MAS而言,系统中的Agent要获得关于系统及环境的完整、准确和及时地信息是非常困难的。这是由于主体所驻留的环境可能是比较复杂的,具有诸如不确定性、不可达性和动态性等特点,Agent的感知能力非常有限并且Agent的行只能对所驻留的环境产生部分和有限的影响。 (6)不可预测和不确定性 在MAS中,由于Agent行为的自主性、Agent行为对环境影响的有限性、系统中无全局控制Agent、Agent间交互行为的动态性,MAS的运行具有不可预测性和不确定性的特点。在动态的MAS中,很难预测和确定一个任务或者某个规划能否最终得到完成、不能预先确定其他Agent能否友好地
17、进行合作并提供相应的服务或者就某些事宜达成一致、Agent的行为能否达到预期的效果等。2.3 Agent之间的交互和协作MAS中,每个Agent相对独立但同时它们之间有存在各种相关性,因此多个Agent必须进行有效的协作以确保系统以一种协调和一致的方式运行,从而实现系统以及各个Agent的设计目标。2.3.1 协作的概念 协作是Agent间相互作用、确保系统作为一个整体协调有效运行的过程,它是MAS的一项重要的性质和特征。下面对协作概念作进一步解释和说明。1. 协作发生在多Agent之间协作发生在多个Agent之间,单个Agent不涉及协作问题的讨论。 2. 相互作用意味着Agent之间需要执
18、行活动参与协作的Agent需要执行某些动作、实施某些行为才能确保Agent间的协作得以有效开展。这些活动可以是各种物理动作,如执行一个事务、释放某些资源、改变环境状态、进行某个计算等;也可以是参与协作的Agent之间的通信动作,用于Agent之间的消息传递,如 一个服务请求、作出一项服务承诺、提出一项建议等等。3.何谓协调这里所说的协调是指协作Agent的行为之间不存在或者尽可能少地存在消极关系,Agent间的动作不会或者尽可能少地相互冲突和排斥。4. 何谓有效这里所说的有效是指参与协作的Agent能够从环境或者其他Agent中获得所需的服务、信息、数据和资源等,Agent之间的积极关系能够得
19、到充分发挥,从而使得系统的运行具有更高的效能。5. 协作是一个过程在许多情况下,Agent之间的协作并不是一步到位的。由于MAS运行的动态性、控制的发散性以及Agent行为决策的自主性,Agent之间的协作可能需要经过一系列步骤、执行一系列的活动。这些步骤和活动可能是事先由软件人员已经确定好的,也可能是运行时刻由软件主体本身动态产生的。6.协作是MAS的特征在MAS中,协作是一种极为常见和普遍的现象,是MAS的一项重要的性质和特征。2.3.2 协作的作用有效的协作将对MAS的运行以及系统设计目标的实现产生积极影响,具体表现为:1.防止系统的混乱Agent间的协作有助于Agent获得行为决策所需
20、的信息和数据,使得Agent所实施的行为变得有效,减少Agent行为之间不必要的冲突,确保Agent行为实施变得有序和协调。2. 满足系统的全局性约束MAS中经常存在一些全局性的约束,有些约束仅仅对系统中的某个或者某些Agent的运行发挥作用,对它们的行为实施作出限制;有些约束将对系统中所有Agent的行为产生影响。协作可以协调它们的行为,确保满足系统的整体约束和限制。3.实现信息、数据、资源和服务的共享在MAS中,信息、资源、数据和服务通常是分布的,不同的主体拥有不同的信息、资源和数据,对外提供不同的服务。与此同时,为了实现各自的任务和目标,Agent在实施其行为的过程中可能需要拥有分布在其
21、他Agent中的信息、资源和数据,需要获得其他Agent的服务。4.避免死锁和活锁在MAS中,当Agent之间的行为出现资源冲突时极易发生死锁。死锁是尽管多个Agent不断地实施行为,但是这些行为的实施却不能促进其任务和目标的实现。5.提高系统的运行性能有效的协作可以充分利用Agent之间的积极行为,减少资源支出,避免不必要的无效动作,提高系统运行效率和质量,帮助系统获得更高的效能。 Agent之间要交互,必须有协作,要协作必须有统一的规范,下一章我们将重点介绍Agent通信语言KQML,及其语法结构和规范,让我们进一步理解Agent通信原理。 第三章Agent通信语言KQML3.1 KQML
22、概念及语法结构KQML的语法主要由两部分组成:一组语法规则和一个保留字集合。它描述了如何产生一个良定义、合法的KQML消息。一条KQML消息实际就是一个字符串序列。KQML消息又称为“执行原语”,采用名值对偶形式,以及类似于Common Lisp前缀表示法进行描述,用一个通信原语开头,后面紧跟着参数名称,参数名称必须以冒号(:)开始,后接相应的参数值。执行原语参数以关键词为标识,而不是依据大量参数所在的位置,使采用不同语言的异质系统间能够灵活地分析和处理消息。KQML的这种语法结构一方面使得KQML语言较为简单,易于串行化和重新构造,所生成的KQML消息易于理解和编译;另一方面,由于任何平台都
23、是可以对字符串进行识别,提取、合成和分析,因而方便与跨平台的处理。图3-4表达了KQML的语言格式及对应分层。KQML依据言语行为理论对言语行为的分类,将一些基本的言语行为定义为41条相应的通信原语,并使其语义更适合于计算机通信的应用31。这些通信原语称为保留的通信原语,规范中定义了每个保留通信原语的意义、相关属性以及必须遵守的格式。这些行为原语定义了当某个Agent想要获取其它Agent的知识和目标时可能的操作,用于表达和分布式知识交换相关的各种操作。 KQML的语法简单,为基于平衡的括号表,表的开始为行为原语名称,其余部分为一组以“:关键字”形式出现的参数表。KQML提供常用的预留的行为原
24、语通常可以分为以下几类33: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,
25、export);7、网络原语(如register, unregister, forward, broadcast, route)。图3-4 KQML语言结构行为原语的一些参数是可选的,在调用参数时在前面注明关键字,因此和参数顺序无关。KQML使用了如下一些关键字作为行为原语的参数名,表3-1给出了KQML语言中常用的行为原语的参数名及其含义。表3-1: KQML的保留参数关键字及其含义保留的参数关键字含义:sender消息的实际发送者。:receiver消息的实际接收者。:fromContent参数中使用forward时,通信原语的起始点。:toContent参数中使用forward时,通信原
26、语的最终目标。:in-reply-to所响应的消息的标志。:reply-with当前消息的标志:language描述消息内容所采用语言的类别。:ontology描述消息内容所应用的术语定义集的名字(本体论)。:content通信原语所表达的消息内容。3.2 支持KQML的参考模型3.3 KQML协议KQML语言又称作知识查询与操作语言,它既是一种消息格式,又是一种消息处理规范,是基于言语行为理论的知识交换语言。它定义了一种Agent之间传递信息的标准语法以及一些“动作”(Performative),这些动作主要由言语行为理论中演化而来。KQML只是用作Agent通信的“外层”语言,为多Agen
27、t系统通信和协作提供了一种通用框架,其消息的语义内容在KQML中规定并不详细,其标准是开放的,各种语言都可以用来传送内容知识,也可以集成在KQML中。因此,KQML是独立于应用领域的,它不关心所传递消息的内容,也不规定需要采用的内容语言。它具有通用的语法,语义和语言符号的使用方法。KQML主要关心的是语言符号的使用方法,其次是语义问题。就是这样的语言以及一系列的协议支持了Agent间完成识别、连接和信息交换。我们假设KQML建立在如下的消息传输抽象模型基础上:1、Agent之间通过发送离散消息的单向通信链路连接。2、通信链路具有一个与其相关的非零传输延迟。3、当Agent接收消息时,它知道该消
28、息来自于哪条传输链路。4、当Agent发送消息时,它可以选择相应的信息的输出链路。5、到达同一目的地的消息以他们被发送的顺序被接收。6、信息进行可靠的传输30。KQML都是在点到点Agent层的通信中采取异步消息传输形式,这个点到点消息传递抽象假设为基于Agent的程序外层提供了一个简单一致的通信模型,有利于基于Agent的程序设计和API的构造。它能使基于Agent编程更容易设计和执行。在概念上,KQML是一种层次结构型语言。KQML语言模型由三个部分组成:通信层、消息层和内容层31。如下图3-3所示。图3-3 KQML层次结构语言模型通信层主要进行信息的编码,对基本的通信参数进行描述,如发
29、送者和接受者的地址标记等。该层建立在进程间通信(IPC)或者TCP/IP等基本传输协议之上,并且独立于这些传输机制。消息层主要用于定义应用中相互间传送的信息,它形成了KQML语言的核心,决定了Agent间交互的类别。信息层的主要功能还包括识别被用来发送信息的网络协议,提供行为原语与原语实体的连接。内容层描述了Agent所传递消息的实际内容,KQML的内容描述可以由任何一种知识表示语言描述,可以是使用ASCII字符的表示语言,也可以是使用二进制的表示语言,即意味着KQML可以携带任何一种语言表示的信息,这体现了KQML语言的开放性32。KQML实体层的语言无关行为为异构Agent间互操作性提供了
30、支持基础。使用KQML时,软件Agent将传输的内容封装在KQML消息中,接收机构不需要辨认这些部分,而只辨认消息的开始和结束。3.4 KQML语义严格、形式化的语义定义对于正确、无二义性的理解运用一门语言是必不可少的。一个KQML消息至少包括言语行为和消息内容两部分,他们是KQML的关键和核心。因此,KQML语义定义包括了以下两方面的内容:1、描述KQML言语行为对交互双方Agent所产生的影响;2、定义消息内容中各个语法项的指称。为了分析和描述言语行为对交互Agent的影响,需要建立Agent模型来定义Agent通信语言的语义, KQML语义框架包括下面几个组成:主体模型、形式化语言、一组
31、语义定义策略以及对一组由不同言语行为组成的KQML消息的详细语义描述。Agent是由信念、知识、期望和意图四个认知部件构成的认知系统,可以采用一阶谓词演算逻辑来描述这些认知部件以及KQML所包含的语义。为此,引入了一组认知模态算子来刻画Agent的认知部件。 BEL 形式为BEL(A, P),意指Agent A相信P为真(或可以被证实),P是Agent A的语言中的一个表达式。KNOW形式为KNOW(A, S),表示Agent A知道S描述的知识,这里S是一个状态描述(以下的S同此义)。WANT形式为WANT(A,S),表示Agent A期望S描述的认知状态(或行为)在将来发生。INTEND形式为INT(A,S),表示Agent A有从事S的意图,并且承诺一个行为过程在将来达到S。此外,KQML的语义框架还引入了两个行为实例:1、PROC(A,M)是指Agent A处理KQML消息M的行为。每条接收到的消息被处理,意味着它是一条有效的KQML消息,其代码段依据执行原语设计,由应用真正处理该条消息。PROC(A,M)并不保证对消息的恰当处理(或代码与语义描述相一致);2、SENDMSG(A,B,M)是指Agent A把KQML消息M传给Agen
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1