4.1第四章 多主体系统仿真的软件工具

159
《复杂系统建模与仿真》 《复杂系统建模与仿真》 第四章 多主体系统仿真的软 件工具 建议 建议 10 10 课时,第 课时,第 1 1 2 2 4 4 课时 课时 , , 3\4 3\4 2 2 课时(部分内容可略过) 课时(部分内容可略过) 中国人民大学经济科学实验室 http://ecolab.ruc.edu.cn 张树人 http://t.qq.com/DrZhangshuren

Upload: zhang-shuren

Post on 14-Jul-2015

1.219 views

Category:

Education


6 download

TRANSCRIPT

Page 1: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

第四章 多主体系统仿真的软件工具

建议建议 1010 课时,第课时,第 11 ,, 22 节节 44 课时课时 , , 3\43\4 节节 22 课时(部分内容可略过)课时(部分内容可略过)

✦中国人民大学经济科学实验室 http://ecolab.ruc.edu.cn 张树人 http://t.qq.com/DrZhangshuren

Page 2: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

本章要求

学完本章后要求掌握以下知识点✦理解工具在多主体建模中的作用✦至少掌握下面工具的一种: Swarm/ Repast/Ascape/Netlogo ,掌握该工具建立多主体建模的 一般工作原理和步骤,能够编写 Swarm 经济社会 模型

Page 3: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

大纲

✦ 第一节 综述

✦ 第二节 . Swarm ✦ 第三节 Repast ✦ 第四节 Ascape

Page 4: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Swarm :基于 CAS 理论的 模拟平台

Page 5: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

主要内容

✦ CAS 理论简介✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

Page 6: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

CAS 理论简介

Page 7: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

CAS 理论简介✦ 所谓复杂适应系统,是指系统与外部环境交互作用的过程中,通过自适应改变系统本身的组织结构和行为特点,从而不断向前发展和演化。

✦ 将组成系统的元素视为具有适应性的主体,简称主体,所谓具有适应性,是指它能够与环境以及其他主体进行交互作用,在这种交流的过程中不断“学习”或“积累经验”,并根据学到的经验改变自身结构和行为方式。

✦ 复杂适应系统理论强调主体行为是系统进化的根本动因,其核心思想是适应性造就复杂性,这一理论对于生态、物理、经济、社会等领域的研究具有很强的指导意义。

Page 8: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

CAS 理论简介

Page 9: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 的诞生

✦ 在科学研究,特别是复杂系统的研究中,人们常常要借助计算机来完成他们的工作。

✦ 为了使计算机建模成熟起来,我们需要一个工艺精良的,标准的软件工具集。

Page 10: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 的诞生(续)

✦ 从 1994 年开始,圣菲研究所( SFI )开展了一个研究项目,以开发一个工具集来研究复杂适应系统,从而将建模者们从编写程序的繁琐劳动中解放出来,可以将精力集中于他们所研究的专业领域。

✦ 这个模拟工具集就叫做 Swarm 。 1995 年 SFI 发布了 Swarm 的 beta 版。

Page 11: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

CAS 理论简介

Page 12: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 发展历史

✦ Swarm 最初只能在 Unix 操作系统和

X Windows 界面下运行。

✦ 1998 年四月,伴随着 1.1 版的发布, Swarm推出了可以在 Windows 95/98/NT 上运行的版本。

✦ 1999 年, Swarm 又提供了对 Java 的支持,(在此之前只能使用 Objective-C )从而使Swarm 越来越有利于非计算机专业的人士使用。

Page 13: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

CAS 理论简介

Page 14: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 简介

✦ Swarm 是一个用于复杂适应系统(CAS )模拟的多主体软件平台。

✦ Swarm 用来支持建模者对复杂适应系统的研究使用多主体模拟( Multi-Agent Simulation) 的方法开展研究工作。

Page 15: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 简介 ( 续 )

✦ 用户可以使用 Swarm 提供的类库构建模拟系统,使系统中的主体和元素通过离散事件进行交互。

✦ SWARM可以用于各个广泛的研究领域 ,比如说生物学,经济学,物理学,化学和生态学等。

Page 16: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ CAS 理论简介✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

Page 17: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 建模思想

✦ Swarm 的整个思想是提供一个执行环境,在这个环境中,大量的对象能够“生活”,并以一种分布式的并行方式互相作用。

✦ 在 Swarm 上的很多工作并不仅仅是为了使并行性的任务易于管理,而且是建立一种机制,使人们意识到在它们的实验装置中多个时间线程是如何互相作用的。

Page 18: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 建模思想(续)

✦ Swarm支持分级建模方法,在嵌套结构中,个体可由其它个体的swarms所组成。

✦ Swarm提供了面向对象的可重用组件库,用来建模并进行分析,显示以及对实验进行控制。

Page 19: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ CAS 理论简介✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

Page 20: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Swarm 的结构

✦ 一个 Swarm 模型包括– 模型 Swarm

( ModelSwarm )

– 观察者 Swarm

( ObserverSwarm )

✦ 分层的“ Swarm” 可以将模型的数据收集和实现进行分离 .

Swarm

model swarm observerswarm

Page 21: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Swarm 的递归结构

Swarm

Sub-SwarmAgent

Schedule

The Interface

The ModelProbes

Sub-sub-Swarm

Page 22: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Mo d e lS warm

✦ Mo d e lS warm 是 s warm 的子类。✦ Mo d e lS warm 中的每一个对象对应模型世界中的一个主体。

✦ Mo d e lS warm 包括模型中行为的时间表。

✦ Mo d e lS warm 还包括一系列输入和输出。输入的是模型参数,如对象的个数、初始值等;输出的是要观测的变量的值及模型的运行结果。

Page 23: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

O b s e rve rS warm

✦ O b s e rve rS warm 同样是 s warm 的一个子类。

✦ O b s e rve rS warm 是一个特殊的对象,它可以通过探测器接口观察其它个体。

✦ O b s e rve rS warm 包括一组个体和一个行为时间表。

– O b s e rve rS warm 的个体是用来观测的探测器以及输出界面,如图表、二维格点等。

– O b s e rve rS warm 的行为时间表用来描述各探测器采样的间隔和顺序。

Page 24: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

两类 SWARM 的合并

✦ 先建 ObserverSwarm✦ 在 ObserverSwarm 中建立 ModelSwarm 作为自身一个 subswarm ,并为它分配内存空间;

✦ ModelSwarm 建立模型的主体 (agent) 以及主体的行为。

[modelSwarm create: self];[modelSwarm buildObjects];[modelSwarm buildActions];[modelSwarm activateIn: self];

-create: aZone;-buildObjects;-buildActions;-activateIn: swarmContext;

Observer

ModelModel

Page 25: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Swarm 建模

Animate agents

Inanimate agents

模型 观察者

Page 26: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Integration of Swarm activities

Operating System

Swarm kernel

GUI Model

CPU

Sub-Swarm

ModelSwarm

ObserverSwarm

Swarm kernel

Page 27: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ CAS 理论简介✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

Page 28: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 类库的简介

✦ SWARM 有七个核心库 :

defobj , collection , random ,tkobjc , activity , swarmobject 和simtools 。

✦ 前四个是支持库,有可能在 Swarm 之外用到;后三个是 Swarm 专有的类库。

✦ 目前, Swarm 还为建模提供三个领域相关的库: space 、 ga 和 neuro 。

✦ 可以将自行编写的库文件加入到其中。

Page 29: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Swarmobject

✦ Swarmobject 库包括 s warm o b je c t 和s warm 。

✦ Swarmobject是所有模拟主体的根类,它定义了内存管理的接口,并提供对探测器( probe )的支持。

✦ Swarm 是模型的总控, Mo d e lS warm

和 O b s e rve rS warm 都是从这一基类继承的。

Page 30: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Major Activity classes

✦ ActionGroup– Actiongroup 相当于一系列动作的计划,它由对主体建立的一系列动作所构成。

– ActionGroups 把在同一时间各个主体的不同行为集合在一起。

✦ Schedule – 时间表是模型运行的时序列表,用户可以将周期性执行的动作按顺序放入这个数据结构中,并指明运行间隔和触发条件,就可以按照这个约定运行而不需人为的干预。

Page 31: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Simtool

✦ Simtool 库中包括支持探测器( probe )的类,可以在模型的运行过程中观察或修改变量(可增加 agent )。

✦ S im to o ls 还提供数据分析和显示支持的工具,能够产生统计数据汇总以及画时序图等等功能。

Page 32: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

The Probe✦ Swarm 对标准面向对象编程的一个发展是探测器技术

✦ 探测器的主要功能

– 在 Swarm 模型中,实时观测所有主体的行为。

– 为建立 GUI 提供有效数据。

探测器

Executes methodInput value for variable

Open probe for class Close probe

Page 33: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Collection✦ Collection 提供了一系列对象的列表。

✦ S warm 支持向一个列表中的所有对象传递消息,还可以将列表中的对象按某个属性排序。

✦ Collection 主要的子类包括 Array, List, Set 和 Map.

Collection

ListKeyed

Collection Array

Map Set

Page 34: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ List list 是根据建立成员的先后顺序建立的一个线性列表

✦ KeyedCollection– Map

• 建立从 key objects 到 member objects 的联系。

• Map 定义了从 key values 到 member values 的映射。

– Set Set 中的每一个主体的 key value 是由主体自身确定的,它是和

主体一一对应的。

✦ Array Array 是 collecton 成员的集合。

通过这个固定的数据结构,根据每一个成员偏移量

,能够很快计算出它的位置。

Page 35: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ramdom✦ Ramdom 库提了一套随机数生成器。

✦ S warm 的随机数库支持正态分布、均匀分布、指数分布等多种随机分布。

✦ Ramdom 被分为Distributions 和Generators

Generators

...

Distributions

...

random

Page 36: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

随机数列的产生

✦ 从某种分布中获取随机数序列,需要– 一个 generator 对象

必须提供一个产生随机数序列的“种子”(seed ),这也是 generator 的主要功能。

– 一个 distribution 对象 产生随机数的序

Generator

Distribution

seed

random 随机数序列 number

Page 37: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Defobj

✦ Defobj 中提供了对消息、错误处理、调试和内存分配的支持。

✦ 增强了 O b je c tive - C 的功能。

✦ 支持对象界面,并能够实现分离,从而使S warm 编写的程序的层次性更加清晰。

Page 38: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Space

✦ Space 是一个简单的空间库。

✦ 包括一系列用于二维离散模型的类。这些空间类型在生态系统模拟中经常用到。

✦ Space 中的类大多数是从 Grid2D ,一个可以在指定格点上存储对象和整型值的二维数组继承得来。

Page 39: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Graphical User Interface ( GUI )

✦ GUI 对象可提供如下管理 – 曲线图表

– 柱状图

– 主体随时间变化情况的反应

✦ 在这个过程中,要进行数据的收集,计算以及实时更新

Page 40: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Tkobjc

✦ ZoomRaster– 定义显示光栅图

✦ Graph– 定义图表

✦ Histogram– 显示柱状图

RasterGraph Histogram

Widget

ZoomRaster

Page 41: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ CAS 理论简介✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

Page 42: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 的诞生

✦ 在科学研究,特别是复杂系统的研究中,人们常常要借助计算机来完成他们的工作。

✦ 为了使计算机建模成熟起来,我们需要一个工艺精良的,标准的软件工具集。

Page 43: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 的诞生(续)

✦ 从 1994 年开始,圣菲研究所( SFI )开展了一个研究项目,以开发一个工具集来研究复杂适应系统,从而将建模者们从编写程序的繁琐劳动中解放出来,可以将精力集中于他们所研究的专业领域。

✦ 这个模拟工具集就叫做 Swarm 。 1995 年 SFI 发布了 Swarm 的 beta 版。

Page 44: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 发展历史

✦ Swarm 最初只能在 Unix 操作系统和

X Windows 界面下运行。

✦ 1998 年四月,伴随着 1.1 版的发布, Swarm推出了可以在 Windows 95/98/NT 上运行的版本。

✦ 1999 年, Swarm 又提供了对 Java 的支持,(在此之前只能使用 Objective-C )从而使Swarm 越来越有利于非计算机专业的人士使用。

Page 45: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 简介

✦ Swarm 是一个用于复杂适应系统(CAS )模拟的多主体软件平台。

✦ Swarm 用来支持建模者对复杂适应系统的研究使用多主体模拟( Multi-Agent Simulation) 的方法开展研究工作。

Page 46: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 简介 ( 续 )

✦ 用户可以使用 Swarm 提供的类库构建模拟系统,使系统中的主体和元素通过离散事件进行交互。

✦ SWARM可以用于各个广泛的研究领域 ,比如说生物学,经济学,物理学,化学和生态学等。

Page 47: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 建模思想

✦ Swarm 的整个思想是提供一个执行环境,在这个环境中,大量的对象能够“生活”,并以一种分布式的并行方式互相作用。

✦ 在 Swarm 上的很多工作并不仅仅是为了使并行性的任务易于管理,而且是建立一种机制,使人们意识到在它们的实验装置中多个时间线程是如何互相作用的。

Page 48: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 建模思想(续)

✦ Swarm支持分级建模方法,在嵌套结构中,个体可由其它个体的swarms所组成。

✦ Swarm提供了面向对象的可重用组件库,用来建模并进行分析,显示以及对实验进行控制。

Page 49: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Swarm 的结构

✦ 一个 Swarm 模型包括– 模型 Swarm

( ModelSwarm )

– 观察者 Swarm

( ObserverSwarm )

✦ 分层的“ Swarm” 可以将模型的数据收集和实现进行分离 .

Swarm

model swarm observerswarm

Page 50: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Swarm 的递归结构

Swarm

Sub-SwarmAgent

Schedule

The Interface

The ModelProbes

Sub-sub-Swarm

Page 51: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Mo d e lS warm

✦ Mo d e lS warm 是 s warm 的子类。✦ Mo d e lS warm 中的每一个对象对应模型世界中的一个主体。

✦ Mo d e lS warm 包括模型中行为的时间表。

✦ Mo d e lS warm 还包括一系列输入和输出。输入的是模型参数,如对象的个数、初始值等;输出的是要观测的变量的值及模型的运行结果。

Page 52: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

O b s e rve rS warm

✦ O b s e rve rS warm 同样是 s warm 的一个子类。

✦ O b s e rve rS warm 是一个特殊的对象,它可以通过探测器接口观察其它个体。

✦ O b s e rve rS warm 包括一组个体和一个行为时间表。

– O b s e rve rS warm 的个体是用来观测的探测器以及输出界面,如图表、二维格点等。

– O b s e rve rS warm 的行为时间表用来描述各探测器采样的间隔和顺序。

Page 53: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

两类 SWARM 的合并

✦ 先建 ObserverSwarm✦ 在 ObserverSwarm 中建立 ModelSwarm 作为自身一个 subswarm ,并为它分配内存空间;

✦ ModelSwarm 建立模型的主体 (agent) 以及主体的行为。

[modelSwarm create: self];[modelSwarm buildObjects];[modelSwarm buildActions];[modelSwarm activateIn: self];

-create: aZone;-buildObjects;-buildActions;-activateIn: swarmContext;

Observer

ModelModel

Page 54: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Swarm 建模

Animate agents

Inanimate agents

模型 观察者

Page 55: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Integration of Swarm activities

Operating System

Swarm kernel

GUI Model

CPU

Sub-Swarm

ModelSwarm

ObserverSwarm

Swarm kernel

Page 56: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

SWARM 类库的简介

✦ SWARM 有七个核心库 :

defobj , collection , random ,tkobjc , activity , swarmobject 和simtools 。

✦ 前四个是支持库,有可能在 Swarm 之外用到;后三个是 Swarm 专有的类库。

✦ 目前, Swarm 还为建模提供三个领域相关的库: space 、 ga 和 neuro 。

✦ 可以将自行编写的库文件加入到其中。

Page 57: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Swarmobject

✦ Swarmobject 库包括 s warm o b je c t 和s warm 。

✦ Swarmobject是所有模拟主体的根类,它定义了内存管理的接口,并提供对探测器( probe )的支持。

✦ Swarm 是模型的总控, Mo d e lS warm

和 O b s e rve rS warm 都是从这一基类继承的。

Page 58: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Major Activity classes

✦ ActionGroup– Actiongroup 相当于一系列动作的计划,它由对主体建立的一系列动作所构成。

– ActionGroups 把在同一时间各个主体的不同行为集合在一起。

✦ Schedule – 时间表是模型运行的时序列表,用户可以将周期性执行的动作按顺序放入这个数据结构中,并指明运行间隔和触发条件,就可以按照这个约定运行而不需人为的干预。

Page 59: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Simtool

✦ Simtool 库中包括支持探测器( probe )的类,可以在模型的运行过程中观察或修改变量(可增加 agent )。

✦ S im to o ls 还提供数据分析和显示支持的工具,能够产生统计数据汇总以及画时序图等等功能。

Page 60: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

The Probe✦ Swarm 对标准面向对象编程的一个发展是探测器技术

✦ 探测器的主要功能

– 在 Swarm 模型中,实时观测所有主体的行为。

– 为建立 GUI 提供有效数据。

探测器

Executes methodInput value for variable

Open probe for class Close probe

Page 61: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Collection✦ Collection 提供了一系列对象的列表。

✦ S warm 支持向一个列表中的所有对象传递消息,还可以将列表中的对象按某个属性排序。

✦ Collection 主要的子类包括 Array, List, Set 和 Map.

Collection

ListKeyed

Collection Array

Map Set

Page 62: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ List list 是根据建立成员的先后顺序建立的一个线性列表

✦ KeyedCollection– Map

• 建立从 key objects 到 member objects 的联系。

• Map 定义了从 key values 到 member values 的映射。

– Set Set 中的每一个主体的 key value 是由主体自身确定的,它是和

主体一一对应的。

✦ Array Array 是 collecton 成员的集合。

通过这个固定的数据结构,根据每一个成员偏移量

,能够很快计算出它的位置。

Page 63: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ramdom✦ Ramdom 库提了一套随机数生成器。

✦ S warm 的随机数库支持正态分布、均匀分布、指数分布等多种随机分布。

✦ Ramdom 被分为Distributions 和Generators

Generators

...

Distributions

...

random

Page 64: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

随机数列的产生

✦ 从某种分布中获取随机数序列,需要– 一个 generator 对象

必须提供一个产生随机数序列的“种子”(seed ),这也是 generator 的主要功能。

– 一个 distribution 对象 产生随机数的序

Generator

Distribution

seed

random 随机数序列 number

Page 65: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Defobj

✦ Defobj 中提供了对消息、错误处理、调试和内存分配的支持。

✦ 增强了 O b je c tive - C 的功能。

✦ 支持对象界面,并能够实现分离,从而使S warm 编写的程序的层次性更加清晰。

Page 66: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Space

✦ Space 是一个简单的空间库。

✦ 包括一系列用于二维离散模型的类。这些空间类型在生态系统模拟中经常用到。

✦ Space 中的类大多数是从 Grid2D ,一个可以在指定格点上存储对象和整型值的二维数组继承得来。

Page 67: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Graphical User Interface ( GUI )

✦ GUI 对象可提供如下管理 – 曲线图表

– 柱状图

– 主体随时间变化情况的反应

✦ 在这个过程中,要进行数据的收集,计算以及实时更新

Page 68: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Tkobjc

✦ ZoomRaster– 定义显示光栅图

✦ Graph– 定义图表

✦ Histogram– 显示柱状图

RasterGraph Histogram

Widget

ZoomRaster

Page 69: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ CAS 理论简介✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

Page 70: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

建模流程标准化

✦ 此规范主要是基于面向主体的建模方法的,其他建模方法(如 DYNAMO 等)可以参照它,建立符合自己特点的建模流程规范:

Page 71: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

1 分析问题

2 第一步抽象

3 第二步抽象

4 细化设计

5 具体实现

6 结果分析

7 形成论文

形成背景说明文档DOC_BACG_***.doc

形成模型的 时序图 / 协作图

形成模型的 类图,状态跃迁图,组件图等等,并由此生成代码的初步框架

形成模型说明文档DOC_MODL_***.doc

形成具体程序代码***.java

形成结果分析文档DOC_RESL_***.doc

形成标准化的论文DOC_PAPR_***.doc

Page 72: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ CAS 理论简介✦ SWARM 介绍

· SWARM 的诞生

· 发展历史

· 简介

· 建模思想

· 结构

· 类库✦ 建模流程标准化✦ 模型实例

Page 73: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

模型实例(从单主体到多主体)

✦ Heatbug✦ Mousetrap✦ Babysitter✦ Akerlof✦ Consume

Page 74: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Heatbug 模型

✦ 这是 swarm 的经典示例之一,也是swarm 的入门 example (与 HelloWorld有异曲同工之妙)。

✦ 我们利用这个模型来观察简单主体如何通过局部信息上的动作产生复杂的全局行为结果。

Page 75: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ 模型背景– 在这模型中,每一个 heatbug 都是一个主体( agent )。

– World 有一个特殊的属性—— heat ,热量经过一定的时间散发和消失。

– 每一个 heatbug 都放射出一定的热量,并且都有自己的一个适于自身生存的理想温度。

Page 76: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

– Heatbug 在释放热量的同时,也在向着更接近于适于自己生存的理想温度的附近的点不断移动。

– 单独一个 heatbug 并不能获得足够的热量继续生存,因此它们倾向于聚成一堆的生存,以便获得足够的热量。

– 模型的开始,随机分布着一定数量的heatbug 。

Page 77: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ 模拟结果

Page 78: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Page 79: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Page 80: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

结果分析

✦ 我们可以把 heatbugs 模型看作一个最优化问题:每一个 heatbug 都试图寻找自己最理想的生存环境。

✦ 每个热虫完全根据自身的需要在移动,但是所有热虫平均的不满意程度呈下降趋势,也即整个系统在不断优化。

Page 81: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Mousetrap 模型

✦ 这是一个古老的小学的核子分裂的示例。

✦ 是对离散事件的模拟。

✦ Swarm 同时支持离散事件和时间步进( time-stepped )事件。

Page 82: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ 模型背景– 在地上放一些捕鼠器,每个捕鼠器( agent )上有两个 ping pong球。

– 模型开始时中间的一个捕鼠器被触发。

– 当一个捕鼠器被触发,它上面的两个球将随机飞向一定的范围之内,同时出发两个捕鼠器。

Page 83: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

– 将 ping pong球的触发作为时间步进事件处理的话,在多数时间里mousetrap 是空闲的,这样就是整个系统低效运转。

– 将每个 ping pong球的触发作为时间表的一个事件,显然,这样的模拟更高效。这就形成了对离散事件的模拟。

Page 84: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

✦ 模拟结果:

Page 85: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Page 86: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

结果分析

✦捕鼠器的触发事件开始呈上升趋势,达到一定峰值之后回落。

✦ 在有足够触发资源的情况下呈指数增长,之后由于多数的捕鼠器已被触发,受此限制,每一时刻的触发事件减少,最后趋向于 0 。所以触发事件的总量也趋于平衡。

Page 87: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

总结

✦ 基于 CAS 理论的建模方法

✦ Adaptive Multi-Agent✦ Swarm 的结构及其对模型的实现

Page 88: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

REPAST 建模介绍

Page 89: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

理论回顾:复杂系统无法线性分析

✦ 一般地说,在复杂性研究中,复杂系统由若干元

素组成,元素间互相作从用而产生了整个系统行

为特征,由于系统的行为特征不等价于组成元素

个体行为特征叠加之和,所以无法用传统的数量

方程或回归统计进行线性分析。

Page 90: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

理论回顾:复杂系统在简化基础上可动态推演

✦ 随着计算机的计算能力的提高,人们发现可以

把复杂系统中各个因素之间的非线性关系转化

为可执行的程序,以模型程序自动运行的方式

推演模拟系统,从而能以简化换时间的方式对

那些实际中需要长时间演化的系统进行动态仿

真。这就是计算机建模方法。

Page 91: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

理论回顾:自底向上的多主体建模研究复杂涌现机制

在统一的形式化理论和研究框架下,多主体模型都

需要实现并发控制、主体设计、多主体交互、涌

现、显示、统计等功能特征,于是人们便希望能

借助软件来自动化地完成一些建模设计工作。

Swarm 、 Repast 的应用比较广泛,设计思想很接

近也很典型,且模型开发通用 Java语言,因此学

习起来比较方便。

Page 92: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

理论回顾:多主体建模工具软件

多主体建模工具软件都提供了用于多主体建模的

基本类库,把那些适合于所有多主体模型的共

同的底层机制和功能封装起来,建模设计相当

于在固定的框架基础上的二次开发。

“工欲善其事,必先利其器”,熟练掌握一种适

合的多主体建模工具,往往会为复杂系统的研

究带来事半功倍的效应。

Page 93: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

目 录1 、对 Repast 的感性认识

2 、 Repast 的简介

3 、 Repast 的思想和目标

4 、 Repast 的体系结构

5 、 Repast 的安装

6 、建模过程

7 、 Repast 类库简介

Page 94: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

1 、对 Repast 的感性认识——界面例子

Page 95: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

1 、对 Repast 的感性认识——界面例子

Page 96: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

三个著名的糖域模型

✦ SugarScape✦城市人口迁移仿真

✦财富的分配

✦ 原始经济的诞生

Page 97: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

城市人口迁移仿真

Page 98: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

城市人口迁移仿真

✦ 程序中,用黄色代表食物的存在,颜色越重的地方表示食物就越多。而这里为了简化设计,只是用糖来代表食物。每个迁移的人都有视野,他在迁移以前,会判断视野内食物的多少,然后向着食物最多的方向迁移。每迁移一步,他都要消耗掉一部分的自身食物,在这里设计的是 ,每走一步,损失 3 个糖份。

✦ 可以将人口迁移的众多因素尽可能科学、全面的纳入到程序中来,从而为城市的决策者提供改善城市生活、就业、社会福利等方面的支持。

✦ 为了使例子模拟的过程更接近现实生活,在例子中为人口设计了变化的指数增长函数、为作物生长率、城市资源的新陈代谢原则等等都设计了相应的函数关系。

Page 99: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

财富分配问题

✦替换规则 – 1) 当 Agent 的寿命 age超过他的最大寿命

maxage 就会死去。

– 2) 每个仿真周期,每个 Agent 的 age 都 +1 – 3) 当一个 Agent死掉的时候,环境会产生一个新的 Agent替换这个死掉的 agent ,这个新生 Agent 的所有属性都随机的分配,包括它的最大寿命maxage 以及它在世界中的位置。

Page 100: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

财富分配问题

Page 101: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

财富分配问题

✦ 随着时间的推移,财富分配不均的现象将会涌现出来。也就是说少数 Agent拥有大量的糖资源,而多数的Agent 仅仅拥有少量的糖。

✦ 因此也可以说,财富的分配不均匀是系统自发产生的一种必然现象。这就是社会科学中著名的马太效应。– 因为一些 Agent 可能在开始由于它的个人能力、所处地方资源的分布等等一些优势可以获得较多的资源糖,那么因为新陈代谢率不变随着它所获得资源的增多,这就相当于它的活动能力会增强,并更加有可能存活下去。这就是说,该 Agent 具有了更多的机会收集更加大量的财富。

Page 102: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

原始经济的诞生(一)

✦ 起源:

人们之所以相互交换商品促使经济的诞生是因为可以在交换中获得好处。一个人对资源的需求是多方面的,而因为个人的能力有限,所以他不可能同时拥有多种资源,这个时候交换就在所难免。

Page 103: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

原始经济的诞生(二)

✦ 假设糖域中不仅含有糖,而且含有另外一种资源,我们称其为香料。

✦ 每一个 Agent 不仅仅需要糖同样也需要香料。而糖和香料分配在不同的区域,这样在糖资源较多的区域中, Agent 可以收集到很多的糖却有较少的香料,而在香料资源多的区域中,糖却很少。这时两类 Agent 就会在边界地区进行商品的交换,从而使得两方 Agent 都能得到较大的满足。

✦ Agent 在每个周期中既要消耗糖也要消耗香料,因此需要有两个新陈代谢率来刻画—— m1是糖的新陈代谢率, m2 是香料的代谢率。

Page 104: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

2 、 RePast 的简介

✦ Repast ( Recursive Porous Agent Simulation Toolkit )是芝加哥大学社会科学计算研究中心研制的多主体建模工具

✦ Repast 提供了一系列用以生成、运行、显示和收集数据的类库,并能对运行中的模型进行“快照”,记录某一时刻模型的当前状态,还可以生成模型运行过程中状态动态演化的视频资料。

✦ Repast 从 Swarm 中借鉴了不少的设计结构和方法,所以常常称 Repast 为类 Swarm的架构。

Page 105: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

3 、 Repast 的思想和目标

✦ 由于 Swarm 对建模者来说还是有些过于复杂, Repast 项目希望提供一系列简化 Swarm 模型开发的 Java 类库 ,然而,随着 Java Swarm 版本的推出,这种仅仅希望作为 Swarm 的 Java扩展的想法很快就被摒弃了。设计者们开始尝试使用 Java语言设计一个完全独立的模型平台,而不再是从 Swarm 中做一些现成的提取和外围的包装。 一个由 Swarm开发小组发布的运行在 Swarm 核心上Java 应用层。

Page 106: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

3 、 Repast 的思想和目标

✦ RePast 项目拟订了三个设计目标:– 使用方便

– 容易学习

– 容易扩展

✦ 设计者通过让模拟软件的底层结构具备抽象性、可扩展性以及“良好”的表现来实现这些目标。

Page 107: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

4 、 Repast 的体系结构

✦ Repast 模型的设计建模相当于设计一个状态机

✦ 状态机的核心状态是模型中所有成员的集体状态属性集合

✦ 成员则分为底层结构和表层结构– 底层结构是各种各样用于运行模型、显示和收集数据等

架构的机制。底层结构的状态就是模型的种种显示状态、数据收集对象的状态等等

– 表层结构是设计者创立的模型。表层结构的状态指模型的描述状态,比如:所有主体变量的当前值,模拟环境空间的当前状态值,或他们运行的空间以及别的可能有的各种表层对象 ( 例如:聚合“协同”的对象统计值等 ) 。

在这种状态机模式下,所有对状态机的改变都通过同一对象界面接口来实现,这个对象界面接口是SimModelImpl 类。这种设计为建模者减轻了学习负担,也简化了当工具包的功能不足时的扩展编程。

Page 108: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

典型内部机制

✦ 时间序列机制

✦ 图形用户界面

Page 109: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

时序表:时间序列机制

✦ 在 Repast 模拟环境下,时间序列机制负责所有用户定义的状态的变化。其设计基础是 Swarm 的观察员结构( Observer Swarm )中的时间序列机制。作为核心机制,时间序列机制由已建立好的一些方法调用组成,这些现成的方法调用在一些特定的时间激活一些主体。 Repast 表现为对独立事件的模拟,它的时间单位就是前面已经提到的时钟步( tick )。时钟步的存在类似于一个钩子可把事件的执行按顺序挂上。

Page 110: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

时间序列机制

✦ 典型的 Repast 模型可能包含一系列异质的主体,这些主体可能排列成特定的结构(如一个公司和它的雇员)。但无论其构成如何,每个主体都具有一定的行为,建模者所关心的是这些行为间的相互作用关系。时间序列本身是基于时钟步的,这使得事件行为以一定的时间顺序在特定的时钟步上发生,并且只在特定的时钟步上或特定的间隔内发生。

Page 111: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

基于时钟步的时间序列机制

✦ 这种基于时钟步的时间序列机制很灵活,可适合于不同的动态模型,无论是连锁反应型的还是离散的独立事件型。

✦ 时间序列还能相互嵌套 ,允许以不同的时间粒度与不同的环境或对象结合起来使用。建模者因此可以专注于模型的动态特征和相互间的作用上,方便了从概念模型到计算机模型的转化,设计模式的共享意味着完成概念模型后就能建立起相同模式的计算机模型。

Page 112: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

图形用户界面

✦ 显示机制用来实现正在运行的模型的实时显示。这一机制包括 space 类库中的space 类、 space 相关的绘图类( SimGraphics 类)、各种可绘制对象与 Display 类、和 space 类相关的可绘制接口(如 Draw able , Drawable2Dnode 等)、以及来自 GUI 类库的 Local Painter 和DisplaySurface 等

Page 113: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

对象容器:空间

✦ 其中 spaces 是描述模拟对象拓扑关系的容器。如 space 类的 Object2Dtorus 描述显示一种2 维曲面栅格,该曲面栅格的每一个单元都能容纳一个对象。 SimGraphics 类封装了java.awt.Graphics2D ,简化了绘制圆圈、矩形、正文、色彩等等的工序。 Display 类包含一个 space ,并且提供了显示该 space 中对象的接口及实现工具。如果 space 中的对象要能显示,那么该对象必须构成一定的形式状态。各种可绘制接口 (Drawable*) 定义了这些形式状态。这些接口能够通过任何对象来解释执行。

Page 114: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

可探测接口

✦ 显示机制还能实现 Probeable (可探测)接口,指定屏幕坐标的定位,可将这些坐标转化成相应的拓扑坐标,并可返回坐标所在的对象列表等。

✦ LocalPainter 是存放绘图类的容器,它能处理实际绘制描述这些绘图类,处理双缓冲和Graphics2D 的操纵控制。 DisplaySurface 处理探测任务,它还是绘制描述机制( drawing mechanism )的公用接口建立一个 Repast 模型的显示程序,实际上就是决定在一个空间(a space )上还是很多空间( spaces ),在这些空间所包含的对象中实现适于这些空间的可图形化接口,把这些空间添加到合适的显示机制中,之后,将这些显示机制添加到DisplaySurface 中去

Page 115: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

5 、 Repast 的安装

✦ 从 3.0 版开始,模型的设计语言有了更多的选择;Repast3.0 提供了 java 版、 python 版和 DotNet版三个版本让最终用户选择安装,除 Java 和python 外,还可以应用 DotNet 框架下的各种程序设计语言编制模型。

✦ java 版 Repast 的开发环境– 与普通 java 开发程序一样。

– 使用 eclipse 进行 Repast 模型的开发

Page 116: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

使用 eclipse 进行 Repast 模型的开发

✦安装 jdk✦安装 eclipse✦安装 Repast

– 有 suite 、 java 、 pyhton 、 donet 版本下载

Page 117: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

6 、建模基本过程

✦ 数据结构上, RePast 模型一般至少有两个由

用户编写的类:主体类和模型类。

✦ 主体( Agent )类描述主体的行为(例如,在

博弈中合作或者对立),模型类负责控制模型

的创建和运行。

✦ 主体类大多需要专门构造,尽管 RePast已经

通过 GameAgent 接口以及 Game 抽象类为合

作类型的主体提供了最基本的支持。

Page 118: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

6 、建模基本过程

✦ 如果希望主体能够被图形化显示,主体类必须

实现某一类型的 Drawable 接口。

✦ 如果用户希望主体是可探测的,即主体状态的

可视化和可运行时干预设置,则主体的属性必

须用附属方法模式( Accessor )编写,即以

get 和 set打头的固定格式的方法,用于属性

的存取。

✦ 习惯上还会有一个用户编写的类:空间类,在

图形化显示中,用来表示主体与图形显示之间

的关系。

Page 119: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

7 、 Repast 类库简介

Repast共有近 130 个类,封装在 6 个库中,下面是 6 个类库的简要介绍。 – 分析库 Analysis

• 分析库中的类是用来聚集、记录数据以及建立数据表。通过使用 DataRecorder 类,建模者能将收集到的数据分类整理,并将这些数据以表格格式写人文件。

–引擎库 Engine • 引擎类负责建立、操纵和运行模型。 SimModel 接口( Interface )是 Repast 中所有模型的超类(继承树状图表示中的根类)。作为 SimModel 一个子类, SimModellmp 类可以作为绝大多数用 Repast创立的模型的基类。控制类( BaseController , Controller , Batch-Controller )负责通过图形用户界面处理用户交互,或通过批处理参数文件自动处理交互。时序表及相关行为类主要用来改变模型中的状态。

Page 120: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

– 博弈库 Games • 博弈库中包含了一些建立对策论模型(比如囚徒困境等)所用的基本类。

– 图形用户界面库 GUI • GUI 类负责实现模型的图形可视化,包括对图形界面显示的快照功能以及制作模型运行的活动录像(影像资料, quicktime 格式)。各种。 Display 类与 Space 空间库中的类协同工作,把空间位置关系的抽象和空间关系的显示分离开来,可以针对不同的空间特征设计不同的可视化显示方案。通过一个显示界面( Displaysurface ),。 Painter 类处理这些空间库在屏幕上的显示,而显示界面本身就能够完成对所显示对象的探测。对可视化的模拟对象点击鼠标左键,就会弹出一单独舷窗口,其中显示点中主体的当前状态。

Page 121: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

– 空间库 Space• 空间类是表述各种空间的基础容量类(在通常的计算机术语中,容量类是指以包含其他类作为自己的元素的类,比如数组、集合、链表等)。空间类包括二维表空间(有边界)、圆环面空间(上下无边界)等。这些空间类允许在 x , y坐标轴的基础上对对象进行括人和检索。空间库中还包含了一些节点类和链接类,以方便建立基于网络的模型。空间类和在 GUI 库中的显示类协同操作,以实现空间和对象的可视化。

– Util 类库 • Util 类库中只有一个类: SimUtiltities 。该类提供了一些产生无序表单、显示信息对话框等静态方法。

Page 122: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

参考资料✦ Repast主页✦ http://repast.sourceforge.net

Repast 上的开发使用方法介绍

✦ http://repast.sourceforge.net/tutorials.html

官方 API✦ http://repast.sourceforge.net/api/index.html✦ http://repast.sourceforge.net/faq.html

Page 123: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

3.Ascape 及其在社会经济领域的应用

经济科学实验室

Page 124: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ascape 介绍

布鲁金斯研究所开发

完全用 Java 编写

主要是为了支持社会经济系统的模型

Page 125: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ascape 设计目标

  有表达力的 Expressive

通用的 Generalized

功能应该是强大的 Powerful

抽象的 Abstract

简单适用 Easy to Use

功能健全 Robust

快速 Fast

Page 126: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

有表达力的 Expressive

可以用尽可能少的描述来定义一个完整的模型 ,仔细的设计可以提供强大的功能和可控制性,但由此可能出现把重要的细节遗漏的问题。

Page 127: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

通用的 Generalized

可以用多种方式表达同样的基础建模思想,然后用不同的环境和配置来测试这些思想;同样适用于很多领域的问题;拥有尽可能常用的特征:图表,模型视图,参数控制工具等,以及大量的常用结构和行为的类库。

Page 128: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

功能应该是强大的 Powerful

可以提供给高水平用户导向型工具使其不用编程就可实现模型交互,但是它也该提供一个能对不同的复杂的系统建模的环境。

Page 129: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

抽象的 Abstract

可以用尽可能高的水平封装建模思想和方法论,能够不影响其他方面而在模型的某一方面进行重大的改动,比如改变维数,拓扑结构,规则,结构以及规则的执行命令;可以促进探索和试验,允许模型的设计和工具的简单混合与匹配 。

Page 130: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

其它特点:

✦ 简单适用 Easy to Use :

基本假设是用户由小部分的专家,大部分的潜在的聪明用户组成;避免挫败产生使用障碍;

✦ 功能健全 Robust :

允许不同的使用风格和方法,中断的时候出现报告,并且在编译的时候中断不会在运行时中断;

✦ 快速 Fast

Page 131: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ascape安装

下载安装网址:

http://www.brook.edu/dybdocroot/Collab/CSED/install.htm

Page 132: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ascape 的操作

运行 Ascape首先出现下面的界面,可以选择要运行的模型,然后单击 OPEN 即可。

Page 133: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ascape 运行界面 以模型“囚徒两难“ Prinsoner’s

Dilemma 为例,打开后基本界面如下:

Page 134: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

控制条

大多数模型的交互通过模型的控制条实现。对于所有的 Ascape 模型下面这个控制条是缺省提供的。

✦ 控制条反复演示当前的模型,允许使用者在不同的表达方式间很容易的切换。它包括模型的开始 ,停止,暂停和重新开始。模型运行的速度可用标记滑动栏控制。

✦ 控制条还可以让使用者退出运行环境, 改变模型的设置,显示关于这个模型的信息和创建新的图表。

✦ “照相”按钮可以给正在运行的模型的拍摄电影 ( 需要安装 quicktime for jaja:http://www.apple.com/quicktime/qtjava) 。按下“打开模型”按钮将出现一个标准对话框来打开其他 Ascape 模型包括该模型的内置类库。

Page 135: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

视图

Ascape 提供了大量的常用视图类型以及不常用的一些视图 :

Ascape 的 Overheadview 就有多种表现方式:关联的 2 维视图、一维滚动视图、向量表示法以及单一视图;

Ascape里的所有视图都是可扩展的。比如可以添加,最小化或者动态的移去视图。当前不活动的视图不占用计算资源。

Page 136: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

图表

Ascape 提供了强大且易用的制图和统计工具,模型设计者可以容易地通过此平台建立模型统计表并提供给模型用户和研究者使用。这些统计表可以用于制图,输出和其他用途。可以创建一个图表作为一个标准模型视图的一部分,这样模型的设计者就可以把他们作为标准可视化工具。

提供的另一种视图图表视图 Chartview 也有三种不同的表达形式:时间序列、柱状图、饼状图

Page 137: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ascape 的设计机制

✦ Ascape 的设计机制关键在于抽象 abstractions 和 Scape 。 Ascape 设计提供了大量关键抽象使基于主体的模型的开发变得容易。这些抽象还利于上述的用户导向的革新。

✦ 首先, Scape 本质上是功能强大的主体的集合

✦ 第二个重要的抽象是: Scape 结构对于主体来说是隐藏的;

✦ 最后一个抽象就是:行为仅在 Scape 层次上发生。

Page 138: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Scape 本质上是功能强大的主体的集合

✦ 在 Ascape 中,模型都是由 scapes 和主体分层次组成。比如下面是囚徒两难统计模型中局中人运动、博奕、复制时的网格图,以及包含局中人人数的向量。这种集合机制允许映射局中人的位置到网格上去,如图,局中人和网格都属于根 scape 。

Page 139: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

scape 结构对于主体来说是隐藏的 隐藏的意思是:主

体的查找和互相交互的行为可能且应该设计成不与一个特定的拓扑结构或活动区域相关。

这样允许 Ascape 的模型通过一小段代码的改变或者不需任何的改变就能从属于 exposure 不同的拓扑结构个活动区域。下面是一个模型的多种拓扑结构表示:

Page 140: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

行为仅在 Scape 层次上发生

也就是说:没有任何其他的行为执行高级机

制建立在主体上,行为仅仅在 Scapes 基础上进行。这种抽象保证了在模型中的行为以特定的方式发生,给用户工具相应的行为提供了一个自然的层次结构,直截了当的说明以及便于陈述的设计的步骤。

Page 141: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

基于 Ascape 平台的模型例子

下面主要介绍一个在 Ascape 上开发的模型:囚徒两难( Prinsoner’s Dilemma )模型,通过模型的背景知识介绍,及它在 Ascape中实现的过程,可以更具体的了解 Ascape 中模型的实现机制

Page 142: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

模型背景介绍

囚徒困境:

“囚徒困境”说的是两个囚犯的故事。这两个囚徒一起做坏事,结果被警察发现抓了起来,分别关在两个独立的不能互通信息的牢房里进行审讯。在这种情形下,两个囚犯都可以做出自己的选择:或者供出他的同伙(即与警察合作,从而背叛他的同伙),或者保持沉默(与警察不合作,也就是与他的同伙合作)。

这两个囚犯都知道,如果他俩都能保持沉默的话,就都会被释放,因为只要他们拒不承认,警方无法给他们定罪。但警方也明白这一点,所以他们就给了这两个囚犯一点儿刺激:如果他们中的一个人背叛,即告发他的同伙,那么他就可以被无罪释放,同时还可以得到一笔奖金。而他的同伙就会被按照最重的罪来判决,并且为了加重惩罚,还要对他施以罚款,作为对告发者的奖赏。当然,如果这两个囚犯互相背叛的话,两个人都会被按照最重的罪来判决,谁也不会得到奖赏。

Page 143: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

如果在计算机中实现,任何参加这个实验的人都扮演“囚徒困境”案例中一个囚犯的角色。他们把自己的策略编入计算机程序,然后他们的程序会被成双成对地融入不同的组合。分好组以后,参与者就开始重复玩“囚徒困境”的游戏。他们每个人都要在合作与背叛之间做出选择。 这就是博弈论专家所谓的“重复的囚徒困境” a demographic Prisoner‘s Dilemma ,它更逼真地反映了具有经常而长期性的人际关系 。

Page 144: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

在 Ascape 平台上开发囚徒两难模型

在这个博弈论案例的基础上,在 Ascape 平台上开发了囚徒两难( Prinsoner’s Dilemma )模型,下面是运行的结果:

这是囚徒两难模型运行时

的上置式主体视图:圆形

色点为主体,红色圆点

是不合作者( defector ) ,蓝

色圆点是合作者

( cooperator ) 。

整个视图由单元格组

成,相当于一个网格。

Page 145: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

囚徒两难模型中视图的构成 Root scape 为根 scape ;

Players 为包含局中人人数的向量;

Lattice 为表现模型中局中人运动、博奕、复制时的网格图 .

从上面的图可以知道视图的形成机制,如图,局中人和网格都属于根 root scape ,囚徒两难模型运行时的局中人player 的位置映射到网格上 , 这样就能够将博奕过程中的情况变化直观的反映到图表上。

Page 146: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

囚徒两难模型中的图表视图 这是囚徒两难

模型运行时的图表视图:轴是时间(单位为秒),纵轴是两个主体进行博弈时合作与不合作的次数计数 ,红线表示不合作次数,蓝线表示合作次数,从各 50 次开始。相比较而言,图表视图比上面的主体视图更容易理解,合作与不合作的次数在时间序列上表现的更直观。

Page 147: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

囚徒两难模型在 Ascape 中的实现 下面通过 Ascape 模型的设计代码示例来说明囚徒两难模型的

实现,给出了模型中部分类的定义代码:

Ascape 模型都是 Scapes 的特定容器,所以,在 Ascape 中开发的大部分模型都以一个适当的 Scape 作为基类。然后把主体合作和不合作的状态定义为一些标记,再定义一些参数。

✦ 定义建立模型和它的视图的方法createScape() , createViews() :

ScapeGraph lattice; ScapeVector agents; Overhead2DView overheadView; ChartView chart; public void createScape() { ... } public void createViews() { ... }}

Page 148: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ascape 小结

总的来说:

Ascape 的特点是:小体积,大功能;

表达方式多,能力强;

模型抽象程度高;

存在的问题: 比较多的面向专业人士;

有不易理解的机制。

Page 149: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

工具比较

Page 150: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

设计目标比较

1. Swarm 就是予以科学家们一个标准的软件工具集,从而提供一个设备精良的软件实验室,帮助人们集中精力于研究工作而非制造工具。

2. RePast 来自于芝加哥大学的研究学者对模拟软件使用的方便性的要求,和对一个较短的学习周期的需求,以及作者对其可扩展性以及动力性的关注。其作者尝试着从以下几个设计目标来实现这些更为巨大的目标:模拟软件的底层结构的抽象性,可扩展性,和“良好”的表现。

3. TNG Lab ( Trade Network Game Lab )是为了研究在一个多样化的市场环境下的商业网络构成而设计的一个特殊的可计算实验室,它包括买家、卖家和经销商人,他们重复的选择更合适的商业伙伴,参与到无合作博弈的有风险的交易中,并随时间推移进化他们的商业策略。

Page 151: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

建模思想比较

✦ Swarm 的建模思想可以概括为“一系列独立的个体通过独立的事件进行交互”。与传统的建模方法不同的是, Swarm 是一种支持“自下而上” (bottom-up) 或者称“基于过程” (process-based) 的建模工具。 Swarm的核心实现机制是使用一种面向对象( OO )的表达方式,建立多个体的独立事件模拟,研究这些由多个体所组成的网络的各种行为。

✦ RePast 中的设计思想即是常见的概念:建立一个像状态机的模拟模型,这种核心状态由它所有的成员的集体性的状态属性组成。

Page 152: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

表现能力比较 --Swarm 表现能力

Swarm 在表现模型方面提供了光栅图,柱状图,曲线图,表现能力比较强大

光栅图 柱状图

Page 153: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

表现能力比较: RePast 表现能力

RePast 运行结果中也同时提供了光栅图,柱状图,向量

曲线图,与 Swarm 的表现形式基大致相同:

Page 154: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

表现能力比较 -- Ascape 表现能力

而 Ascape 上视图有多种表现方式:关联的 2维视图、一维滚动视图、向量表示法以及单一视图;提供的另一种视图图表视图 chartview 也有三种不同的表达形式:时间序列、柱状图、饼状图;通过上面的表现方式比较,可以看出 Ascape 对于模型的表达能力比较全面并且强

大。

Page 155: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

实现代码比较举例

下面是热虫 Heatbugs 模型和糖域 Sugarscape 模型分别在 Ascape , Swarm , RePast 三个软件平台中实现时的比较。

Page 156: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Repast

✦ 具有更好的可扩展性 – 时间测试的设计方法具有清晰的结构

– 使用 Java语言作为其实现语言

✦ 视频资料更有利于用户灵活操作 Swarm 提供的控制条

Repast 提供的控制条

Page 157: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ascape

✦ Ascape 主要用于社会科学的模拟研究方面

✦丰富的视频资料

– 模型滑动栏

– 规则表

– 强大的数据统计工具

Page 158: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

Ascape 提供的标记滑动栏 Ascape 提供的规则表

Ascape 的控制条

Page 159: 4.1第四章 多主体系统仿真的软件工具

✦《复杂系统建模与仿真》《复杂系统建模与仿真》

本章—完