SimPy

来自维基百科,自由的百科全书

SimPy

SimPy是“Simulation in Python”的缩写,意为“在Python中模拟”,是一个基于标准Python的过程型离散事件模拟框架[1]。它使用户可以将活动组件(如客户、车辆或代理)建模为简单的Python 生成器函数。SimPy作为开源软体MIT许可证下,第一个版本于2002年12月发布[2]

事实速览 原作者, 开发者 ...
SimPy,一款基于Python的离散事件模拟框架
Thumb
原作者Klaus G. Müller, Tony Vignaux
开发者Ontje Lünsdorf, Stefan Scherfke
首次发布2002年9月17日 (2002-09-17)
当前版本
  • 3.0.11(2018年11月16日)
编辑维基数据链接
源代码库 编辑维基数据链接
编程语言Python
操作系统Cross-platform
类型Discrete event simulation
许可协议MIT
网站simpy.readthedocs.org
关闭

概述

SimPy的事件调度器是基于Python的生成器,这使得它可以应用于异步网络或实现多代理系统(包括模拟和真实的通信)。模拟可以以“尽可能快”的方式进行,也可以实时进行(即按照实际时间),或者可以手动一步步地进行。尽管理论上SimPy可以进行连续模拟,但它并未提供足够的支援。然而,对于那些具有固定步长、过程之间没有互动或与共享资源交互的模拟,一个简单的while回圈就足以应对[3]

此外,SimPy提供了不同类型的共享资源,以模拟具有有限容量的拥塞点,如服务器、结帐柜台和隧道。在3.1版本及以上,SimPy提供了监控功能,以协助收集有关过程和资源的统计资讯。

有关于版本需求,SimPy 3.0需要Python 3[4],而SimPy 4.0需要Python 3.6+。SimPy发行版提供教程[5]、文件和范例供使用者学习。

范例

实作一个时钟[6],该时钟在每个步骤打印目前模拟时间:

>>> import simpy
>>>
>>> def clock(env, name, tick):
...     while True:
...         print(name, env.now)
...         yield env.timeout(tick)
...
>>> env = simpy.Environment()
>>> env.process(clock(env, 'fast', 0.5))
<Process(clock) object at 0x...>
>>> env.process(clock(env, 'slow', 1))
<Process(clock) object at 0x...>
>>> env.run(until=2)
fast 0
slow 0 
fast 0.5 
slow 1 
fast 1.0 
fast 1.5

参考资料

注解

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.