Instalación:
Para instalar SimPy, use el siguiente comando —
pip install simpy
Conceptos básicos:
La idea principal de ‚Äã‚ÄãSimPy — esta es una función generadora en Python. La diferencia entre una función normal y un generador es que una función normal usa una declaración de retorno, mientras que un generador — yield.
Si una función tiene una declaración de retorno, incluso si se realizan varias llamadas a la función, devolverá el mismo valor. Por ejemplo —
def
func():
Cuando func () se llama en tiempo de ejecución, siempre regresará en la primera instancia de la declaración de retorno, es decir, func () siempre devuelve 1, y la siguiente declaración de retorno nunca se ejecuta.
Sin embargo, cuando Al simular eventos discretos, es posible que necesitemos encontrar el estado del sistema en un momento dado T. Para hacer esto, recuerde el estado del intervalo inmediatamente anterior a T, y luego realice esta simulación y regrese al estado durante T.
Aquí, las funciones del generador son bastante sencillas. Por ejemplo, considere la siguiente función Ahora, la primera vez que se llama a esta función, "da" 1. Sin embargo, la próxima vez que se llame, devolverá 2. En cierto sentido, recuerda lo que regresa después de la última llamada y pasa a la siguiente declaración de salida. Los eventos en SimPy se denominan procesos, que están definidos por sus propias funciones generadoras. Estos procesos tienen lugar dentro del entorno. (Imagínese que el entorno es una caja grande que almacena procesos en su interior). Veamos un ejemplo simple que implica simular un semáforo —
Salir: La luz se vuelve VERDE en 0 La luz se vuelve AMARILLA en 25 La luz se vuelve ROJA en 30 La luz se vuelve VERDE a los 90 La luz se vuelve YEL a los 115 La luz se vuelve ROJA a los 120 En este código, la función generadora Traffic_Light (env) toma una variable de entorno como argumento y simula el semáforo durante un período de tiempo que pasa como un argumento para env.run(). (En realidad, el tiempo en SimPy no tiene unidades. Aunque se puede convertir a horas, minutos o segundos por conveniencia). env.now devuelve el tiempo transcurrido actual. La función env.timeout () es la base de esta simulación, ya que espera que el tiempo transcurrido como argumento se use en el reloj de simulación de la computadora ( no es un reloj en tiempo real) y luego activa la siguiente declaración de rendimiento hasta que el tiempo transcurrido como argumento para env.run () finaliza. env.run () inicia todos los procesos asociados con el entorno al mismo tiempo = 0 . |