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仿真学习相关推荐

  1. 40亿次仿真学习:人工智能5:0大胜人类飞行员!

    来源:桌面战斗 本文约2000字,建议阅读5分钟. 本文介绍了国防高级研究计划局(DARPA)的Alpha狗斗的最后一场人机对抗试验在线展开,8支人工智能团队运用算法控制空战模拟器进行虚拟对决. 8月 ...

  2. 40亿次仿真学习:人工智能5:0大胜人类飞行员

    本文约2000字,建议阅读5分钟.本文介绍了国防高级研究计划局(DARPA)的Alpha狗斗的最后一场人机对抗试验在线展开,8支人工智能团队运用算法控制空战模拟器进行虚拟对决. 8月18日至20日,国 ...

  3. simulink仿真学习(实现半波整流、方波输出) day1

    ** simulink仿真学习常用模块及具体案例实现(第一天) ** simulink简介 Simulink是美国Mathworks公司推出的MATLAB中的一种可视化仿真工具.Simulink是一个 ...

  4. Proteus STM32仿真学习板

    一 全球IC爆冷,价格猛涨,ST系列单片机更是一马当先,贵到你怀疑人生.这个时候想学习STM32的基础去购买开发板是很不划算的,而且用完就搁置了,吃灰到永远,能半价甩卖就已经很好了. 为了让大家方便快 ...

  5. 系统辨识理论及MATLAB仿真——学习笔记(1)

    系统辨识理论及MATLAB仿真学习笔记(1) 前言 目录 第1章 绪论 1.1 建立数学模型的基本方法 1.2 系统辨识的定义 1.3 系统辨识的研究目的 1.4 数学模型的分类 1.5 几种常见的数 ...

  6. simulink电机仿真学习 -根据转矩方程搭建速度环矢量模型

    爱自己是一生浪漫的开始.   电机控制中,无论什么观测器,最终都是为了得到电机的电角度跟角速度,这里就通过转矩方程来进行简单的速度环矢量控制模型.   目标:搭建简单的由转矩方程计算角度速度的矢量控制 ...

  7. WOKWI - Arduino/ESP32/树莓派等在线Pico仿真学习平台

    WOKWI 是一个很酷的支持Arduino.ESP32.树莓派Pico在线仿真学习的网站. 软件官网:https://wokwi.com/ WOKWI 官方帮助文档:https://docs.wokw ...

  8. 组态王仿真学习案例之石灰石断烧系统,拥有实时历史曲线,报表

    组态王仿真学习案例之石灰石断烧系统,拥有实时历史曲线,报表,报警等功能,几乎包含所有项目常用功能 非常适合组态王入门学习与提高 ID:8619613023884971

  9. MATLAB/Simulink 通信原理及仿真学习(二)

    文章目录 MATLAB/Simulink 通信原理及仿真学习(二) simulink仿真 常用的Simulink库 1. 信号源模块库 2. 数序运算模块 3. 信号输出模块库 4.仿真搭建 5.搭建 ...

  10. 集成运算放大电路与Multisim仿真学习笔记

    前言 集成电路简称IC(Integrated Circuit) 集成运算放大电路 U−U_-U−​为反相输入端,U+U_+U+​为同向输入端. 集成运放主要技术指标如下: 开环差模电压增益AodA_{ ...

最新文章

  1. WEB开发之如何改善PHP开发方式
  2. V8 Promise源码全面解读
  3. SAP Spartacus的persist focus
  4. prometheus 发送恢复 值_Prometheus监控神器-Rules篇
  5. 在Firefox 58中,WebAssembly组件性能提升了10倍
  6. 搭建本地wordpress
  7. 安装成功后python报错_python安装Graphviz后报错及解决方法
  8. 读《python核心编程2》笔记 1
  9. css中文本超出部分省略号代替
  10. C++:表达式求值(四则运算)实现
  11. python查询IP归属地
  12. 标准解读系列之二:国家车联网产业标准体系完成各板块拼图(附标准下载)
  13. 关于C语言中的绝对值函数
  14. TCP-Drinc:Smart Congestion Control Based on Deep Reinforcement Learning笔记
  15. 下载最新版本火狐浏览器,并且下载geckodriver.exe
  16. PhotonServer中PhotonServer.config文件的配置
  17. 2020年9月程序员工资最新统计
  18. 空洞卷积dilated conv
  19. 多账户的统一登录 实现全过程
  20. python点到线段的最小距离

热门文章

  1. 稳压二极管型号详解(额定功耗3W)
  2. CSDN博客下载器v1.0发布(Windows版本)
  3. javac 编译JavaWeb项目
  4. IDEA代码行数统计工具使用——statistic插件
  5. 背包九讲(例题+代码)
  6. Prescan基础知识
  7. centos 下载tomcat8
  8. 中学数字化实验室建设及配置要求
  9. Dubbo视频教程《基于Dubbo的分布式系统架构视频教程》
  10. secoclient