最近用JADE去模拟一个基于gossip的分布式系统,为了实验师兄设计的p2p管理协议。规模大概在1000个Agent左右,其实每台server跑个2000个也不成问题,但花了不少开销在同步和中心管理上,最终每台server只跑了500个。
用了之后,感觉JADE确实比较强大,我只用了其中很少一部分东西。
下面是我的一些理解和应用:
1、每个JADE平台可以容纳不同的容器(我用的时候,一个容器对应了一台server),但只准有一个主容器,容器中多个Agent(可以根据每个容器的AMS或者DF去查询其中的各个Agent,但好像只有AID的信息).当然,对于我们来说,各容器中的确Agent是透明,不用知道他们是哪的(ip)。
2、每个Agent其实是个线程,JADE把线程的方法重新封装了一下,比如建立Agent的方法setup()其实对应的是start(),doDelete()对应destroy()等。每个Agent有一个AID,用于标识不同的个体(但不能通地过AID取到Agent实体)。每个Agent建立时都会去AMS(Agent Manage System)中去注册。
每个分布式系统(网络上的节点)继承了Agent,添加了更多需要用到的属性(如节点的ID,邻居节点信息等)
3、可以对Agent添加不同的行为,简单行为/循环行为/定时行为等,我主要用了后两者,循环行为用来监听接收消息(ACLMessage,用的blockReceive()方法,用receive()可能开销更大一些),定时行为用来定时更新操作(更新节点信息),每个定时行为又重新封装成了节点的子线程,避免与监听消息冲突。
4、JADE消息机制比较强大,每个Agent有一个发送队列和接收队列,可以发送字符串,也可以发可序列化对象(可以是比较复杂的对象,但要保证复杂对象的所有属性都是可序列化的)。消息体本身有发送者(AID)、接收者(AID)、语言(可以自己设定,根据不同语言对应不同的语义)、内容、策略等。利用Agent中的send()方法进行发送,receive()或blockReceived()方法进行接收。
由于无法根据AID取到Agent的实体,我用了比较笨的方法,在主容器中建了一个MAP,保存每个节点的副本,每个节点定期发送自己的副本到主容器进行更新(这个开销就比较大了,暂时没想到比较好的方法),某节点A要用到其他节点B时,要么直接给B发消息请求信息,要么向主容器请求。
分享到:
相关推荐
JADE 学习笔记 ,详细介绍了JADE的安装配置,重要类的用法,并包含具体例子代码
jade笔记是怎么使用jade进行agent仿真的学习笔记!!!!!!!!!
jade4.4.0 主要用于多Agent系统的开发,内附jade学习指南
入门学习jade很好的文档,可以深入学习
JADE是多agent开发框架,遵循fipa规范,他提供了基本的命名服务,黄业服务,通讯机制等,可以有效地与其它java开发平台和技术集成。 JADE架构适应性很强,不仅可以在受限资源环境中运行,而且与其他复杂架构集成到...
JADE(JAVA Agent开发框架)是一个完全由JAVA语言开发的软件,它简化了多Agent系统的实现。-JADE (Java Agent DEvelopment Framework) is a software framework fully implemented in Java language.It simplifies the ...
独立成分分析JADE算法,针对复数数据 独立成分分析JADE算法,针对复数数据
jade文件转换教程
Jade中文手册Jade中文手册Jade中文手册Jade中文手册Jade中文手册Jade中文手册Jade中文手册Jade中文手册Jade中文手册
简单的jade算法,适合初学者入门学习,没有过多的复杂过程,通过阅读一定数量的文献即可理解。
jade6.5的注册码,用于jade6.5不能导入PDF-2004时的解决方法。
JADE算法的matlab实现,用matlab打开后可以直接使用,可以用于做对比算法
jade的中文资料,介绍了jade和jade开发
jade笔记 JADE指南,JADE网上材料 非常全面,完全可以很快上手JADE
JADE,通过实施一种新的变异策略“DE/current-to-pbest”,可选的外部存档和以自适应方式更新控制参数来提高优化性能。 DE/current-to-pbest 是经典的“DE/current-to-best”的概括,而可选的归档操作利用历史数据来...
JADE(Java Agent Development Framework)是基于Java 语言的Agent开发框架, 是由TILAB 开发的开放源代码的自由软件。 它包括一个Agent 赖以生存的运行环境,开发Agent应用的类库和用来调试和配置的一套图形化的工具...
Agent jade 仿真 jade-src jade-bin jade-doc jade-examples
Jade4j 是 jade 模版引擎的 Java 实现。Jade4j 支持在 Java 程序中直接处理 jade 模版,而无需 JavaScript 环境,完全兼容 jade 语法。 示例代码: JadeTemplate template = Jade4J.getTemplate("./index.jade")...
MDI Jade使用手册-黄继武XRD 软件实验使用手册
jade模板引擎demo