Repast仿真学习
来源:互联网 发布:linux存储服务器有哪些 编辑:程序博客网 时间:2024/06/05 01:12
Repast模型包括:model对象(仿真模型本身,运行也是从这个文件运行)、space对象(Agent动作发生的环境)、agent
Model会继承RePast的SimModelImpl对象。
Repast仿真分为:batch-run(运行过程中不需要人的交互)和non-batch(需要人的交互)
Repast仿真过程阶段:1.准备阶段(Setup)
2.实际运行阶段
Repast仿真实现流程:1.定义各种类型对象的属性和状态
2.定义对象所处于的环境
3.定义Agent的移动规则和博弈规则
4.程序用户界面的设计
时间表机制:负责仿真中用户定义的状态的改变。
这些时间步执行的动作由BasiceAction的子类来封装
Class BasicAction{
execute();//必须实现
}
动作的调度方式有五种:1.每个时间步运行一次
2.特定的时间步运行一次
3.固定时间间隔运行
4.仿真暂停时候运行
5.仿真结束时候运行
显示机制
界面显示包括两类对象:Agent(必须实现Drawable接口)、环境(Spaces类、Spaces对应的Displays类)、DisplaySruface类
界面程序实现的流程:1.Class Model{
setup(){
New DisplaySurface;
}
}
2.BuildDisplay{
New Display;
Display.add(Space);
Display.add(Agent);
DisplaySurface.add(Display);
DisplaySurface.updatedisplay();//进行显示
}
仿真界面的实际绘制过程如下:1.Schedule调用DisplaySurface.updateDisplay();
DisplaySurface.LocalPainter();//描绘自己本身
2.LocalPainter从off-screen的BufferImage创建一个java.awtGraphics2D对象
3.围绕Graphics2D封装一个SimGraphics对象
4.LocalPainter调用Display对象的DrawDisplay(){Display.add(SimGraphics)}
5.Display对象获取它所包含的空间中所有对象的一个列表。Display轮循该列表,通过每一个对象的Drawable接口请求一些图形的绘制信息,并使用这些信息准备好的SimGraphics对象,列表中的每一个要显示的对象都被请求使用SimGraphics秒回自己本身
6.当Painter完成对所有Display对象的轮循之后,它描绘这个off-screen图像给屏幕,绘制结束
在Repast中创建仿真的图像界面主要就是实现与仿真对象对应的空间的Drawable接口,并把这些控件添加到对应的Display对象中去,然后减这些Display对象添加到DisplaySurface中去,显示机制的实质是每一个对象容器将是机会值得责任委托给自己所包含的对象,而这些对象如果也是一个对象容器的话,也会类似的逐级委托下去知道该对象不是一个容器为止。
Repast仿真程序框架:Agent类(描述Agent的行为)、Model类(实现仿真的准备阶段和实际运行)
Model类的实现方式:1.继承SimModel接口类的程序框架
2.实现SimModelImpl抽象类的程序框架
SimModel程序框架包括: 1.基础变量(与Repast仿真程序框架相关的变量)和描述变量(与具体仿真模型相关的变量)
2.构造函数
3.构成仿真程序框架的几个主要方法:getImintParam()、buildModel()、buildDisplay()、buildGraphs()、begin()、setup()、step()
4.继承SimModel类的其他方法
5.变量的Get和Set方法
6.用户定义的与具体仿真模型相关的函数
7.Main方法
SimModel整体框架描述如下:
public class MyModel extends SimpleModel{
//变量定义
private DisplaySurface dsurf;
//构造函数
public MyModel(){
}
//返回用户需要显示和通过界面调整的描述变量的字符数组
public String[] getInitParam(){
}
//创建仿真过程图形界面,在Batch-run方式下可不包含这个方法
private void buildDisplay(){
}
//创建方针统计数据结果的图形界面,Repast中仿真结果的统计图表有三种形式,分别是曲线图,柱状图和块状图
private void buildGraphs(){
}
//创建仿真的Agent和Space还可以包括收集对象(collection)
public void buildModel(){
}
//该方法准备模型的运行,以及调用buildDisplay、buildGraphs、buildModel这三个方法
public void begin(){
}
//将仿真过程创建的对象设置为NULL,抛弃所有的DisplaySurfaces对象、统计图表和动作序列表。创建时间表等
public void setup(){
}
//其他部分,用户创建的其他函数代码
//创建Model对象,开始运行
Main(){
}
}
程序框架中几个主要方法的执行顺序:setup()->begin()->BuildModel->BuildSchedule->BuildDisplay->Step
SimModelImpl程序框架与SimModel程序框架大致类似,最大的差别在于没有Step方法,所有动作调度,主要通过Schedule变量进行
- Repast仿真学习
- repast 仿真
- Repast HPC Tutorial学习操作中出现的问题及解决办法(更新ing)
- RePast J介绍
- 学习使用SkyEye仿真
- 学习使用SkyEye仿真
- 学习使用SkyEye仿真
- 蒙特卡洛仿真学习
- PROTEUS仿真学习目录
- 学习使用SkyEye仿真
- modelsim仿真学习笔记
- modelsim 仿真学习--思想
- 一步一步学Repast 第一章 概要
- 这里有没有repast达人?
- 我的仿真学习之一
- 收藏:学习使用SkyEye仿真
- 学习使用SkyEye仿真(转)
- 几个proteus仿真学习网站
- 将MySQL数据迁移到Redis
- 产品经理,不要成为作图经理
- Winform部分控件的使用技巧
- 1042. Shuffling Machine (20)
- 做一个快乐的技术型销售
- Repast仿真学习
- tomcat集群实现源码级别剖析
- 用于Android开的简易WebService访问框架
- ztree 的简单json 的学习事例
- ArrayList
- GameBench企业版中关于FPS的测试项分析
- DownloadManager:系统的文件下载器
- ubuntu下安装gdal及安装好后出现 undefined reference to `问题
- Android之TextView实现文字过长时省略部分或者滚动显示