版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能体开发平台JADE面向对象技术的确为提高软件开发效率做出了巨大的贡献。但是在我们的开发过程中,面向对象也暴露了一些不足,其中最主要的不足可以归纳为:面向对象技术并不是对现实世界的最贴切的模拟。既然出现了不足,那么在这种特定的背景下,必然会出现一种软件开发理论和技术来解决软件开发中的问题。这就是智能体Agent。本文首先介绍一下智能体的基本概念,然后开发了一个应用程序演示了利用智能体开发平台JADE来开发多智能体系统的过程。智能体简介所谓智能体是指驻留在某一环境下能够自主(autonomous)、灵活(flexible)地执行动作以满足设计目标的行为实体。针对上述定义,下面对智能体的概念作进一步分析:智能体驻留在环境中并需要与环境进行交互任何智能体都不是孤立和封闭的,它驻留在一定的环境之中,需要与环境持续不断地进行交互。图1给出了智能体与环境交互的抽象视图。智能体环境动作输出智能体环境动作输出动作输出图1智能体是行为实体智能体是一个行为实体,它具有一组动作并能执行这些动作,是动作执行的决策者和实施者。智能体的动作反应了其所具有的能力,这种能力主要体现在:智能体动作的实施有助于实现其设计目标并对其所驻留的环境产生影响。智能体能够自主地实施行为智能体具有属于其自身的计算资源和局部于自身的行为控制机制,能在没有人类或其他智能体的直接干涉和指导的情况下运行,并能根据其内部状态和感知到的环境输入决定自身的状态,控制自身的行为。智能体有其设计目标系统中的每个智能体都有其特定的设计目标。在其生命周期和持续运行过程中,智能体根据其设计目标和感知到的环境输入自主地决定自身行为。所以智能体的设计目标对其行为决策产生直接的影响。在我们的日常现实生活中,有许多控制系统都可以视为智能体。例如,房间恒温调控系统中的恒温调节器就是一个智能体。恒温调节器智能体的设计目标是要将房间的温度维持在用户设定的范围。它驻留于物理环境(房间)之中,具有温度感应器以感知环境输入(房间的温度),并能对感知到的房间温度作出适时反应,从而影响所处的环境(调高或者降低房间的温度)。初识JADEJADE(JavaAgentDevelopmentFramework)是--个完全由Java语言开发的一个软件框架,并且符合FIPA规范。通过这个中间件,极大地简化了我们程序员开发多智能体系统。JADE主要包括以下几个组成部分:.智能体赖以生存的一个运行时环境.程序员用来开发智能体应用的一个运行时库.一系列图形工具,帮助用户管理和监控运行时智能体的状态安装在进行一系列的开发之前,我们需要先下载并且安装JADE环境。您可以从JADE的官方网站/上下载JADE的最新版本,目前为3.4发布版本。一旦你下载完毕,请解压缩安装包,把其中lib目录下的4个jar文件放入您的ClassPath系统环境变量中。打开命令行,输入Javajade.Boot-gui,您将看到如图2所示的图形化用户界面。
图2JADE基本概念JADE平台利用容器去容纳智能体。一个平台可以有多个容器,并且这些容器可以在不同的主机上。在一个JADE平台中,有且仅有一个叫做主容器的容器。当其他的容器启动时,他们必须在主容器中注册。图3显示了在网络中,存在两个不同的JADE平台。其中一个平台由3个容器构成,另一个平台由1个容器构成。JADE智能体在平台上用独一无二的名字来标识。一旦一个智能体知道网络上另一个智能体的名字,它们便可以进行透明的通信,而不需要了解实际的位置。图3主容器除了可以提供其他一般容器注册功能之外,它还包含了两个特殊的智能体。AMS(AgentManagementSystem)提供一些智能体管理功能。例如:它给智能体提供命名服务,并且它也可以从容器中创建和删除智能体。DF(DirectoryFacilitator)提供了黄页功能。当一个智能体需要利用其他智能体提供的服务时,它便可以到DF中去查找。一个简单的多智能体系统这个简单的实例主要介绍的是智能体如何在DF中注册,并且对其他智能体的请求做出响应。智能体之间的具体交互过程如下:首先PingAgent在DF中注册,等待接收ACL消息。如果接收到了QUERY_REF类型的消息,并且消息内容为"ping",那么它就用内容为"pong"的INFORM类型的消息响应。创造JADE智能体一Agent在JADE平台中,每个智能体都需要从其父类jade.core.Agent类派生,并且实现其setup方法。importjade.core.Agent;PublicClassBookBuyerAgentextendsAgent{protectedvoidsetup()System.out.println("Hello!Buyer-agent"+getAJD().getName()+"isready.");每个智能体都由一个jade.core.AID类的实例唯一标识。Agent类中的方法getAID就是用来获取智能体标识的。一个AID对象包括一个唯一的名字和一系列地址。JADE平台中智能体名字有如下格式:<nickname>@<platform-name>。智能体任务一Behaviour一个行为就代表了智能体能够执行的任务。在JADE中,行为必须从其父类jade.core.behaviours.Behaviour派生。为了使智能体具有某种行为,编程人员必须利用Agent类的addBehaviour方法向智能体中显示的加入。行为可以在任何时候加入到智能体中。每个从Behaviour派生的行为类必须实现action和done方法。Action方法定义了一系列智能体执行的操作,而done方法表明行为是否结束完毕。如果done方法返回的值为真,那表示这个行为已经执行完毕,可以从智能体的行为池删除。图4表明了智能体行为的执行方式:图4JADE为我们预定义了几种行为类型,主要包括:jade.core.behaviours.OneShotBehaviour这种类型的行为只执行一次,然后就从智能体的行为池中被删除。例如:publicclassMyOneShotBehaviourextendsOneShotBehaviour{publicvoidaction(){//performoperationX操作X仅被执行一次。jade.core.behaviours.CyclicBehaviour这种类型的行为将循环执行。Genericbehaviours一般行为包含一个状态位,并且由状态位决定执行不同的操作。当满足所给定条件时,行为结束。例如:publicclassMyTwoStepBehaviourextendsBehaviors{privateintstep=0;publicvoidaction(){switch(step){case0://performoperationXstep++;break;case1://performoperationYstep++;break;}}publicBooleandone(){returnstep==2;操作X和Y依次执行一次,然后行为结束。JADE也提供了把以上几种简单的行为组合成复杂行为的能力。例如:顺序行为SequentialBehaviour,并发行为ParallelBehaviour和有限状态机行为FSMBehaviou。智能体通信JADE智能体提供的最重要的特征之一就是其通信能力。通信过程中所采用的通信模式为图5所示的异步消息传递。也就是说,每个智能体都有一个消息队列,如果其他智能体需要与其通信时,JADEruntime就把相应消息投递到其队列中。当消息队列中出现消息时,相应的智能体被通知。这时是否对消息做出响应那就是程序员的事了。SenddieP。引theiuA:sSenddieP。引theiuA:squeueGerthenie^iagefi'ointhe口andpocessitDisnibutedJADEniiitini<?Pr^pwethe\message-coA2Al]ACL语言智能体是通过ACL(AgentCommunicationLanguage)语言进行通信的,而ACL是由FIPA制定的智能体互操作国际标准。ACL消息格式主要包括消息发送方、消息接收方、通信原语以及消息内容。在JADE中,消息是由jade.lang.acl.ACMessage类对象表示。发送消息在JADE中发送消息非常简单,您只需使用Agent类的send方法即可。以下代码表明了如何向别名为Peter的智能体发出通知消息,告诉其今天下雨。ACLMessagemsg=newACLMessage(ACLMessage.INFORM);Msg.addReceiver(newAID("Peter",AID.ISLOCALNAME));Msg.setLanguage("English");Msg.setContent("Todayit'sraining");Send(msg);接收消息智能体通过receive方法就可以从其消息队列中接收消息。这个方法返回消息队列中第一条消息。如果队列为空,则返回null。构造PingAgent通过以上的一系列介绍,我们就开始建立PingAgent,清单一给出了部分源代码。packageexamples.PingAgent;publicclassPingAgentextendsAgent{classWaitPingAndReplyBehaviourextendsSimpleBehaviour{privatebooleanfinished=false;publicWaitPingAndReplyBehaviour(Agenta){super(a);}publicvoidaction(){ACLMessagemsg=blockingReceive();if(msg!=null){ACLMessagereply=msg.createReply();if(msg.getPerformative()==ACLMessage.QUERY_REF){Stringcontent=msg.getContent();if((content!=null)&&(content.indexOf("ping")!=-1)){reply.setPerformative(ACLMessage.INFORM);reply.setContent("pong");}}send(reply);}}else(System.out.println("Nomessagereceived");publicbooleandone(){returnfinished;protectedvoidsetup(){DFAgentDescriptiondfd=newDFAgentDescription();ServiceDescriptionsd=newServiceDescription();sd.setType("AgentcitiesPingAgentH);sd.setName(getName());sd.setOwnership("TILAB");dfd.setName(getAfD());dfd.addServices(sd);try{DFService.register(this9dfd);}catch(FIPAExceptione){System.err.println(getLocalNameO+"registrationwithDFunsucceeded.Reason:"+e.getMessage());doDelete();}WaitPingAndReplyBehaviourPingBehaviour=newWaitPingAndReplyBehaviour(this);addBehaviour(PingBehaviour);在清单1中,我们注意到PingAgent拥有一个WaitPingAndReplyBehaviour行为。这个行为的action方法很简单,它的逻辑主要是判断智能体是否收到了类型为QUERY_REF并且内容为〃ping”的消息。在setup方法中,主要的操作是在DF中注册智能体。部署运行PingAgent在编译PingAgent之前,请确保JADE所需的jar文件在您系统的CLASSPATH环境变量中。在命令行下定位到PingAgent所在目录,键入javacexamples.PingAgent.PingAgent。编译完成后,在命令行下输入javajade.Boot-gui,出现图2所示的主界面,此时表明JADE平台已经成功启动。鼠标右击图2左边树状的Main-Container项,选择StartNewAgent,出现图6所示的界面。在AgentName中输入智能体的名称,在ClassName中输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 序列比对课程案例分析课程设计
- 边缘计算实时数据传输协议设计课程设计
- 炒菜机器人课程设计
- 测绘c 课程设计
- 基于容器逃逸检测安全体系课程设计
- 北工大太阳能课程设计
- 送料装置系统化设计课程设计
- 备课前进行课程设计
- NLP情感分析课程设计开发课程设计
- ted演讲课程设计
- 人教版二年级全册《体育与健康》全套课件
- GJB3243A-2021电子元器件表面安装要求
- 第一单元第一课我们走在大路上(课件)-初中美术湘美版七年级上册
- 二次函数的区间最值问题
- GB/T 42690-2023造船甲板机械绞缆筒外形
- 新外研版高二英语选择性必修三Unit5 nature in architecture课件(精编)
- GB/T 6111-2018流体输送用热塑性塑料管道系统耐内压性能的测定
- 海湾-gst-qkp01控制器说明书fas ver
- 【部编人教版】道德与法治二年级上册全册完整课件
- 《汽车文化》中职配套教学课件
- 有机光化学之光催化剂参与的反应课件
评论
0/150
提交评论