相关介绍:

JADE(Java Agent Development Framework,Java智能体开发框架)
用途:
Java智能体开发框架
开发者:
TILAB
主要功能:
AMS、DF、ACC
使用效果:
实现特定的功能模块
简介:
JADE是基于Java 语言的Agent开发框架,是由TILAB 开发的开放源代码的自由软件。JADE是多Agent开发框架,遵循FIPA规范,它提供了基本的命名服务,黄业服务,通讯机制等,可以有效地与其它Java开发平台和技术集成。 JADE架构适应性很强,不仅可以在受限资源环境中运行,而且与其他复杂架构集成到一起,比如:Net和Java EE。它包括一个Agent赖以生存的运行环境,开发Agent应用的类库和用来调试和配置的一套图形化的工具,简化了一个多Agent系统的开发过程。 JADE主要包括以下几个组成部分:
智能体赖以生存的一个运行时环境
程序员用来开发智能体应用的一个运行时库
一系列图形工具,帮助用户管理和监控运行时智能体的状态
功能:
JADE为多Agent系统提供了以下功能:
(l)Agent管理系统(Agent Management System,简称AMS),负责控制平台内Agent的活动、 生存周期及外部应用程序与平台的交互,规范Agent在平台上用独一无二的名字来标识;
(2)目录服务器(Dilectoly Facilitatol,简称DF),负责对平台内的Agent提供黄页服务,注册服务类型以供查找;
(3)消息传送系统,也称为Agent交流通道(Agent Communication Channel,简称ACC),控制平台内或不同平台之间的消息传输、消息编码、消息解析等。
JADE定义了Agentclass作为其他Agent的父类,其他Agent均继承自Agentclass。Agentclass中定义了setup方法,用于初始化Agent;定义了takeDown方法,用于结束Agent的运行;定义了doDelete方法,用于终止Agent;定义了Behaviour类以及addBehaviour方法用于添加Agent任务。为了保证Agent的分布式计算和协作机制,JADE构建行为池(Behaviour Pool)来存储所有添加的Behaviour,这些Behaviour呈队列排列,按照进入行为池的顺序依次被调用。Behaviour方法被调用时,首先执行Action方法,然后判断Done函数返回的布尔值,如果为真则将Behaviour移出行为池,继续下一个Behaviour的执行。JADE提供了这样一个基类,其他Agent所需要做的是重载setup,action,done,takeDown 这几个方法来实现特定的功能模块

JADE架构模型:

JADE平台入门-LMLPHP

JADE平台入门-LMLPHP

JADE功能模型:
JADE提供了在固定和移动环境中实施分布式点对点应用的基本服务。
允许Agent动态的发现其他Agent以及与其他Agent通讯。Agent通过异步消息进行通讯,这种通讯机制可以在分布和松散耦合的环境中是通用的。Agents可以在异构环境中通信,通过名字来区分(以后的版本中发送方和接收方没有暂时的依赖关系)。
通过认证和为Agents分配权限实现安全机制。
消息结构使用ACL语言。为了适应复杂对话,JADE提供了一系列执行特定人物的交互性为的典型框架,比如协商,拍卖,任务代理等(用Java抽象类来实现)。消息内容可以在xml和rdf格式间互相转换。
灵活性强,用Java线程实现多任务。
提供命名服务和黄页服务。
支持图形化调试和管理/监控工具。 

智能体简介

所谓智能体是指驻留在某一环境下能够自主(autonomous)﹑灵活(flexible)地执行动作以满足设计目标的行为实体。针对上述定义,下面对智能体的概念作进一步分析:

1.智能体驻留在环境中并需要与环境进行交互
任何智能体都不是孤立和封闭的,它驻留在一定的环境之中,需要与环境持续不断地进行交互。
2.智能体是行为实体
智能体是一个行为实体,它具有一组动作并能执行这些动作,是动作执行的决策者和实施者。智能体的动作反应了其所具有的能力,这种能力主要体现在:智能体动作的实施有助于实现其设计目标并对其所驻留的环境产生影响。
3.智能体能够自主地实施行为
智能体具有属于其自身的计算资源和局部于自身的行为控制机制,能在没有人类或其他智能体的直接干涉和指导的情况下运行,并能根据其内部状态和感知到的环境输入决定自身的状态,控制自身的行为。
4.智能体有其设计目标
系统中的每个智能体都有其特定的设计目标。在其生命周期和持续运行过程中,智能体根据其设计目标和感知到的环境输入自主地决定自身行为。所以智能体的设计目标对其行为决策产生直接的影响。
在我们的日常现实生活中,有许多控制系统都可以视为智能体。例如,房间恒温调控系统中的恒温调节器就是一个智能体。恒温调节器智能体的设计目标是要将房间的温度维持在用户设定的范围。它驻留于物理环境(房间)之中,具有温度感应器以感知环境输入(房间的温度),并能对感知到的房间温度作出适时反应,从而影响所处的环境(调高或者降低房间的温度)。

Agent

是一个具有自适应性和智能性的软件实体,能代表用户或其它程序,以主动服务的方式完成一项工作。Agent至少应具备以下几方面的关键属性: 
①自主性:Agent具有属于其自身的计算资源和局部于自身行为控制的机制,能在无外界直接操纵的情况下,根据其内部状态和感知到的(外部)环境信息,决定和控制自身的行为。
②交互性:能与其他Agent进行多种形式的交互,能有效地与其他Agent协同工作。
③反应性:能感知所处的环境,并对相关事件做出适时反应。
④主动性:能遵循承诺采取主动行动,表现出面向目标的行为。
⑤推理和规划能力:Agent具有学习知识和经验及进行相关的推理和智能计算的能力。

多Agent系统
多代理系统(MAS,Mu1ti-Agent System)的思想源于Herbet Simon的著作Administrative Behavior,他认为,一个大的机构把许多个体组织起来,可以弥补个体工作能力的有限;同样,劳动的分工和每个个体负责一项专门的任务,可以弥补个体学习新任务能力的有限;社会机构间有组织的信息流动,可以弥补个体处理信息并运用信息作出决策能力的有限。尽管Simon的理论是针对人类社会而言的,但它却为MAS系统奠定了思想基础。单个代理的智能是有限的,但可以通过适当的体系结构把代理组织起来,从而弥补各个代理的不足,使得整个系统的能力超过任何单个代理的能力。
MAS不仅研究单个代理复杂的体系结构以及这样的代理之间的简单交互,而且研究大量相对简单的代理之间的复杂交互,即建立复杂的社会模型,而不是复杂的个体模型。研究人员更关注MAS中代理在社会层次上的知识和行为。
MAS系统的关键有两个方面:一是代理之间的协作,另一个就是对环境(信息环境)的适应。首先需要研究一种使各个代理能够协调工作的方法,这就需要建立一个代理之间交换信息的协议集。代理之间的协作通常有任务共享和结果共享两种方式:任务共享是指单个代理可以用最少的通信和全局同步信息完成子问题求解,它要求对任务进行适当的分解。结果共享是指代理之间通过共享部分结果的形式互相协助,这种方式在代理之间的部分结果互有交互时比较合适。
MAS是一个开发和集成多Agent系统的平台,它提供了多Agent的运行机制。MAS依据应用较广的BDI模型定义了单个Agent模型,内嵌了正向推理机来实现计划的协商与控制。用户依据平台的开发规范,并利用平台提供的应用程序接口。可赋予Agent相应的知识与能力,构造的多Agent系统具有以目标驱动、有一定的自主性和推理能力等特点。

与单Agent相比,MAS有如下特点:

多Agent系统由多个自主或半自主的智能体组成,每个Agent或者履行自己的职责,或者与其他Agent通信获取信息互相协作完成整个问题的求解。 
①社会性:Agent处于由多个Agent构成的社会环境中,通过某种Agent语言与其他Agent实施灵活多样的交互和通讯,实现与其他Agent的合作、协同、协商、竞争等。
②自制性:在多Agent系统中一个Agent发出请求后,其他Agent只有同时具备提供此服务的能力与兴趣时才能接受动作委托,即一个Agent不能强制另一个Agent提供某种服务。这一特点最适用于学习者特征的获取。
③协作性:在多Agent系统中,具有不同目标的各个Agent必须相互协作、协同、协商对未完成问题的求解。

环境配置

下载

安装前注意:安装JADE前需要先安装jdk并配置好Java环境。请参看:如何配置Java环境
从JADE的官方网站JADE官网上下载JADE的最新版本,目前最新的是4.4.0,我下载的是包含全部文件的JADE-all-4.4.0.zip,先解压这个压缩包,解压得到的文件夹中的所有压缩包也解压到各自的文件夹。在C盘建立文件夹起名为jade(存放位置和命名自己喜欢和习惯即可),用来存放JADE的相关文件,我把刚才解压缩的四个文件夹都拷贝到在这个jade文件夹中。
四个文件夹说明:
① JADE-bin-4.4.0(存放JADE的核心部件,它是JADE框架平台的支持文件)
② JADE-doc-4.4.0(存放JADE的说明文档,其中包括各种程序说明与教程资料)
③ JADE-examples-4.4.0(存放 JADE 的实例源代码)
④ JADE-src-4.4.0(存放JADE框架平台的源代码,JADE为开源项目)

配置

右击计算机->属性->高级系统配置->环境变量->CLASSPATH中添加JADE-bin-4.4.0文件夹中存放的jar文件的路径,这里只有jade.jar这一个架包,照之前的做法,我的添加的是  C:\jade\JADE-bin-4.4.0\jade\lib\jade.jar  ,注意如果原先CLASSPARH最后面没有英文分号,记得添加英文分号  ;  添加完之后点击三下确定即可

验证是否成功

WIN+R->cmd,打开命令提示符,输入  java jade.Boot -gui  ,弹出JADE Remote Agent Management GUI(以后为了方便,统称为:GUI管理器)窗口如下图,则表示配置成功

JADE平台入门-LMLPHP

运行示例:

以C:\jade\JADE-examples-4.4.0\jade\src\examples\hello文件夹中的HelloWorldAgent.java为例
cd C:\jade\JADE-examples-4.4.0\jade\src\examples\hello //进入文件夹
javac -d . HelloWorldAgent.java //编译
java jade.Boot -gui myAgent:examples.hello.HelloWorldAgent //运行
//注意:myAgent是这个Agent对象的名字,可以自由指定。examples.hello表示包名,HelloWorldAgent表示类名
而那个窗口的左边的树结构下的叶节点上没有显示我们的myAgent,因为这个HelloWorldAgent.java的代码中含有doDelete();因此创建的Agent对象会自行销毁自己。如果想要在GUI管理器中看到自己所建的Agent对象,可以改HelloWorldAgent.java文件, 将doDelete();注释掉,前面加//,保存重新编译。再次使用上面的命令运行就可以在JADE Remote Agent Management GUI中看到找到叶节点上多了一个名字类似于myAgent@.../JADE的Agent,如下图:

JADE平台入门-LMLPHP

Eclipse下开发:

Window->Preferences->Java->Build Path->User Libraries新建库,命名为jade,添加jade.jar进这个jade库里
新建工程,命名为jade,右击工程,Build Path->Configure Build Path->Libraries->Add Library->User Library,然后将jade库添加进去
在src目录下新建文件夹jadetest,然后建立类,HelloWorldAgent.java,内容如下:

package jadetest;

/**
* ***************************************************************
* JADE - Java Agent DEvelopment Framework is a framework to develop
* multi-agent systems in compliance with the FIPA specifications.
* Copyright (C) 2000 CSELT S.p.A.
*
* GNU Lesser General Public License
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation,
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
* **************************************************************
*/ import jade.core.Agent; /**
* This example shows a minimal agent that just prints "Hallo World!" and then terminates.
*
* @author Giovanni Caire - TILAB
*/
public class HelloWorldAgent extends Agent { protected void setup() {
System.out.println("Hello World! My name is " + getLocalName()); // Make this agent terminate
// doDelete();
}
}

右击HelloWorldAgent.java,选择Run As,选择Run Configurations,选择Java Application,点击添加,Name起名为:Run In JADE(可任意),Project名不变,Main Class起名为:jade.Boot(固定,不可改变),Argument中Program arguments起名为:-gui hello:jadetest.HelloWorldAgent(如果只想打开GUI管理器而不运行程序,则只要-gui即可),其中,hello为智能体的名字,jadetest为包名,HelloWorldAgent为类名。其他默认即可,配置完成,点击Run,运行如下:

JADE平台入门-LMLPHP

JADE平台入门-LMLPHPJADE平台入门-LMLPHP

JADE平台入门-LMLPHP

GUI管理器显示如下:

JADE平台入门-LMLPHP

备注:其实在项目中不一定非要完全运行,而且我们一般要创建的是多个Agent。一般我们也可以把它编译为类之后,在GUI管理器这个界面的Main-Container右击选择Start New aAgent添加Agent即可。

其他类开发类似,我会不断更新...

04-25 09:53