用JADE创建多agent系统

来源:互联网 发布:2016世界网络大会 编辑:程序博客网 时间:2024/06/06 05:11
 1、代理平台
    FIPA定义的一个agent平台的标准模型,如下图所示:
AMS是管理控制进出和使用AP的agent,一个平台只有一个AMS,它提供百页和生命周期服务,维护AID目录和agent状态,为了获取有效的AID,每个agent都必须在AMS上注册。
DF是平台上提供默认黄页服务的agent。
    消息传输系统也叫agent通信通道(ACC),有软件构成在平台内负责所有的消息交换,包括来自或发送到远程平台的消息。
    当一个JADE平台被启动,AMS和DF立刻被创建,ACC模块也设置为允许消息通信。Agent平台可以分布在不同的主机上。
    2、agent类
    Agentt类对用户定义的agents来说表示一个通用的基本类。从程序员的角度来说,JADE agent简单的说就是一个从基本Agent类扩展的用户定义的Java类的实例,意味着对在agent平台上完成基本交互的特征
(注册、配置、远程管理...)和可以被调用执行agent规定的行为的一系列基本方法(如 send/receive message, use standard interaction protocols, register with several domains,...)的继承。
    Agent的计算模型是多任务的,任务(或行为)是并发执行的。Agent提供的每项功能/服务应作为一个或者多个行为执行。调度程序对基本agent类是内部的,而对程序员来说是隐藏的,自动管理行为的调度。
JADE Agent可以处于若干状态中的一种,详细介绍为:
创建:创建agent对象,对没有在AMS上注册,也没有名字和地址,不能与其他agents通信。
活动:agent对象在AMS上注册,有一个合格的名字和地址,可以访问所以JADE特征。
挂起:agent对象当前被停止,它的内部线程被暂停,没有agent行为被执行。
等待:agent对象被阻塞,等待什么。它的内部线程处于睡眠状态,当一些条件满足时被唤醒(典型的是消息送达)。
删除:agent对象明确的死亡。内部线程终止它的执行,agents不再注册在AMS上。
转移:当移动agent向新的地址迁移时进入这个状态,系统连续缓存消息,之后将发往它的新的地址。
Agent类提供公共方法使其在各种状态间转换,这些方法从agent管理中的有限状态机内的适当的转换中获取它们的名字。
    如:doWait()方法把agent从活动的状态转变成等待状态,doSuspend()方法将agent从活动或等待状态转变为挂起状态,...参考agent类的html文档,它提供这些doXXX()方法的完整列表。
启动agent执行
停止agent执行
agents间通信
访问私有消息队列
平台将通过一个agent将所有收到的消息加入agent私有队列,队列容量无限,在有限资源下,可以通过setQueueSize()方法
改变缺省值
图形交互界面agent
(P11...)
agent通信语言(ACL)
类ACLMessage代表可以在agents间交换的ACL消息。它包含一系列FIPA规范定义的属性。
0 0