simulacion discreta

21.2 Ejemplo de una simulación de eventos discretos Antes de proceder con los detalles del modelado de la simulación, s

Views 119 Downloads 100 File size 3MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

21.2

Ejemplo de una simulación de eventos discretos Antes de proceder con los detalles del modelado de la simulación, será útil trabajar en un ejemplo de simulación simple para ilustrar algunos de los conceptos básicos de la simulación de eventos discretos. El modelo elegido como ejemplo inicial es un sistema de colas de un solo servidor. Los clientes llegan a este sistema a partir de alguna población y entran al servicio de inmediato si el servidor está desocupado o se unen a la línea de espera (cola) si el servidor está ocupado. Ejemplos de esta clase de sistemas son una peluquería con un solo peluquero, una pequeña dulcería con un solo cajero y un solo expendedor de boletos en una terminal aérea. El mismo modelo se estudió en el capítulo 20 junto con la teoría de colas. En ese capítulo, se usó un modelo analítico para determinar las distintas características de operación del sistema. Sin embargo, se tuvo que hacer varias suposiciones restrictivas para usar la teoría de colas. En particular, cuando se estudió un sistema M/MII, se supuso que tanto los tiempos entre llegadas como los tiempos de servicio tenían una distribución exponencial. En muchas situaciones, es posible que estas suposiciones no sean apropiadas. Por ejemplo, las llegadas a un mostrador de una aerolínea por lo general tienden a ocurrir en grupos, debido a factores como las llegadas de autobuses de transbordo y vuelos de conexión. Para este sistema, se debe usar una distribución de tiempos de llegada, lo que implica que ya no es factible el modelo analítico a partir de la teoría de colas. Con la simulación, se podría usar cualquier distribución de tiempos entre llegadas y tiempos de servicio, dando así mucha más flexibilidad al proceso de solución. Para simular un sistema de colas, primero hay que describirlo. Para este sistema de un solo servidor, se supone que las llegadas se extraen de una población demandante infinita. Hay una capacidad ilimitada de la sala de espera, y los clientes serán atendidos en el orden que llegan; es decir, primero en llegar, primero en ser atendido (FCFS,jirst come.first served). Se supone además que las llegadas ocurren una a la vez en un modo aleatorio, con la distribución de tiempos entre llegadas como se especifica en la tabla l. Finalmente se atienden a todos, con la distribución de tiempos de servicio mostrada en la tabla 2. Se supone también que los tiempos de servicio son aleatorios. Después del servicio, los clientes vuelven a la población demandante. Este sistema de lineas de espera se puede representar como se ilustra en la figura 1.

2 1 •2

EjemplO de una simu ación de eventos discretos

1147

TABLA

1

TABLA

2

Distribución de fiempo entre llegadas

Distribución de fiempo de servicio

TIempo entre llegadas (minutos) Probabilidad

TIempo de servicio (minutos) Probabilidad

1 2

.20 .30

1 2

.35 AO

3 4

.35 .15

3

.25

Antes de explicar los detalles de la simulación, es necesario definir el estado de este tema y entender los conceptos de eventos y tiempo de reloj dentro de una simulación. este ejemplo, se usan las siguientes variables para definir el estado del sistema: (1) el mero de clientes en el sistema; (2) el status del servidor -es decir, si el servidor está pado o disponible, y (3) el tiempo de la siguiente llegada. El concepto de eventos tiene una relación estrecha con el estado del sistema. Un e, to se define como una situación que causa que cambie de forma instantánea el estado sistema. En el modelo de colas de un solo servidor, sólo hay dos eventos posibles que bian el estado del sistema: una llegada al sistema y una salida al completar el servicio. 7 la simulación, estos acontecimientos se programan para que tengan lugar en ciertos p tos del tiempo. Toda la información acerca de ellos se mantiene en una lista llamada . de eventos. En esta lista, se mantiene un registro del tipo de eventos programados y, lo es más importante, el tiempo al que está programado que estos eventos tengan lugar. tiempo en una simulación se mantiene por medio de una variable llamada tiempo de loj. El concepto de tiempo de reloj será evidente a medida que se solucione el ejemplo. Esta simulación se empieza con un sistema vacío y se supone que el primer acont miento, una llegada, tiene lugar en el tiempo de reloj O. Esta llegada encuentra al servi disponible y es atendida de inmediato. Las llegadas en otros puntos del tiempo podrían ercontrar al servidor desocupado u ocupado. Si el servidor está disponible, se atiende cliente. Si el servidor está ocupado, el cliente se agrega a la línea de espera. Estas acci nes se pueden resumir como se muestra en la figura 2. A continuación, se programa el tiempo de partida del primer cliente. Esto se hace al generar al azar un tiempo de servicio de la distribución de tiempos de servicio (descrita después en el capítulo) y establecer el tiempo de partida como Tiempo de partida

=

tiempo de reloj en este momento + tiempo de servicio generado

Salidas FIGURA

1

Sistema de colas de un solo servidor

Población

__

L_le_ga_das __

olicitante

0000

o

Cola

Desocupado

Status

Ocupado

del servidor

FIGURA

2

Diagrama de flujo para una llegada

1148

Cliente que es atendido

e A P í TUL o 2 1 Simulación

Cliente que se forma en la cola

(l

¿Hay alguien en la

NO



cola?

FIGURA

3

Diagrama de flujo para una salida

Quitar al cliente de la cola

Fijar el status del

y empezar el servicio

sistema a desocupado

También, ahora se programa la siguiente llegada al sistema generando al azar un tiempo entre llegadas a partir de la distribución de tiempo entre llegadas y estableciendo el tiempo de arribo como Tiempo de llegada

=

tiempo de reloj en el momento + tiempo entre llegadas generado

(2)

Si, por ejemplo, se generó un tiempo de servicio de dos minutos, entonces el tiempo de partida para el primer cliente se establecerá en el tiempo de reloj 2. De manera similar, si se generó un tiempo entre llegadas de un minuto, la siguiente llegada se programará para el tiempo de reloj 1. Ambos eventos y sus tiempos programados se mantienen en la lista de eventos. Una vez completadas las acciones necesarias para la primera llegada, se explora la lista de eventos para determinar el siguiente evento programado y su hora. Si el siguiente evento se determina como una llegada, se mueve el tiempo de reloj al tiempo programado de llegada y se pasa por la secuencia anterior de acciones para una llegada. Si el siguiente evento es una salida, se mueve el tiempo de reloj al tiempo de salida y se procesa una salida. Para una salida, se comprueba si la longitud de la línea de espera es mayor que cero. Si es así, se quita al primer cliente de la cola y se comienza a atender al cliente estableciendo un tiempo de partida por medio de la ecuación (1). Si nadie está esperando, se fija el status del sistema a desocupado. Estas acciones de partida se resumen en la figura 3. Este método de simulación se llama mecanismo de tiempo de avance del siguiente evento, debido a la forma como se actualiza el reloj. Se adelanta el reloj de simulación al tiempo de evento inminente más importante; es decir, el primer evento en la lista de eventos. Puesto que las variables de estado cambian sólo en los tiempos de evento, se pasan por alto los periodos de inactividad entre eventos saltando de un evento a otro. A medida que se pasa de un evento al siguiente, se llevan a cabo las acciones apropiadas para cada evento, incluso cualquier programación de eventos futuros. Se continúa de esta manera hasta que se satisface alguna condición de paro especificada previamente. Sin embargo, el procedimiento requiere que en algún punto de la simulación, se tenga una llegada y una salida programada para el futuro. Así, una llegada futura siempre se programa al procesar una nueva llegada al sistema. Por otro lado, un tiempo de partida sólo se puede programar cuando un cliente entra al servicio. Así, si el sistema está desocupado, no es posible programar salidas. En estos casos, la práctica usual es programar una salida ficticia estableciendo un tiempo de partida igual a un número muy grande, por ejemplo, 9999 (o más grande si es probable que el tiempo de reloj sea mayor que 9999). De esta manera, los dos eventos consistirán en una llegada real y una salida ficticia. El salto al siguiente evento en el mecanismo podría ser uno largo o uno pequeño; es decir, los saltos en este método son de tamaño variable. Este enfoque se confronta con el método de tiempo de avance de incremento fijo. Con este método, se adelanta el reloj de simulación en incrementos de !::..t unidades de tiempo, donde !::..t es alguna unidad de tiempo apropiada, por lo común una unidad de tiempo. Después de cada actualización del reloj, se comprueba si algún evento está programado para que tenga lugar en el tiempo de reloj actual. Si está programado un evento, se llevan a cabo las acciones apropiadas para 2 1 •2

Ejemplo de una simulación de eventos discretos

1149

el suceso. Si no está programada ninguna, o si ya se completaron las acciones requeridas para el tiempo actual, se actualiza el reloj de simulación por 6.t unidades y se repite el proceso. Al igual que con el método del siguiente evento, se continúa de esta manera hasta que se alcanza la condición de paro preespecificada. El mecanismo de tiempo de avance de incremento fijo es más fácil de comprender, debido a sus pasos fijos en el tiempo. Sin embargo, para la mayoría de los modelos el mecanismo del siguiente evento tiende a ser más eficaz en cuanto a cálculos. En consecuencia, el método del siguiente evento sólo se usa para obtener los modelos del resto del capítulo. Ahora se ilustran los mecanismos de la simulación del sistema de colas de un solo servidor, por medio de un ejemplo numérico. En particular, se quiere mostrar cómo se representa el modelo de simulación en la computadora a medida que la simulación avanza por el tiempo. El proceso de simulación completo para el modelo de colas con un solo servidor se presenta en el diagrama de flujo de la figura 4. Los bloques del diagrama de flujo se numeran para tenerlos como referencia. Por simplicidad, se supone que tanto los tiempos entre llegadas (TE) como los tiempos de servicio (TS) ya se generaron para los primeros clientes a partir de las distribuciones de probabilidad de las tablas 1 y 2. Estos tiempos se muestran en la tabla 3, de la cual se puede ver que el tiempo entre la primera y la segunda llegada son dos unidades de tiempo, el tiempo entre la segunda y la tercera llegada también son dos unidades de tiempo, etcétera. De manera similar, el tiempo de servicio para el primer cliente son tres unidades de tiempo, TS para el segundo cliente también son tres unidades de tiempo, etcétera. Para demostrar el modelo de simulación, es necesario definir varias variables: TM

=

tiempo de reloj de la simulación

AT = tiempo programado para la siguiente llegada DT SS WL MX

= tiempo programado de la siguiente salida

=

status del servidor (1

=

ocupado,

= longitud de la línea de espera

=

°=

desocupado)

longitud (en unidades de tiempo) de una ejecución de la simulación

Una vez tomados en cuenta estos preparativos, se comienza la simulación con valores iniciales de las variables (bloque 1 de la figura 4). Puesto que se supone que la primera llegada tiene lugar en el tiempo 0, se establece que AT = O. Se supone también que el sistema está vacío en el tiempo 0, así que se fija SS = 0, WL = y DT = 9999. (Observe que DT debe ser mayor que MX). Esto implica que la lista de eventos ahora consiste en dos eventos programados: una llegada en el tiempo cero y una salida ficticia en el tiempo 9 999. Con esto se completa el proceso de condiciones iniciales y se obtiene la represenz.cicn de computadora de la simulación mostrada en la tabla 4. En este momento se está listo para la primera acción en la simulación: buscar en la lista de eventos para determinar el primer evento (bloque 2). Puesto que la simulación consiste en sólo dos eventos, se determina simplemente el siguiente evento comparando AT y DT. (En otras simulaciones, se podría tener más de dos eventos, así que se tendría que contar con un sistema eficaz de búsqueda en la lista de eventos.) AT < DT indica una llegada, DT < AT una salida. En este punto, AT = es menor que DT = 9 999, lo cual indica que a continuación tendrá lugar una llegada. Se marca con 1 este evento y se actualiza el tiempo de reloj, TM, al tiempo del evento 1 (bloque 3). Es decir, se fija TM = O. La llegada en el tiempo encuentra vacío al sistema, indicado por el hecho de que SS = (bloque 4). En consecuencia, el cliente entra al servicio de inmediato. Para esta parte de la simulación, primero se establece SS = 1 para indicar que ahora el servidor está ocupado (bloque 6). A continuación se genera un tiempo de servicio (bloque 7) y se establece el tiempo de partida para este cliente (bloque 8). de la tabla 3, se ve que STpara el cliente 1 es 3. Puesto que TM = en este punto, se fija DT = 3 para el primer cliente. En otras palabras, el cliente 1 saldrá del sistema al tiempo de reloj 3. Por último, para completar las acciones de procesar una llegada, se programa la siguiente llegada al sistema generando un tiempo entre llegadas, TE (bloque 9) y fijando el tiempo de esta llegada por medio de la ecuación AT

°

°

°

°

°

1150

e A P ¡TU l o 2 1 Simulación

FIGURA 4 Diagrama de flujo del modelo de simulación para el sistema de colas con un solo servidnr

.--------,'0 Condiciones iniciales de "-!J las variables de estado

Procesar una llegada

¿Es AT