4.2 通信语言的标准化
智能体的通信语言(ACL)是实现智能体之间互操作性的基础和关键。目前智能体主流的通信语言标准有KQML和FIPA ACL两种。两者在基本概念和规则上几乎是相同的,其差别主要表现为语义框架不同。其中FIPA ACL具有精确的形式化语义,而KQML则利用六个特定谓词的逻辑组合形式来描述。从应用情况看,两种语言标准均在国内外取得了丰硕的理论研究成果,并且都有相应的实现平台或工具。但在应用过程中也都产生了一些问题,包括:
(1)ACL很难解析。其主要原因有两点。第一,KQML和FIPA ACL都是没有格式(或弱格式)的字符串,这给ACL的解析带来很大难度;第二,两者均利用嵌套结构来增加ACL的描述能力,但同时也增加了解析的复杂度。
(2)均不易扩展。
(3)缺少对有效性的检查。
(4)跨平台性差,代码难以移植。
因此,要克服现有ACL标准存在的问题,就必须找到一种标准的语言规则来重新对ACL进行封装。
XML是基于文本的可扩展的标识语言规范,是一种可以表达数据中结构的共同语法的标识语言。XML使用文档类型定义(DTD)规定一套关于标记符号的语法、语义规则,比较准确地描述文本数据的内容、含义、结构、特征和关系等信息,而把数据的外观表现形式交给样式表处理,这就把数据的内容与表现形式分离开来,从而大大提高XML数据的可理解性、可交换性和重用性。另外,XML文档是纯文本,独立于操作系统平台和应用,使用者可自由定义标签和文档结构,亦可增添或扩展已有文档结构定义,以满足新应用需求,而不需破坏原有的应用,因此具有更好的灵活性和可扩展性。
综上所述,本系统选择用XML对KQML和FIPAACL进行封装。这里以对FIPA ACL消息封装为例进行分析。FIPA ACL使用了一种类似于链表处理的语法来对智能体的通信消息进行描述,用XML对ACL消息内容进行编码可以使其语法更规范。XML编码了包含了解析信息,方便了接收方对消息的解析;并且用XML描述的FIPA ACL消息中的参数值可以不是字符串而是链接,这种处理方式不仅可以避免嵌套,使格式统一;还可以更好地描述智能体的交互能力、协议和语义,从而增强了系统的灵活性和可扩充性。因此,采用XML对封装FIPA ACL消息是可行且合理的,其步骤如下:
(1)针对每个ACL消息设计标准的DTD文件;
(2)生成与各通信消息对应的XML文件,并与对应的DTD进行合法性对比检测;
(3)将消息中的各种参数表示为树状结构中的节点,可按结构等级进行划分,将类型参数作为根节点,而其他参数表示为子节点,依次逐层划分。对于嵌套动作,可对其生成一个独立的XML文件,只在消息的XML文件属性中,保留指向描述该动作的XML文件的一个连接。
4.3 基于XML
的通信流程通过上述分析,得到了用XML封装FIPA ACL消息的方法,利用XML既可以封装FIPA ACL原语消息,也可描述其通信的内容。下面给出针对两种不同的通信模式智能体的通信流程:
(1)“点对点”结构的通信流程
其流程如图。当A智能体与向B智能体进行通信时,首先它生成标准的ACL消息,并嵌入FIPAACL内容层;然后使用XML进行封装,生成相应的XML文档;最后向B智能体传送XML文档。B智能体在接收到该文档时,使用XML解析器从中分离出FIPA ACL消息,并与数据库交互,进行推理或计算,得出结果,并生成标准的应答消息,进行XML封装,将XML文档回传给A智能体,完成交互过程。
(2)“黑板结构”的通信流程
与点对点结构通信相似,同样由智能体对各自生成标准的ACL消息,再利用XML进行标准化封装。其不同点主要表现在,点对点结构是通过两个智能体间直接的XML文件传输实现消息的传递,而间接模式是通过在通信结构中设置的黑板区域来存放输入数据、中间结果、不同问题求解过程中的各种状态及所需其它数据,记录了各智能体所需要的信息和各群体决策成员产生的决策结论、意见反馈等,通过共享的模式进行消息交互。其通信流程如图7所示。
5 结束语
本文分析了数控系统的开放式发展方向,针对开放式系统模块化设计的需求,指出数控系统各功能模块之间的特点:既相互独立,又相互关联,需要频繁地进行信息交互,彼此之间需要密切的相互协作。然后,指出多智能体技术的特点与开放式系统的要求十分吻合,设计了基于多智能体技术的开放式数控系统的系统架构方法,分别抽象出系统中8种不同的智能体结构。并以系统中的两个典型智能体为例,阐述了其具体实现方法。最后,对系统中各智能体间的通信机制进行了设计。目前针对开放式数控系统的研究在国内外还处于起步阶段,许多问题尚未有定论,本文提出一种基于多智能体技术构建开放式数控系统的策略和方法,仅是对开放式数控系统的研究作了初步的探索。许多问题还有待于深化。