Está en la página 1de 30

2.

- Construccin de modelos de simulacin

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.

2.2.- Sistemas de Colas


2.2.1.- Componentes de los Sistemas de Colas
Un Sistema de Colas est caracterizado por tres componentes: proceso de llegada, mecanismo de servicio y disciplina de la cola. Especificar el proceso de llegada para uno de stos sistemas consiste en describir cmo los
clientes llegan al sistema. Sea Ai el intervalo de tiempo entre las llegadas del (i-1)simo y el i-simo clientes. Si suponemos que A1, A2, ..., An, son variables aleatorias (IID), denotaremos la media

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

Construccin de modelos de simulacin

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.

2.2.2.- Notacin para los sistemas de colas


Vamos a suponer un sistema con :
s servidores en paralelo y una cola FIFO que alimenta a los servidores. A1 , A2, ..., An son variables aleatorias IID. S1 , S2 , ..., S n son variables aleatorias IID. Los Ai s y los Si s son independientes.

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-

Erlang (si X es una v.a. m-erlang de media=, entonces Yi X k Y , donde


i i= 1

es una v.a. exponencial de

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.

2.2.3.- Medidas de Ejecucin para un sistema de colas


Hay muchas posibles medidas de ejecucin para un sistema de colas. Se va a describir cuatro de tales medidas que son usualmente utilizadas en los estudios matemticos de sistemas de esta clase.

22

Construccin de modelos de simulacin

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

estn siendo servidos en el tiempo t). Entonces las medidas son:


n

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

Construccin de modelos de simulacin

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

experimentos, entonces converge a la

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

2.3.- Mtodos para estructurar la Simulacin


Se van a ver mtodos para estructurar una simulacin dirigida a eventos. Se ha definido un eve nto o suceso como un punto en el tiempo en el cual se produce un cambio en el estado del sistema. Hay dos tipos distintos de eventos:
Planificados o libres: aquellos cuya ocurrencia es predecible y puede por tanto ser

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

Construccin de modelos de simulacin

2.3.1.- Aproximacin de tres fases:


En esta aproximacin, los sucesos planificados y los sucesos condicionales se implementan como procedimientos separados y el proceso seguido en la ejecucin es el siguiente:
Se avanza el reloj de simulacin al tiempo del siguiente suceso planificado. Se ejecutan todos los sucesos planif icados que ocurren en dicho tiempo. Se chequean todos los sucesos condicionales y se ejecutan aquellos cuyas condiciones

se satisfacen. Los sucesos planificados y los condicionales se escriben como mdulos separados e independientes.

2.3.2.- Aproximacin de dos fases o mtodo de sucesos:


En esta aproximacin, en el cdigo de los sucesos planificados se incluye el de todos los sucesos condicionales que pueden ocurrir como resultado directo de dichos sucesos planificados. Ahora el cdigo de los sucesos planificados tiene muchas ms sentencias que en la aproximacin anterior. Aqu el proceso que se sigue es:
Se avanza el reloj al tiempo del siguiente suceso. Se ejecuta el siguiente suceso planificado.

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

Construccin de modelos de simulacin

(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

Construccin de modelos de simulacin

2.4.- Componentes y Organizacin en un Modelo de Simulacin de sucesos discretos


Los componentes en un modelo de simulacin de sucesos discretos, que usan la aproximacin de avance del tiempo segn eventos, son los siguientes:
Variables: Variables de entrada: son los valores que hemos de dar para ejecutar el modelo. Variables de estado: describen en cada momento el estado del modelo. Reloj de simulacin: marca en cada momento el instante de tiempo por el que se

va en la simulacin.
Lista de sucesos: almacena el tiempo siguiente en el que van a ocurrir cada tipo

de suceso. Marca la dinmica del sistema, es la variable que va moviendo el modelo.


Contadores estadsticos: van anotando los valores de las variables que forman

parte de la funcin objetivo.


Rutinas Rutina de Inicializacin: Inicializa las variables de estado, el reloj y los

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

ocurrir y hace que avance el reloj de simulacin.


Rutinas de Sucesos: Existe una por cada tipo de suceso. Se va a encargar de

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.

Toma los valores de los contadores estadsticos y muestra los resultados.


Librera de rutinas: Un conjunto de programas usadas para generar observaciones

aleatorias que sigan determinadas distribuciones de probabilidad.


Programa Principal: Se encarga de llevar el control sobre las distintas rutinas.

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

Construccin de modelos de simulacin

Fin_Mientras Generador Informes


Inicio

R el oj= 0 I ni ci al i za Var. es t ado I ni ci al i za C ont a d ore s In i ci al i za l i s t a su ces o s

R. Inicializacin

R. Temporizacin

Det erm i na t i emp o y t i po si g ui en t e s u ces o ( se a i ) Act u al i za el R el oj

R. Suceso i
Actualiza las var. estado Actualiza contadores Calcula tiempo siguiente suceso tipo i, actualiza lista de sucesos

R. Libreras Generacin de variables aleatorias

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

Construccin de modelos de simulacin

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).

2.5.- Ejemplos de Simulacin


2.5.1.- Simulacin de un sistema de una Cola con un Servidor
Como ya hemos visto, los sistemas de colas son sistemas en las que un grupo de clientes necesitan recibir un servicio. El tiempo que van a tardar en obtener dicho servicio va a depender del tiempo utilizado por el servidor y de la existencia o no de otros clientes que esperan antes de l.

2.5.1.1.- Identificacin del problema


Consideramos un sistema de colas con un solo servidor sin limitacin en la cola de espera. Los tiempos entre llegadas A1, A2, ..., An son variables aleatorias (IID) independientes e idnticamente distribuidas (que siguen la misma distribucin) y los tiempos de servicio a los clientes S1 , S2, ..., Sn , tambin son variables aleatorias IID. Un cliente que llega y encuentra desocupado al servidor pasa directamente a ser servido, si el servidor est ocupando entonces pasar a la cola. La disciplina de cola va a ser FIFO. Se considera que la simulacin empieza en el tiempo 0, con ningn cliente en cola y termina cuando cierra el sistema y sale el ltimo cliente. (Se podr hacer por ejemplo que la simulacin terminara cuando un determinado nmero de clientes fuesen servidos).

Entrada Servidor

Salida

2.5.1.2.- Identificacin de las variables


Variables exgenas : Tiempo entre llegadas y Tiempo de servicio, son variables no controlables.

29

Construccin de modelos de simulacin

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 .

2.5.1.3.- Medidas de comportamiento


Intentamos sacar la funcin objetivo. Al no haber nada ms que una cola, la funcin objetivo no se ve influida por el nmero de servidores. Para las medidas de ejecucin del sistema podemos considerar la estimacin de tres cantidades. La primera medida que se puede estimar es el tiempo medio de espera en cola para n clientes, completando sus esperas en la simulacin; esta cantidad se puede denotar por d(n). Son medias esperadas, ya que se obtienen dependiendo de los tiempos entre llegadas y los tiempos de servicio utilizados y stos son aleatorios y pueden cambiar en otras ejecuciones. La medida d(n) se puede interpretar como la media de las esperas de n clientes, siendo n un nmero grande (tendiendo a infinito). De una ejecucin de la simulacin se pueden obtener las esperas de los clientes D1 , D2 ,..., Dn , y un estimador de d(n) puede ser:
n

d (n) = 1i =

Di n
se d (n podra

lo cual es justo la media de n Dis, que se observaron en la simulacin (se ve que )

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

Construccin de modelos de simulacin

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

Ei , indica la llegada del cliente i, Si indica la salida del cliente i.

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

Construccin de modelos de simulacin

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

y as u se puede expresar como la proporcin de tiempo durante la cual O(t)=1 . )(n

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)

0 2 10 12 13 14 t Figura 2.2. Representacin de O(t).

2.5.1.4.- Desarrollo del modelo


Vamos a considerar la aproximacin por cambio de estado con las variables de estado comentadas anteriormente y con dos sucesos, uno de llegada a la cola y otro de salida de la misma. Esta aproximacin la vamos a seguir tambin en los ejemplos siguientes. Adems tambin en todos ellos la estructura de la simulacin va a ser la aproximacin de dos fases o mtodo de eventos y el avance del tiempo va a ser con incrementos segn eventos. Las rutinas consideradas van a ser las siguientes:

32

Construccin de modelos de simulacin

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

Construccin de modelos de simulacin

Suceso de Llegada

Servidor ocupado?

No

In cremen ta en 1 el n m ero de cli en t es en col a

In cremen ta en 1 el n m ero d e cl i ent es s er vid os

E sc ri b e m ens aj e de err or y p ara s i mu l aci n

E s t l a c ol a l l en a?

P one el est ad o d el s erv i do r o cup ado

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

Recalcula rea bajo Q(t)

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

Fin Figura 2.3. Diagrama de Flujo de la Rutina de Suceso de Llegada.

34

Construccin de modelos de simulacin

Suceso de salida

Es t la c ol a v ac a ?

No

P on e el es t ad o d el s er vi d or des o cup ado

Decrem ent a en 1 el n me ro de cl i ent es en col a

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

Inc remen t a en 1 el n m ero de cl i ent es ser vi do 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

Fin Figura 2.4. Diagrama de Flujo de la Rutina del Suceso de Salida.

2.5.1.5.- Ejemplo de simulacin de la cola


Se va a mostrar cmo simular un sistema de colas con un solo servidor. Se va a suponer que los tiempos entre llegadas y los tiempos de servicio son los siguientes:
Ai s=55, 32, 21, 40,12, 29, ... y Si s=43, 36, 34 ...

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

Construccin de modelos de simulacin

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

Construccin de modelos de simulacin

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

N clientes SDi rea bajo servidos Espera total Q(t)

Figura 2.5. Evolucin de las variables durante la simulacin. Tiempo=0

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

N clientes SDi rea bajo servidos Espera total Q(t)

Figura 2.6. Tiempo=55


111 98
sucesos 0 0

LL

87
11 O(t) estado servidor Q(t) clientes en cola Tiempos 87 Tiempo ltimo suceso

87 Reloj Lista

de llegada

N clientes SDi rea bajo servidos Espera total Q( t)

Figura

2.7.Tiempo=87

37

Construccin de modelos de simulacin

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

N clientes SDi rea bajo servidos Espera total Q(t)

Figura 2.8. Tiempo=98


151 134
sucesos 11

LL

111
11 O(t) estado servidor Q(t) clientes en cola Tiempos 11 Tiempo ltimo suceso

111 Reloj Lista

11

de llegada

N clientes SDi rea bajo servidos Espera total Q(t)

Figura 2.9. Tiempo=111

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

N clientes SDi rea bajo servidos Espera total Q(t)

Figura 2.10. Tiempo=134

LL

163 168
sucesos 34

151
11 O(t) estado servidor Q(t) clientes en cola Tiempos 151 Tiempo ltimo suceso

151 Reloj Lista

34

de llegada

N clientes SDi rea bajo servidos Espera total Q(t)

Figura 2.11. Tiempo=151

38

Construccin de modelos de simulacin

LL

192 168
sucesos 46

12 O(t) estado servidor Q(t) clientes en cola Tiempos

151 163

163 163 Tiempo ltimo suceso Reloj Lista

34

de llegada

N clientes SDi rea bajo servidos Espera total Q(t)

Figura 2.12. Tiempo=163

2.5.2.- Simulacin de un sistema de Inventario


Los modelos de inventario son modelos de almacenamiento. Representan situaciones en las que se tiene una determinada mercanca almacenada, hay una serie de demandas y tambin compras de la misma. Se puede utilizar para comparar distintas polticas para el sistema de inventario.

2.5.2.1.- Identificacin del problema


Suponemos un almacn, con un producto. Pueden realizarse pedidos de dichos productos a ciertos proveedores y hay clientes que llegan a comprarlos al almacn. Se debe poder decidir cuntos tems de producto tener en el inventario en cada uno de los prximos n meses. Al principio de cada mes, se revisa el nivel del inventario y se decide cuntos tems hay que pedir. Cuando el almacn realiza un pedido a sus proveedores, la orden no es servida inmediatamente sino que pasa un tiempo hasta que el producto se recibe. En el almacn se intenta que la cantidad de producto almacenado est entre unos lmites (s,S). Si el nivel almacenado es superior a s no realiza peticin, si no es as pedir hasta llegar a S. Cuando un cliente realiza un demanda al almacn, se satisface inmediatamente si el tamao del inventario es igual o mayor que la demanda hecha. Si la demanda excede el nivel de inventario, la parte que no puede ser entregada ser dada con posterioridad cuando se tenga ms producto. (En este caso el inventario es el inventario antiguo menos el tamao de la demanda, lo cual da como resultado un inventario negativo). Cuando el almacn recibe el producto que compr a sus proveedores, usa primero ste para satisfacer las demandas que tena pendientes de servir y el resto se aade al inventario. Asociado hay gastos de pedido (cuando el almacn compra producto a sus proveedores), de almacenamiento y de penalizacin cuando un cliente llega a comprar y no hay productos suficientes para satisfacer la demanda.

2.5.2.2.- Identificacin de las variables


Variables a considerar:

39

Construccin de modelos de simulacin

S y s, nivel mximo y mnimo de inventario respectivamente (se puede pedir en cada

ejecucin y as comparar alternativas).


Tiempos entre demandas por parte de los clientes (suponemos sigue exp(0.1)). D, tamao de la demanda (nmero de unidades que suelen pedir los clientes) (sup. que

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

cuando la cantidad de producto almacenado est por debajo de un lmite inferior).


Tiempo que tarda el pedido en llegar (demora de la orden de pedido, suponemos que

sigue una distribucin U(0.5,1.0) meses).


I(t), nivel de inventario en el tiempo t (puede ser tanto negativo como positivo o 0).

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

almacenados (por mes) para un periodo de n meses es:


n

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

Llegada del Pedido

Orden de Pedido

Figura 2.13. Evolucin de I(t), I+(t) e I-(t) en el tiempo.

40

Construccin de modelos de simulacin

2.5.2.3.- Medidas de comportamiento


Se puede tener como objetivo ver cul es la mejor poltica, comparar varias de forma que la mejor sea aquella para la que el costo sea el menor. El costo se puede desglosar en tres tipos:
P, coste de pedido (Suponemos P=K+iZ, donde i es el nmero de tems pedidos, K una

constante por gastos de envo y Z el precio de cada tem.)


i0 s = S- I si I < s si I =

I es el nivel del inventario a principio de mes.


A, coste de almacenamiento (se supone que el almacn paga un gasto de mantenimiento

al mes por cada tem que tie ne almacenado, inventario positivo).


n

I + (t ) dt n , siendo H el costo por mes y por tem almacenado.

A = 0H

C, coste de incumplimiento (demandas no servidas cuando los clientes las realizan,

depende de la cantidad no disponible o inventario negativo, del costo por tem y del tiempo durante el cual ocurre).
n

I - (t ) dt n , siendo Q el costo por mes y por tem pendiente de servir.

C = 0Q

2.5.2.4.- Desarrollo del Modelo


Variables de estado: el nivel de inventario. Sucesos:
Evaluacin del inventario (y posible orden de pedido al proveedor) al principio de cada

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

Construccin de modelo s de simulacin

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

Construccin de modelos de simulacin

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

Act u al i zar es tad s tico s (A C)

Su c e so R e c epc i on Pe di d o

Calcula tamao demanda

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

C alcu la tie mp o si g u ie nt e d em and 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

Construccin de modelos de simulacin

Suc es o Ev a l u ac i n In v en t a ri o

Es I(t)<s?

No

Calcula tamao pedido (S-I(t))

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

Figura 2.15. Diagrama de Flujo de la Rutina del suceso de Evaluacin de Inventario.

44

Construccin de modelos de simulacin

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

Figura 2.16. Diagrama de Flujo para la Actualizacin de los estadsticos A y C.

2.5.3.- Simulacin de un sistema de colas complejo


Ahora va mos a presentar la simulacin de un sistema de colas ms complejo, en el que aparecen ms variables de estado, auxiliares, exgenas, etc.

2.5.3.1.- Identificacin del problema


Suponemos una empresa de manufacturacin, en la que hay cinco grupos diferentes de mquinas. Cada grupo est compuesto por un nmero dado de mquinas idnticas. Se supone que llegan una serie de trabajos a dicha empresa con un tiempo entre llegadas dado por una variable aleatoria exponencial IID. Hay tre s tipos de trabajos y cada tipo tiene asociada una probabilidad asociada de aparecer. Los trabajos que llegan requieren una serie de tareas que deben realizarse en un orden determinado, cada una de dichas tareas se realiza en un grupo de mquinas. Las tareas asociadas con un trabajo dependen del tipo de ste. El tiempo de servicio en una mquina depende del tipo de mquina de la que se trate y del tipo de trabajo que est en ella. Si un trabajo llega a un grupo de mquinas y todas las mquinas de ese grupo estn ocupadas, pasar a la cola de dicho grupo de mquinas.

2.5.3.2.- Identificacin de las variables


Variables a considerar:
Nmero de mquinas en cada grupo (suponemos que hay 3, 2, 4, 3 y 1, respectivamente

para cada grupo).

45

Construccin de modelos de simulacin

Tiempo entre llegadas de los trabajos (suponemos siguen una distribucin exponencial

de media 0.25 horas).


Probabilidad de cada tipo de trabajo (suponemos que las probabilidades asociadas son

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

2.5.3.3.- Medidas de Comportamiento


Las medidas de comportamiento se pueden centrar en averiguar en qu grupos de mquinas se produce un cuello de botella. Para ello llevaremos los siguientes estadsticos:
Tamao de las colas de cada grupo de mquinas. Nmero de mquinas ocupadas con trabajos, para cada grupo de mquinas. Tiempo de espera de los trabajos en un grupo de mquinas (para cada tipo de trabajo y

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.

2.5.3.4.- Desarrollo del Modelo


Variables de es tado: el tamao de las colas de los distintos grupos de mquinas y el estado de las mquinas de cada grupo. En cuanto a las variables para almacenar el tamao de las colas, adems de dicho tamao tambin deben almacenar una serie de atributos:
Tiempo de llegada a la cola (para luego poder calcular el tiempo que un trabajo ha

estado esperando en ese grupo de mquinas).


Tipo de trabajo. Nmero de tarea.

46

Construccin de modelos de simulacin

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

Construccin de modelos de simulacin

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

Construccin de modelos de simulacin

Suceso Suceso Salida Llegada

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?

Det erm i na gr up o d e m qu i nas d el s ale

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

Ini c ia l i za a 1 Po n e a m nm ero tl area qu i na a de s oc u pa d a s i gu i ent e tr abaj o

Ac t ual i za co n l a l l eg ada la l i st a d e s uce so s

C al cul a es pe ra d el t rab aj o y act u al i za es tad s tico s

Det erm i na gru po de mq ui n as p ara es t e t ra baj o

C alcu la tiem p o d e s al i da y ac tu al i za l i s t a su ces o s

In cremen t a en 1 el areas Po n e an mero d e pt a ra 0 re t ras o e l t ra b aj o y el t u abajza p ara ac tr al i o


c onta dor es

a lg u na m qu i na de l g r up o ?

L e que da n t ar ea s a l Ha y tlib r ea j o ? rab

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

Indica que no es Pone nuevo el trabajo ocupada la mquina


Ll ama a l a R ut i n a
C al c u la d el S iuc eso d e e t em p o d sal i da y ac Ll aegiz a li st a tu l ada su c es os

Fin Fin Figura 2.17. Diagrama de Flujo rutina de suceso de Llegada. Figura 2.18. Diagrama rutina suceso Salida.

50 49