您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Swarm_Heatbug代码剖析
SWARM程序实现代码简介中国人民大学经济科学实验室程序介绍HeatBug程序代码介绍SARS疫情模拟的程序介绍中国人民大学经济科学实验室回顾:Swarm的结构一个Swarm模型包括模型Swarm(ModelSwarm)观察者Swarm(ObserverSwarm)分层的“Swarm”可以将模型的数据收集和实现进行分离.Swarmmodelswarmobserverswarm中国人民大学经济科学实验室ModelSwarm是swarm的子类。ModelSwarm中的每一个对象对应模型世界中的一个主体。ModelSwarm包括模型中行为的时间表。ModelSwarm还包括一系列输入和输出。输入的是模型参数,如对象的个数、初始值等;输出的是要观测的变量的值及模型的运行结果。中国人民大学经济科学实验室ObserverSwarm同样是swarm的一个子类。ObserverSwarm是一个特殊的对象,它可以通过探测器接口观察其它个体。ObserverSwarm包括一组个体和一个行为时间表。ObserverSwarm的个体是用来观测的探测器以及输出界面,如图表、二维格点等。ObserverSwarm的行为时间表用来描述各探测器采样的间隔和顺序。中国人民大学经济科学实验室两类SWARM的合并先建ObserverSwarm在ObserverSwarm中建立ModelSwarm作为自身一个subswarm,并为它分配内存空间;ModelSwarm建立模型的主体(agent)以及主体的行为。[modelSwarmcreate:self];[modelSwarmbuildObjects];[modelSwarmbuildActions];[modelSwarmactivateIn:self];-create:aZone;-buildObjects;-buildActions;-activateIn:swarmContext;ObserverModelModel中国人民大学经济科学实验室中国人民大学经济科学实验室模型这是swarm的经典示例之一,也是swarm的入门example(与HelloWorld有异曲同工之妙)。我们利用这个模型来观察简单主体如何通过局部信息上的动作产生复杂的全局行为结果。中国人民大学经济科学实验室模型背景在这模型中,每一个heatbug都是一个主体(agent)。World有一个特殊的属性——heat,热量经过一定的时间散发和消失。每一个heatbug都放射出一定的热量,并且都有自己的一个适于自身生存的理想温度。中国人民大学经济科学实验室Heatbug在释放热量的同时,也在向着更接近于适于自己生存的理想温度的附近的点不断移动。单独一个heatbug并不能获得足够的热量继续生存,因此它们倾向于聚成一堆的生存,以便获得足够的热量。模型的开始,随机分布着一定数量的heatbug。中国人民大学经济科学实验室模型运行界面中国人民大学经济科学实验室输出结果显示——光栅图中国人民大学经济科学实验室输出结果显示——折线图中国人民大学经济科学实验室代码剖析程序清单StartHeatbugs.java(含main函数)HeatbugObserverSwarm.java(观察者swarm)HeatbugModelSwarm.java(模型swarm)Heatbug.java(heatbug个体)HeatSpace.java(heatspace环境)HeatCell.java(环境中的小单元)HeatbugBatchSwarm.java(功能与HeatbugObserverSwarm.java相同)中国人民大学经济科学实验室面向对象的程序设计(OOP)基础面向对象的程序设计与多主体建模的基本思想非常吻合。(静态结构与动态结构)掌握一门面向对象的程序设计语言,是学习多主体建模工具的必要条件程序设计中的重要概念回顾对象Objects基本语法构造函数:Constructors继承性:Inheritance静态变量:Static接口:Interfaces包和引用:Packages&Import主程序函数:The'main'method内部类Innerclasses类路径:ClassPathJAR文档中国人民大学经济科学实验室结构关系总揽StartHeatbugs是起始程序,它调用HeatbugObserverSwarm(或HeatbugBatchSwarm),由它再调用HeatbugModelSwarm及Heatbug实现,HeatbugModelSwarm调用Heatbug与HeatSpace,Heatbug调用HeatSpace与HeatCell,HeatSpace调用HeatCell。关系框架图:中国人民大学经济科学实验室中国人民大学经济科学实验室……//(仅以图形方式为例)publicclassStartHeatbugs{//main()函数是整个程序开始运行的顶层(top-level),典型的Swarm模拟中,在main()函数里创建一个顶层Swarm对它建立并激活,然后让它运行publicstaticvoidmain(String[]args){//初始化swarm,每个swarm程序都必须要先初始化Globals.env.initSwarm(……);HeatbugObserverSwarmtopLevelSwarm=newHeatbugObserverSwarm(Globals.env.globalZone);……}中国人民大学经济科学实验室();//创建对象topLevelSwarm.buildActions();//创建行为topLevelSwarm.activateIn(null);//使之活动topLevelSwarm.go();//运行topLevelSwarm.drop();//结束停止中国人民大学经济科学实验室是当图形接口运行时建立以观察热虫模型的一类对象集的Swarm,其中一个重要的对象是heatbugModelSwarm,同时也还有图形窗口和数据分析类的对象publicHeatbugObserverSwarm();//初始化及用户接口publicObject_worldRasterDeath_();//光栅图关闭处理publicObject_unhappyGraphDeath_();//曲线图关闭处理publicObjectbuildObjects();//创建对象publicObject_update_();//更新动作publicObjectbuildActions();//创建行为publicActivityactivateIn();//使时间进度表活动publicObjectgraphBug();//曲线图顺序获取每个bug的unhappinesspublicvoiddrop();//结束程序前的处理中国人民大学经济科学实验室():创建用于模型现实的对象。这段代码相对复杂,因为我们创建了相当多的窗口部件。因此可以很好的作为我们学习如何实现显示相关代码的示例首先,创建我们实际观察的模型,这个模型是observer的subswarm然后创建探测器对象,这给出了一个可以让用户方便的修改参数的用户接口等待一个对控制面板的指令,在此之间用户可以更新参数设置下面可以准备运行中国人民大学经济科学实验室第一步让modelswarm建立它的对象此后,建立自己的显示对象创建一个全局变量:colormap这里的信息会被许多其他的对象所利用——色彩的映射表在这里设立为每个热虫设定颜色然后创建一个二维显示窗口,设定他的大小、显示范围、因素和标题创建一个Value2dDisplay:这个特定对象能够在给定的光栅窗口部件中显示任意的2维的值表。创建一个Object2dDisplay:这个对象为我们在光栅图窗口中画出热虫,并可接受探测使光栅图将获得的鼠标点击传递给heatbugDisplay(Object2dDisplay实例),使用户可以通过右键点击显示对虫子的探测。创建窗口部件显示unhappiness折线图在窗口被关闭时,调用执行_unhappyGraphDeath_
本文标题:Swarm_Heatbug代码剖析
链接地址:https://www.777doc.com/doc-5525129 .html