KQML在多代理船体装配CAPP系统中的应用

KQML在多代理船体装配CAPP系统中的应用

张士杰,靖 爽
(中国科学院沈阳自动化研究所,辽宁 沈阳 110015)

摘 要:知识查询和操纵语言是目前多代理系统中广泛采用的通讯规范之一,它规定了标准格式来支持代理间的实时通讯。本文介绍了KQML规范的内容和功能,并把KQML规范应用在基于多代理技术的船体装配CAPP系统中,圆满地解决了系统的通讯问题,增强了系统的灵活性和稳定性。

关键词:知识查询和操纵语言;协调者;多代理;计算机辅助工艺设计

中图分类号:TH164 文献标识码:A

0 引言

多代理技术具有灵活、协作、自治和易扩展等优点,许多大型多代理(Multi-Agent)系统在交通控制、办公信息处理、分布式传感器、制造活动中的规划和调度、软件的动态配置等各领域的应用,均取得了令人满意的成就。在多代理系统中,各个代理相互协商、合作求解,这就需要一种规范来统一代理间的通讯。国外许多专家提出了一些通讯标准,其中以知识查询和操纵语言(Knowledge Query and Manipulation Language, KQML)规范最为成熟。
KQML是美国国防部国防高级研究计划局(DARPA)知识共享计划的一部分,作为用于交换信息和知识的语言和协议,它提供了标准格式来支持代理间的实时通讯,可用于两个或多个代理及应用程序间的协同处理[1]。KQML规范定义了可扩充的行为原语(performative)集合,行为原语是根据“言谈行为理论”获得的,能够对知识和目标进行各种操作,并以此为基础开发代理间更高级的通讯模型,例如,合同网(contract net)、谈判机制(negotiation mechanism)等[2]。国外已经对KQML进行了一定的实现:Lockheed KQML API,UNSYS KQML API。 KQML保留的行为原语从功能上分为三类:会话型、干预和监控型、网络型[3]。一条KQML消息是由行 为原语和参数关键字构成,表示成ASCII串。参数的关键字包括sender,receiver,from,to,content,inreplyto,replywith,language,ontology。一条典型的询问IBM股票价格的KQML消息表示如下:
(
askone
∶sender joe
∶content (PRICE IBM? price)
∶receiver stockserver
∶replywith ibmstock
∶language LPROLOG
∶ontology NYSETICKS 
)
我们在“基于多代理技术的船体装配CAPP系统”课题中利用了KQML规范,圆满地完成了系统内部的信息交换,加强了系统的灵活性和通用性。本文论述了基于KQML通讯语言的多代理系统结构、代理内部对KQML的解释、处理和代理表达方式,以及利用PowerBuilder提供的分布式处理技术,实现KQML消息的有效传递等问题。

1 多代理CAPP系统结构

11 代理的划分及信息流

根据装配工艺的系统分工,多代理CAPP系统可分成下述四个应用代理:数据抽取和BOM生成、装配工艺生成、工艺计划生成和工艺图绘制。图1是整个系统的结构图。其中,虚线表示代理之间KQML的消息流,实线表示实际的数据流。

12 代理的结构及其主要功能

系统中的代理主要有以下两种:①协调者(facilitator)。它是KQML结构中一个特殊而且十分重要的代理,也是提供网络通讯服务的应用程序,主要的服务包括注册名称、转发消息、匹配内容、翻译和调节等。此外,作为中介,它支持代理群之间的联络,为扩展成更大的系统提供了基础;②应用代理。主要完成具体的工艺设计及其相关的任务。这两种代理的结构基本类似,如图2所示。

在每个代理中,都含有一个路由器(router),负责提供灵活的网络连接,管理多个代 理间的并发通讯。在各个代理内,路由器的结构和功能基本一致,通常,根据行为原语及其参数定位,它的实现的程度随各系统需求而异。控制器主要功能是初始化,发送注册/注销信息,对运行的代理给予总的控制,监视协调者和各应用代理的运行状态,当满足某种约束条件时运行或终止等。推理机根据知识库和黑板结构的内容进行逻辑推理,并触发应用程序完成相应的任务。KQML解释处理器主要分析与处理KQML原语,并进行应答。由KQML消息库存储代理收/发的KQML消息,其属性包括KQML行为原语、关键字和收/发时间。知识库存储各代理的结点名、任务名、分解状态、运行状态和相应任务的完成状态等信息。数据库存储需要处理和已经处理的数据。协调者和应用代理的主要差异在于知识库、数据库中的内容不同,推理机所利用的规则也不同。此外,协调者没有完成设计任务的能力,因此不含应用程序模块。

13 应用代理的表达

在多代理系统中,每个代理应具有自治、独立、协作和交互等特性。在具体实现过程中,我们对应用代理进行了如下定义:
<agent>∷ = [WB]AGENT<IDENTIFIER>
CAPABILITY<IDENTIFIER>
DATA〖CD#*2〗BASE<IDENTIFIER>
KNOWLEDGE〖CD#*2〗BASE<RULE-SET>
REASONING〖CD#*2〗ACTION〖HT〗
其中,AGENT域表示代理的标识;CAPABILITY域表示代理的能力;DATA_BASE域表示代理将要处理和已处理的数据;KNOWLEDGE_BASE域表示代理的推理规则集;REASONING_ACTION域表示代理的推理活动。
规则集定义如下:
[HT9.SS]RULESET∷=RULE1|RULE2|…|RULEnR〖ZK(#〗ULEi∷=[ITEM NODE_NAME FUNCTION_NAME SUBITEM-1…SUBITE
M-n]
ITEM∷=IDENTIFIER
NODE_NAME∷=IDENTIFIER
FUNCTIONNAME∷=F_AND|F_OR|ASK-STATUS|DOGET|F_EXCUT
E|F_REGISTER
SUBTASKNAME∷=IDENTIFIER[ZK)][HT]
其中,MITEM是任务或子任务名称;NODE_NAME是该任务执行时所在的结点名;
FUNC_NAME是函数名;FUNC_NAME右边的均为ITEM的子项(或子任务)。
代理的运行在推理行为的推动下进行,而不是基于KQML消息的交互;在推理过程中,所需数据和信息是通过必要的KQML消息交互获取的。也就是说,推理活动中所定义的函数,对信息的需求是借助于KQML原语实现的。例如,应用代理需要获得BOM表的信息,首先查询本地数据库中是否有该信息,如果没有,则应用代理中的ASK_STATUS函数向协调者发出如下KQML消息询问:
(ask-one 
∶content (FINISHSTATUS BOM? finishstatus)
∶sender capp agent
∶receiver facilitator
:language PowerBuilder
:ontology CAPP 
)
协调者收到此消息后,以TELL原语答复消息的发送者。

2 利用PowerBuilder实现KQML信息通讯

21 通讯的基本原理和实现方法

整个系统的主要模块是由PowerBuilder开发的,而PowerBuilder提供了强大的、类似于CORBA的分布式处理能力。如图3所示,位于服务器端的传输对象负责建立客户连接,处理客户的服务请求;位于客户端的连接对象负责与服务器应用进行连接,并向服务器提交请求;服务器应用提供的业务逻辑功能被封装在不可视对象之中,在客户端生成该不可视对象的类定义;用户界面提供人机交互功能。具体操作时,首先通过传输对象和连接对象建立服务器、客户之间的联系;然后,客户提出请求,通过调用类定义来访问远端的不可视对象,服务器提供相应业务逻辑功能服务。在应用服务器的设计中也可加入客户端的实现内容,以便该应用服务器能作为一个客户访问其他的应用服务器。同理,服务器应用也可以作为另一个服务器应用的客户。这种体系结构具有逻辑封装性、管理安全性及性能良好等优点,其结构如图3所示[4]:

我们采用TCP/IP协议作为网络底层的传输协议,并在此基础上构筑应用程序。为了KQML消息的有效传递和接收,定义并实现了一些基本函数:
BUILD_MESSAGE (KQML_structure)产生一条标准格式的KQML语句,存放在结构里;
SEND_MESSAGE (KQML_structure, host, optional)发送一条KQML消息到指定的主机上,并有一些可选的参数;
GET_MESSAGE (KQML_structure, key1, key2,…) 取得一条KQML消息关键字的值;
DISPOSAL_KQML (key1, key2,…) 根据performative、content的关键字处理消息,并进行必要的应答。本函数功能很重要,被封装成不可视的用户对象,并创建其代理对象,由客户激活;
LISTEN_CLIENT (optional) 主机监听客户信息,并有一些可选的参数;
CONNECT_TO_SERVER (host, optional) 客户连接到指定的主机,并有一些可选参数。
由于PowerBuilder语言提供的基本函数库十分丰富,可对底层 技术细节进行良好的封装,使开发者专注于程序逻辑的问题。具体对话过程如下:
(1)利用LISTEN_CLIENT( )、 CONNECT_TO_SERVER( )建立客户和主机的网络连接;
(2)客户端根据需要利用BUILD_MESSAGE( )建立标准KQML消息;
(3)客户端利用SEND_MESSAGE( )发送KQML消息;
(4)主机利用GET_MESSAGE( )收取并分析KQML消息;
(5)主机利用DISPOSAL_KQML( )处理客户发来的KQML消息;
(6)结束一次对话过程。
重复以上步骤,就可以实现多代理系统内部的通讯。在多代理的船体装配CAPP系统中,信息通讯是通过大量的KQML对话过程实现的,下面给出了完成设计任务的具体应用步骤:
(1)协调者运行,各应用代理运行,向协调者发出REGISTER原语进行注册;
(2)协调者接收管理系统下达的设计任务,根据知识库中各代理的注册状态发出BROADCAST原语广播设计任务;各应用代理收到该消息后,将任务与自己的能力进行匹配,利用TELL原语将消息告知协调者;
(3)各应用代理根据自己的任务和条件开始工作;数据抽取和BOM生成代理,主要完成抽取设计信息,并形成船体分段的BOM表及焊缝信息表,然后向协调者发出INSERT原语告知完成情况与数据库的位置;
(4)在装配工艺生成代理和工艺计划生成代理运行时,首先向协调者发出ASK原语询问BOM表和焊缝信息表的位置,收到准确路径后获取该信息到本机上,分别进行工艺计划和装配工艺的生成;装配工艺的生成需要与之相应的工艺图,若本机不具备条件,工艺生成代理就把分段号和相关内容通过协调者告知工艺图绘制代理;工艺图绘制完成后,该代理以TELL原语通知协调者,并把工艺图发送给工艺生成代理,以形成完整的工艺文件;
(5)各应用代理完成各自的任务后,以TELL原语告知协调者完成状况,再以UNREGISTER原语进行注销,退出运行状态;协调者得知设计任务全部完成后,结束运行。

22 同步和异步问题

KQML的通讯方式一般是异步的,可有效减小系统阻塞,降低协调者的负荷;而且由于硬件的处理速度很快,足以满足技术要求。实现异步传递方式,可利用PowerBuilder函数调用的POST参数,主机把请求加入消息队列中,按照接收到的顺序依次处理,发送者则可以进行其自己的任务。当代理必需某信息才能继续工作或希望得到简短答复时,可采用同步方式。PowerBuilder函数调用的一般方式即同步方式,主机优先处理该信息,同时加上服务器推送技术(sever push),把消息的发送和接收绑定在一起,达到消息的同步收发。

23 镜像协调者

由于所有代理发出的KQML消息都传到协调者上,即使代理之间的通讯也是由协调者转发的,这就造成协调者的负载加重;在系统中的代理数目很多,通讯频繁时,势必降低系统的效率。在这种情况下,建议采用镜像协调者,即建立一个与原协调者完全一样的代理。镜像协调者平时不工作,但时刻保持与原协调者的同步;当原协调者的负载很大(通过参数确定
)时,镜像协调者开始工作,分担原协调者的负载。这种方法还能增强系统的稳定性。在大规模代理并存时,可以考虑多个协调者并行工作,而协调者间的同步和联络,以及技术、逻 辑上的问题需要较好地解决。

3 结论和未来工作

由于多代理等技术的引入,船体装配CAPP系统不仅能达到生产的需求,减少了装配任务的设计周期,而且具有很强的灵活性和适应性。应用KQML使该系统的通讯符合国际规范,比较通用,且易于移植,为工厂CIMS工程更大规模的系统集成提供了基础。KQML通讯与代理内部的推理机制相结合,使之成为辅助推理活动和实现信息共享的有力工具。此外,KQML的表达方式明确、易读,方便了人机交流。为了适应大规模系统的需求,我们认为,KQML作为代理间 的通讯规范,除了不断完善语意表达,增加对话的安全性,使之应用范围更广以外,还应结合CORBA、COM等现有的工业标准,发展成为应用程序之间跨开发平台和操作系统的、通用的交流“语言”。 

参考文献:

[1]LABROU Y, et al. A proposal for a new KQML specification[R]. ARPA Knowledge Sharing Initiative, External Interfaces Working Group Working Paper, 1997.
[2] WEBER F, et al. Draft specification of the KQML agent-communication language, computer science[Z]. University of Maryland Baltimore County, BaltimoreMD for Current Status.http:www.cs.umbc.edu/kqml/kqm/spec.ps.
[3]陈冠岭,等.Agent的通讯语言——KQML[J].计算机科学,1998,25(6):35-39.
[8]王 蓉,等.PowerBuilder应用开发技术详解[M].北京:电子工业出版社,1996.

The Application of KQML in the Multi-Agent CAPP System for Ship Hull

ZHANG Shi-jie, JING Shuang
(Shenyang Institute of Automation, Chinese Academy of Sciences,Shenyang 110015,China)

Abstract:KQML(Knowledge Query and Manipulation Language) which is a protocol for exchanging information and knowledge, is widely used as an agent communication language. The paper presents KQML criterion and
funtion, applying it into CAPP system of the hull assembly process based on multi-agent technology.
Due to utilizing KQML protocol, the communication ability of the system is highly improved and its flexibility and stability are also enhanced.

Key words:KQML; facilitator; multi-agent; CAPP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值