stringtranslate.com

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 particular en el tiempo y marca un cambio de estado en el sistema. [1] Entre eventos consecutivos, no se supone que ocurra 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 del tiempo del siguiente evento, también existe un enfoque alternativo, llamado progresión del tiempo incremental , donde el tiempo se divide en pequeños intervalos de tiempo y el estado del sistema se actualiza de acuerdo con el conjunto de eventos/actividades que suceden en el intervalo de tiempo. [2] Debido a que no es necesario simular todos los intervalos de tiempo, una simulación de tiempo del siguiente evento generalmente puede ejecutarse más rápido que una simulación de tiempo 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.

Ejemplo

Un ejercicio común para aprender a construir simulaciones de eventos discretos es modelar un sistema de colas , como clientes que llegan a un cajero de banco para ser atendidos por un empleado. 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 viene con su propia dinámica definida por las siguientes rutinas de eventos:

  1. Cuando ocurre un evento de llegada del cliente , la variable de estado longitud de la cola se incrementa en 1, y si la variable de estado estado del cajero tiene el valor "disponible", se programa un evento de seguimiento de inicio del servicio sin demora. de modo que el cliente recién llegado sea atendido inmediatamente.
  2. Cuando ocurre un evento de inicio de servicio , la variable de estado estado del cajero se establece en "ocupado" y se programa un evento de seguimiento de fin de servicio con un retraso (que se obtiene al muestrear una variable aleatoria de tiempo de servicio ).
  3. Cuando ocurre un evento de fin de servicio , la longitud de la cola de la variable de estado se reduce en 1 (lo que representa la salida del cliente). Si la longitud de la cola de la variable de estado sigue siendo mayor que cero, se programa un evento de seguimiento de inicio de servicio sin demora. De lo contrario, la variable de estado estado -cajero se establece en "disponible".

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

Componentes

Estado

El estado de un sistema es un conjunto de variables que captura las propiedades más destacadas 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 escalonada cuyo valor puede cambiar cada vez que ocurre un evento.

Reloj

La simulación debe realizar un seguimiento del tiempo de simulación actual, en cualquier unidad de medida que sea adecuada para el sistema que se está modelando. En las simulaciones de eventos discretos, a diferencia de las simulaciones continuas, el tiempo "salta" porque los eventos son instantáneos: el reloj salta a la hora de 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. Esto a veces se denomina conjunto de eventos pendientes porque 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 por el momento en que ocurre y un tipo, indicando el código que se utilizará para simular ese evento. Es común que el código de evento esté parametrizado, en cuyo caso, la descripción del evento también contiene parámetros para el código de evento. [ cita necesaria ] 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, dando la hora de inicio y la hora de finalización de cada evento. [ cita necesaria ]

Los motores de simulación de un solo subproceso basados ​​en eventos instantáneos tienen un solo evento actual. Por el contrario, los motores de simulación multiproceso y los motores de simulación que soportan un modelo de eventos basado en intervalos pueden tener múltiples eventos actuales. En ambos casos, existen importantes problemas de sincronización entre los acontecimientos actuales. [ cita necesaria ]

El conjunto de eventos pendientes normalmente se organiza como una cola de prioridad , ordenada por hora del 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 de distribución , listas de omisión , colas de calendario , [9] y colas de escalera. [10] [11] En máquinas masivamente paralelas , como CPU de múltiples núcleos o de muchos núcleos , el conjunto de eventos pendientes se puede implementar confiando en algoritmos sin bloqueo , para reducir el costo de sincronización entre los subprocesos 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-CLIENTE en el momento t, si la COLA_CLIENTE estuviera vacía y el CAJERO estuviera inactivo, incluiría la creación del evento subsiguiente SALIDA-CLIENTE que ocurriría en el momento t+s, donde s es un número generado a partir de la distribución TIEMPO DE SERVICIO. [ cita necesaria ]

Generadores de números aleatorios

La simulación necesita generar variables aleatorias de varios tipos, dependiendo del 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 es una ventaja en caso de que sea necesario volver a ejecutar una simulación con exactamente el mismo comportamiento.

Uno de los problemas con las distribuciones de números aleatorios utilizadas en la simulación de eventos discretos es que las distribuciones en 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 en estado estacionario. Este problema normalmente se resuelve arrancando el modelo de simulación. Sólo se hace un esfuerzo limitado para asignar tiempos realistas al conjunto inicial de eventos pendientes. Estos eventos, sin embargo, programan eventos adicionales y, con el tiempo, la distribución de los tiempos de los eventos se acerca a su estado estable. A esto se le llama arrancar el modelo de simulación. Al recopilar estadísticas del modelo en ejecución, es importante ignorar los eventos que ocurren antes de que se alcance el estado estable o ejecutar la simulación durante el tiempo suficiente para que el comportamiento de arranque sea superado por el comportamiento de estado estable. (Este uso del término bootstrapping puede contrastarse con su uso tanto en estadística como en informática ).

Estadísticas

La simulación normalmente realiza un seguimiento de las estadísticas del sistema , que cuantifican los aspectos de interés. En el ejemplo del banco, resulta interesante realizar un seguimiento de los tiempos medios de espera. En un modelo de simulación, las métricas de desempeño no se derivan analíticamente de distribuciones de probabilidad , sino más bien como promedios sobre replicaciones , es decir, diferentes ejecuciones del modelo. Los intervalos de confianza generalmente se construyen para ayudar a evaluar la calidad del resultado.

Condición final

Debido a que los eventos se inician, en teoría una simulación de eventos discretos podría ejecutarse para siempre. Por tanto, el diseñador de la simulación debe decidir cuándo finalizará la simulación. Las opciones típicas son "en el momento t" o "después de procesar n número de eventos" o, más generalmente, "cuando la medida estadística X alcanza el valor x".

Enfoque de tres fases

Pidd (1998) ha propuesto el enfoque de tres fases para la simulación de eventos discretos. En este enfoque, la primera fase es saltar al siguiente evento cronológico. La segunda fase es ejecutar todos los eventos que ocurren incondicionalmente en ese momento (estos se llaman eventos B). La tercera fase es ejecutar todos los eventos que ocurren condicionalmente en ese momento (estos se llaman eventos C). El enfoque de tres fases es un refinamiento del enfoque basado en eventos en el que los eventos simultáneos se ordenan para hacer el uso más eficiente de los recursos informáticos. El enfoque de tres fases es utilizado por varios paquetes de software de simulación comerciales, pero desde el punto de vista del usuario, los detalles del método de simulación subyacente generalmente están ocultos.

Usos comunes

Diagnóstico de problemas de proceso

Los enfoques de simulación están particularmente bien equipados para ayudar a los usuarios a diagnosticar problemas en entornos complejos. La teoría de las restricciones ilustra la importancia de comprender los cuellos de botella de un sistema. Identificar y eliminar cuellos de botella permite mejorar los procesos y el sistema en general. Por ejemplo, en las empresas manufactureras, los cuellos de botella pueden ser creados por exceso de inventario, sobreproducción , variabilidad en los procesos y variabilidad en las rutas o secuencias. Al documentar con precisión el sistema con la ayuda de un modelo de simulación, es posible obtener una vista panorámica de todo el sistema.

Un modelo funcional de un sistema permite a la gerencia comprender los factores que impulsan el desempeño. Se puede crear una simulación para incluir cualquier número de indicadores de desempeño , como utilización de trabajadores, tasa de entrega a tiempo, tasa de desperdicio, ciclos de efectivo, etc.

Aplicaciones hospitalarias

Un quirófano generalmente es compartido entre varias disciplinas quirúrgicas. Al comprender mejor la naturaleza de estos procedimientos, es posible aumentar el número de pacientes. [14] Ejemplo: si una cirugía cardíaca dura un promedio de cuatro horas, cambiar el horario del quirófano de ocho horas disponibles a nueve no aumentará el rendimiento de los pacientes. Por otro lado, si un procedimiento de hernia dura un promedio de veinte minutos, es posible que proporcionar una hora adicional tampoco genere un mayor rendimiento si no se consideran la capacidad y el tiempo promedio que se pasa en la sala de recuperación.

Ideas para mejorar el rendimiento de las pruebas de laboratorio

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

Evaluación de decisiones de inversión de capital

El modelado de simulación se utiliza comúnmente para modelar inversiones potenciales. A través del modelado de inversiones, los tomadores de decisiones pueden tomar decisiones informadas y evaluar alternativas potenciales.

Simuladores de red

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

Ver 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, norma. "Introducción a la simulación de eventos discretos y el lenguaje SimPy" (PDF) . Consultado el 24 de enero de 2013 .
  3. ^ Parque, Hyungwook; Fishwick, Paul A. (2010). "Un marco de aplicaciones basado en GPU que admite una simulación rápida de eventos discretos". Simulación . 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 Carnegie Mellon . Consultado 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 de límites para el modelado de rendimiento de algoritmos de conjuntos de eventos futuros". Ciencias de la gestión . 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 conjuntos de eventos y colas de prioridad, Comunicaciones de la ACM, 29 de abril de 1986, páginas 300–311.
  9. ^ Kah Leong Tan y Li-Jin Thng, SNOOPy Calendar Queue, 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 . pag. 103. doi : 10.1145/2486092.2486106. ISBN 9781450319201. S2CID  17572839.
  11. ^ Furfaro, Ángel; Sacco, Ludovica (2018). "Cola de escalera adaptable". 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, Alejandro; Quaglia, Francesco (2017). "Una cola de calendario sin bloqueos y resistente a conflictos para plataformas PDES escalables que comparten todo". 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 simultánea basada en listas de omisión con contención de memoria mínima". 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". Modelado . 3 (4): 417–433. arXiv : 2211.00061 . doi : 10.3390/modelado3040027 .

Otras lecturas