Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El propsito de este captulo es mostrar el proceso que se sigue en la modelizacin de aquellos sistemas que se pueden analizar usando simulacin de sucesos discretos.
2.1.- Introduccin
Vamos a tratar la simulacin de sucesos discretos. La simulacin de sucesos discretos es aquella que se realiza sobre modelos que son probabilsticos, discretos y dinmicos.
esperada del intervalo de tiempo como E(A), y llamaremos a la proporcin de llegadas de l = ) clientes. El mecanismo de servicio para un sistema de colas se articula especificando el nmero de servid ores (denotado s), si cada servidor tiene o no su propia cola o si hay una cola para todos los servidores y la distribucin de probabilidades del tiempo de servicio a los clientes.
1 E(A
Sea Si el tiempo de servicio del cliente i-simo. Si S1, S2, ..., Sn son va riables aleatorias IID,
podemos denotar la media del tiempo de servicio de un cliente por E(S) y llamar w a la ) = proporcin de servicios de un servidor.
1 E(S
La disciplina de cola de uno de stos sistemas se refiere a las reglas que usa un servidor para elegir el siguiente cliente de la cola (si hay alguno) cuando el servidor completa el servicio del cliente actual. Comnmente son usadas las siguientes disciplinas:
FIFO: los clientes son servidos de forma que el primero en entrar es el primero en salir. LIFO: los clientes son servidos de forma que el ltimo en entrar es el primero en salir. Prioridad: Los clientes son servidos segn su importancia o en base a sus requerimentos
de servicio.
Llamamos a tal sistema una cola GI/G/s, donde GI(General Independient) se refiere a la distribucin de los Ais y G (General) se refiere a la distribucin de los Sis. Los smbolos que denotan ambas distribuciones se colocan en esos lugares.
El smbolo M se usa para una distribucin expone ncial, el smbolo Ek para una distribucin m-
media / m) y D para tiempos determinados (o constantes). As un sistema de una cola con un solo servidor con un tiempo entre llegadas y un tiempo de servicio exponenciales y con una disciplina de cola FIFO, se denota cola M/M/1 . Para los sistemas de l colas GI/G/s, se llama factor de utilizacin del sistema de cola a la cantidad w r s (sw es la = proporcin de servicios del sistema cuando todos los servidores estn ocupados). Esto es una medida de cmo estn siendo utilizados los recursos de un sistema de colas.
22
No se debe pensar que estas medidas son las ms relevantes o importantes en la prctica, esto depende del tipo de sistema (en algunos sistemas stas pueden no estar bien definidas o incluso no existir). Sean:
Di = tiempo de espera en cola para el i-simo cliente. Wi = Di+S i = tiempo de espera en el sistema del i-simo cliente. Q(t) = nmero de clientes en cola en el tiempo t (tamao de la cola). L(t) = nmero de clientes en el sistema en el tiempo t (Q(t)+nmero de clientes que
d=1 lim
Di n
i=
n 8
w= 1 lim
n 8
Wi n
i=
Si existen, se llaman media de espera en cola y media de espera en el sistema. Similarmente, las medidas:
T
Q (t ) dt T
Q=0 lim
T 8 T
L(t ) dt
L= 0 T lim
T 8
si existen, son llamadas tamao de la cola o nmero medio de clientes en cola en el tiempo y nmero medio de clie ntes en el sistema en el tiempo.
23
D ii 1 =n Por ejemplo, suponemos d cuando 8 para algunos sistemas de n colas. Esto significa que si tenemos una ejecucin muy larga (casi infinita) en nmero de
n i finita cantidadi =1n
d.
En medio de los resultados ms generales y usados para sistemas de colas, tenemos: Q=ld y L=lw
Estas ecuaciones se mantienen para los sistemas de colas en los que d y w existen. Otra ecuacin de considerable valor prctico es dada por: w=d+E(s). Las medidas de ejecucin vistas, se pueden calculada r analticamente para las colas M/M/s (s = 1), colas M/G/1 para algunas distribuciones G, y para ciertos otros sistemas de colas. En general la distribucin que sigue el tie mpo entre llegadas, la distribucin del tiempo de servicio o ambas, deben ser exponenciales (o variantes de exponenciales, tales como merlang) para que las soluciones analticas sean posibles. Ejemplos de sistemas de colas: Sistema Servidores Clientes
Banco Cajeros Clientes Hospital Doctores, enfermeros, camas Pacientes Sistema computador C.P.U., devices E/S Trabajos Lnea de manufacturas Obreros, Mquinas tems que se manufacturan Estaciones de chequeo de Aeropuerto Aviones, Pasajeros seguridad, pistas de aterrizaje, pistas de aire Sistema de Comunicaciones Lneas, Circuitos, Operadores Llamadas, Llamadores, Mensajes
planificada.
Condicionales: aquellos cuya ocurrencia depende del cumplimiento de ciertas
condiciones (es decir, de la disponibilidad de determinados recursos). Vamos a mostrar dos mtodos para estructurar una simulacin de uso comn:
24
se satisfacen. Los sucesos planificados y los condicionales se escriben como mdulos separados e independientes.
La estructura de ejecucin es la misma que la de la anterior pero omitiendo la tercera fase. Si comparamos las dos aproximaciones vemos que los procedimientos en la aproximacin de 3-fases son cortos y simples. En el mtodo de eventos, el programador tiene que determinar cules eventos condicionales pueden ocurrir dentro de cada suceso planificado. Si las condiciones de la simulacin cambian, el programador tiene que determinar los efectos de stas en todos los eventos planificados. La aproximacin de 3-fases es ms modular, fcil de programar y mucho ms robusta a los cambios que el mtodo de eventos. Sin embargo, la rutina de temporalizacin tiene ms trabajo porque tiene que chequear todos los sucesos condicionales despus de que se ejecute cada suceso planificado. La aproximacin de 3-fases es ms eficiente en tiempo de desarrollo pero menos eficiente en tiempo de computacin que el mtodo basado en eventos. Una cuarta importante diferencia es que el orden en el que los sucesos condicionados se tienen en la lista de sucesos determina sus prioridades relativas. En el mtodo de eventos se ha de identificar de forma explcita dentro de los sucesos planificados.
Ejemplo: Se va a mostrar los procedimientos de los sucesos en el caso de un hospital, siguiendo las anteriores aproximaciones. La simulacin va a modelar las activ idades de los pacientes. Los pacientes llegan al hospital y una vez tratados salen. Los pacientes que necesitan tratamiento, son puestos en una lista de espera si no hay camas libres. Cuando una cama queda libre y hay pacientes en la lista de espera se pasa el primer paciente de la lista a ocupar la cama hasta que abandone el hospital. El propsito de estudiar el modelo es para examinar el efecto de diferentes niveles en los recursos
25
(nmero de camas) en el servicio dado a los pacientes (medido por el tiemp o de espera para la admisin y por el tamao de la lista de espera). Aproximacin 3-fases: PROCEDIMIENTO Llegada-paciente {planificado} INICIO Poner la nueva llegada del paciente en la cola Q de admisiones. Crear el siguiente paciente. Poner el tiempo de llegada del siguiente paciente. FIN PROCEDIMIENTO Comienzo -estancia-hospital {condicionado} INICIO MIENTRAS Q no est vaca y haya cama libre Admitir al siguiente paciente desde Q. Adquirir una cama. Poner el tiempo en el que el paciente dejar el hospital. FIN_MIENTRAS FIN PROCEDIMIENTO Fin-estancia -hospital {planificado} INICIO Quitar al paciente. Devolver la cama (ponerla como libre). FIN Aproximacin 2-fases: PROCEDIMIENTO Llegada-paciente {planificado} INICIO SI hay una cama libre ENTONCES Se pone una cama a ocupada. Se calcula el tiempo en que ocurrir la salida del hospital. SI NO Se pone al paciente en la cola Q para esperar la admisin. FIN_SI Se crea el siguiente paciente. Poner el tiempo en que ocurrir la siguiente llegada de un paciente. FIN PROCEDIMIENTO Fin-estancia -hospital INICIO Quitar al paciente. SI Q no est vaca ENTONCES Admitir el siguiente paciente de Q. Poner el tiempo en que saldr el paciente del hospital. FIN_SI FIN
26
va en la simulacin.
Lista de sucesos: almacena el tiempo siguiente en el que van a ocurrir cada tipo
contadores estadsticos y calcula de forma inicial la lista de sucesos. Esta rutina slo se ejecuta una vez y es la primera en ejecutarse.
Rutina de Temporalizacin: Determina cul es el siguiente suceso que va a
modificar los contadores estadsticos de acuerdo con el suceso que representa y determina cuando va a suceder el siguiente suceso del mismo tipo, actualizando la lista de sucesos.
Rutina de Generacin de Informes: Slo se ejecuta una vez, al final del programa.
El diagrama de funcionamiento de las diferentes rutinas es el siguiente: Rutina de Inicializacin Mientras no condicin de parada R. Temporalizacin R. Suceso i
27
R. Inicializacin
R. Temporizacin
R. Suceso i
Actualiza las var. estado Actualiza contadores Calcula tiempo siguiente suceso tipo i, actualiza lista de sucesos
No Final?
S
Muestra resultados de la simulacin
R. Generacin Informes
Fin
Figura 2.1. Flujo de control para la aproximacin avance del tiempo s egn eventos.
La simulacin comienza en el tiempo 0, con la llamada desde el principal a la rutina de Inicializacin que pone a 0 el reloj de simulacin, e inicializa las variables de estado, los contadores estadsticos y la lista de sucesos. Una vez realizada la inicializacin se pasa el control al programa principal que llama a la rutina de temporalizacin, la cual le devuelve el tiempo en que ocurrir el siguiente suceso (incrementa el reloj a ese tiempo) y el tipo de suceso. A continuacin el principal llama a la rutina de Suceso encargada de dicho tipo de suceso. La rutina de suceso, actualiza los valores de las variables de estado, los contadores estadsticos e incluye en la lista de sucesos el tiempo en que ocurrir el siguiente suceso de ese tipo. A menudo hace falta llamar a rutinas que generan
28
variables aleatorias para conocer el tiempo en que ocurrir el siguiente suceso. El programa principal chequea si se produce la condicin de parada (o bien ocurre un evento que indica el fin). Si se cumple la condicin de parada, se pasa a ejecutar la rutina de Generacin de Informes, que mostrar los resultados de la simulacin. Si no se tiene que terminar entonces, se repite el ciclo comprobacin programa principal llamada a la rutina de Temporalizacin programa principal Rutina suceso i comprobacin programa principal, hasta que se satisfaga la condicin de parada. Como se ha dicho un sistema est bien definido mediante un conjunto de entidades. Las entidades se caracterizan por valores que son lla mados atributos, y estos atributos forman parte del estado de un sistema para un modelo de simulacin de sucesos discretos. Las entidades con propiedades comunes, a menudo, se agrupan en listas (o conjuntos o ficheros). Para cada entidad hay un registro en la lista, consistente en los atributos de la entidad. Para un sistema de cola con un solo servidor, las entidades son el servidor y los clientes. El servidor tiene el atributo estado del servidor (ocupado o desocupado), y los clientes que esperan en la cola tienen el atributo tiempo de llegada. (El nmero de clientes en la cola se puede considerar como un atributo del servidor).
Entrada Servidor
Salida
29
Se va a llamar Ai al tiempo que transcurre desde la llegada del (i-1)-simo y el i-simo cliente
y Si al tiempo de servicio del i-simo cliente. Se supone que estas variables estn igualmente distribuidas para todos los tems. Variables de estado: Q(t), longitud de la cola en el instante de tiempo t, entendiendo que el tem que est siendo servido ya no est en la cola. O(t), estado del servidor en el tiempo t. (Ejemplo, 1 ocupado, 0 desocupado). Se podra unificar estas dos variables en una sola , de forma que si la longitud de la cola es mayor de 0, el servidor est ocupado, esta posible variable, por ejemplo, podra tomar tres posibles valores: -1 cuando no hay clientes en la cola y el servidor est desocupado, 0 si no hay ningn tem en la cola y el servidor est ocupado, 1 si hay tems en la cola y el servidor est ocupado, etc .
d (n) = 1i =
Di n
se d (n podra
denotar tambin como D ( n ) ). Hay que notar que en el tiempo de espera no se descarta la posibilidad de que sea 0, para algunos clientes, que al llegar al sistema se encuentran que el servidor est libre. Mientras que una estimacin de d(n) da informacin sobre la ejecucin del sistema desde el punto de vista de los clientes, los administradores del sistema, pueden querer informacin diferente (adems cuando los sistemas son complejos se deben recoger varias medidas de ejecucin). Una segunda medida para nuestro modelo, puede ser el nmero medio de clientes en cola (sin contar el que ha empezado a ser servido) .
30
Esta medida se expresa en trminos del tiempo (tem-tiempo, nmero de tems expresado durante el tiempo en que esperan), es decir, teniendo en cuenta en todo el proceso la variable Q(t), enfrentndola al tiempo. En el instante de tiempo 0, la funcin es 0 hasta que llega el primer cliente que no har cola y pasar a ser servido, luego la funcin contina siendo 0. Cuando llega el segundo cliente puede ocur rir que el primero ya haya terminado de ser servido, entonces pasar l a ser servido o que no haya terminado con lo que pasar a estar en la cola y la funcin pasa a ser uno. Esto se va repitiendo para todos los clientes que vayan llegando. Suponemos las siguientes llegadas y la evolucin de Q(t):
Q(t)
1 2
E1 E2 S1 E3 S2 E4 E5 S3 S4
Se va a tener en cuenta el nmero de clientes, en promedio, que hay en la cola. Se toma el promedio de Q(t) no para cada tems sino haciendo referencia al nmero de tems en cola en cada tiempo. Si se integra el valor para un periodo de tiempo T(n) para realizar la suma de todas las longitudes de cola y se divide por el propio T(n), se obtiene un promedio:
T ( n)
Q(t )dt
T( ) La integral representa el rea bajo la curva. Esta rea representa la suma de las reas de los rectngulos que representan el tiempo de espera de los clientes. Cada rectngulo representa el tiempo (base) que est esperando un cierto nmero de clientes (altura). Si se denominan R1 , R2 , ..., Rn , al rea de cada rectngulo , la frmula queda:
T(n)
QT (t ) =
0n
Q(t )dt
k i=
= T( n) T( ) el nmero de clientes en la cola no coincide con el nmero de rectngulos. El nmero de rectngulos depende del nmero de clientes pero en relacin con sus entradas y salidas, ya que segn sean stas, va a haber colas de una determinada longitud durante un determinado tiempo. La tercera medida que se puede considerar para este sistema, es una medida de cmo est de ocupado el servidor. La utilizacin esperada del servidor es la proporcin de tiempo durante la
31
QT (t1 = )
0n
Rj
simulacin (de 0 a T(n)) en la que el servidor est ocupado, y esto es un nmero entre 0 y 1, que podemos denotar por u(n). Para una sola simulacin, el estimador de u(n) es ) u (, proporcin n observada de tiempo de simulacin durante la que el servidor est ocupado. Este estimador se pude calcular directamente durante la simulacin anotando los tiempos en los cuales el servidor cambia de estado. Para calcular ms fc ilmente esta medida, se puede hacer de forma similar al nmero de clientes en cola, definiendo la funcin ocupado:
1 si el servidor est ocupado en el tiempo t si el servidor est desocupado en el tiempo t
O (0) = t
u (=((10-2)+(13-12))/14=0.64 n)
( 2.1)
Por ejemplo, en la situacin de la Figura 2.2 el servidor est ocupado el 64% del tiempo que dura la simulacin. El numerador de la ecuacin ( 2.1)Error! No se encuentra el origen de la referencia. se puede ver como el rea bajo la funcin O(t) en el intervalo de la simulacin, ya que la altura de O(t) es siempre 0 o 1. As:
T n) (
O(t )dt
u ( n) = 0 n T( )
Q(t)
32
Rutina de Inicializacin: Pondr el reloj de simulacin en el tiempo 0, as como los contadores estadsticos. En la lista de sucesos pone el tiempo del evento de la primera llegada y un valor muy alto en el tiempo del suceso de salida (para que no ocurra una salida sin que ocurra antes la llegada ). Rutina de suceso de Llegada: Cuando se produce una llegada, se ha de mirar si el servidor est o no ocupado. Si el servidor est libre el cliente puede pasar a ser servido, con lo que se incrementa el contador de clientes servidos, el estado del servidor pasa a estar ocupado y se ha de actualizar la lista de sucesos con el tiempo en que va a ocurrir la salida del mismo y con el tiempo del siguiente suceso de llegada. Si por el contrario el servidor estaba ocupado, el cliente tendr que entrar en la cola, con lo cual se incrementa el tamao de la misma y se ha de anotar el tiempo en el que llega para poder calcular su tiempo de espera en el momento en el que salga. La lista de sucesos se actualizar para poner el tiempo de la siguiente llegada. Se han de actualizar tambin los contadores estadsticos que consideremos segn qu medidas de ejecucin deseemos obtene r. Rutina de suceso de Salida: Se ha de mirar si la cola est vaca, si es as se ha de poner libre al servidor y poner en la lista de sucesos un valor alto en el tiempo del suceso de salida (para evitar que ocurra una salida). Si la cola tiene elementos, se ha de pasar uno a ser servido, por tanto se disminuye el tamao de la cola, se incrementa el nmero de clientes servidos y se calcula el tiempo que ha estado esperando; la lista de sucesos se actualiza poniendo el tiempo en que ocurrir la salida. Se han de actualizar tambin los contadores estadsticos que consideremos segn qu medidas de ejecucin deseemos obtener. Librera de Rutinas: Sern las encargadas de generar valores para las variables aleatorias que se tienen.
Rutina de generacin del tiempo en que ocurrir la siguiente llegada de clientes. Rutina de generacin del t iempo en que ocurrir la siguiente salida del cliente.
Rutina de Temporizacin: Lee en la lista de sucesos y devuelve el tipo de l prximo suceso y actualiza el reloj de simulaci n a dicho tiempo. Rutina de Generacin de Informes: Muestra en pantalla los resultados de la simulacin (medias de tiempo de espera y tamao de cola con respecto al tiempo) . Vamos a ver los diagramas de flujo de los sucesos de llegada y salida. En el del suceso de llegada, se hace la pregunta acerca de si se ha superado o no el lmite mximo de elementos permitidos en la cola, en el ejemplo propuesto esto no hace falta, pues se supone un tamao ilimitado de la misma.
33
Suceso de Llegada
Servidor ocupado?
No
E s t l a c ol a l l en a?
No
Al mac ena el t i em p o d e l l eg ada d el cli ente
C a lc u l a e l ti e mp o d e s al i da y ac t ua l iz a l i sta d e su c e so s
C al c u la t ie mp o si g u ie n t e ll e g ad a y a ct u al i za l is ta su c e so s
34
Suceso de salida
Es t la c ol a v ac a ?
No
M o di f i ca l i st a su ce so s co n v al o r a l to e n s uc es o sa l ida
C a lc u la e l r e ta r d o p a ra e l c l ie n t e y rec a lc u l a e st ad st i co s
C al c ul a e l t ie mp o de sa li d a y a ct u a li za li st a d e s u ce so s
Desde la Figura 2.5 a Figura 2.12, se puede ver los cambios en las variables a medida que van ocurriendo los sucesos. (As tenemos que 55 instantes de tiempo desde el comienzo llega el primer cliente que tardar en ser servido 43. El segundo cliente llegar 32 instantes de tiempo despus de llegar el primero y tardar en ser servido 36 y as sucesivamente).
35
Se est suponiendo que no todos tardan igual en ser servidos (depende de la habilidad del servidor, tipo de carburante o productos, nmero de litros de combustible o nmero de productos). Tiempo=0, en el instante inicial no ha llegado ningn cliente, ya que el primero llega 55 instantes de tiempo despus, por tanto todos los indicadores estn a 0 excepto la lista de sucesos que marca 55 en el tiempo del siguiente suceso de llegada (LL) y en los de salida pone un valor alto, 8 , para que no se pueda producir una salida antes de una entrada (S). Tiempo=55, el reloj avanza a este tiempo que es cuando ocurre el siguiente suceso que es de lle gada. Como se trata del nico cliente que hay, no tiene que esperar en cola por tanto lo que se modifica es el estado del servidor que pasa a estar ocupado (O(t)=1 ), el nmero de clientes servidos se incrementa en 1 (n(t)). Se actualiza la lista de sucesos. El tiempo de la siguiente llegada ocurre a las 32 unidades de tiempo a partir de la primera, por tanto se pone con el valor 87=55+32, y el tiempo del suceso de salida se pone a 98, ya que en servir al primer cliente se tarda 43 instantes (55+434=98). El resto de indicadores permanecen a 0. En todos los casos se va siempre almacenando el tiempo del ltimo suceso, ante de modificar el reloj de simulacin con el nuevo tiempo. Tiempo=87, el reloj de simulacin avanza a este instante ya que cambia al tiempo de l siguiente suceso (el menor tiempo de la lista de sucesos). En este instante el evento que se produce es uno de llegada. Como el primer cliente no ha salido todava de ser servido, este segundo pasa a estar en cola. Por tanto el nmero de clientes en cola se pone a 1 (Q(t)=1), el servidor sigue ocupado. Se anota el tiempo de llegada de este cliente y se calcula la siguiente llegada y se actualiza la lista de sucesos con la nueva llegada (A=87+12=111). Tiempo=98, el reloj avanza a este tiempo porque se produce un evento de salida. El primer cliente termina de ser servido, por lo que el segundo cliente abandona la cola (por tanto el tamao de la cola pasa a ser 0) y pasa a ser servido. Se ha de calcular el tiempo en que terminar de ser servido y actualizar en la lista de sucesos el tiempo para el siguiente suceso de salida (98+36=134). Se incrementa en uno el nmero de clientes que pasan por el sistema (ahora es 2) y tambin ahora se han de actualizar el resto de contadores estadsticos. El tiempo de espera del cliente 2 ha sido de 11 (SDi) ya que lleg en el instante 87 y ha salido de la cola en el 98. El rea bajo Q(t) pasa a ser tambin 11, ya que slo ha habido un cliente esperando durante ese tiempo. Tiempo=111, en este instante ocurre un suceso de llegada, llega el tercer cliente, como est siendo servido el segundo, pasar a estar en la cola incrementndola en 1 anotndose tambin su tiempo de llegada. Se recalcula el tiempo del siguiente suceso de llegada al instante 151 (111+40=151). Tiempo=134, en este instante se produce la salida del segundo cliente. Con lo cual el tercero deja la cola y esta pasa a estar vaca. Se incrementa el nmero de clientes servidos y los dems estadsticos (SDi=11+23=34 y rea Q(t)=11+23=34). Se calcula el tiempo de la siguiente salida (134+34=168) y se actualiza la lista de sucesos en el siguiente suceso de salida.
36
Tiempo=151, ocurre aqu la entrada del cuarto cliente, que pasa a la cola (Q(t)=1), se anota su tiempo de llegada y se calcula el tiempo de la siguiente llegada (151+12=163) y se actualiza la lista de sucesos. Tiempo=163, ocurre otra llegada y pasa a la cola (Q(t)=2), se anota su tiempo de llegada. Se recalcula la siguiente llegada (163+29=192) y se actualiza la lista de sucesos. Al aumentar el tamao de la cola se ha de recalcular el rea bajo Q(t), ya que ha cambiado de altura (la ltima rea que tenemos que calcula es un rectngulo de altura 1 y de base 12, ya que el cuarto cliente lleg en el instante 151 y ha estado esperando solo hasta el momento 163, por tanto el rea bajo Q(t)=34+12=46 ). La suma de los tiempos de espera sigue siendo 34 ya que no ha dejado ninguno de estar en cola, slo que ha cambiado el nmero de elementos en la misma. Al final de la simulacin, si no quedan clientes en cola, el contador de la media de espera y el rea bajo Q(t) coincidirn ya que estn midiendo lo mismo pero de forma distinta.
LL 0 00 O(t) estado servidor Q(t) clientes en cola Tiempos 0 Tiempo ltimo suceso Reloj Lista S
55 8
sucesos 0
de llegada
LL 55 10 O(t) estado servidor Q(t) clientes en cola Tiempos de llegada 55 Tiempo ltimo suceso Reloj Lista S
87 98
sucesos 0
LL
87
11 O(t) estado servidor Q(t) clientes en cola Tiempos 87 Tiempo ltimo suceso
87 Reloj Lista
de llegada
Figura
2.7.Tiempo=87
37
LL 98 10 O(t) estado servidor Q(t) clientes en cola Tiempos 98 Tiempo ltimo suceso Reloj Lista S
111 134
sucesos 11
11
de llegada
LL
111
11 O(t) estado servidor Q(t) clientes en cola Tiempos 11 Tiempo ltimo suceso
11
de llegada
LL 134 10 O(t) estado servidor Q(t) clientes en cola Tiempos de llegada 134 Tiempo ltimo suceso Reloj Lista S
151 168
sucesos 34
34
LL
163 168
sucesos 34
151
11 O(t) estado servidor Q(t) clientes en cola Tiempos 151 Tiempo ltimo suceso
34
de llegada
38
LL
192 168
sucesos 46
151 163
34
de llegada
39
suelen pedir 1, 2, 3, 4 tems con probabilidades 1/6, 1/3, 1/3, 1/6, respectivamente).
Tiempo entre pedidos al proveedor (suponemos que se realizar cada mes, siempre y
Llamamos I+ (t)=max{I(t),0}, al nmero de tems fsicos que hay inventariados en el tiempo t (I+ (t) >=0) y llamamos I- (t)=max{-I(t),0}, este inventario negativo son los tems que se deben a los clientes. En la Figura 2.13, se muestra una posible evolucin de
I(t), I+ (t) e I- (t). Siendo I+(t) el nmero de tems almacenados en el tiempo t, el nmero medio de tems
I + (t )dt n
I + =t0 ()
de la misma forma, se puede calcular el nmero medio por mes de tems de demandas no satisfechas.
n
-I (t ) dt n
I(t)
I+ (t) I-(t)
I ( t)
-=0
s S
1
S-I(1)
Orden de Pedido
Orden de Pedido
40
A = 0H
depende de la cantidad no disponible o inventario negativo, del costo por tem y del tiempo durante el cual ocurre).
n
C = 0Q
mes.
Demanda de producto por parte de un cliente. Llegada de la orden de pedido al almacn. Fin de simulacin (se puede tener como un suceso que marca el fin o podemos no
tenerlo como tal e ir preguntando si acabar o no). El evento de fin y el de evaluacin de inventario pueden ocurrir en un mismo tiempo, ya que el segundo se realiza cada mes y el fin se hace pasados n meses. En este caso se puede considerar prioritario el de fin.
41
Rutina de Inicializacin: Pondr el reloj de simulacin en el tiempo 0, pondr el nivel de inventario al nivel inicial que se tenga ya que se empieza la simulacin con cierto nivel almacenado, pone a 0 los contadores estadsticos e inicializa la lista de sucesos. En la lista de sucesos pone el tiempo del evento fin a un tiempo de n meses, pone el tiempo de la primera demanda de cliente, y el tiempo del suceso de evaluacin del inventario al mes 1. En cuanto al tiempo del suceso de llegada de pedido, como no hay pedido hecho no pone tiempo de ocurrencia (lo pone a un valor alto para que no ocurra). Rutina de suceso de Evaluacin del Inventario: Comprueba si el nivel del inventario est por debajo del lmite inferior de almacenamiento (s). Si es as es porque se tiene que hacer un pe dido de tamao i=S -I. Actualiza el costo P, suponiendo que se pague al pedir el producto. Actualiza la lista de sucesos incrementando en 1 el tiempo del siguiente suceso de evaluacin. Adems como hay pedido pendiente, llama a la rutina que genera el tiempo que se recibir el pedido y actualiza con l en la lista de sucesos en el tiempo en que ocurrir el siguiente suceso de recepcin de producto. Si no hay que pedir producto lo nico que har es actualizar la lista de sucesos con el tiempo del siguiente suceso de evaluacin (incrementndolo en 1). Rutina de suceso de Demanda de producto del cliente: Llama a la rutina correspondiente para generar el tamao de la demanda (D). Se decrementa el nivel de inventario en esta cantidad (I ID). Llama a una rutina que genere el tiempo en que ocurrir la prxima demanda y actualiza con l la lista de sucesos. Al ser modificado I, se actualizarn los costos afectados. Rutina de suceso de Recepcin de producto: Como se recibe producto se va a tener que modificar el nivel de inventario I (I I+i, siendo i la cantidad de tems de producto recibidos), y por tanto se han de actualizar los costos (la modificacin de I provoca que acabe uno de los rectngulos por lo que hay que calcular las nuevas reas). La actualizacin de las reas se ha de realizar antes, para que no se pierda el antiguo valor de I, que es con el que se calculan. Posteriormente pone un valor alto en la lista de sucesos para el tiempo del siguiente suceso de recepcin (para que ste no pueda suceder mientras no se haga otro pedido). Rutina de suceso de Fin de simulacin: Actualiza los contadores de los costos ya que termina un rea. Se actualizan los tipos de costos A y C , no P ya que este se actualiza en la recepcin del producto pedido al proveedor. sta es la nica vez que se actualizan los contadores sin que cambie la variable de estado I. Librera de Rutinas: Sern las encargadas de generar valores para las variables aleatorias que se tienen.
Rutina de generacin del tiempo en que ocurrir la siguiente demanda por parte de los
clientes.
Rutina de generacin del tamao de la demanda. Rutina de generacin del tiempo en que se recibir el siguiente pedido.
Rutina de Temporizacin: Lee la lista de sucesos y devuelve el tipo de l prximo suceso y actualiza el reloj de simulacin a dicho tiempo.
42
Rutina de Generacin de Informes: Muestra en pantalla los resultados de la simulacin. Desde la Figura 2.14 a la Figura 2.16, se muestran los organigramas de dichas rutinas.
Suceso Demanda
Su c e so R e c epc i on Pe di d o
Act u al i zar es t ad s t i co s (A C)
De c re me nt a e l ni ve l d e l In v en t a ri o c o n e l t am ao de la de m anda
In c re me n ta e l n i v e l d e in v e n ta r io co n l a c a nt i d a d p ed i d a
Mo d i f i ca l i sta su ce so s e v it a nd o su c es o l l eg a d a o rd e n
Fin
Fin
Figura 2.14. Diagramas de Flujo de las Rutinas de suceso de Demanda y de Recepcin de Pedido.
43
Suc es o Ev a l u ac i n In v en t a ri o
Es I(t)<s?
No
Ac tu al i za lo s c os to s de Pe did o (P)
C al cu l a t ie mp o ll e g ad a p ed i do y a ct u al i za l is ta su c es os
C al cu l a t i em p o s ig u i en t e e va l u ac i n y a ct u a li z a li st a su c es o s
Fin
44
Ac tu a l iz a ci o n e st ad st i co s (A y C )
<0
I( t) e ra p o sit iv o , ne g at iv o o ce r o?
>0
Modifica rea
bajo I-(t)
Modifica rea
=0
bajo I+ (t)
Fin
45
Tiempo entre llegadas de los trabajos (suponemos siguen una distribucin exponencial
de 0.3, 0.5 y 0.2, para cada uno de los tres tipos de trabajos).
Tareas asociadas con cada tipo de trabajo (suponemos que los trabajos del primer tipo,
tienen que realizar 4 tareas, los del segundo tipo 3 y los del tercer tipo 5, y que los grupos de mquinas en los que han de realizar dichas tareas son los siguientes:
Tipo de Trabajo Grupo de mquinas p or las que pasa 1 3, 1, 2, 5 4, 1, 3 2 2, 5, 1, 4, 3 3
Tiempo de servicio para cada tipo de trabajo y para cada tipo de mquina (suponemos
que los tiempos de servicio siguen una distribucin 2-Erlang con las siguientes medias:
Tipo de Trabajo Media del tiempo de servicio para las sucesivas Tareas, en horas 1 0.50, 0.60, 0.85, 0.50 1.10, 0.80, 0.75 2 1.20, 0.25, 0.70, 0.90, 1.00 3
grupo de mquinas).
Utilizacin media de cada grupo de mquinas.
La funcin objetivo puede ser ver en qu tipo de mquinas invertir ms, de forma que se consiga que el tiempo de espera sea mnimo.
46
Habr una cola para cada grupo de mquinas, cuando una mquina de un grupo queda desocupada pasa a sta el primer trabajo de su cola, eliminndose el elemento de sta. La otra variable de estado debe ser el estado de las mquinas de cada tipo, si estn o no ocupadas (se pude tener un array en donde cada elemento represente un grupo de mquinas y se almacene el nmero de mquinas ocupadas de ese grupo). Sucesos: En este caso se pueden considerar muchos tipos de sucesos, porque se podra pensar en un suceso de llegada y salida para cada grupo de mquinas por las que un trabajo tiene que pasar, pero no seran sucesos generales. Una forma de abordar el problema es considerar un nico suceso de llegada y uno de salida. Y llevar el control del nmero de tarea por la que va un determinado trabajo, de forma que cuando se produce una llegada puede ser por primera vez al sistema o llegada a un nuevo grupo de mquinas. Cuando se produce uno de salida se ha de determinar si el trabajo ha terminado todas sus tareas y sale del sistema o no ha terminado y tiene que pasar a otro grupo de mquinas. Por tanto se van a considerar dos tipos de sucesos:
Suceso de Llegada: o bien al sistema o a un nuevo grupo de mquinas. Suceso de Salida: o bien del sistema o bien de un grupo de mquinas pero tiene que
dirigirse a otro grupo. Ahora las variables van a tener que ser un poco ms complicadas. Como en cada suceso se han resumido varios, la lista de sucesos debe contener una serie de atributos, adems del tiempo de ocurrencia (se podra implementar como una cola con prioridad):
Tiempo de ocurrencia del suceso. Tipo de suceso. Tipo de trabajo. Nmero de tarea.
Cuando un suceso ocurra se quitar de la lista y cuando se planifique el prximo se aadir a la lista con todos esos atributos. En los ejemplos anteriores siempre haba una variable para cada tipo de suceso y cambia ba con el tiempo del siguiente, ahora se van incluyendo los sucesos que tienen que ocurrir. Ahora pude haber varios sucesos de un mismo tipo en la cola. Rutina de Inicializacin: Pone todo a cero y crea el primer elemento de la lista de sucesos. Rutina de Suceso de Llegada: Si se trata de una llegada al sistema, se calcula la prxima llegada (llamando a la rutina de generacin de tiempo de prxima llegada), el tipo de trabajo (llamando a la rutina de generacin de tipos), y se pondra su nmero de tarea a 1, insertando un nuevo elemento en la lista de sucesos. A continuacin o si es una llegada a un grupo de mquinas, pero no llega por primera vez al sistema, se determina el grupo de mquinas al que debe llegar en funcin del tipo de trabajo y del nmero de tarea por la que va. Se pregunta si hay alguna mquina libre en dicho grupo. Si no hay mquina libre se encola el trabajo (se inserta un elemento en la cola de dicho grupo).
47
Si hay alguna libre el trabajo entra a ser servido y se tendra que calcular su tiempo de salida (se encolara la salida en la lista de sucesos), por otro lado la mquina se pondra como ocupada Rutina de Suceso de Salida: Se determina el grupo de mquinas del cual sale el trabajo (a partir de su tipo y nmero de tarea). Mira si la cola de ese grupo est vaca, si es as pone el indicador de la mquina como libre y actualiza estadsticos, si no, entonces toma el primer elemento de la cola y se actualizan tiempos de espera y se genera el siguiente suceso de salida. A continuacin, lo comn es que se determine si le quedan tareas por realizar a dicho trabajo. Si le quedan se incrementa el nmero de tarea por la que va y llama a la Rutina de llegada (antes tiene que poner la variable de que no es un trabajo nuevo). Si ya no le quedan tareas, la rutina termina. Rutina de Temporalizacin: Saca el primer elemento de la lista de sucesos y lo borra. Avanza el reloj de simulacin al tiempo de ese siguiente suceso. Devuelve el tipo de suceso, nmero de trabajo y nmero de tarea. Librera de Rutinas: Se encargan de gene rar valores para las variables aleatorias que se utilizan.
Rutina de generacin del tiempo en que se producir la siguiente llegada de un trabajo
al sistema.
Rutina de generacin del tipo del siguiente trabajo. Rutina de generacin del tiempo de servicio.
Rutina de Generacin de Informes: Muestra en pantalla los resultados de la simulacin. A continuacin, la Figura 2.17 y la Figura 2.18, muestran los diagramas de flujo para las rutinas de los sucesos de llegada y salida.
48
S
C alcu la tiem p o lle gad a y tipo s i gu i ent e t rab aj o
Es q ue nueva?
No
Est l a co l a p ara e st e g ru p o v a c a ?
No
T om a el pr ime r t rab aj o d e l a col a
a lg u na m qu i na de l g r up o ?
No No
Po n e e l t rab a j o e n l a co l a d e e st e g ru p o d e m q u i n as
Fin Fin Figura 2.17. Diagrama de Flujo rutina de suceso de Llegada. Figura 2.18. Diagrama rutina suceso Salida.
50 49