当前位置:文档之家› 复杂系统仿真工具-1

复杂系统仿真工具-1



缺点



工作量大,开发周期长 对软件开发技能和仿真技术要求高 仿真结果的可信性较差 不利于成果共享
2. 主体开发工具

Biblioteka 多主体开发工具主要针对网络环境,目的是实 现异构分布式计算。 包括主体语言、可重用包/类库、开发工具、 开发平台等 主体开发平台提供了比较完整的功能,如图形 化建模、编程环境、调试工具等,使用方便。 多主体开发平台,如ADK、AgentBuilder、 AgentFactory、JADE、JACK、Zeus等。

缺点

4.复杂系统仿真平台

仿真平台:

将建模、实验控制、结果显示、数据分析等功能综合在一起。 目前复杂系统仿真平台有SeSAm、NetLogo等 使用方便 基本概念容易理解 具有一定的灵活性。 目前这类平台还较少,提供的技术支持不够充分。 这类平台一般提供了一种语言用于对主体编程,这些语言一 般是该平台专用的,尽管比较简单,但仍需要一个学习、掌 握过程。 这些平台与框架一样,空间表达能力弱
(3)探测器技术与图形化用户界面


探测器(Probe)对象将自己挂接在仿真主体 对象上,允许用户在任何时间显示或设置任意 对象的状态,并且可以动态调用对象的方法, 这些都不需要用户额外编写代码。 用户可以使用直方图﹑光栅图﹑点线图等动态 地显示探测器采集到的仿真数据,生成统计数 据图表,来监控模型的运行。
(2)ObserverSwarm


ObserverSwarm的作用是通过探测器接 口观察ModelSwarm对象中各个个体状态 的变化,并以图形的方式输出或保存在 文件中以备日后分析使用 ObserverSwarm也是一个Swarm对象, 它也包括一个动作序列表,这个动作序 列表描述各个探测器采样的间隔和顺序

Swarm是一个经典的复杂系统仿真框架

优点:

仿真框架降低了复杂系统仿真的门槛 具有通用性,适用于几乎所有领域的微观仿真 这些框架掌握起来还是有一定的难度, 作为框架核心的一组主体建模概念不易理解 在研究实际问题时仍然需要编写较多的程序 程序中通过调用类库实现仿真调度、主体状态探测、 数据输出等,需要对支持类库有较多的了解。
NetLogo



易用性很好 文档完整,适合教学使用 功能比较强大。适合主体生活在网格环境下, 进行短期、局部交互,不是特别复杂的模型, 也可以作为大型复杂系统的快速原型工具。 对于经验丰富的程序员而言,NetLogo的编程 环境比较受限,代码文件只有一个。 开发环境提供了错误检查,但没有单步调试能 力。
(2)离散事件仿真



Swarm仿真时钟以离散的方式推进,模型中的 主体通过在离散的时刻发生的事件来改变自身 的状态并与模型中的其他主体进行交互。 合理的确定这些事件之间的关系和安排其发生 的先后顺序是模型正确运行的前提条件。 Swarm通过动作序列表(Schedule)来安排主 体的事件发生顺序
一、复杂系统仿真的技术途径

通用编程语言 多主体开发工具 复杂系统仿真框架 复杂系统仿真平台 专用仿真工具
1. 通用编程语言

复杂系统仿真程序当然可以用通用编程 语言实现


面向对象语言,C++,Java,SmallTalk… 人工智能语言,Lisp,Prolog

优点

对仿真实现细节拥有全部控制能力 计算效率高
//一些存取交互方法,使得ModelSwarm可以被外界观测 -getHeatbugList; -(id <Grid2d>)getWorld; -(HeatSpace*)getHeat; … //一些固定的实现模型框架的方法 +createBegin:aZone; -createEnd; -buildObjects; -buildActions; -activateIn:swarmContext; @end
(1)ModelSwarm



ModelSwarm 对象是Swarm仿真程序的核心。 它首先是一个主体对象的容器,定义了模型中 出现的主体的种类﹑每一类主体的数目和这些 主体活动的环境,并持有这些对象的引用。通 过ModelSwarm对象的buildObjects方法来创建 这些对象。 ModelSwarm还定义了模型中主体行为执行顺 序的动作序列表 ModelSwarm还包括一系列输入和输出参数。
(3)仿真主体和环境


仿真主体通常作为一组对象在仿真系统 中存在,它们都是SwarmObject类的子 类。 仿真主体通常生活在一个环境中,环境 可以是一些规则形状的几何图形,如CA 模型中的二维网格,也可以是不能表现 为一定几何图形的抽象定义
4. Swarm仿真程序的建立步骤

热虫平均不满意程度的变化
(1) 定义ModelSwarm
@interface HeatbugModelSwarm:Swarm { int numBugs; //一些仿真参数,如热虫的数目 double evaporationRate; double diffuseConstant; int worldXsize,worldYsize; int minIdealTemp,maxIdealTemp; int minOutputHeat,maxOutputHeat; double randomMoveProbability; BOOL randomizeHeatbugUpdateOrder; id <ActionGroup> modelActions; //行为组 id <Schedule> modelSchedule; //动作序列表 id actionForEach; randomization id <List> heatbugList; //热虫的列表 id <Grid2d> world; //表示环境的对象 HeatSpace *heat; }
复杂系统仿真工具(一)
张发 2014年7月25日
内容

仿真工具概况 常见仿真工具比较 Swarm的使用 NetLogo的使用
为什么需要仿真工具?

复杂系统仿真的核心是建立仿真模型 但仅有仿真模型还不够,实际上需要的 是一套计算实验平台

仿真实验管理 运行动态显示 输出统计分析
三、多主体仿真框架Swarm




Swarm 是Santa Fe Institute 开发的一个 多主体仿真框架 1996年开发出1.0版本,目前版本2.2 Swarm实际上是一个用 Objective C 语言 写成的类库。 Swarm没有对模型和模型要素之间的交 互做任何限制,因此Swarm可以用来模 拟任何物理系统或者社会系统。

simtools库中包括了一些控制仿真实验运行的类。

(2)软件支持库(Software Support Libraries)

defobj定义Swarm对象模型结构的底层部分。


它提供了Objective C基本运行库对程序灵活实现的支持。 对错误消息处理调试和内存分配的支持,增强了Objective C 的功能。 支持接口和实现分离 表(List)﹑数组(Array)﹑集合(Set)等

space是一个空间类库,它的二维空间库类 似于元胞自动机中的平面网格 ga和neuro提供了对遗传算法和神经网络的 支持,可用来实现模型中主体的学习行为。
3. Swarm仿真程序的层次结构

Swarm仿真程序包括三类对象: ModelSwarm﹑ObserverSwarm(观察者 Swarm)和Agent(仿真主体)
2. Swarm的类库结构
(1) 仿真模型框架库 Swarmobject库包括了Swarm建模所需的核心类


activity库提供了对动作序列表的支持

最重要的两个类是SwarmObject类和Swarm类。 SwarmObject是所有仿真主体的父类(基类) Swarm类是ModelSwarm类和ObserverSwarm类的父类,后两者一起 实现了Swarm仿真程序的框架 动作序列表是Swarm仿真模型运行时主体的动作按其发生先后顺序 的列表 用户可以将周期性执行的动作按发生的顺序(按时间顺序)放入这 个数据结构中并指明运行间隔和触发条件 它们支持两种操作模式,一个用于交互的图形模式(Graphical Mode),一个用于批量数据输入输出的批处理模式(Batch Mode)。 支持探测器(Probe)的类 还提供数据分析和显示支持的工具来

优点


缺点



5. 专用仿真工具


专门针对某类复杂系统编制相应的软件 包/类库/工具等, 这些工具只针对这些特定类型的复杂系 统,通过输入参数、自定义规则等驱动 程序运行,为研究这些特定系统提供了 方便。
二、复杂系统仿真工具介绍


目前复杂系统仿真工具种类繁多、特点 各异 目前公开的与复杂系统仿真相关的工具 有上百种,并且呈继续增加趋势。
复杂系统仿真工具简介
五种比较流行的仿真工具
比较结论

Objective-C Swarm





非常稳定、相对较小、组织良好,提供了非常完整 的工具集。 基本概念清晰、设计良好、能实现图形界面和模型 分离。 “Swarm”能够包含“swarm”,每种“swarm”可以 有自己的对象集合和行为调度器,便于实现异质复 杂的模型。 Objective-C语言没有友好的开发环境、错误检查能 力弱、没有垃圾回收能力,文档和教学材料太少。 在执行速度上与Java平台相比没有一致的结论,有 时快、有时慢。
相关主题