SimPy离散事件模拟框架如何应用于汽车充电排队场景模拟?
摘要:一、背景知识 人们在生产活动和社会活动中,经常遇到一类复杂的系统,这类系统中有许多事件时而出现,时而消失,时而动作,时而停止,而启动和停止都发生在一些离散的时刻,并带有一定的随机性。例如,港口中船舶的停靠码头、生产线上机床的启停、电话的接通
目录一、背景知识二、SimPy 讲解2.1 SimPy 概述2.2 基本概念2.3 一个汽车开开停停的例子2.4 在走走停停过程中增加充电过程(过程交互)2.5 共享资源三、后续参考链接附录二
一、背景知识
人们在生产活动和社会活动中,经常遇到一类复杂的系统,这类系统中有许多事件时而出现,时而消失,时而动作,时而停止,而启动和停止都发生在一些离散的时刻,并带有一定的随机性。例如,港口中船舶的停靠码头、生产线上机床的启停、电话的接通和断开、计算机系统中某项作业的进行和退出,凡此种种,都带有上述特点,这类系统叫做离散事件动态系统(DEDS)。随着生产和科技的日益发展,以及人类社会交往的日趋频繁,这类系统的数量和种类也越来越多。
设计此类系统时,往往需要仿真来评估算法或方案的性能,常见的软件有:
商业软件:
名字
简介
图示
AnyLogic
通用多方法建模工具。结合了基于代理、系统动力学和离散事件建模。
Arena
一种离散事件模拟程序,也允许对连续过程进行建模。
Care pathway simulator
专门为服务行业(如医疗保健)设计的离散事件模拟程序。
Enterprise Dynamics
一个模拟软件平台,用于模拟和分析几乎任何制造、材料处理和物流挑战。
ExtendSim
通用仿真软件包
DELMIA
3DEXPERIENCE 平台的一部分
FlexSim
拖拖拉拉做离散事件模拟,3D
GoldSim
将动态离散事件模拟嵌入到 Monte Carlo 框架
GPSS
离散事件模拟语言。供应商可以提供不同的实现
Micro Saint Sharp
通用离散事件建模工具,使用拖放界面和C#编程语言
MS4 Modeling Environment
基于离散事件和混合模型的通用DEVS方法的软件环境
Plant Simulation
能够模拟和优化生产系统和流程的软件
ProModel AutoCAD® Edition
在数字孪生Autodesk®工具集(AutoCAD®和Inventor®)中快速构建空间精确的布局和过程仿真模型。
Simcad Pro
实时变化,零代码有界面,支持 VR
SimEvents
向MATLAB / Simulink环境添加离散事件仿真。
SIMUL8
基于对象的仿真软件
VisualSim
基于时序、功耗和功能的电子、嵌入式软件和半导体的基于模型的系统架构探索
WITNESS
可在桌面和云端使用 VR 进行离散事件模拟
开源软件:
名字
语言
类型
License
简介
JaamSim
Java
App
Apasche 2.0
JaamSim是一款自由开源的离散事件模拟软件,包括拖放式用户界面、交互式3D图形、输入和输出处理以及模型开发工具和编辑器。
CPN Tools
BETA
App
GPLv2
用于分析所有类型应用中的物流/排队模型的工具。
DESMO-J
Java
Lib
Apasche 2.0
Java离散事件模拟框架,支持混合事件/过程模型,并提供2D和3D动画。
Facsimile
Scala
Lib
LGPLv3
离散事件模拟/仿真库。
PowerDEVS
C++
App
AFL, GPLv2
基于DEVS形式的混合系统建模和仿真集成工具。
Ptolemy II
Java
Lib
BSD
支持面向角色设计实验的软件框架。
SIM.JS
JavaScript
Lib
LGPL
JS是一个完全用JavaScript编写的通用离散事件模拟库。在浏览器中运行,支持基于GUI的建模工具。
SimPy
Python
Lib
MIT
SimPy是基于标准Python的基于过程的离散事件模拟框架。
Simula
Simula
Language
一种专门为模拟而设计的编程语言。
SystemC
C++
Lib
Apache 2.0
提供事件驱动模拟内核。
注:软件示意图见《附录二》
二、SimPy 讲解
2.1 SimPy 概述
1)SimPy 是 python 的离散事件模拟框架。
2)SimPy 中的流程由 Python 生成器函数定义。例如,可以用于为客户、车辆或代理等活动组件建模。SimPy 还提供各种类型的共享资源来模拟容量有限的拥塞点(如服务器、结账柜台和隧道)。
3)模拟可以要多快有多快、实时、或者手动步进三种方式进行。
3)尽管理论上 SimPy 可以用于连续模拟,但它没有任何功能来帮助您实现这一点。
