第二章 JADE学习 - 了解一些主要包

2020-05-10  本文已影响0人  2010jing

jade.core

提供了一个简单的消息传递系统,该系统具有多种传输协议(同一Java虚拟机中的Java事件,属于同一JADE平台的Java虚拟机之间的RMI,以及用于与不同代理平台进行通信的标准IIOP协议)和多线程执行软件代理的环境,具有抢先的代理间调度和协作的代理内调度。

其包含JADE系统的微内核。该软件包中包含三个主要内容:

jade.core.behaviours

jade.core的子软件包,其中包含用于实现基本代理行为的类。 JADE代理使用协作的非抢先式调度在单个Java线程中调度其行为。

jade.lang.acl

含对FIPA代理通信语言(ACL)的支持,包括ACLMessage类,解析器,编码器和用于表示ACL消息模板的帮助类。

jade.content

支持用户根据给定的内容语言和本体创建和处理复杂的内容表达的类。

当代理A与另一个代理B通信时,一定数量的信息 I 会通过ACL消息从A传输到B。 在ACL消息中,I 表示为与适当的内容语言(例如SL)一致并以适当的格式(例如字符串)编码的内容表达式。 A和B都有自己的内部表示方式(可能不同)。考虑到代理程序内部表示一条信息的方式必须允许轻松处理该条信息,因此很显然, ACL内容表达式不适用于代理内部。

jade.domain

含FIPA特定的代理和本体。此软件包中包含标准的FIPA系统代理实施:

jade.gui

包含了一套通用的创建图形用户界面(GUIs)以显示和编辑AgentID,Agent描述,ACL消息(ACLMessages)的类。

jade.proto

包含FIPA标准协议的角色行为。对于FIPA规范规定的每个交互协议,代理可以扮演两个角色:

jade.wrapper

该包与jade.core.Profile和jade.core.Runtime类一起提供对JADE进程内接口的支持,该接口允许外部Java应用程序将JADE用作一种库并从应用程序内部启动JADE Runtime。 该软件包的类包装了JADE平台的主要参与者,并允许与他们互动,尤其是控制他们的生命周期。

Agent类

第一章, 我们已经先创建了一个Agent, 现在我们来进一步了解一下这个类。

package cn.bcrab.agent;

import jade.core.Agent;

public class HelloWorldAgent extends Agent {
    protected void setup() {
        System.out.println("Hello world! I'm an agent!");
        System.out.println("My local name is " + getAID().getLocalName());
        System.out.println("My GUID is " + getAID().getName());
        System.out.println("My addresses are " + String.join(",", getAID().getAddressesArray()));
        this.takeDown();
    }

    public void takeDown(){
        System.out.println("Agent takedown!");
    }
}

一个新agent的产生过程:

1 执行了agent的构造器,赋予agent一个ID(见jade.core.AID类)
2 注册到AMS上,处于激活状态
3 最终执行setup()方法。


相关代码

https://gitee.com/2010jing/JADE-tutorial/tree/tutorial02/


reference

上一篇 下一篇

猜你喜欢

热点阅读