当前位置:首页 > 学习agent必备!最全的JADE程序员指南
下面对它们进行介绍:
? where-is-agent行为有一个单一的AID参数,表示定位agent的标识。这个行为有一个
结果,即agent的位置,放在inform ACL消息的content槽中,它可以成果关闭该协议。 例如,request消息请求agent Peter所在的位置,代码如下:
结果Location将包含在inform消息中,如下所示:
? query-platform-locations行为没有参数,但是它的结果是一系列在当前JADE平台有效
的Location对象。这个行为的消息很简单:
如果当前平台有三个容器,AMS将发送回下面的inform消息:
Location类运用jade.core.Location接口,所以它可以被传给Agent.doMove()和Agent.doClone()方法。JADE移动agent的典型地行为方式就是向AMS请求地址(完整的列表或通过一个或多个where-is-agent行为);然后,agent就能够决定是否,何地和何时移动。 3.8从外部Java程序使用JADE
从JADE2.3开始,使用in-process接口,它允许外部Java程序将JADE作为一种库使用,从程序自身启动JADE运行时环境。
一个单独的JADE运行时实例可以通过静态方法jade.core.Runtime.instance()获得,它提供两个方法来创建一个JADE主容器或者一个JADE远程容器(i.e.参与一个已存在的主容器的容器,以发布的agent平台方式形成);两个方法都要求传递一个jade.core.Profile对象参数来维持JADE运行时环境启动需要的配置选项(e.g.主容器的主机名和端口号)。
运行时的这两个方法都返回一个封装对象,属于jade.wrapper包,封装了agent容器的高水平的功能,例如安装和卸载MTPs(Message Transport Protocol),销毁容器(只有容器销毁,而外部程序仍然存在),当然,还有创建新的agents。这个容器封装的createNewAgent方法也返回一个封装对象,封装了一些agnet的功能,但是仍然保持了agents的自治。尤其是,该程序可以控制Agent的生命周期,但是不能获得Agent对象的直接访问,而且,作为直接结果,它不能执行访问该对象的方法。注意:agent创建后,它仍然需要通过start()方法启动。
下面的代码列举了一个非常简单的从外部程序启动agent的方式(也涉及到JADE的examples中的inprocess目录,它包含这个封装和in-process接口用法的例子)。
注意:这个机制允许若干个不同的JADE平台配置,如在同一个JVM上由多个容器组成的完整的in-process平台,部分是in-process(i.e.由外部Java程序启动的容器)部分是out-of-process(i.e.从命令行启动的容器)的平台。
4. Agent系统例子
我们将用一个agent系统的例子来解释如何在JADE框架中有效地使用这些功能。我们将展示在不同子行为中组织单个agent行为的可能性,和agents之间的信息交互是如何发生的。 在例子中,agent系统由两个agents组成,它们通过FIPA request协议通信。
这部分仍然在做,请参考在src/examples目录下的JADE examples。也可以参考src/examples目录下的README文件得到一些每个例子程序的解释。
共分享92篇相关文档