基于JADE的Multi-Agent合作仿真的设计与实现

时间:2022-08-27 01:14:45

基于JADE的Multi-Agent合作仿真的设计与实现

摘要:Multi-Agent合作是分布式人工智能领域的一个研究热点,多种合作算法被提出,需要一个平台进行比较验证,而从底层开发出一个Multi-Agent合作系统是比较复杂和困难的,该文在研究JADE仿真平台技术的基础上,构建了一个Multi-Agent合作系统,为研究Multi-Agent合作算法提供了验证平台。

关键词:Multi-Agent;合作;JADE;BDI

中图分类号:TP311 文献标识码:A文章编号:1007-9599 (2011) 12-0000-02

JADE-Based Multi-Agent Co-Simulation Design and Implementation

Wang Ping

(North China Electric Power University,Baoding071003,China)

Abstract:Multi-Agent cooperation is one of the hotspots in distributed artificial intelligence,many cooperation algorithms are proposed,which need a platform to test and verify,but it is rather complicated and difficult to develop a Multi-Agent cooperation system from the bottom.In this paper,a Multi-Agent cooperation system based on the platform of JADE are proposed,which will provide a test and verify platform for cooperation algorithms.

Keywords:Multi-Agent;Cooperation;JADE;BDI

一、JADE仿真平台简介

JADE(Java Agent Development Framework)是由TILAB开发与的一个软件开发框架,用于开发多Agent系统和符合FIPA标准的智能Agent应用程序。JADE完全是由JAVA编写的,由各种JAVA包组成,它既能为应用程序员提供现成的功能片断,同时也为自定义的应用程序任务提供抽象接口。它包含两个主要的产品:一个符合FIPA标准的Agent平台和一个开发JAVA Agent的包[1]。

由FIPA定义的标准的Agent平台模式由以下几部分组成:

(1)Agent管理系统(AMS)负责监督管理访问和使用Agent平台的Agent。在一个单独的平台上,只能有一个AMS.AMS保留了一个Agent标识符目录(AID)和Agent状态信息。每个Agent必须在AMS注册,以获得一个有效的AID。

(2)目录服务(DF)是在平台上提供默认的黄页服务的Agent。

(3)消息传输系统又叫做Agent通信通道(ACC),是控制平台内所有的信息交换,包括与远端平台进行信息交换的软件。

当一个JADE平台启动的时候,AMS和DF就自动被建立了,同时ACC模块允许消息进行传输。Agent平台允许建立在几个主机上,在每个主机上只有一个JAVA应用程序,当然也只有一个JAVA虚拟机(JVM)被执行。每个JAVA虚拟机是一个基本的Agent容器,它为Agent的执行提供一个运行环境,同时它允许几个Agent在同一个主机上并行的执行。

二、Multi-Agent合作

Multi-Agent System(MAS)是由分布在网络上的多个Agent松散耦合而成。Agent之间可以进行交互,Jennings将Agent交互分为三种类型,即合作、协作与协商[2]。合作是指为了一个共同的目标统一行动,用来解决单一Agent能力和知识所不能处理的复杂问题,是MAS研究的一项重要内容。

Wooldridge和Jennings给出面向共同目标的合作求解的著名四步模型[3]:(1)识别潜在的合作。即对某个具体目标,Agent不能独立完成,或Agent没有执行的愿望或代价太大,此时Agent相信存在一个Agent组能联合实现此目标。(2)队形成。即Agent寻求组中成员的帮助。(3)联合规划形成。即通过组中成员对联合行动方案偏好的协商,建立关于Agent组的联合行动方案的一致意见。(4)队活动。Agent组取得一致意见后,即具有了联合意图与具体的行动方案,各Agent按方案进行合作实现目标。其中每一步模型都涉及到Agent的思维状态,当前对Agent的思维状态的研究侧重于对信念(Belief)、愿望(Desire)和意图(Intention)的形式化描述,建立Agent的BDI模型。BDI模型是很多合作算法的基础,不同的研究者从各种角度提出了多种合作算法。

许多相关理论与技术被引入对Multi-Agent合作的研究,博弈论与经济学理论在描述现实社会中人与人之间的交互上具有良好的效果,研究者将其引入MAS,通过设置不同的效用函数供Agent做决策,是否要进行合作,以及与哪个Agent合作。Petri网以及软件工程也被引入MAS,同时很多关于信任的概念被提出,信任和信誉系统成为研究Multi-Agent合作算法的热点[4]。

三、Multi-Agent合作仿真的设计与实现

我们以JADE平台为基础,对Multi-Agent合作进行了仿真,主要包括对Agent的能力描述的设计、对Agent思维状态描述的设计、Agent类的定义以及为合作算法提供的用户交互界面。

(一)Agent能力描述设计

在MAS中,各个Agent有自己的能力,合作过程中,首先要发现潜在的合作,那么Agent对于其它Agent的能力应该有一个认识,在系统初始时,没有任何的交互信息,各个Agent能力的描述是客观的,可通过广播的方式在系统中进行初始化,最好的选择就是利用JADE平台的黄页管理机制进行注册,即向JADE平台的DF Agent注册,注册时提供相关的Agent的信息,包括名称、服务名称和服务条件等。各个Agent第一次寻找合作伙伴时,从DF Agent处获取信息。以Agent001为例,采用下述方式向DF Agent注册[1]:

DFAgentDescription Agent001=new DFAgentDescription();//创建描述实例

Agent001.setName(getAID());//设置注册的Agent的标识符

AbleDescription Able001=new AbleDescription();//创建能力描述实例

Able001.setName(“compute”);//设置服务名称

Able001.setCondition(“integer”);//设置服务条件

Agent001.addServices(Able001);//将服务描述添加到描述对象中

DFService.register(this,Agent001);//完成注册

(二)Agent思维状态描述的设计

多种合作算法都是在BDI模型的基础上进行研究的,一些新引入的技术以及提出的概念也可以归结到BDI模型中,因此如何合理的描述Agent的思维状态决定了仿真的效果。经过对多种合作算法的分析,将Agent对外部环境以及其它Agent的认识作为Agent的一个操作,随着交互的进行不断进行更新,Agent进行推理的规则作为属性集,将Agent的愿望描述为Agent的通信列表,而Agent的意图则是通信结果返回后进行抉择的结果。

(三)Agent通信的设计

Agent形成初始愿望之后,要进行交互以确定最终的合作对象,通信列表中列出所有可能的通信对象,最终的合作要依赖于通信的结果,因此通信的设计对系统具有重要意义。JADE平台提供了很好的Agent间通信机制,通信的消息格式是由符合FIPA标准的ACL语言决定的,由ACL Message类表示,向其它Agent发送消息,只需要建立一个由ACL Message对象,并设置适当的属性值,最后调用Agent.send()方法就可以。对于本设计,由于将愿望表示为一个通信列表,在设置由ACL Message对象的属性值时,要将它的Receivers列表设置为代表愿望的通信列表。

(四)Agent类的定义

JADE中提供了Agent类,一个JADE Agent仅仅是用户自定义的继承了Agent类的一个实例。Agent类提供了Agent行为的一组基本方法,对于本系统而言,最重要的是将Agent的思维状态的描述加入到类的定义中。增加一个方法去获取外部环境状态以及其它Agent的能力信息,并将结果存储在静态数据结构中;将Agent的推理规则作为属性集加入到Agent的定义中,并提供相应的方法对应Agent的学习过程根据交互历史更新推理规则。具体每个Agent的能力由行为来描述,定义一个或者更多Behaviours子类,实例化它们,并通过Agent类的add Behaviour方法把行为添加到Agent中。

(五)交互界面的设计

合作仿真平台用来实现不同的合作算法所以必须提供给使用者能够个性化自己算法的接口,通过交互界面来实现。JADE平台上可以使用java的Hashtable和Hashmap两个类实现交互界面。本系统创建Hashtable类的对象,把key和value结合起来,通过put()方法把这对key/value输入列表中,通过调用get()方法,把key作为参数来得到这个value。为了适应不同的合作算法,将Agent的思维状态的主要因素都设置相应的外部接口,用户可以通过设置这些值个性化自己的算法。

四、结束语

从底层开发出一个系统是比较复杂和困难的,该文在研究JADE仿真平台技术的基础上,结合Multi-agent合作的特点,构建了一个Multi-agent合作系统,为研究Multi-agent合作算法提供了验证平台。

参考文献:

[1]Fabio,Bellifemine,Giovanni Caire,Dominic Greenwood.Developing Multi-Agent systems with JADE.April 2007

[2]Jennings,K.Sycara and M.Wooldridge.A roadmap of agent research and development.Journal of Autonomous Agents and Multi-Agent Systems,1,1998,pp.275-306

[3]Wooldridge and N.R.Jennings.The Cooperative Problem-Solving Process.Journal of Logic Computation.Vol.9.No.4,1999,pp.563-592

[4]Ping Wang.A Brief Survey on Cooperation in Multi-Agent System.ICCDA 2010.V2,pp.39-43

[基金项目]本文得到了华北电力大学青年基金(基金号200911020)的资助,在此表示感谢。

上一篇:突破关键技术确保1000kV特高压避雷器可靠运行 下一篇:城市规划管理的现状与改进建议