智能Agent设计与开发开放实验讲义
- 格式:doc
- 大小:856.50 KB
- 文档页数:53
《智能Agent设计与开发》开放实验讲义
实验1 JADE智能开发平台安装、配置及使用
实验目的:掌握JADE开发平台的安装方法及简单使用。
实验要求:提交JADE 平台安装和使用的实验报告。
实验内容:JADE开发平台的安装、配置、基本使用过程。
1、配置环境:
(1)在官方网站/下载最新版本的jade3.6压缩包。压缩包中包含四个部分:
①JADE-bin-3.6(存放jade的核心部件,它是jade框架平台的支持文件);
②JADE-doc-3.6(存放jade的说明文档,其中包括各种程序说明与教程资料);
③JADE-examples-3.6(存放jade的实例源代码);
④JADE-src-3.6(存放jade框架平台的源代码,jade为开源项目)。
(2)classpath设置:
在JADE-BIN-3.6\jade\lib\目录下包含:http.jar、iiop.jar、jade.jar、jadeTools.jar和commons-codec-1.3.jar五个文件。可以使用两种方法设置这些文件的系统路径:
①在命令行下cmd,输入:
Set CLASSPATH=
C:\JADE-bin-3.6\jade\lib\jade.jar; C:\JADE-bin-3.6\jade\lib\iiop.jar;
C:\JADE-bin-3.6\jade\lib\http.jar; C:\JADE-bin-3.6\jade\lib\jadeTools.jar;
C:\JADE-bin-3.6\jade\lib\comons-codec\commons-codec-1.3.jar
注意:这种方式每次使用时都需要重新输入。
②设置系统环境变量:
单击我的电脑图标,在快捷菜单中选择“属性”,在属性对话框中选择高级标签,单击“环境变量”按钮,设置环境变量。
在classpath变量中设置:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
C:\JADE-bin-3.6\jade\lib\jade.jar; C:\JADE-bin-3.6\jade\lib\iiop.jar;
C:\JADE-bin-3.6\jade\lib\http.jar; C:\JADE-bin-3.6\jade\lib\jadeTools.jar;
C:\JADE-bin-3.6\jade\lib\comons-codec\commons-codec-1.3.jar
注意:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 前面部分是java jdk的变量。
(3)环境正确性测试:
在CMD命令行里输入: java jade.Boot -gui (注意大小写),如果配置正确会跳出一个jade GUI窗口。
2、运行第一个示例:HelloWorldAgent
在JADE-examples-3.6\jade\src\examples\hello里面找到HelloWorldAgent.java示例程序。
(1)运行HelloWorldAgent:
首先,用记事本打开HelloWorldAgent.java ,将package examples.hello;这句注释掉(先去掉路径问题,后面会详细介绍)并保存修改。
然后,打开控制台,首先输入:
Cd E:\agent\JADE-bin-3.6\JADE-examples-3.6\jade\src\examples\hello
(让这个目录作为默认路径),
然后,编译agent文件,输入:
javac HelloWorldAgent.java
编译好了以后,输入:
java jade.Boot -gui myAgent:HelloWorldAgent
注意:myAgent是这个agent的名字,可以自由指定。HelloWorldAgent代表HelloWorldAgent类名。
输入上面的命令后,会跳出一个窗口,然后控制台会输出:
Hello World! My name is myAgent。
而那个窗口的左边的树结构下的叶节点上没有显示我们的myAgent,因为这个agent的代码中输入Hello World! My name is myAgent后,Agent自行销毁了自己。如果想要在jade
GUI中看到自己所建的agent,可以改HelloWorldAgent.java文件,将doDelete();注释掉,前面加//,保存重编译。再次使用上面的命令运行就可以在jade GUI中看到
myAgent @name1099/JADE的agent
3、利用Netbeans 和eclipse IDE平台调试编辑Agent程序。
(1)运行netbeans平台,添加库,添加库德步骤如下运行菜单 工具->库管理器,点新建库,然后输入库名,不妨设为jade,然后点 添加jar文件,将classpath中的几个jar文件都添加进来。在netbeans中新建一个常规项目,程序内容如下:
import jade.core.*;
public class HelloWorld extends Agent{
public void setup(){
System.out.println("Agent Started: Hello World!");
System.out.println("-----About Me:-----");
System.out.println("My local name is:"+getLocalName());
System.out.println("My globally unique name is:"+getName() );
System.out.println("-----About Here:-----");
Location l = here();
System.out.println("I am running in a location called:"+l.getName());
System.out.println("Which is identified uniquely as:"+l.getID());
System.out.println("And is contactable at:"+l.getAddress());
System.out.println("Using the protocol:"+l.getProtocol());
}
} 注意:这时有错误提示,说明jade.core库并未找到,需要在工程窗口中,单击库 的右键,将我们前面加入的jade库添加近来。然后设置运行命令,打开工程属性窗口,单击运行,在主类编辑框中输入jade.Boot,在运行参数编辑框中输入 -gui hello:jadetest.HelloWorld。确定返回。这时直接点netbeans工具条上的运行按钮,程序运行,会弹出jade rma运行窗口,并在netbeans下面的输出框中打印出结果信息。
(2)在eclipse中进行配置与netbeans稍有不同。不过步骤一样,首先要在eclipse中添加库。
在窗口-受选项中,选择java,展开其子项,在构建路径->用户库中,新建一个库,名称不妨定为jade,然后,添加jar,将我们前面所列出的jar文件都导入。第二步就是在新建的工程中添加库和设置运行参数。比如新建了一个项目,在导航器中右键单击其属性,在属性对话框中选择java构建路径,在“库”选项卡中单击按钮,添加库,选择用户库,然后下一步把jade添加进来。设置运行参数的时候,可以按如下步骤进行:选择编写好的agent类,右键单击,运行方式->运行,弹出运行对话框,在java application中选择新建,不妨起名为run in jade,设置main类为jade.Boot,在自变量中输入参数:在上例中则为, -gui
hello:jadetest.HelloWorldAgent。然后运行之,则会在工作区下面的控制台上输出结果,表示配置成功。
注意:其实在项目中不一定非要完全运行,而且我们一般要创建的是多个Agent。一般我们也可以把它编译为类之后,使用命令行启动图形界面的管理器,使用start new agent添加Agent即可。
实验2 Jade行为类
实验目的:掌握Jade行为类的使用方法。
实验要求:在简单智能Agent中添加行为类。
实验内容:编写一个简单的智能Agent,给智能Agent添加基本行为类。
1、Jade行为类简介
agent所作的工作都定义在了setup中,实际上它具有的行为和执行的动作都应该定义在behavious类中,我们可以对生成behavios类的实例,然后将任务或者动作代码放在对behavious类中的action方法中,action方法是必须要有的。Behavious类还有很多子类,分别对应着不同类型的behavious,包括SimpleBehaviour,sequences behaviors ,parallel
behaviors,cyclic behaviors等。
一个agent的行为表示它能够执行的任务,通过继承jade.core.behaviours.Behaviour来实现。然后在agent类中通过addBehaviour()方法将行为加入进来。当一个agent启动(通过setup()方法)后,行为可以在任何时间加入进来。
要定义Behaviour必须实现其action()方法,它定义了agent的执行时的实际动作,而done()方法指名了一个行为是否已执行完毕,是否要从行为池中删除。
一个agent可以并发执行多个behaviour。每个agent线程启动后执行的过程如下:
(1)SimpleBehaviour简单行为
下面的例子中我们不在setup()中打印信息,而是把它放在一个简单行为中:
import jade.core.*;
import jade.core.behaviours.SimpleBehaviour;
public class HelloWorldBehaviours extends Agent{
public void setup(){
SimpleBehaviour hello_behaviour = new SimpleBehaviour(this){
boolean finished = false;
// 覆盖 Behaviour 类的action这一抽象方法
public void action(){
System.out.println("Hello World Behaviour run: Hello World!");
System.out.println("-----About Me:-----");
System.out.println("My local name is:"+getLocalName());