《复杂系统建模与仿真》第四章多主体系统仿真的软件工具建议10课时,第1,2节4课时,3\4节2课时(部分内容可略过)中国人民大学经济科学实验室《复杂系统建模与仿真》本章要求学完本章后要求掌握以下知识点理解工具在多主体建模中的作用至少掌握下面工具的一种:Swarm/Repast/Ascape/Netlogo,掌握该工具建立多主体建模的一般工作原理和步骤,能够编写Swarm经济社会模型《复杂系统建模与仿真》大纲第一节综述第二节.Swarm第三节Repast第四节Ascape《复杂系统建模与仿真》Swarm:基于CAS理论的模拟平台《复杂系统建模与仿真》主要内容CAS理论简介SWARM介绍·SWARM的诞生·发展历史·简介·建模思想·结构·类库建模流程标准化模型实例《复杂系统建模与仿真》SWARM介绍·SWARM的诞生·发展历史·简介·建模思想·结构·类库建模流程标准化模型实例CAS理论简介《复杂系统建模与仿真》CAS理论简介所谓复杂适应系统,是指系统与外部环境交互作用的过程中,通过自适应改变系统本身的组织结构和行为特点,从而不断向前发展和演化。将组成系统的元素视为具有适应性的主体,简称主体,所谓具有适应性,是指它能够与环境以及其他主体进行交互作用,在这种交流的过程中不断“学习”或“积累经验”,并根据学到的经验改变自身结构和行为方式。复杂适应系统理论强调主体行为是系统进化的根本动因,其核心思想是适应性造就复杂性,这一理论对于生态、物理、经济、社会等领域的研究具有很强的指导意义。《复杂系统建模与仿真》SWARM介绍·SWARM的诞生·发展历史·简介·建模思想·结构·类库建模流程标准化模型实例CAS理论简介《复杂系统建模与仿真》SWARM的诞生在科学研究,特别是复杂系统的研究中,人们常常要借助计算机来完成他们的工作。为了使计算机建模成熟起来,我们需要一个工艺精良的,标准的软件工具集。《复杂系统建模与仿真》SWARM的诞生(续)从1994年开始,圣菲研究所(SFI)开展了一个研究项目,以开发一个工具集来研究复杂适应系统,从而将建模者们从编写程序的繁琐劳动中解放出来,可以将精力集中于他们所研究的专业领域。这个模拟工具集就叫做Swarm。1995年SFI发布了Swarm的beta版。《复杂系统建模与仿真》SWARM介绍·SWARM的诞生·发展历史·简介·建模思想·结构·类库建模流程标准化模型实例CAS理论简介《复杂系统建模与仿真》SWARM发展历史Swarm最初只能在Unix操作系统和XWindows界面下运行。1998年四月,伴随着1.1版的发布,Swarm推出了可以在Windows95/98/NT上运行的版本。1999年,Swarm又提供了对Java的支持,(在此之前只能使用Objective-C)从而使Swarm越来越有利于非计算机专业的人士使用。《复杂系统建模与仿真》SWARM介绍·SWARM的诞生·发展历史·简介·建模思想·结构·类库建模流程标准化模型实例CAS理论简介《复杂系统建模与仿真》SWARM简介Swarm是一个用于复杂适应系统(CAS)模拟的多主体软件平台。Swarm用来支持建模者对复杂适应系统的研究使用多主体模拟(Multi-AgentSimulation)的方法开展研究工作。《复杂系统建模与仿真》SWARM简介(续)用户可以使用Swarm提供的类库构建模拟系统,使系统中的主体和元素通过离散事件进行交互。SWARM可以用于各个广泛的研究领域,比如说生物学,经济学,物理学,化学和生态学等。《复杂系统建模与仿真》CAS理论简介SWARM介绍·SWARM的诞生·发展历史·简介·建模思想·结构·类库建模流程标准化模型实例《复杂系统建模与仿真》SWARM建模思想Swarm的整个思想是提供一个执行环境,在这个环境中,大量的对象能够“生活”,并以一种分布式的并行方式互相作用。在Swarm上的很多工作并不仅仅是为了使并行性的任务易于管理,而且是建立一种机制,使人们意识到在它们的实验装置中多个时间线程是如何互相作用的。《复杂系统建模与仿真》SWARM建模思想(续)Swarm支持分级建模方法,在嵌套结构中,个体可由其它个体的swarms所组成。Swarm提供了面向对象的可重用组件库,用来建模并进行分析,显示以及对实验进行控制。《复杂系统建模与仿真》CAS理论简介SWARM介绍·SWARM的诞生·发展历史·简介·建模思想·结构·类库建模流程标准化模型实例《复杂系统建模与仿真》Swarm的结构一个Swarm模型包括–模型Swarm(ModelSwarm)–观察者Swarm(ObserverSwarm)分层的“Swarm”可以将模型的数据收集和实现进行分离.Swarmmodelswarmobserverswarm《复杂系统建模与仿真》Swarm的递归结构SwarmSub-SwarmAgentScheduleTheInterfaceTheModelProbesSub-sub-Swarm《复杂系统建模与仿真》ModelSwarmModelSwarm是swarm的子类。ModelSwarm中的每一个对象对应模型世界中的一个主体。ModelSwarm包括模型中行为的时间表。ModelSwarm还包括一系列输入和输出。输入的是模型参数,如对象的个数、初始值等;输出的是要观测的变量的值及模型的运行结果。《复杂系统建模与仿真》ObserverSwarmObserverSwarm同样是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建模AnimateagentsInanimateagents模型观察者《复杂系统建模与仿真》IntegrationofSwarmactivitiesOperatingSystemSwarmkernelGUIModelCPUSub-SwarmModelSwarmObserverSwarmSwarmkernel《复杂系统建模与仿真》CAS理论简介SWARM介绍·SWARM的诞生·发展历史·简介·建模思想·结构·类库建模流程标准化模型实例《复杂系统建模与仿真》SWARM类库的简介SWARM有七个核心库:defobj,collection,random,tkobjc,activity,swarmobject和simtools。前四个是支持库,有可能在Swarm之外用到;后三个是Swarm专有的类库。目前,Swarm还为建模提供三个领域相关的库:space、ga和neuro。可以将自行编写的库文件加入到其中。《复杂系统建模与仿真》SwarmobjectSwarmobject库包括swarmobject和swarm。Swarmobject是所有模拟主体的根类,它定义了内存管理的接口,并提供对探测器(probe)的支持。Swarm是模型的总控,ModelSwarm和ObserverSwarm都是从这一基类继承的。《复杂系统建模与仿真》MajorActivityclassesActionGroup–Actiongroup相当于一系列动作的计划,它由对主体建立的一系列动作所构成。–ActionGroups把在同一时间各个主体的不同行为集合在一起。Schedule–时间表是模型运行的时序列表,用户可以将周期性执行的动作按顺序放入这个数据结构中,并指明运行间隔和触发条件,就可以按照这个约定运行而不需人为的干预。《复杂系统建模与仿真》SimtoolSimtool库中包括支持探测器(probe)的类,可以在模型的运行过程中观察或修改变量(可增加agent)。Simtools还提供数据分析和显示支持的工具,能够产生统计数据汇总以及画时序图等等功能。《复杂系统建模与仿真》TheProbeSwarm对标准面向对象编程的一个发展是探测器技术探测器的主要功能–在Swarm模型中,实时观测所有主体的行为。–为建立GUI提供有效数据。ExecutesmethodInputvalueforvariableOpenprobeforclassCloseprobe《复杂系统建模与仿真》CollectionCollection提供了一系列对象的列表。Swarm支持向一个列表中的所有对象传递消息,还可以将列表中的对象按某个属性排序。Collection主要的子类包括Array,List,Set和Map.CollectionListKeyedCollectionArrayMapSet《复杂系统建模与仿真》Listlist是根据建立成员的先后顺序建立的一个线性列表KeyedCollection–Map•建立从keyobjects到memberobjects的联系。•Map定义了从keyvalues到membervalues的映射。–SetSet中的每一个主体的keyvalue是由主体自身确定的,它是和主体一一对应的。ArrayArray是collecton成员的集合。通过这个固定的数据结构,根据每一个成员偏移量,能够很快计算出它的位置。《复杂系统建模与仿真》RamdomRamdom库提了一套随机数生成器。Swarm的随机数库支持正态分布、均匀分布、指数分布等多种随机分布。Ramdom被分为Distributions和GeneratorsGenerators...Distributions...random《复杂系统建模与仿真》随机数列的产生从某种分布中获取随机数序列,需要–一个generator对象必须提供一个产生随机数序列的“种子”(seed),这也是generator的主要功能。–一个distribution对象产生随机数的序列GeneratorDistributionseedrandom随机数序列number《复杂系统建模与仿真》DefobjDefobj中提供了对消息、错误处理、调试和内存分配的支持。增强了Objective-C的功能。支持对象界面,并能够实现分离,从而使Swarm编写的程序的层次性更加清晰。《复杂系统建模与仿真》SpaceSpace是一个简单的空间库。包括一系列用于二维离散模型的类。这些空间类型在生态系统模拟中经常用到。Space中的类大多数是从Grid2D,一个可以在指定格点上存储对象和整型值的二维数组继承得来。《复杂系统建模与仿真》GraphicalUserInterface(GUI)GUI对象可提供如下管理–曲线图表–柱状图–主体随时间变化情况的反应在这个过程中,要进行数据的收集,计算以及实时更新《复杂系统建模与仿真》TkobjcZoomRaster–定义显示光栅图