Articulo de referencia

Simulación de eventos discretos

Una simulación de eventos discretos ( DES ) modela el funcionamiento de un sistema como una secuencia ( discreta ) de eventos en el tiempo. Cada evento ocurre en un instante par...

Una simulación de eventos discretos ( DES ) modela el funcionamiento de un sistema como una secuencia ( discreta ) de eventos en el tiempo. Cada evento ocurre en un instante particular y marca un cambio de estado en el sistema. [ 1 ] Entre eventos consecutivos, se supone que no ocurre ningún cambio en el sistema; por lo tanto, el tiempo de simulación puede saltar directamente al tiempo de ocurrencia del siguiente evento, lo que se denomina progresión del tiempo del siguiente evento .

Además de la progresión temporal del siguiente evento, existe un enfoque alternativo, denominado progresión temporal incremental , en el que el tiempo se divide en pequeños intervalos y el estado del sistema se actualiza según el conjunto de eventos/actividades que ocurren en cada intervalo. [ 2 ] Dado que no es necesario simular cada intervalo, una simulación temporal del siguiente evento suele ser más rápida que una simulación temporal incremental correspondiente.

Ambas formas de DES contrastan con la simulación continua, en la que el estado del sistema cambia continuamente a lo largo del tiempo sobre la base de un conjunto de ecuaciones diferenciales que definen las tasas de cambio de las variables de estado.

Anteriormente, estos tres tipos de simulación también se conocían como: simulación de programación de eventos, simulación de escaneo de actividades y simulación de interacción de procesos. Cabe destacar que existen similitudes entre la implementación de la cola de eventos en la programación de eventos y la cola de programación utilizada en los sistemas operativos.

Ejemplo

Un ejercicio común para aprender a construir simulaciones de eventos discretos es modelar un sistema de colas , como por ejemplo, clientes que llegan a un cajero para ser atendidos. En este ejemplo, los objetos del sistema son cliente y cajero , mientras que los eventos del sistema son llegada del cliente , inicio del servicio y fin del servicio . Cada uno de estos eventos tiene su propia dinámica definida por las siguientes rutinas de eventos:

  1. Cuando se produce un evento de llegada de un cliente , la variable de estado queue-length se incrementa en 1, y si la variable de estado teller-status tiene el valor "available", se programa un evento de seguimiento de inicio de servicio para que ocurra sin demora, de modo que el cliente recién llegado sea atendido inmediatamente.
  2. Cuando se produce un evento de inicio de servicio , la variable de estado teller-status se establece en "ocupado" y se programa un evento de seguimiento de finalización del servicio con un retraso (obtenido a partir del muestreo de una variable aleatoria de tiempo de servicio ).
  3. Cuando se produce un evento de finalización del servicio , la variable de estado queue-length se decrementa en 1 (lo que representa la salida del cliente). Si la variable de estado queue-length sigue siendo mayor que cero, se programa un evento de seguimiento de inicio de servicio sin demora. De lo contrario, la variable de estado teller-status se establece en "disponible".

Las variables aleatorias que deben caracterizarse para modelar este sistema estocásticamente son el tiempo entre llegadas para los eventos recurrentes de llegada de clientes y el tiempo de servicio para los retrasos de los eventos de finalización del servicio .

Componentes

Estado

El estado de un sistema es un conjunto de variables que captura las propiedades más relevantes del sistema que se va a estudiar. La trayectoria del estado a lo largo del tiempo, S(t), se puede representar matemáticamente mediante una función escalón cuyo valor puede cambiar cada vez que ocurre un evento.

Reloj

La simulación debe registrar el tiempo actual de simulación, en las unidades de medida adecuadas para el sistema que se está modelando. En las simulaciones de eventos discretos, a diferencia de las simulaciones continuas, el tiempo avanza a saltos porque los eventos son instantáneos: el reloj avanza hasta el inicio del siguiente evento a medida que avanza la simulación.

Lista de eventos

La simulación mantiene al menos una lista de eventos de simulación. A esta se la denomina a veces conjunto de eventos pendientes, ya que enumera los eventos que están pendientes como resultado de un evento simulado previamente, pero que aún no se han simulado. Un evento se describe mediante el momento en que ocurre y un tipo, que indica el código que se utilizará para simularlo. Es común que el código del evento esté parametrizado; en ese caso, la descripción del evento también contiene parámetros para dicho código. La lista de eventos también se conoce como lista de eventos futuros (FEL) o conjunto de eventos futuros (FES). [ 3 ] [ 4 ] [ 5 ] [ 6 ]

Cuando los eventos son instantáneos, las actividades que se extienden en el tiempo se modelan como secuencias de eventos. Algunos marcos de simulación permiten especificar el tiempo de un evento como un intervalo, indicando la hora de inicio y la hora de finalización de cada evento.

Los motores de simulación de un solo hilo basados ​​en eventos instantáneos tienen un único evento actual. En cambio, los motores de simulación multihilo y los que admiten un modelo de eventos basado en intervalos pueden tener varios eventos actuales. En ambos casos, existen problemas importantes de sincronización entre los eventos actuales.

El conjunto de eventos pendientes se organiza típicamente como una cola de prioridad , ordenada por tiempo de evento. [ 7 ] Es decir, independientemente del orden en que se agregan los eventos al conjunto de eventos, se eliminan en orden estrictamente cronológico. Se han estudiado varias implementaciones de colas de prioridad en el contexto de la simulación de eventos discretos; [ 8 ] las alternativas estudiadas han incluido árboles splay , listas de salto , colas de calendario , [ 9 ] y colas de escalera. [ 10 ] [ 11 ] En máquinas masivamente paralelas , como CPU multinúcleo o de muchos núcleos , el conjunto de eventos pendientes se puede implementar basándose en algoritmos no bloqueantes , para reducir el costo de sincronización entre los hilos concurrentes. [ 12 ] [ 13 ]

Normalmente, los eventos se programan dinámicamente a medida que avanza la simulación. Por ejemplo, en el ejemplo del banco mencionado anteriormente, el evento LLEGADA DEL CLIENTE en el tiempo t, si la COLA DE CLIENTES estuviera vacía y el CAJERO estuviera inactivo, incluiría la creación del evento subsiguiente SALIDA DEL CLIENTE que ocurriría en el tiempo t+s, donde s es un número generado a partir de la distribución TIEMPO DE SERVICIO.

Generadores de números aleatorios

La simulación requiere generar variables aleatorias de diversos tipos, según el modelo del sistema. Esto se logra mediante uno o más generadores de números pseudoaleatorios . El uso de números pseudoaleatorios, en lugar de números aleatorios verdaderos, resulta ventajoso si se necesita repetir la simulación con el mismo comportamiento.

Uno de los problemas de las distribuciones de números aleatorios utilizadas en la simulación de eventos discretos es que las distribuciones de estado estacionario de los tiempos de los eventos pueden no conocerse de antemano. Como resultado, el conjunto inicial de eventos colocados en el conjunto de eventos pendientes no tendrá tiempos de llegada representativos de la distribución de estado estacionario. Este problema se suele resolver mediante el remuestreo del modelo de simulación. Solo se realiza un esfuerzo limitado para asignar tiempos realistas al conjunto inicial de eventos pendientes. Sin embargo, estos eventos programan eventos adicionales y, con el tiempo, la distribución de los tiempos de los eventos se aproxima a su estado estacionario. Esto se denomina remuestreo del modelo de simulación. Al recopilar estadísticas del modelo en ejecución, es importante o bien descartar los eventos que ocurren antes de que se alcance el estado estacionario o bien ejecutar la simulación durante el tiempo suficiente para que el comportamiento de remuestreo sea superado por el comportamiento de estado estacionario. (Este uso del término remuestreo puede contrastarse con su uso tanto en estadística como en informática ).

Estadística

La simulación suele registrar las estadísticas del sistema , que cuantifican los aspectos de interés. En el ejemplo del banco, interesa registrar los tiempos de espera promedio. En un modelo de simulación, las métricas de rendimiento no se derivan analíticamente de distribuciones de probabilidad , sino que se calculan como promedios de diferentes ejecuciones del modelo. Generalmente, se construyen intervalos de confianza para evaluar la calidad de los resultados.

Condición final

Dado que los eventos se inician automáticamente, teóricamente una simulación de eventos discretos podría ejecutarse indefinidamente. Por lo tanto, el diseñador de la simulación debe decidir cuándo finalizará. Las opciones típicas son "en el tiempo t", "después de procesar n eventos" o, de forma más general, "cuando la medida estadística X alcance el valor x".

Enfoque en tres fases

Pidd (1998) propuso un enfoque trifásico para la simulación de eventos discretos. En este enfoque, la primera fase consiste en saltar al siguiente evento cronológico. La segunda fase consiste en ejecutar todos los eventos que ocurren incondicionalmente en ese momento (denominados eventos B). La tercera fase consiste en ejecutar todos los eventos que ocurren condicionalmente en ese momento (denominados eventos C). El enfoque trifásico es un refinamiento del enfoque basado en eventos, en el que los eventos simultáneos se ordenan para optimizar el uso de los recursos informáticos. Este enfoque trifásico se utiliza en varios paquetes de software de simulación comerciales, pero desde la perspectiva del usuario, los detalles del método de simulación subyacente suelen estar ocultos.

Usos comunes

Diagnóstico de problemas de proceso

Los métodos de simulación son especialmente útiles para diagnosticar problemas en entornos complejos. La teoría de las restricciones ilustra la importancia de comprender los cuellos de botella en un sistema. Identificar y eliminar estos cuellos de botella permite mejorar los procesos y el sistema en general. Por ejemplo, en las empresas manufactureras, los cuellos de botella pueden deberse a un exceso de inventario, sobreproducción , variabilidad en los procesos y variabilidad en el enrutamiento o la secuenciación. Al documentar con precisión el sistema mediante un modelo de simulación, es posible obtener una visión global del mismo.

Un modelo funcional de un sistema permite a la gerencia comprender los factores que influyen en su desempeño. Se puede crear una simulación que incluya diversos indicadores de desempeño , como la utilización de la mano de obra, la tasa de entregas a tiempo, la tasa de desperdicio, los ciclos de efectivo, etc.

Solicitudes hospitalarias

Un quirófano suele ser compartido por varias especialidades quirúrgicas. Al comprender mejor la naturaleza de estos procedimientos, es posible aumentar el flujo de pacientes. [ 14 ] Ejemplo: Si una cirugía cardíaca dura en promedio cuatro horas, cambiar la disponibilidad del quirófano de ocho a nueve horas no aumentará el flujo de pacientes. Por otro lado, si una intervención de hernia dura en promedio veinte minutos, proporcionar una hora adicional tampoco generará un aumento en el flujo de pacientes si no se considera la capacidad y el tiempo promedio de espera en la sala de recuperación.

Ideas para mejorar el rendimiento de las pruebas de laboratorio

Muchas ideas para mejorar sistemas se basan en principios sólidos y metodologías probadas ( Lean , Six Sigma , TQM , etc.), pero no logran mejorar el sistema en su conjunto. Un modelo de simulación permite al usuario comprender y probar una idea de mejora del rendimiento en el contexto del sistema global.

Evaluación de las decisiones de inversión de capital

La modelización mediante simulación se utiliza habitualmente para modelar posibles inversiones. Mediante la modelización de inversiones, quienes toman las decisiones pueden tomar decisiones informadas y evaluar posibles alternativas.

simuladores de red

La simulación de eventos discretos se utiliza en redes informáticas para simular nuevos protocolos y diferentes arquitecturas de sistema (distribuidas, jerárquicas, centralizadas, P2P) antes de su implementación real. Es posible definir diferentes métricas de evaluación, como tiempo de servicio, ancho de banda, paquetes perdidos, consumo de recursos, etc.

Véase también

Enfoques de modelado de sistemas:

Técnicas computacionales:

Software:

Disciplinas:

Referencias

  1. Stewart Robinson (2004).Simulación: la práctica del desarrollo y uso de modelos.. Wiley.
  2. Matloff, Norm. "Introducción a la simulación de eventos discretos y al lenguaje SimPy" (PDF) . Consultado el 24 de enero de 2013 .
  3. Park, Hyungwook; Fishwick, Paul A. (2010). "Un marco de aplicación basado en GPU que admite la simulación rápida de eventos discretos" . Simulation . 86 (10): 613– 628. doi : 10.1177/0037549709340781 . ISSN 0037-5497 . S2CID 9731021 .  
  4. Dannenberg, Roger. "Una introducción a la simulación de eventos discretos" . Escuela de Ciencias de la Computación de Carnegie Mellon . Recuperado el 11 de marzo de 2022 .
  5. Güneş, Mesut. "Capítulo 3: Principios generales" (PDF) . Universidad Libre de Berlín . Consultado el 11 de marzo de 2022 .
  6. Damerdji, Halim; Glynn, Peter W. (1998). "Teoría límite para el modelado del rendimiento de algoritmos de conjuntos de eventos futuros" . Management Science . 44 (12): 1709– 1722. doi : 10.1287/mnsc.44.12.1709 . ISSN 0025-1909 . JSTOR 2634704 .  
  7. Douglas W. Jones , ed. Implementaciones del tiempo , Actas de la 18.ª Conferencia de Simulación de Invierno, 1986.
  8. Douglas W. Jones , Comparación empírica de implementaciones de cola de prioridad y conjunto de eventos , Communications of the ACM, 29, abril de 1986, páginas 300–311.
  9. Kah Leong Tan y Li-Jin Thng, Cola de calendario SNOOPy , Actas de la 32.ª Conferencia de Simulación de Invierno, 2000
  10. Dickman, Tom; Gupta, Sounak; Wilsey, Philip A. (2013). "Estructuras de grupos de eventos para PDES en clústeres Beowulf de muchos núcleos". Actas de la conferencia ACM SIGSIM 2013 sobre Principios de simulación discreta avanzada - SIGSIM-PADS '13 . pág. 103. doi : 10.1145/2486092.2486106 . ISBN  9781450319201. S2CID 17572839 . 
  11. Furfaro, Angelo; Sacco, Ludovica (2018). "Cola en escalera adaptativa". Actas de la Conferencia ACM SIGSIM 2018 sobre Principios de Simulación Discreta Avanzada - SIGSIM-PADS '18 . págs. 101–104 . doi : 10.1145/3200921.3200925 . ISBN  9781450350921. S2CID 21699926 . 
  12. Marotta, Romolo; Ianni, Mauro; Pellegrini, Alessandro; Quaglia, Francesco (2017). "Una cola de calendario sin bloqueo resistente a conflictos para plataformas PDES escalables de intercambio total". Actas de la Conferencia ACM SIGSIM 2017 sobre Principios de Simulación Discreta Avanzada - SIGSIM-PADS '17 . págs. 15–26 . doi : 10.1145/3064911.3064926 . hdl : 11573/974295 . ISBN  9781450344890. S2CID 30460497 . 
  13. Lindén, Jonatan; Jonsson, Bengt (2013). "Una cola de prioridad concurrente basada en listas de salto con mínima contención de memoria". Actas de la Conferencia de 2013 sobre Principios de Sistemas Distribuidos - OPODIS 2013. págs. 206–220 . doi : 10.1007/978-3-319-03850-6_15 . ISBN  9783319038490.
  14. John J. Forbus; Daniel Berleant (2022). "Simulación de eventos discretos en entornos sanitarios: una revisión" . Modelling . 3 (4): 417– 433. arXiv : 2211.00061 . doi : 10.3390/modelling3040027 .

Lecturas adicionales

  • Myron H. MacDougall (1987). Simulación de sistemas informáticos: técnicas y herramientas . MIT Press. ISBN 9780262132299.
  • William Delaney; Erminia Vaccari (1988). Modelos dinámicos y simulación de eventos discretos . Dekker INC.
  • Roger W. McHaney (1991). Simulación por computadora: una perspectiva práctica . Academic Press.
  • Michael Pidd (1998). Simulación por computadora en la ciencia de la gestión – cuarta edición . Wiley.
  • A, Alan Pritsker, Jean J. O'Reilly (1999). Simulación con Visual SLAM y AweSim . Wiley.{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace )
  • Averill M. Law; W. David Kelton (2000). Modelado y análisis de simulación – tercera edición . McGraw–Hill.
  • Bernard P. Zeigler; Herbert Praehofer; Tag Gon Kim (2000). Teoría del modelado y la simulación: Integración de sistemas dinámicos complejos continuos y de eventos discretos – segunda edición . Academic Press.
  • Jerry Banks; John Carson; Barry Nelson; David Nicol (2005). Simulación de sistemas de eventos discretos – cuarta edición . Pearson.
  • James J. Nutaro (2010). Creación de software para simulación: teoría y algoritmos, con aplicaciones en C++ . Wiley.