Ejercicios ARENA Resueltos [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

SIMULACIÓN DE PROBLEMAS DE COLAS (ARENA)

1

El Banco Nacional de Occidente piensa abrir una ventanilla de servicio en automóvil para servicio a los clientes. La gerencia estima que los clientes llegarán a una tasa de 15 por hora. El cajero que estará en la ventanilla puede atender clientes a una tasa de uno cada tres minutos. Suponiendo que las llegadas son de Poisson y que el servicio es exponencial, encuentre: 1. La utilización del cajero. 2. El número promedio en cola. 3. Número promedio en el sistema. 4. Tiempo promedio de espera en cola. 5. Tiempo promedio de espera en el sistema (incluyendo el servicio). Por la disponibilidad limitada de espacio y el deseo de proporcionar un nivel de servicio aceptable, el gerente del banco quisiera asegurar, con un 95% de certeza que los clientes no tengan que esperar y sean atendidos inmediatamente. Para ello tiene dos opciones: conseguir que el empleado de la ventanilla trabaje más rápido, o poner más empleados conservando la misma tasa de servicio. Evaluar las dos posibilidades.

Simulación de Problemas de Colas con Arena - 1 .

Para calcular la longitud mínima de la simulación, empezaremos con 1000 minutos y nos fijaremos en los dos primeros resultados del fichero de resultados “Ejemplo-1.out”: Banco.TotalTimePerEntity (Tiempo total de permanencia en el sistema W) y Banco.WaitTimePerEntity (Tiempo de espera Wq).

Simulación de Problemas de Colas con Arena - 2 .

El valor que se observa en la columna Half With, nos indica el rango dentro del cual está el valor buscado con un 95% de probabilidad, es decir, se trata de una medida del error que se está cometiendo en la simulación. En este primer caso, se puede ver que aparece la expresión (Insuf), que indica que la longitud de la simulación no es lo suficientemente grande para hacer el análisis estadístico que proporciona el valor. Por tanto, parece claro que debemos hacer simulaciones más largas, al menos hasta que en la columna Half With se obtenga un valor que sea alrededor del 5% del valor nominal. En la siguiente tabla, se muestran los resultados de varias simulaciones de distintas longitudes, con el objetivo de calcular la longitud mínima de la simulación.

Sin WARM-UP Longitud de la simulación (horas) 10 100 500 1000 5000 10000 50000

Wq

% error

W

%error

L

%error

6.102 10.333 8.603 9.026 8.678 8.641 8.888

(insuf) 30.8 15.6 13.3 6.06 4.49 2.23

9.26 13.518 11.591 12.033 11.667 11.642 11.889

(insuf) 24.4 12.0 10.2 4.6 3.45 1.70

2.14 3.32 2.88 3.01 2.91 2.90 2.96

(insuf) 28.7 (corr) 11.4 4.8 3.4 1.75

L

%error

3.28 3.25 2.90 3.04 2.91 2.90 2.96

(insuf) 30.0 (corr) 10.0 5 3.4 1.7

Con WARM-UP de 10 horas Longitud de la Wq % error W %error simulación (horas) 10 8.85 (insuf) 11.90 (insuf) 100 10.074 37.0 13.20 29.0 500 8.685 (corr) 11.66 (corr) 1000 9.120 12.0 12.133 9.10 5000 8.676 (corr) 11.67 (corr) 10000 8.653 4.39 11.653 3.36 50000 8.888 2.27 11.889 1.74

A la vista de estos resultados, parece claro que la simulación debe tener una longitud mínima de más o menos 5000 horas, ya que se tiene un error en torno al 5%, Por otro lado, este error va disminuyendo según se va aumentando la longitud de la simulación. El warm-up se utiliza para evitar el período transitorio que se tiene al empezar con todo el sistema vacío. Sin embargo, en este caso no parece necesario, ya que se obtienen resultados similares con y sin warm-up. En la figura siguiente, se muestra el fichero model1.out en el que se recogen todos los resultados de la simulación.

Simulación de Problemas de Colas con Arena - 3 .

De aquí se pueden obtener los resultados buscados: 1.- Factor de Utilización del servidor (f.u.) = SERVIDOR.Utilization = 0.75063 2.- Número medio en la cola (Lq) = Banco.Queue.NumberInQueue = 2.2462 3.- Número medio en el sistema (L) = ENTITY 1.WIP = 2.9968 4.- Tiempo medio en el sistema (W) = ENTITY 1.TotalTime = 11.991 5.- Tiempo medio de espera en cola (Wq) = Banco.Queue.WaitingTime = 8.9876

Simulación de Problemas de Colas con Arena - 4 .

Aunque L se ha calculado como “la cantidad de trabajo en proceso (Work In Process)”, vamos a utilizar una variable definida por el usuario para que su cálculo sea más claro (además servirá más adelante para el cálculo de las probabilidades).

Se selecciona el icono Variable en la plantilla “Basic Process” y se marca la casilla “Statistics” para que aparezca el resultado en el fichero de salida

Simulación de Problemas de Colas con Arena - 5 .

Para calcular las probabilidades de 0, 1, 2, ... (P0, P1, P2, ...) vamos a guardar la evolución de la variable L a lo largo del tiempo de simulación, en el fichero “prob.dat”, que después analizaremos con el programa OUTPUT ANALIZER.

Al finalizar la simulación, habrá un fichero “prob.dat”.

En la columna Cell se tienen las probabilidades P0, P1, P2, ... El caso que hemos simulado, es el de 1 único servidor, con lo que P0 coincide con la probabilidad de no esperar Pnw que estamos buscando; se observa que es el 24,8% cuando se ha pedido que no sea inferior al 95%. Simulación de Problemas de Colas con Arena - 6 .

Si, como en el caso que nos ocupa, no es necesario calcular todas las probabilidades, sino solamente la probabilidad de no esperar, se puede hacer más rápidamente utilizando el apartado Categories que se encuentra también en Statistics.

Haciendo ahora la simulación, obtenemos el resultado en el nuevo apartado Frequencies del fichero .out

Podría incluso incluirse en la animación del modelo, un histograma en el que se muestre esta información. La expresión NR(Servidor)>=1 comprueba en cada instante si el número de unidades utilizadas del recurso servidor es 0 (con lo que no se espera) o es 1 (el servidor está ocupado, y hay espera); en el histograma se muestra el porcentaje de veces que NR()=0 (no se espera), y NR()>=1 (sí se espera).

Simulación de Problemas de Colas con Arena - 7 .

Si simulamos, obtendremos una animación similar a la que se muestra en la figura; el histograma muestra que poco más del 20% no esperan:

La primera alternativa para aumentar el porcentaje de clientes que no tienen que esperar, consiste en hacer que el servidor trabaje más deprisa. Actualmente tarda 3 minutos como media en atender un cliente. Si hacemos que tarde solo 1 minuto:

Se comprueba en el histograma, que a esta velocidad, no esperan el 75% de los clientes. Si queremos llegar hasta el 95%, deberemos hacer que trabaje todavía más rápido. Si hacemos que el servidor tarde 0,16667 minutos como media (10 segundos), es posible llegar al 95% buscado, sin embargo, esto no parece fácilmente realizable puesto que supone hacer las operaciones que normalmente llevan 3 minutos en solo 10 segundos.

Simulación de Problemas de Colas con Arena - 8 .

La segunda alternativa era aumentar el número de servidores. Para simular varios servidores, tenemos dos posibilidades: las dos son perfectamente válidas, simplemente se diferencian en la animación. Si la animación es importante, y queremos diferenciar claramente cada uno de los recursos, de forma que se pueda ver cuando trabaja y cuando no cada uno de ellos, debemos definir los servidores como integrantes de lo que se llama un Conjunto de Recursos. Para ello utilizaremos la opción RESOURCE SET (Conjunto de Recursos), en la definición del Recurso dentro de la ventana de definición del Proceso (en el botón Add...):

Pulsando en el icono Set en la plantilla “Basic Process”, aparecerá el Set creado, y que hemos llamado “servidores”. Pulsando en Members podemos introducir los tres nombres: Servidor 1, Servidor 2 y Servidor 3. Si se selecciona el icono de Recursos en la plantilla “Basic Process”, se verán los tres servidores que se han creado dentro del Set que hemos llamado “Servidores”.

En cuanto a la animación, bajamos la representación de la cola y colocamos los dibujos de los tres servidores.

Simulación de Problemas de Colas con Arena - 9 .

Los dibujos de los servidores se colocan pulsando en el icono de los recursos:

Para que la entidad tenga el dibujo que queremos, habrá que entrar en Edit... => Entity Pictures ...

Ahora podemos hacer la simulación para obtener las medidas de eficiencia del sistema y las probabilidades (aplicando el Output Analizer al fichero prob.dat que resulta de la simulación). Se comprueba como P0+P1+P2 (que es Pnw en el caso de 3 servidores) ya es superior al 95% buscado.

Simulación de Problemas de Colas con Arena - 10 .

En el histograma habrá que poner como expresión: NR(Servidor 1)+NR(Servidor 2)+NR(Servidor 3)>=3

Simulando, se obtendrá el siguiente resultado:

La segunda alternativa, más sencilla y rápida cuando la animación no es excesivamente importante, consiste en indicar la existencia de tres servidores en la casilla correspondiente a la capacidad (Capacity) del recurso. Esta casilla aparece cuando seleccionamos el elemento “Resource” en la plantilla “Basic Process”

Ahora se puede hacer la simulación obteniéndose resultados prácticamente iguales al caso anterior. Simulación de Problemas de Colas con Arena - 11 .

Simulación de Problemas de Colas con Arena - 12 .

EJEMPLO 2 SIMULACIÓN DE PROCESOS DE FABRICACIÓN CON ARENA Se trata de simular el proceso de fabricación de un producto que está compuesto por 3 elementos: 2 tapas (la superior y la inferior, y el interior). Las tapas llegan a la línea de fabricación según un proceso de Poisson de media 5 tapas/hora. El 50% son tapas superiores y el otro 50% inferiores. Una vez recibidas, es necesario pintarlas, para lo que pasan de una en una; por un proceso de pintura cuya duración es independiente de la clase de tapa que se trate; se ha comprobado que se distribuye según una triangular de tiempo mínimo 6, medio 9 y máximo 12 minutos. Hay un control de calidad del proceso de pintura que separa las tapas correctamente pintadas (el 95%) de las defectuosas, las cuales vuelven al proceso de pintura de nuevo. Por otra parte, el elemento interior del producto final, llega a la línea de fabricación empaquetado en cajas de 3 unidades, siguiendo una distribución exponencial de media 64 minutos. El proceso de desempaquetado lo realiza una máquina que tarda en realizar el trabajo un tiempo que se distribuye según una uniforme entre 30 y 50 minutos. Además, esta misma máquina separa las unidades defectuosas (el 10%) y las envía a chatarra. Posteriormente, se tiene una máquina que hace el ensamblaje de una tapa superior, una inferior y un elemento interior para constituir el producto final. El tiempo de ensamblado se distribuye según una normal de media 15 minutos y varianza 10 minutos. Se trata de simular el proceso para calcular cuantas unidades del producto final es posible fabricar en 1 mes (30 días) con jornadas de 8 horas.

1

Solución Se trata de simular una línea de fabricación y montaje en la intervienen 3 tipos de piezas o entidades: por un lado tenemos las tapas (superior e inferior), por otro lado está el elemento interno y al final tenemos el producto ya ensamblado. Utilizaremos un Atributo que denominaremos TIPO y que tendrá 3 posibles valores: 1 (tapa), 2 (interior) y 3 (producto final). Por otro lado, cada uno de los tres tipos de producto debe pasar por una operación cuyo tiempo de proceso dependerá del tipo de producto que sea. Cuando haya que especificar el tiempo de proceso de cualquiera de estas operaciones utilizaremos una expression de tipo array que denominaremos TPROCESO(TIPO). Previamente definiremos la expresión Tproceso seleccionando el icono correspondiente en la plantilla de la forma siguiente: Para construir el modelo, vemos que por un lado llegan las tapas y por otro el cuerpo interior, por lo que partiremos de 2 bloques create, uno para cada tipo de piezas. Para las tapas, después del create, utilizaremos un bloque assign para definir el atributo TIPO con el valor 1 (tapas). Posteriormente, definimos el bloque process denominado PINTURA, en el que se simula el proceso de pintado de las tapas; se utilizará un recurso que se llamará PINTOR. Para simular el hecho de que el 5% de las piezas salen defectuosas del proceso de pintado, y por lo tanto hay que volver a pintarlas, utilizaremos un bloque decide y uniremos la salida false con la entrada del proceso de pintura.

2

Como las tapas superior e inferior llegan a través del mismo proceso, debemos diferenciarlas. Para ello, utilizaremos un segundo atributo que denominaremos clase, y que tendrá 2 posibles valores (1000 y 2000, según sean tapas superiores o inferiores). Con la función DISCRETE se pueden asignar estos valores de forma que el 50% sean de un tipo y el resto inferiores. Ahora, con otro bloque decide, separamos unas tapas de otras, y después, con dos bloques assign, asignamos un dibujo distinto a cada tipo de tapa.

3

El elemento interior del producto que estamos fabricando, llega al proceso utilizando un segundo bloque create. En primer lugar se asigna el valor 2 al atributo TIPO, y utilizando el mismo bloque assign, aprovechamos para cambiar el dibujo de la entidad a una caja (picture.box), ya que nos dicen que llega al proceso metido en cajas de 3 unidades. Se debe simular el proceso de desempaquetado e inspección, lo cual hacemos con un nuevo bloque process que denominamos DESEMPAQUETADO; se utiliza un recurso llamado DESEMPAQUETADORA. El hecho de sacar 3 unidades de cada caja, lo podemos simular utilizando un bloque Separate, que en este caso se usa como reproductor de entidades en lugar de separador de grupos o lotes previamente confeccionados. Se generan 2 réplicas que, junto con la entidad original, suman las 3 necesarias.

4

5

Ahora, mediante un bloque assign, se cambia de nuevo el dibujo de la entidad para que sea de otro color diferente a las tapas. Como en el proceso de desempaquetado se desechan el 10% por ser defectuosas, utilizaremos un bloque decide que mande el 10% de las entidades a un bloque dispose que representa la chatarra. El resto de las piezas ya están listas para ser ensambladas con las tapas y formar así el producto final.

El proceso de ensamblado lo simularemos de la forma siguiente: se deben juntar 3 elementos, una tapa superior, una tapa inferior y un elemento interior para constituir una unidad del producto final.

El bloque Match nos permite hacer las agrupaciones adecuadas, ya que los diferentes elementos van llegando a él a través de sus 3 entradas y se van colocando en las 3 colas que tiene. En el instante en el que haya 1 unidad en cada una de las colas, el bloque deja pasar 1 unidad de cada una de las 3 colas al bloque siguiente. De esta manera, se puede ordenar la salida de entidades de forma que vayan saliendo de 3 en 3, y con la particularidad de que en cada grupo de 3, hay 1 unidad de cada tipo. Esas 3 entidades entran ahora en un bloque Batch que permite agrupar de forma temporal o definitiva las entidades, por lo que de este bloque sale una única entidad que representa al producto final. El siguiente bloque Assign sirve para cambiar de nuevo el dibujo de forma que represente el producto final, además de asignar el valor 3 al atributo TIPO (producto final). El tiempo y recursos necesarios para todo este proceso de ensamblado, lo

6

simulamos con un bloque de tipo Process que denominamos ENSAMBLAJE. En el proceso se utilizará una unidad del recurso Ensambladora.

El resultado final del proceso se manda a un bloque de tipo Dispose que denominamos ALMACEN. Sin embargo, antes de entrar en el Dispose, debemos registrar el tiempo de fabricación para poder calcular el tiempo medio de fabricación de una unidad del producto. Por un lado utilizaremos un bloque de tipo Record, en el que se calcula el tiempo transcurrido desde la creación de la entidad hasta el instante actual (entrada en el almacén). Para hacer el cálculo, es necesario conocer el instante exacto en el que la entidad fue creada; esto es posible utilizando un atributo de llamaremos TENTRADA, al que se asigna como valor el instante en el que la entidad fue creada (que es el valor

7

actual del reloj de la simulación o TNOW). Esta asignación se hará justo después de crear las entidades, en los bloques Assign 1 y Assign 5. En el momento en el que la entidad pasa por el bloque Record, se hace el cálculo del tiempo transcurrido desde su creación. El valor medio de este tiempo, calculado para todas las unidades terminadas, saldrá dentro del fichero de resultados con el nombre de TmedioFabricacion,

El bloque Assign 8 que aparece antes del último bloque Dispose, se utiliza para calcular de forma manual el tiempo medio de fabricación, con el objeto de presentar en un display dentro del modelo lógico este resultado. Se calcula el valor de una variable (que llamamos TFabricación por medio de la expresión: TFabricacion = TNOW - TENTRADA Donde TNOW es la hora actual que marca el reloj de la simulación y TEntrada es la hora de creación de la entidad. El modelo final aparece representado en la siguiente figura:

8

Para poder observar los resultados en el mismo modelo, vamos a colocar varias pantallas o displays, en los que se pueda ver durante la ejecución de la simulación, algunos valores interesantes: 1. 2. 3. 4. 5.

Calendario y hora de la simulación. Número de unidades fabricadas. Tiempo medio de fabricación de una unidad del producto. Número de unidades en cada cola del bloque match. Número total de unidades en todas las colas del modelo (3 del bloque match, 3 en los procesos de pintura, desempaquetado y ensamblado, y la cola de la agrupación batch 1).

Estos tres iconos de la barra de herramientas son los que se utilizan para esta tarea. El primero es para incluir un reloj; el segundo un calendario y el tercero un display.

9

NQ(Match 1.Queue1) + NQ(Match 1.Queue2) + NQ(Match 1.Queue3) + NQ(PINTURA.Queue) + NQ(ENSAMBLAJE.Queue)*3 + NQ(DESEMPAQUETADO.Queue) + NQ(Batch 1.Queue)

En la figura siguiente se muestra el modelo completo, una vez añadidos los elementos citados.

10

Después de ejecutar la simulación, en las condiciones que se muestran en la figura, se pueden ver los resultados en las diferentes displays que se han incluido en el modelo.

11

EJEMPLO 3 SIMULACIÓN DE DISTINTOS TRANSPORTES CON ARENA Las piezas llegan al primer proceso de una en una, con una media de 10 unidades/hora (Poisson); la mitad son de color ROJO y la otra mitad AZULES. En el primer proceso se dispone de 2 máquinas iguales que realizar el trabajo tardando un tiempo que se distribuye según una triangular de tiempos mínimo, modal y máximo, de 5, 8 y 10 minutos respectivamente. Cuando finaliza este primer trabajo, se mandan las piezas al departamento 2 utilizando un transporte directo (“ROUTE”) que tarda 12 minutos. En el departamento 2, se agrupan las piezas en cajas de 6 unidades del mismo color. Las cajas son mandadas al departamento 3 a través de una cinta transportadora (“CONVEYOR”), de 100 metros de longitud y que se mueve a una velocidad constante de 200 metros/hora. En el departamento 3 se sacan las unidades de las cajas, y se procesan de una en una en una máquina que tarda un tiempo que se distribuye uniformemente entre 4 y 8 minutos. El producto ya finalizado se mete otra vez en cajas de 10 unidades del mismo color que se llevarán al almacén 1 si son rojas, y al almacén 2 si son azules. Para ello se utilizará una carretilla eléctrica (“TRANSPORTER”), que se moverá a una velocidad de 30 km/hora si va vacía, y 10 km/hora cuando va llena. La distancia hasta el almacén 1 es de 6 km, y de 10 km al almacén 2. Simular 100 horas de funcionamiento del sistema.

1

SOLUCIÓN Comenzaremos por simular el proceso de creación de las piezas, utilizando un bloque Create. Posteriormente colocaremos un Assign para asignar a cada entidad un atributo que llamaremos Color, y que tendrá el valor 1 si es de color rojo, y 2 si es de color azul. Ahora, utilizando un bloque decide podemos asignar el dibujo Picture.Red Ball a las piezas rojas (color=1), o Picture.Blue Ball a las azules (color=2). 0 Create 1

True

Decide 1

Assign 1

Assign 2

0 0

False

Assign 3

Ahora simularemos el primer proceso con un bloque Process, y la primera transferencia desde la Estación 1 hasta la Estación 2, con un transporte directo Route que tardará 12 minutos. As s ig n 2

As s ig n 3

Pr o c e s s 1

Station 1

0

2

Route 1

Station 2

Route 1

S tati on 2

Di s pos e 1

0

Colocamos un bloque Dispose al final para poder empezar a simular. Simularemos un total de 100 horas, este dato se introduce en el campo Replication Length, dentro del menú Run Setup. Utilizando los elementos de animación, dibujaremos un primer esquema de la animación.

SCANNER

ESTACI ÓN 1

SCANNER

00:00:00 ESTACI ÓN 2

3

La agrupación en cajas se simula con el bloque Batch. Eligiendo By attribute en la opción Rule, se pueden agrupar separando las de color rojo de las de color azul. Introducimos un bloque Station para marcar el punto de salida del departamento 2. Utilizaremos un bloque Assign para cambiar el dibujo de las entidades a Picture.Box

Station 2

B atc h 1

Station 4

A s s i gn 4

0

Para simular la cinta transportadora o Conveyor, utilizaremos 3 bloques: un bloque Access (para colocar la entidad en la cinta), un bloque Convey (para mover la entidad a su destino), y un bloque Exit (para descargar la entidad de la cinta transportadora).

Station 4

As s ig n 4

Station 3

Access 1

Convey 1

Exit 1

D is p o s e 1

0

4

SCANNER

ESTACIÓN 1

SCANNER

00 :0 0:0 0 ESTACIÓN 2

ESTACIÓN 4

ESTACIÓN 3

En el departamento 3, se sacan las piezas de las cajas, lo que se simula con un bloque Separate que deshaga las agrupaciones hechas antes de la cinta transportadora. Las piezas pasan a la cola del proceso 3 que va cogiendo una por una y haciendo una operación cuyo tiempo se distribuye según una uniforme entre 4 y 8 minutos. El producto final se mete de nuevo en cajas pero ahora de capacidad 10 (del mismo color). Por último colocamos un bloque Station para designar el punto de salida del departamento 3, y un bloque Assign para cambiar de nuevo el dibujo a Picture.Packet

0 Exit 1

P ro ce ss 2

S eparate 1

0

St ati on 5

B atc h 2

0

5

A s s i gn 5

Para simular el transporte hasta los almacenes, utilizamos un transporte por lotes (Transporter), que requiere de 3 bloques: un bloque Request, para solicitar un transporte, un bloque Transport que mueve el transporte hacia la estación de destino, y un bloque Free, que libera el transporte para que pueda ser utilizado por otras entidades. Antes de liberar el transporte, lo devolvemos al punto de partida utilizando un bloque Move. Para simular el tiempo de carga del transporte, utilizaremos un bloque Process, en el que un recurso Resource 3, cargará el transporte en un tiempo constante de 15 minutos.

P rocess 3

Reques t 2

Trans port 1

0

S tation 6

M ov e 1

Free 1

alm acen 1

0

S tation 7

M ov e 2

Free 2

alm acen 2

0

6

SCANNER

ESTACIÓN 7 ESTACIÓN 1

SCANNER

00:00:00 ESTACIÓN 2

SCANNER

ESTACIÓN 6

7