Swarm使用说明.doc_第1页
Swarm使用说明.doc_第2页
Swarm使用说明.doc_第3页
Swarm使用说明.doc_第4页
Swarm使用说明.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java Swarm使用简介SWARM的安装和设置1命令行环境下JAVA版SWARM 2.2的安装1集成开发环境(IDE)中JAVA版SWARM 2.2的安装4使用Java Swarm建模7一、Swarm建模简介7计算机仿真的一般特点7Swarm的基本特点7Swarm仿真的基本步骤8二、Swarm结构8模型Swarm8观察者Swarm8三、Swarm编程和仿真9面向对象编程简介9JAVA类示例9Swarm编程10构造函数做了些什么?10buildObjects方法做了些什么?10buildActions方法做了些什么?10合并Swarm中的时间表(activateIn方法)10Swarm的图形用户界面(GUI)10Swarm GUI的元素10创建一个可点击的平面图(ZoomRaster)11图形化显示结果11探测并显示Swarm对象的内容12参考文献:13SWARM的安装和设置安装Swarm建模平台,首先需要安装编程语言(JAVA)的环境及Swarm软件。安装后,需要设置三个环境变量。首先,CLASSPATH必须包含文件swarm.jar和kawa.jar,这两个文件一般在share/swarm子目录下。其次,在windows系统中,需要将javaswarm.dll包括在path中。最后,需要设置SWARMHOME为swarm的安装目录,如c:/Swarm-2.2-java。以Windows XP下Java版Swarm 2.2为例,详细介绍Swarm安装过程。命令行环境下JAVA版SWARM 2.2的安装1. 下载并安装JAVA编译器及运行引擎,也就是JDK。JDK可从网站上免费下载。2. 下载并安装SWARM 2.2。可从SWARM的官方网站免费下载SWARM 2.2 的安装文件,文件名为Swarm-2.2-java.zip。解压到C: Swarm-2.2-java。3. 设置环境变量。3.1. 打开“控制面板” ,选择“系统” ,点开“高级”页,然后点击“环境变量”按钮。3.2. JAVA的命令行编译及运行环境变量。在上面打开的环境变量设置窗口中,选中“Path”变量,点击“编辑”。编辑变量值,使它包含JDK的安装目录,如“C:Program FilesJavajdk1.5.0_04bin”,注意各部分间要用分号隔开。3.3. 设置SWARM的环境变量。3.3.1. 新建“SWARMHOME”环境变量。点击“用户变量”或“系统变量”下的“新建”按钮,变量名为“SWARMHOME”,变量值为 “C:Swarm-2.2-java” (Java Swarm所在目录)。3.3.2. 编辑“Path” 环境变量,使它包含Swarm 2.2的安装目录C:Swarm-2.2-javabin,操作同上一步。3.3.3. 设置“CLASSPATH” 环境变量。点击“用户变量”或“系统变量”下的“新建”按钮,变量名为“CLASSPATH”,变量值中应包括SWARM 2.2中swarm.jar和kawa.jar文件,也要包含当前目录“.”。值为“.;C:Swarm-2.2-javashareswarmswarm.jar;C:Swarm-2.2-javashareswarmkawa.jar” 。3.4. 重新启动系统,使环境变量生效。4. 创建运行SWARM程序。现在已完成了环境的设置,可以创建运行SWARM程序了。4.1. 通过记事本等编辑工具来创建简单的SWARM程序,注意保存时扩展名为.java。或者运行SWARM的例子程序。4.2. 编译程序。在“开始”-“运行”中,输入“cmd”,确定打开命令窗口。改变当前目录到程序所在目录,然后命令行中输入“javac *.java”,编译程序,产生出扩展名为.class的类文件。4.3. 运行程序。命令行中输入“Java 程序名”来运行程序。注意程序名要区分大小写。集成开发环境(IDE)中JAVA版SWARM 2.2的安装集成开发环境(IDE)中SWARM的安装,与命令行下安装的不同在于:一是IDE中,已有JDK的相关信息,不用设置JDK相关的环境变量;再则是IDE中,不需要设置ClassPath来指定JavaSwarm类所在位置,而是通过向导在项目中加入对JavaSwarm类库的引用,也就是对swarm.jar和kawa.jar文件的引用。其它基本一样。下面以Eclipse为例,说明集成开发环境中JAVA版SWARM 2.2建模平台的设置。1. 安装Eclipse。可从/下载。2. 下载并安装SWARM 2.2。可从SWARM的官方网站免费下载SWARM 2.2 的安装文件,文件名为Swarm-2.2-java.zip。解压到C: Swarm-2.2-java。3. 设置环境变量。a) 打开“控制面板” ,选择“系统” ,点开“高级”页,然后点击“环境变量”按钮。b) 新建“SWARMHOME”环境变量。点击“用户变量”或“系统变量”下的“新建”按钮,变量名为“SWARMHOME”,变量值为 “C:Swarm-2.2-java” (Java Swarm所在目录)。c) 编辑“Path”变量,使它包含Swarm 2.2的安装目录C:Swarm-2.2-javabin。重启系统以使环境变量生效。4. 启动Eclipse。启动时,Eclipse会要你选择一个目录作为工作目录,来保存你创建的程序。然后点击“WorkBench”进入Eclipse工作区。5. 创建一个JavaSwarm项目。a) 在Eclipse菜单中,选择File - New - Project。这样打开一个窗口,选择Java Project向导,然后点击Next,进入下一步。b) 在新窗口中,输入项目名称。然后点击Finish关闭窗口。c) 这个新建的项目出现在Eclipse的Package Explorer窗口中。右击这个项目,选择Import - File system - Next。浏览到计算机上的Swarm-2.2-java目录(C: Swarm-2.2-java),点击OK确定。然后点击+展开“Swarm-2.2-java”和“share”目录。然后点中“swarm”目录,右边显示出其内容。右边窗口里,选中kawa.jar和swarm.jar的选择框,如下图。然后点击Finish。d) 在Package Explorer窗口中,右击项目名称,选择Properties - Java build path,然后选中Libraries页。点击Add JARS,展开当前项目,share,及swarm目录,选择kawa.jar 和swarm.jar。点击OK确定。完成后,项目属性窗口应如下所示。e) 还是在上面的Properties - Java build path窗口,选中Order and Export页, 选中kawa.jar和swarm.jar的选择框。点击OK确定。6. 创建及运行JavaSwarm程序。现在可以运用Eclipse在项目中新建Java类等,创建JavaSwarm程序。也可将已有的程序文件导入到项目中。然后通过Eclipse来启动程序运行。使用Java Swarm建模一、Swarm建模简介计算机仿真的一般特点计算机仿真的一般步骤如下:1. 确定要研究的现实系统。2. 建立和设置实验。3. 运行实验并记录结果。4. 分析结果。5. 根据实验结果,决定是否a) 改变实验及装置的设置b) 回到36. 发表结论计算机建模中,并不能将实验对象的各部分从现实世界中拖进来,然后粘在一起。我们必须建立一个有着时间和空间的世界,其中的各种对象(研究和研究有关的对象),这些对象各种行为的时间表,还有各种计算机的实用工具,以用来和这个虚拟世界交互及管理多次实验运行及产生的数据,等等。也许现实世界中的实验和计算机实验的最大区别在于两者时间的属性不同。现实世界,所有东西都在物理定理决定下,完全并行的在时间上前进。而计算机实验,实验者必须显式的将每一个实验中的对象在时间上前移,确保所有对象仍然保持一定意义上的同步。因此,如何把握众多的时间的线程,协调的结合起来,以产生可靠,可重现的实验结果,是构建实验的重要部分。Swarm的基本特点Swarm是支持建模编程的一组软件库。有以下突出的特点:1、 面向对象2、 层次性3、 提供了许多小工具Swarm是用来帮助研究者建立低层对象相互作用的模型(通常称为“复杂系统”)。这类研究目的之一是观察由个体层次的具体行为所涌现出来的宏观现象。Swarm仿真的基本步骤Swarm仿真中,基本步骤如下:1. 创建一个人工的世界,有时间和空间,还有可以定位在其中的对象,定位在这个世界整个时空中的特定点上,并且允许对象根据自己的规则和内部状态,及环境的状态,通常是邻域的状态,来决定自己的行为。2. 建立一些对象,用来观察,记录,分析由步骤1实现的虚拟世界中各对象的行为所产生的数据。3. 运行这个虚拟世界,使模型对象和观察对象根据显式的同步模型在时间上同步的前移。4. 通过观察实验对象产生的数据,与实验进行交互,来进行一系列的受控实验运行。5. 根据步骤4)的观察结果,决定是否改变实验设置,然后回到步骤3)。6. 发布结论。包括详细的实验设置,以让他人能重复实验和验证实验结果。二、Swarm结构Swarm是Swarm模型的基本构件:一个Swarm是一组对象的集合及这些对象的行为时间表。这个集合相当于Swarm中的物质,而行为时间表则相当于推动它们向前的时间之箭。Swarm建模平台中,包含两种类型的Swarm,模型Swarm和观察者Swarm。模型Swarm模型Swarm(Model Swarms),封装了要仿真的模型。模型Swarm中的任何东西都对应于被建模世界中的对象。除了对象的集合,模型Swarm还包括模型上的行为时间表。这个时间表定义了时间对模型的影响。模型Swarm包括一系列的输入和输出。观察者Swarm单单模型Swarm就已定义了模型的世界。但实验并不是仅仅包括实验的对象,还应包括观察和分析的实验工具。在Swarm建模中,这些用来观察的对象放在观察者Swarm(Observer Swarm)中。观察者Swarm中最重要的对象是它所观察的模型Swarm。模型Swarm是观察者的一部分。其他观察对象可以向模型Swarm输入数据(比如设定实验参数)和从模型Swarm中读取数据(收集agent行为的数据)。正如模型Swarm一样,一个观察者Swarm也包括一组对象,行为时间表,和一组输入和输出。观察者的行为时间表是用来驱动数据收集从模型中读出数据,然后在画出来。观察者Swarm的输入是观察工具的设置:如产生什么类型的图表输出。而输出就是观察的结果。当运行在图形模式时,观察者Swarm主要向用户产生图形化显示。对于严格的实验,必须收集实验的各种数据,也就是多次运行并且保存数据以供分析。作为图形模式之外的选择,可以创建batch swarms,没有任何交互的观察者Swarm。Batch swarms不产生图形显示,而是从文件中读取数据来控制模型和将数据输出到另外的文件中以供分析。batch swarm和图形化观察者Swarm还是用同样的模型Swarm,不同的只是观察者联结到模型的观察工具不一样。三、Swarm编程和仿真面向对象编程简介一个对象包含两方面的信息l 变量。这些变量表示对象的状态。l 方法。方法决定对象的行为。有从“外界”接收信息的方法,向外界传送信息的方法,及处理信息的方法。对象通过一个“实例化”的过程创建。计算机代码构成“类”,而对象则是类的实例。面向对象编程有封装、继承等优点。JAVA类示例Java类public class Bug extends SwarmObject int xPos, yPos; public Object step() / body of step() code return this; 类定义 子类 父类实例变量定义一个叫step()的函数Swarm编程Swarm被设计来层次性的创建计算机对象。观察者Swarm对象最先被创建,然后它创建用户界面并实例化模型Swarm,然后模型Swarm创建更低层次的对象并调度它们的行为。Swarm模型使用一种共同的语法,以帮助用户理解模型各部分的交互。观察者Swarm和模型Swarm一般都有着很相似的设计。许多类中都有以下的这些方法:类名(); /构造函数buildObjects ();buildActions ();activateIn ();一般还会有从对象输入输出信息的方法。一般这类方法名加上get和set前缀。如:Grid2d getWorld ();Object setX$Y (int inX, int inY);构造函数做了些什么?构造函数在创建类的实例对象时调用。对象的一些初始化工作可在构造函数中进行。buildObjects方法做了些什么?这个阶段,对象被命名并分配内存。在buildObjects函数中,不但创建当前类要用到的对象,也会指令更低层的主体去创建它们的实例。buildActions方法做了些什么?一般来说,buildActions方法有两个重要部分。它创建这两个类的对象:l 行为集(ActionGroup):行为的有序集l 时间表(Schedule):控制行为集中元素执行的频率合并Swarm中的时间表(activateIn方法)许多不同的类中都有buildActions方法。每一个都可以创建行为集和时间表,把所有这些行为都合乎逻辑的组合在一起是非常重要的。Swarm平台的一个长处就是它有一个一致的,主时间表。每一个子Swarm的时间表都被合并到高一层的时间表。最后所有的时间表都被合并到最高层Swarm中。当各层对象的activateIn方法被依次调用时,Swarm行为库就会管理这种同步。Swarm的图形用户界面(GUI)Swarm GUI的元素曲线图,柱状图,平面图(Rasters),探测器(Probes)创建一个可点击的平面图(ZoomRaster)Swarm仿真的让人印象最深的方面应该就是主体实时移动的平面分布示意图了。通过控制台停止仿真运行,然后点击对象,会打开一个窗口显示它们的实例变量并可以改变它们的值,这是Swarm软件库的一个主要长处。一般通过类似下面的步骤来创建这种平面图(ZoomRaster):a) 创建一个色彩表。colormap = new ColormapImpl (getZone ();colormap.setColor$ToName (byte) 64, green);b) 创建一个ZoomRaster。worldRaster = new ZoomRasterImpl (getZone (), worldRaster);worldRaster.setColormap (colormap);worldRaster.setZoomFactor (4);worldRaster.setWidth$Height (heatbugModelSwarm.getWorld ().getSizeX (),(heatbugModelSwarm.getWorld ().getSizeY ();worldRaster.setWindowTitle (Heat World);worldRaster.pack();c) 将Swarm空间对象映射到ZoomRaster。 heatbugDisplay = new Object2dDisplayImpl (getZone (), worldRaster, heatbugModelSwarm.getWorld (), new Selector (Class.forName (Heatbug), drawSelfOn, false); heatbugDisplay.setObjectCollection(heatbugModelSwarm.getHeatbugList ();d) 告诉ZoomRaster往哪里发送点击事件。 worldRaster.setButton$Client$Message (3, heatbugDisplay, new Selector(heatbugDisplay.getClass (),makeProbeAtX$Y, true); e) 调度显示 displayActions.createActionTo$message (this, new Selector (getClass (), _update_, false); public Object _update_ () heatDisplay.display (); heatbugDisplay.display (); worldRaster.drawSelf (); f) 确保主体(Agent)把自己放到表格中。注意要完成两件事。首先,要创建drawSelfOn方法。其次,如果想ZoomRaster点击后显示主体的Probe,主体必须报告它的位置。图形化显示结果Swarm中显示曲线图的部件叫EZGraph。创建的必要步骤是建立一个图形对象,然后可以给不同的显示属性指定标签。unhappyGraph = new EZGraphImpl (getZone (), Unhappiness of bugs vs. time, time, unhappiness, unhappyGraph);EZGraph对象创建后,就可以让它准备画一些线了。一组数据被看作是一个序列,Swarm库中有一个叫sequence的对象,用来跟踪要显示的数据。当图形对象被要求创建序列时,可以让它生成数据的统计并画出来。如下:unhappyGraph.createAverageSequence$withFeedFrom$andSelector (unhappiness, heatbugModelSwarm.getHeatbugList (), new Selector (Class.forName (Heatbug), getUnhappiness, false);到这里,图形对象已经创建,并告诉了它该画什么,但并不会让图形对象在仿真过程中显示图形。为了让它显示,应该在观察者Swarm的行为时间表中加入图形对象的更新显示行为。也就是调用EZGraph的step函数。如下:unhappyGraph.step ();探测并显示Swarm对象的内容探测器(Probes)允许用户在仿真过程中与对象动态交互。仿真进行时,用户可以观察和改变对象的实例变量,甚至可以让对象执行它的方法,指定方法的参数值。探测器是什么探测器显示是一个矩形窗口,其中各行显示对象的属性。显示的数据可以是上层对象收集的,如观察者Swarm或模型Swarm,或者由单个主体收集。几乎所有的Swarm项目,都有观察者Swarm和模型Swarm的探测器显示,因为通过这些显示窗口可以设置参数的初始值。单个主体的探测器显示一般是用户与Swarm程序交互时创建的。探测器是这样一个对象,它可以从一个对象收集数据,然后传给其他对象,包括传给显示屏上的显示窗口。Swarm提供两种探测器(Probe)。VarProbe类从对象中抽取特定的实例变量值。MessageProbe让用户可以访问对象的方法,即向对象发送消息。ProbeMap是显示器上的探测显示和个体探测器之间的中间层对象。一个ProbeMap是特定对象的所有探测器的集合。探测器显示并不去管理单个探测器,而是管理ProbeMap。定制探测器显示的最主要的工作就是增加或去除ProbeMap中的探测器。管理探测器显示默认的探测器显示如下创建: Globals.env.createArchivedProbeDisplay (heatbugModelSwarm, heatbugModelSwarm);这些基本的设置并不能让探测器显示在仿真过程中自动更新。需要在buildActions加入行为来实现这种更新,代码如下所示:displayActions.createActionTo$message (GbeDisplayManager, new Selector (GbeDisplayManager.getClass (), update, true);默认的探测器显示只显示对象的实例变量,没有方法的显示。如果需要方法探测器显示,有两种途径。当程序运行时,在探测器显示左上角的对象名上右击,可显示出对象方法的探测器。另

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论