Skip to main content

SimPype 是一个基于 Simpy 的仿真框架,它依赖于资源和管道的概念。

项目描述

https://travis-ci.org/Mallets/SimPype.svg?branch=master https://codecov.io/gh/Mallets/SimPype/branch/master/graph/badge.svg https://badge.fury.io/py/simpype.svg https://readthedocs.org/projects/simpype/badge/?version=latest <figure class="align-center" style="width: 80%"> https://raw.githubusercontent.com/Mallets/SimPype/master/docs/_static/simpype_transparent.png </figure>

概述

SimPype 是一个基于SimPy的仿真框架,它依赖于资源和管道的概念。SimPype 将资源与其队列(管道)分离,从而可以将多种队列技术用于同一资源。SimPype 还允许创建可在多个模拟中重复使用的自定义资源和管道模型。

SimPype 仅支持 Python >= 3.6。不支持以前版本的 Python。安装 SimPype 的最快方法是通过pip3

>>> pip3 install simpype

SimPype 自动安装 SimPy 作为依赖项。

SimPype 文档可以在ReadTheDocs上找到,而源代码存储库可以在GitHub上找到。

范围

SimPype 是针对排队规则和资源占用是模拟系统的关键部分的场景量身定制的。人们在邮局、超市、洗车场、自助餐厅等处排队就是这种场景的例子。

概念

一个 SimPype 仿真环境包括至少一个生成器和一个资源,它们通过管道连接。生成器生成具有给定到达时间的消息这些消息首先在资源管道中排队,然后由资源根据服务时间进行处理。

一个生成器和一个资源的简单场景可以在 python3 控制台中定义如下:

>>> import simpype
>>> import random
>>> sim = simpype.Simulation(id = 'overview')
>>> gen0 = sim.add_generator(id = 'gen0')
>>> gen0.random['arrival'] = {0: lambda: random.expovariate(1.0)}
>>> res0 = sim.add_resource(id = 'res0')
>>> res0.random['service'] = {0: lambda: random.expovariate(2.0)}
>>> p0 = sim.add_pipeline(gen0, res0)
>>> sim.run(until = 10)

仿真步骤可总结如下:

  1. 生成器等待一个随机到达时间并生成一条消息;

  2. 生成器将消息发送到资源;

  3. 消息在资源的管道中排队;

  4. 当资源可用时,消息从管道中出列;

  5. 消息由资源提供;

  6. 消息在随机服务时间后离开资源并发送到下一个资源(如果有) - 转到步骤 3。

可以根据需要自定义任何模拟步骤。按照教程学习如何自定义您的模拟环境。

SimPype 还为您的模拟提供了一个内置的日志记录系统,该系统会自动记录模拟步骤 3、4 和 5。内置系统以整洁的格式生成日志,其中每个变量都保存在自己的列中,每个观察结果都是保存在自己的行中:

>>> timestamp,message,seq_num,resource,event
... 0.000000000,gen0,0,res0,pipe.in
... 0.000000000,gen0,0,res0,pipe.out
... 0.030509067,gen0,0,res0,resource.serve
... 4.283987797,gen0,1,res0,pipe.in
... 4.283987797,gen0,1,res0,pipe.out
... 4.296562508,gen0,1,res0,resource.serve
... 4.944812881,gen0,2,res0,pipe.in
... 4.944812881,gen0,2,res0,pipe.out
... 5.128244999,gen0,2,res0,resource.serve
... 6.402898951,gen0,3,res0,pipe.in
... 6.402898951,gen0,3,res0,pipe.out
... 7.044417615,gen0,3,res0,resource.serve
... 7.561061272,gen0,4,res0,pipe.in
... 7.561061272,gen0,4,res0,pipe.out
... 7.729431178,gen0,5,res0,pipe.in
... 8.129979622,gen0,4,res0,resource.serve
... 8.129979622,gen0,5,res0,pipe.out
... 8.171601538,gen0,6,res0,pipe.in
... 8.886733703,gen0,5,res0,resource.serve
... 8.886733703,gen0,6,res0,pipe.out
... 8.949540209,gen0,6,res0,resource.serve

这种数据格式非常适合由pandastidyverse等数据操作工具直接处理。SimPype 不提供任何用于解析数据的工具。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

simpype-1.1.0.tar.gz (18.7 kB 查看哈希

已上传 source