《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 多Agent通信机制与策略分析
多Agent通信机制与策略分析
来源:微型机与应用2013年第2期
段桂芹
(广东松山职业技术学院,广东 韶关512126)
摘要: 通过分析多Agent通信的基本过程,以JADE为例对Agent请求和接收消息的过程进行了详细的剖析,重点分析了通信策略和传递方式。在传递方式中,应答方可以直接回复,也可以间接回复,简要地分析了这些方式的优缺点。
Abstract:
Key words :

摘  要: 通过分析多Agent通信的基本过程,以JADE为例对Agent请求和接收消息的过程进行了详细的剖析,重点分析了通信策略和传递方式。在传递方式中,应答方可以直接回复,也可以间接回复,简要地分析了这些方式的优缺点。
关键词: Agent;Agent通信Agent通信语言;传递方式

   随着上网人数的增加,Agent技术正变得越来越流行,对Agent终端的使用需求也越来越强烈[1]。电子商务和Web扮演着越来越重要的角色,对开发者设计出能够丰富用户体验或使得后台工作更便捷或更有效的Agent提出了重大挑战[2]。Agent用于帮助用户、雇员或者其他的Agent,这就涉及了Agent之间的协调、合作和通信的问题[3]。
    随着对功能更强大、效率更高和更通用的Agent的需求增加,开发者的压力也随之增加[4]。毕竟一个Agent能够做的事情是有限的,如果让一个Agent执行太多的任务,那么开发的复杂度和维护的复杂度将增加。就像其他任何类型的应用一样,对软件的需求越多,要实现所需功能而花费的工作量就越大[5]。Agent一般用来完成专门的任务,做一件或多件任务非常好,但通常不会被设计成实现所有任务。如果多个Agent必须执行更多的任务,可以通过增加它们的复杂度(这也增加了开发工作量)或使它们联合工作[6]来实现。为了使Agent之间的合作能够成功,需要进行有效的通信。
1 Agent的基本概念
    在人工智能领域中,Agent通过传感器感知环境,通过效应器作用于环境,可以看成是一个机器人或其他实体。英国著名Agent理论研究者Jennings教授与 Wooldridge博士将其定义为[7-8]:Agent是一个具有自适应性和智能性的软件实体,能代表用户或其他程序,以主动服务的方式完成一项工作。该定义中增加了通信要求。
    Agent的性质主要有自主性、代理性、机动性和智能性[9]。一个Agent主要由目标模块、感知器、效应器、信息处理器和通信机制构成[10]。目标模块描述了Agent通过一系列活动所期望的目标;感知器用于获取环境的状态信息;信息处理器用于将从感知器中获取的信息按照一定的协议进行处理,以决定采取相应的动作,并通过效应器作用于环境上。
2 Agent之间通信过程分析
    可以把一些相互合作或在一起工作的Agent视为一个小社区。对任一个社区,为了使其一直发挥功效,需要一个共同的语言和通信媒体。语言和通信媒体对Agent之间的合作非常重要,需要编写专门的协议或语言,或者通过其他的协议(如HTTP)来发送请求。考虑到与共创系统的互操作性,选择已有的Agent通信机制,使用一个共同的通信形式实现一个Agent与另一个Agent的通信。
2.1 Agent通信语言(ACL)
    实现Agent之间的通信和互操作一直是Agent开发人员追求的目标。正如不同国家的人沟通时需要一个共同的语言(英语)一样,Agent之间的通信也需要一个共同的语言——Agent通信语言ACL(Agent Communication Language)。
    ACL由FIPA(Foundation for Intelligent Physical)建议,是一个被提议的Agent通信的标准语言。另一个被提议的标准语言是KQML(Knowledge Query and Manipulation Language)。这两种标准都是基于Searle于1960年发展的讲话行为理论,该理论在20世纪70年代由Winograd和Flores加强并定义了一组行为和它们的意义。行为的内容没有标准化,随着系统的不同而不同。为了使Agent理解其他的Agent,它们不仅需要使用相同的语言,而且还需要一个共同的本体。一个本体是Agent知识库的一部分,它描述了一个Agent能够处理的事情以及它们相互之间怎样联系在一起。设计一个ACL语言需要分别设计交互协议、通信行为和内容语言。
2.2 FIFP与JADE
    FIFP(Foundation for Intelligent Physical)是一个已被IEEE接纳为第十一个标准委员会的针对Agent和多Agent的标准组织,致力于促进基于Agent的技术和与其他技术标准的互操作性。主要做一些标准化工作,例如Agent传输、Agent通信、Agent管理、抽象体系结构和应用。在这些类别中,Agent通信是多Agent系统模型的主要核心。
    目前有许多可用的Agent框架、协议、语言。一般来说,选择合适的语言、框架、协议应参照如下几点:(1)支持消息传递/查询和数据交换;(2)可获得相应目标平台的实现;(3)易用性;(4)支持文本和二进制数据交换。
    JADE(Java Agent Development Framework)是一个采用JAVA语言实现的软件框架。JADE显然符合上述几点要求,因此,选用JADE框架作为样例框架来说明Agent之间的通信过程。
2.3 JADE中Agent之间的通信
    JADE运行时发送由其他Agent发过来的消息。但是Agent何时从队列中获取消息进行处理则由Agent的设计者来决定,过程如图1所示。

    JADE消息格式如下所示:
    (1)消息的发送者。
    (2)接收者列表。
    (3)表明发送方想通过发送消息实现什么目标的通信。假设通信行为是REQUEST,表示发送者想让接收者执行一个动作;若是INFORM,表示发送者想让接收者知道某个事实;若是PROPOSE或者CFP(Call for Proposals),表示发送方想进入协商。
    (4)内容包含了通过消息进行实际交换的信息(例如,在一个REQUEST消息中要求执行的动作,或者在一个INFORM消息中发送者想透露一个事实等)。
    (5)内容语言表明了表述内容时所用的语法。发送者和接收者都必须能够编码和解析符合语法规则的表达式。
    (6)本体表明了在内容中所使用的符号词汇表。发送者和接收者都必须对这些符号赋予相同的意义以使通信有效地进行。
    (7)一些附加的域用于控制几个并行的会话和指定接收一个诸如conversation-id、reply-with、in-reply-to和reply-by这样的应答的超时时间。在JADE中,一条消息被实现为jade.lang.acl.ACLMessage类的一个对象。并提供了get和set方法用于访问由ACL格式指定的所有域。所有定义在FIPA说明书中的行为都被映射为ACLMessage类中的常数。
2.3.1 发送消息
    在JADE中,发送一条消息到另一个Agent很简单。首先只需将一个ACLMessage对象相应的域填满,调用Agent类的send()方法。例如,下面的代码段创建一条消息通知一个呢称为Peter的Agent,告诉它“今天出太阳了”:
    ACLMessage msg=new ACLMessage(ACLMessage.INFORM);
    msg.addReceiver(new AID("Peter", AID.ISLOCALNAME));
    msg.setLanguage("中文");
    msg.setOntology("天气预报");
    msg.setContent("今天出太阳了");
    send (msg);
2.3.2 接收消息
    正如前面所提到的,JADE运行过程中,消息到达时将自动地被发送到一个接收者的私有消息队列中。Agent可通过receive()方法从消息队列中获取消息。
    ACLMessage msg=receive();
    if(msg !=null)
    {
    Process the message
    }
3 多Agent系统的通信策略分析
    多Agent系统中,Agent间的通信方式主要分为两类——黑板方式与信息传递方式。黑板方式即把信息放在广泛可存取的“黑板”上,主要实现广播通信。但是这种方式的实时性不高,难以满足紧急情况的要求。消息传递方式是比较常见的一种方式。在该通信方式中,请求方事先需要知道应答方的地址,发送方的消息中也应包括自己的地址信息,以便应答方能正确返回。Client_Agent与Server_Agent之间的通信过程如图2所示。
    对于应答方Server_Agent来说,它可以采用直接回复或间接回复。

 

 

    (1)直接回复方式:客户端Agent(Client_Agent)发送一询问信息到服务器端Agent(Server_Agent)并等待回答,服务器端Agent(Server_Agent)直接回复给客户端Agent(Client_Agent)。最小通信时间为:服务器端Agent(Server_
Agent)的延迟与线路上的延迟之和。公式如下:
    TDirect=tLine+tServer(1)
    (2)间接回复方式:客户端Agent(Client_Agent)发送一查询信息到服务器端Agent(Server_Agent)并等待回答,服务器端Agent(Server_Agent)将回答放到第三方地址处,然后客户端Agent(Client_Agent)再去该地址取走回答。最小通信时间为:服务器端Agent(Server_Agent)的延迟、线路上的延迟、客户端Agent(Client_Agent)本身的延迟之和。公式如下:
    TIndirect=tLine+tServer+tClient(2)
    比较两种方式,在直接回复方式中,客户端Agent(Client_Agent)至少在TDirect时间范围内要始终保持某种内部状态,这将占用其一部分内部资源,但实时性较高。而间接回复方式中,客户端Agent(Client_Agent)只需周期性地查看第三方地址,只有在真正接收时,才恢复原来的内部状态。
    本文主要讨论了多Agent的通信方面的一些关注点。实际上,在Agent交互中,还存在协商、协调等方面的内容,这些都要利用Agent通信机制。所以定义一个好的通信机制至关重要,从现有的Agent通信机制中选择合适的机制同样重要。FIPA是致力于实现多Agent之间互操作的重要规范,它设计了一套ACL语言标准,对今后实现多Agent系统是一个很好的参考标准。
参考文献
[1] JENNINGS N R.On Agent-based software engineering[J]. Artificial Intelligence,2000,11(7):277-296.
[2] CHAIB-DRAA.Industrial applications of distributed AI[J]. Comm.ACM,1995,38(11):47-53.
[3] 张庆.负载平衡系统中一种基于多agent和动态冗余技术的通用机制[D].济南:山东大学,2007.
[4] 李燕.面向电子政务基于多Agent技术的协同办公系统研究[D].哈尔滨:哈尔滨工业大学,2003.
[5] 田洋.基于Agent的分布式工作流系统的研究[D].哈尔滨:哈尔滨工程大学,2005.
[6] 陈海龙.多Agent系统通信策略[J].哈尔滨理工大学学报,2007,12(1):86-89.
[7] 于红彦.基于KQML的多Agent系统通信机制研究[D].长沙:中南工业大学,2001.
[8] 瞿中.基于多Agent技术的通信系统设计与实现[J].计算机工程与设计,2007,28(24):6051-6054.
[9] 赵杰,杨柳,李树平.资源受限的多Agent系统通信研究[J].计算机科学,2010,37(6):271-272.
[10] 王鲁,王志良,杨溢.一种多Agent系统框架与协商机制研究[J].计算机应用研究,2012,29(3):852-855,858.

此内容为AET网站原创,未经授权禁止转载。