Saltar al contenido principal
LibreTexts Español

5.3: Avance de tiempo y listas de eventos

  • Page ID
    80933
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    En esta sección se analiza cómo la simulación avanza a través del tiempo programando las ocurrencias de eventos y procesando cada una de ellas a su vez. En general, se simula un modelo como una secuencia ordenada por tiempo de las ocurrencias de los eventos. Las ocurrencias de eventos se procesan una a la vez. Cada evento cambia el valor de una o más variables de estado y puede programar otros eventos. Este enfoque de simulación se ilustra mediante una posible simulación de las dos estaciones de trabajo en el modelo de secuencia.

    La lista de eventos es la lista ordenada por tiempo de todas las ocurrencias de eventos programadas a la hora actual y en el futuro. La simulación procede eliminando la primera ocurrencia de evento en la lista y procesándola. Este procesamiento puede dar lugar a que una o más ocurrencias de eventos se agreguen a la lista para procesarse en el momento actual o en el futuro. Tenga en cuenta que solo se elimina de la lista una ocurrencia de evento a la vez. Todos los demás permanecen en la lista. Después del procesamiento de la ocurrencia del evento, la lista consistirá en las ocurrencias de eventos que ya están en la lista cuando se eliminó la primera ocurrencia de evento más las agregadas al procesar esta ocurrencia de evento.

    Para el modelo de dos estaciones de trabajo, el motor de simulación debe tratar seis eventos que cambien los valores de las variables de estado. Cada uno de estos eventos debe ser programado a tiempo y procesado. Estos eventos son la llegada de una entidad (parte) a cada estación así como el inicio y fin del procesamiento.

    En cualquier momento, la lista de eventos podría contener las siguientes ocurrencias de eventos en momentos futuros:

    • La entidad llega a la estación de trabajo Un evento.
    • Entidad finaliza el servicio en estación de trabajo Un evento.
    • Entidad finaliza el servicio en estación de trabajo B evento.

    Otros eventos pueden ocurrir sólo en el mismo punto en el tiempo que otro evento.

    • El inicio del servicio en la estación de trabajo Un evento que puede ocurrir cuando una entidad llega a la estación de trabajo A (llega al evento de estación de trabajo A) o cuando una entidad completa el procesamiento en la estación de trabajo A (finaliza el servicio en el evento de estación de trabajo A)
    • La entidad llega a la estación de trabajo B evento que ocurre cada vez que una entidad termina el servicio en la estación de trabajo A evento ocurre. (Recordemos que no hay retraso de tiempo para moverse entre estaciones de trabajo).
    • El evento de inicio del servicio en la estación de trabajo B que puede ocurrir cuando una entidad llega a la estación de trabajo B (llega al evento de estación de trabajo B) o cuando una entidad completa el procesamiento en la estación de trabajo B (finaliza el servicio en el evento de estación de trabajo B

    Para ilustrar, considere una posibilidad para la lista de eventos al inicio de la simulación.

    Tiempo de simulación actual: 0

    Siguiente Tiempo de simulación = Tiempo de ocurrencia del primer evento en la lista = 0.0

    \ [
    \ begin {array} {l|ll}
    \ text {Evento} &\ text {Tiempo de ocurrencia} &\ text {ID de entidad}\\
    \ hline\ text {Entity Llega a A} & 0.0 & 1
    \ end {array}
    \ nonumber\]

    La simulación comenzará con la llegada de la primera entidad en el tiempo 0.

    Así, la primera tarea del motor de simulación es procesar el evento Entity Llega a A en el tiempo 0. Esta tarea consiste en eliminar el evento Entity Arrives a A de la lista y realizar las acciones asociadas al evento: programar el siguiente evento Entity Llega a A y programar el evento Entity Start Service, si la estación de trabajo A está inactiva (que es inicialmente). Después de que la entidad llegue a Un evento se procesa la lista de eventos es la siguiente, suponiendo que la siguiente llegada a la estación de trabajo A es en el momento 5.0:

    Tiempo de simulación actual: 0
    Siguiente Tiempo de simulación = Tiempo de ocurrencia del primer evento en la lista = 0.0

    \ [
    \ begin {array} {l|ll}
    \ text {Evento} &\ text {Tiempo de ocurrencia} &\ text {ID de entidad}\\
    \ hline\ text {Iniciar servicio en A} & 0.0 & 1\
    \ texto {La entidad llega a A} & 5.0 y 2
    \ end {array}
    \ nonumber\]

    La entidad con número de identificación 2 llegará a la hora 5.0 y el Fin de Servicio a la estación de trabajo A para la entidad con número de identificación 1 ocurrirá en el momento 8.0.

    El motor de simulación avanza el tiempo hasta la siguiente ocurrencia del evento en el tiempo 5.0 y procesa el evento Entity Llega a A para la entidad con ID 2. Esto significa que el evento Entity Llega a A se eliminará de la lista y el evento End Service at A permanecerá en la lista.

    A la hora 5.0, el recurso de la estación de trabajo A está en el estado ocupado. Así, la entidad con ID 2 ingresa a la cola para el recurso de estación de trabajo A. No se coloca ninguna entrada para esta entidad en la lista de eventos. Además, el procesamiento de este evento provoca que el evento Entity Llega a A sea programado en el momento 32.5 para la entidad con ID 5. Esto significa que la siguiente ocurrencia del evento Entidad Llega a A se coloca en el calendario de eventos en el momento 32.5.

    Así, después de procesar la entidad Llega a la ocurrencia del evento A en el momento 5.0, la lista de eventos consiste en el evento End Service at A que anteriormente estaba en la lista más el siguiente evento Entity Llega a A que fue recién colocado en la lista como se muestra a continuación.

    Tiempo de simulación actual: 5.0
    Siguiente Tiempo de simulación = Tiempo de ocurrencia del primer evento en la lista = 8.0

    \ [
    \ begin {array} {l|cl}
    \ text {Evento} &\ text {Tiempo de ocurrencia} &\ text {ID de entidad}\\
    \ hline\ text {Finalizar servicio en A} & 8.0 & 1\
    \ texto {Entidad llega a A} & 32.5 & 3
    \ end {array}
    \ nonumber\]

    A continuación, el motor de simulación avanza el tiempo a la 8.0 para procesar el fin del servicio en el evento A para la entidad 1. La entidad con número de identificación 1 llegará a la estación de trabajo B en el momento 8.0 ya que no hay retraso de movimiento. La entidad con ID número 2 dejará la cola del recurso de estación de trabajo A y comenzará a procesar usando la estación de trabajo Un recurso que acaba de quedar inactivo. Así, el recurso de estación de trabajo A se vuelve ocupado.

    Por lo tanto, después de procesar el evento End Service at A, el evento Entity Arrives a A permanece en la lista y se agrega el evento Entity Arrives a B así como el evento Start Service at A.

    Tiempo de simulación actual: 8.0
    Siguiente Tiempo de simulación = Tiempo de ocurrencia del primer evento en la lista = 8.0

    \ [
    \ begin {array} {l|cl}
    \ text {Evento} &\ text {Tiempo de ocurrencia} &\ text {ID de entidad}\
    \\ hline\ text {La entidad llega a B} & 8.0 & 1\
    \ texto {Iniciar servicio en A} & 8.0 y 2\
    \ texto {La entidad llega a A } & 32.5 & 3
    \ end {array}
    \ nonumber\]

    Los motores de simulación suelen utilizar la estrategia de que todo el procesamiento posible de una entidad en el momento de simulación actual se realizará antes de cualquier procesamiento de cualquier otra entidad. Otra forma de decir esto es que la entidad procederá en la medida de lo posible hasta ser obstruida por un retraso de tiempo o esperando un recurso actualmente no disponible. Esto implica que los nuevos eventos en el momento de simulación actual para esta entidad se colocan primero en la lista de eventos. Así, en la lista anterior, la entidad llega al evento B para la entidad con ID 1 en el momento 8.0 precede al servicio de inicio en evento A para la entidad con ID número 2.

    El resto de la simulación se procesa de manera similar.


    This page titled 5.3: Avance de tiempo y listas de eventos is shared under a CC BY-NC-SA license and was authored, remixed, and/or curated by Charles R. Standridge.