SimPy es un proyecto con licencia de Software Libre escrito en Python para desarrollar simulación basada en eventos discretos con el enfoque de interacción de procesos.
SimPy permite la simulación del comportamiento del sistema a través del tiempo especificando
las entidades, sus procesos y las interacciones entre ellas.
SimPy contiene distintas clases para su uso en la simulación de sistemas entre otros: manejar del
tiempo basado en eventos discretos, recolectar estadísticos relacionados con la simulación, simular
sistemas de colas. Además permite realizar trazas de la simulación, simulación en tiempo real,
despliegue de histogramas, etc.
SimPy abstrae el sistema en entidades que interactúan entre sí. En forma general, existen dos
tipos de entidades: las entidades activas y las entidades pasivas.- Las entidades activas son las que se mueven en el sistema como: clientes, mensajes, vehículos.(Estas entidades en SimPy debe ser heredadas de la clase process
- Las entidades pasivas llamadas Facilities al contrario de las entidades activas no se mueven en el sistema (por ejemplo: servidores, taquillas, tanques, etc.) y están en el sistema esperando interactuar con las entidades activas. SimPy trae consigo la implantación de algunas facilities con comportamiento definido.
- Instrucciones básicas de simulación: Tiene todas las instrucciones de la simulación, como por ejemplo: iniciar la simulación, detener la simulación, etc
- Instrucciones de entidades activas: Estas instrucciones son las que permiten intervenir en el comportamiento del seguimiento el proceso una entidad activa, implícitamente planifican
- Instrucciones para las facililies: Instrucciones básicas para la interacción de las entidade activas con las facilities, como por ejemplo: solicitar un recurso a una facility.
- Instrucciones para el monitoreo: Estas instrucciones permiten recolectar y calcular estadísticos de la simulación, por ejemplo: calcular el promedio de entidaes activas que tuvieron que entrar en una cola
- Instrucciones para el manejo de eventos: Estas instrucciones permiten interactuar directamente con la lista de eventos discretos, como por ejemplo: agregar un evento a la lista.
eventos en la lista de eventos relacionados con la entidad, como por ejemplo: iniciar o reiniciar
(activar), detener temporalmente (hacerlo esperar) o detener (interrumpir) definitivamente un
procesolos procesos definen un conjunto de actividades a realizar por una entidad del sistema. Un
sistema en SimPy se puede ver como un conjunto entidades llevando a cabo sus procesos a través del
tiempo. El implementador se enfoca en definir esos procesos y la interacción de las
entidades en el sistema.
Facilities
Las facilities son clases preconstruidas que permiten al programador emular el comportamiento
de servidores, tanques, y otras entidades pasivas en la simulación. Ellas tienen: métodos, recolectoresde estadísticas y estructuras de colas para la simulación.Las facilities representan objetos que frecuentemente se encuentran en problemas de simulación
de línea de espera (colas) e inventario.
SimPy tiene 3 tipos de facilities (Recursos, Niveles, Almacenes) los cuales son:
Recurso
Los recursos son facilities que poseen una o más unidades de un mismo tipo. Las entidades
activas pueden pedir sólo una de esas unidades a la vez, ocuparla el tiempo que la necesite y luegoliberarla. La cantidad de unidades que almacena un recurso es definida en la creación del recurso.
Niveles
Los niveles son facilities que poseen una o más unidades de un mismo tipo. Las entidades
activas pueden pedir varias unidades simultáneamente, ocuparlas el tiempo que sea necesario y luegoliberarlas. La cantidad de unidades que almacena (capacidad) un nivel es definida en la creación del
mismo. Las entidades pueden solicitar o colocar unidades en el nivel. Un ejemplo de nivel sería un
tanque de gasolina, donde las entidades son carros (consumidores de unidades del nivel) y gandolas
(consumidoras/proveedoras de unidades del nivel).
Almacenes
Los almacenes son facilities que poseen una o más unidades de un distintos tipo. Las entidades
activas pueden pedir varias unidades de distinto tipo simultáneamente, ocuparlas el tiempo que seanecesario y luego liberarlas. La cantidad de unidades y tipos que almacena (capacidades por tipo) un almacén es definida en la creación del mismo. Las entidades pueden solicitar o colocar unidades en el
almacén. Un ejemplo de almacén a sería un tienda por departamentos, donde las entidades son cliente
(consumidores de unidades del almacén) y proveedores de unidades del almacén.
Monitores
Un monitor es una clase encargada de recolectar observaciones de cambios de variables en el
tiempo de interés (por ejemplo: cantidad de clientes en el sistema) con el fin de tomar medidasestadísticas de la simulación.La clase Monitor tiene un método odserve (x) la cual almacena el valor observado x en un instante dado, para luego poder obtener indicadores estadisticos acerca de valores observados en diferentes instantes del tiempo.
Los métodos más importantes del monitor son:
- mean(): retorna promedio de los valores observados
- var(): retorna varianza muestral de los valores observados
- count(): retorna cantidad de valores observados
- yseries(): retorna arreglo de los valores observados
- tseries(): retorna los tiempo en los cuales se observó cada valor según el reloj de simulación
- timeAverage(): retorna el promedio pesado por el tiempo de los valores observados.
Muy bien Flora: ¡Ahora a usarlo!
ResponderEliminarMuchas gracias por tu aporte! Trataré de implementarlo en un trabajo práctico sobre simulación basada en eventos que tengo que hacer en la universidad.
ResponderEliminarConsulta, saben de algún curso online de Simpy. Por favor quedo atento a sus comentarios
ResponderEliminar