一步一步学Repast 第一章 概要

标签:, , , , ,

第一章 概要

REPAST —— 一个多Agent仿真平台 对于国内做AGENT研究的学子来说,是一个不错的开源框架。本人也是研究AGENT的,希望和大家多多探讨。废话少说,我们开始吧。

注明:这个教程是我从 A RePast Tutorial by John T. Murphy, University of Arizona & Arizona State University 翻译过来,再按照自己的理解所写,希望对大家有所帮助。

开发环境

用RePast做AGENT模拟需要 repast包,大家可以从sourceforge上去得到,我用的是Repast J版本,后缀是.exe可执行程序。安装好之后,有 api lib src demos how-to等文件夹,当然还有 Repast.exe主程序,和repast.jar包。

开发工具用的是eclipse,jdk版本6.0 ,当然5.0就可以了,除了repast之外还要把lib文件夹里的包导入。classpath如下

<classpathentry kind=”lib” path=”lib/repast.jar”/>

<classpathentry kind=”lib” path=”lib/asm.jar”/>
<classpathentry kind=”lib” path=”lib/beanbowl.jar”/>
<classpathentry kind=”lib” path=”lib/colt.jar”/>
<classpathentry kind=”lib” path=”lib/commons-collections.jar”/>
<classpathentry kind=”lib” path=”lib/commons-logging.jar”/>
<classpathentry kind=”lib” path=”lib/geotools_repast.jar”/>
<classpathentry kind=”lib” path=”lib/ibis.jar”/>
<classpathentry kind=”lib” path=”lib/jakarta-poi.jar”/>
<classpathentry kind=”lib” path=”lib/jep-2.24.jar”/>
<classpathentry kind=”lib” path=”lib/jgap.jar”/>
<classpathentry kind=”lib” path=”lib/jh.jar”/>
<classpathentry kind=”lib” path=”lib/jmf.jar”/>
<classpathentry kind=”lib” path=”lib/jode-1.1.2-pre1.jar”/>
<classpathentry kind=”lib” path=”lib/joone.jar”/>
<classpathentry kind=”lib” path=”lib/JTS.jar”/>
<classpathentry kind=”lib” path=”lib/junit.jar”/>
<classpathentry kind=”lib” path=”lib/log4j-1.2.8.jar”/>
<classpathentry kind=”lib” path=”lib/OpenForecast-0.4.0.jar”/>
<classpathentry kind=”lib” path=”lib/openmap.jar”/>
<classpathentry kind=”lib” path=”lib/plot.jar”/>
<classpathentry kind=”lib” path=”lib/ProActive.jar”/>
<classpathentry kind=”lib” path=”lib/trove.jar”/>
<classpathentry kind=”lib” path=”lib/violinstrings-1.0.2.jar”/>

不太会用eclipse的朋友去网上找些相关资料吧。

接下来,让我们写一个可执行的模拟程序来入门吧。

1.新建一个包 demo。

2.在这个包下,新建一个类,CarryDropModel。

3.把下面代码拷进去。

package demo;

import uchicago.src.sim.engine.Schedule;
import uchicago.src.sim.engine.SimInit;
import uchicago.src.sim.engine.SimModelImpl;

public class CarryDropModel extends SimModelImpl {

private int numAgents;
private int worldXSize;
private int worldYSize;

private Schedule schedule;

public String getName(){
return Carry And Drop;
}


public void setup(){
}


public void begin(){
buildModel();
buildSchedule();
buildDisplay();
}


public void buildModel(){
}


public void buildSchedule(){
}


public void buildDisplay(){
}


public Schedule getSchedule(){
return schedule;
}


public String[] getInitParam(){
String[] initParams
= { NumAgents , WorldXSize, WorldYSize };
return initParams;
}


public int getNumAgents(){
return numAgents;
}


public void setNumAgents(int na){
numAgents
= na;
}


public int getWorldXSize(){
return worldXSize;
}


public void setWorldXSize(int wxs){
worldXSize
= wxs;
}


public int getWorldYSize(){
return worldYSize;
}


public void setWorldYSize(int wys){
worldYSize
= wys;
}


public static void main(String[] args) {
SimInit init
= new SimInit();
CarryDropModel model
= new CarryDropModel();
init.loadModel(model,
“”, false);
}


}

private int numAgents;
private int worldXSize;
private int worldYSize;

这3个值,是我们自己定制的参数,在模拟程序中叫做 Model Parameters 当然还有一个就是RePast Parameters。

上面几个方法系统会自动调用,是父类一些接口定义的,具体以后再说。

上面6个是 setter和getter方法,供模拟器调用。

这是RePast最简单的可执行的雏形,运行后界面如下:

任何事情九十步半百步,对于初学者,能做出hello world就算入门了,呵呵







留言