SimPy significa “Simulación en Python” y es un marco de simulación de eventos discretos basado en procesos basado en el estándar Python . [1] Permite a los usuarios modelar componentes activos como clientes, vehículos o agentes como funciones generadoras de Python simples . SimPy se publica como software de código abierto bajo la licencia MIT . La primera versión se publicó en diciembre de 2002. [2]
Descripción general
Su despachador de eventos se basa en los generadores de Python y puede utilizarse para redes asincrónicas o para implementar sistemas multiagente (con comunicación simulada y real). Las simulaciones pueden realizarse “lo más rápido posible”, en tiempo real (tiempo real) o recorriendo manualmente los eventos. Aunque en teoría es posible hacer simulaciones continuas con SimPy, carece de características para soportarlas. Sin embargo, para simulaciones con un tamaño de paso fijo donde los procesos no interactúan entre sí o con recursos compartidos, un simple whilebucle es suficiente. [3]
Además, SimPy ofrece distintos tipos de recursos compartidos para simular puntos de congestión que tienen una capacidad limitada, como servidores, mostradores de pago y túneles. En la versión 3.1 y posteriores, SimPy ofrece capacidades de monitoreo para ayudar a recopilar estadísticas sobre procesos y recursos.
SimPy 3.0 requiere Python 3., [4] mientras que SimPy 4.0 requiere Python 3.6+. La distribución de SimPy contiene tutoriales, [5] documentación y ejemplos.
Ejemplo
La siguiente es una simulación de SimPy [6] que muestra un proceso de reloj que imprime el tiempo de simulación actual en cada paso:
>>> import simpy
>>>
>>> def clock ( env , nombre , tick ) :
... while True :
... print ( nombre , env.now ) ... yield env.timeout ( tick ) ... >>> env = simpy.Environment () >>> env.process( clock ( env , ' rápido ' , 0.5 ) ) < Proceso(reloj) objeto en 0x...> >>> env.process (clock(env , ' lento ' , 1 ) ) < Proceso ( reloj ) objeto en 0x ... > >>> env.run ( hasta = 2 ) rápido 0 lento 0 rápido 0.5 lento 1 rápido 1.0 rápido 1.5
Referencias
- ^ Iwata, Curtis; Mavris, Dimitri (1 de enero de 2013). "Entorno de modelado de simulación de eventos discretos orientado a objetos para el mantenimiento de vehículos aeroespaciales y el proceso logístico". Procedia Computer Science . 16 : 187–196. doi : 10.1016/j.procs.2013.01.020 . ISSN 1877-0509.
- ^ Xiong, Xinli; Ma, Linru; Cui, Chao (13 de enero de 2020). "Entorno de simulación de evaluación y optimización para la defensa de objetivos móviles: un enfoque SimPy". Actas de la 9.ª Conferencia internacional sobre seguridad de redes y comunicaciones de 2019. ICCNS '19. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 114–117. doi :10.1145/3371676.3371692. ISBN 978-1-4503-7662-4.
- ^ Olaitan, Oladipupo; Geraghty, John; Joven, Pablo; Dagkakis, Georgios; Pesado, Cathal; Bayer, Martín; Perrin, Jerome; Robin, Sebastián (1 de enero de 2014). "Implementación de ManPy, un paquete de simulación de eventos discretos de código abierto y sin semántica, en un taller de trabajo". Procedimiento CIRP . 25 : 253–260. doi : 10.1016/j.procir.2014.10.036 . ISSN 2212-8271.
- ^ "Historial de SimPy y registro de cambios — Documentación de SimPy 4.0.2.dev1+g2973dbe".
- ^ Zinoviev, Dmitry (febrero de 2018). "Simulación de eventos discretos. ¡Es fácil con SimPy!". PragPub (104): 1–16.
- ^ Scherfke, Stefan (25 de julio de 2014). "Simulación de eventos discretos con SimPy" (PDF) . p. 5. Consultado el 10 de agosto de 2016 .