Simulacion de Eventos Discretos

105
Simulación de Sistemas – Semestre 2008 -1 Simulación de Sistemas Simulación de Modelos de Eventos Discretos Ing. Eduardo Carbajal L.

Transcript of Simulacion de Eventos Discretos

Page 1: Simulacion de Eventos Discretos

Simulación de Sistemas – Semestre 2008 -1

Simulación de Sistemas

Simulación de Modelos de Eventos Discretos

Ing. Eduardo Carbajal L.

Page 2: Simulacion de Eventos Discretos

Agenda

1. Introducción a Arena

2. Primeros Pasos en Arena

3. Conceptos Básicos

4. Modelo Básico de Flujo de Entidades

5. Indicadores de Desempeño

6. Ejecución y Reportes Básicos

7. Casos comunes

8. Variables de sistema

9. Más Bloques y Elementos

Page 3: Simulacion de Eventos Discretos

Introducción a Arena

¿Qué es Arena?Arena es un programa de simulación y automatización desarrollado por Rockwell

Automation que usa el procesador SIMAN y lenguaje de simulación.

¿Qué nos permite hacer Arena?Arena permite simular procesos para analizar indicadores de desempeño y evaluar

el impacto de posibles cambios en los modelos. Al simular de manera precisa un proceso, las empresas pueden ver el resultado de posibles cambios sin necesidad de implementarlos en tiempo real, ahorrando tiempo importante y recursos

Datos de Entrada dados ResultadosSimulación en ArenaDistribuciones de datos

ParámetrosPara cada escenario simuladoIndicadores de desempeño:• Utilización de servidores• Tiempos de esperas• Costos

Modelo construido de acuerdo a la lógica del proceso real

Page 4: Simulacion de Eventos Discretos

Introducción a Arena

¿Qué se debe hacer antes de construir un modelo en Arena?

Sistema Real

Modelo en Arena Base

Identificar entidades y

recursos1Identificar la lógica de los

procesos 2Identificar

indicadores de desempeño3

Definir supuestos4

Page 5: Simulacion de Eventos Discretos

Introducción a Arena

¿Cómo se construye un modelo?En Arena, los usuarios construyen un modelo experimental colocando módulos que

representan procesos o lógica. Conectores de línea son empleados para unir estos módulos y especificar el flujo de las entidades. Mientras que los módulos ejecutan acciones específicas respecto a las entidades, flujo y tiempo, la representación precisa de las entidades con respecto a los objetos de la vida real depende de la subjetividad del modelador.

Page 6: Simulacion de Eventos Discretos

Introducción a Arena

¿Compatibilidad de la información generada en Arena?

Arena integra tecnologías de Microsoft, incluyendo Visual Basic for Applications, de manera que los modelos pueden ser automatizados con mayor nivel de profundidad si se necesitan algoritmos específicos. También permite importar diagramas de flujo de Microsoft Visio y la exportación/importación de datos contenidos en hojas de cálculo de Excel y bases de datos de Access.

Page 7: Simulacion de Eventos Discretos

Primeros Pasos en ArenaAl iniciar Arena se muestra al pantalla siguiente

Área de Trabajo

Área de Resultados

Barras del

Proyecto

Barra de Estado

Page 8: Simulacion de Eventos Discretos

Primeros Pasos en Arena¿Cuales Template Panels emplearemos para simular?

Permiten representar los procesos lógicos del sistema, como tal necesitan estar vinculados entre si a través de conectores. Los bloques que representan elementos tangibles (colas, variables, recursos) deben estar definidos antes de emplearse como bloques

Permiten definir los elementos empleados en el modelo de acuerdo a sus características y propiedades. A diferencia de los BLOCKS, los ELEMENTS no se conectan entre si.

Ejemplos: Demoras de tiempo BLOCK DELAYRepresentación física de una cola BLOCK QUEUE

Ejemplos: Definición de una cola ELEMENT QUEUES Definición de un recurso ELEMENT RESOURCES

Para el desarrollo de los modelos en el curso emplearemos AMBOS EN SIMULTÁNEO, por lo tanto nuestros modelos tendrán un componente de representación del proceso y uno de definición de los elementos involucrados en el proceso

BLOCKS

ELEMENTS

Page 9: Simulacion de Eventos Discretos

Primeros Pasos en ArenaPara empezar a modelar en Arena agregaremos las barras de bloques y elementos, entrando en File>Template Panel>Attach, seleccionando en la ventana Attach Template Panel: Blocks y Elements

Page 10: Simulacion de Eventos Discretos

Conceptos BásicosDiagramas de Bloques

Es un diagrama de flujo construido secuencialmente que describe como se mueven las entidades a través del sistema. Sirven para modelar los procesos en el lenguaje SIMAN

BLOCKS

BLOCKS

BLOCKSBLOCKS

ENTIDAD

EL sentido de los conectores reflejan el flujo de las entidades

Cada bloque representa un proceso lógico/temporal

Page 11: Simulacion de Eventos Discretos

Conceptos BásicosFlujo de entidades entre Bloques

Es controlado por conectores. Un conector transfiera una entidad en tiempo cero desde un punto fuera de un bloque (exit point), a un punto de entrada (entry point) de un segundo bloque. En el diagrama de bloque un entry point se representa como un pequeño rectángulo en el extremo izquierdo del bloque, mientras que el exit point es representado como una pequeña flecha en el extremo izquierdo.

DELAY RELEASE

EXIT POINT

ENTRY POINT

CONECTOR

Page 12: Simulacion de Eventos Discretos

Conceptos BásicosBloques: Condiciones de funcionamiento

Son las condiciones (operands) que necesitan ser especificadas para controlar la exacta operación de cada bloque.

DELAY

10.0

BLOQUE

OPERAND PRINCIPAL

Existen operands OBLIGATORIOS y

OPCIONALES

Los operands OBLIGATORIOS no tienen

un valor por default y deben ser especificados

Los operands OPCIONALES se

especifican sólo cuando se desea cambiar el valor

por default pre establecido.

Debido a limitaciones de espacio solo los valores

de los operands más importantes son mostrados en el

diagrama de bloques

Page 13: Simulacion de Eventos Discretos

Conceptos BásicosBloques: Segmentos de Línea

Un segmento de línea es simplemente un agrupamiento conveniente de operands, asociados en el bloque

El número de segmentos de línea difiere de bloque a bloque. En general los segmentos de línea son separados por comas en lenguaje SIMAN.

Segmento de línea

NÙMERO DE SECUENCIA (BLOCK SEQUENCE NUMBER)Provee un mecanismo de referencia del bloque dentro del modelo. Éste es asignado automáticamente y aparece en el extremo izquierdo del modelo generado por el compilador de modelos SIMAN. El primer bloque es numerado con 1 y así sucesivamente cada bloque.

Page 14: Simulacion de Eventos Discretos

Conceptos BásicosSegmentos de Línea

Segmento

de Línea

de Etique

tas

Segmento de Línea

de Comentarios

Segmento de Línea

Principal

ETIQUETAS(BLOCK LABELS)

• Cada bloque en un modelo SIMAN puede tener una etiqueta pero generalmente solo se asigna una cuando el bloque será mencionado por uno o más bloques del modelo

COMENTARIOS(BLOCK COMMENTS)

• Un campo especial que permite al usuario la descripción de la función de cada bloque. Su uso es opcional, pero es recomendable hacerlo para el caso de modelos grandes y complejos.¿ Qué tipo de operands permite definir el

lenguaje SIMAN?

Page 15: Simulacion de Eventos Discretos

Conceptos BásicosOperands: Constantes

Se definen dos tipos dentro de SIMAN

Una constante entera representada por un número entero sin punto decimal

Una constante real representada por un numero real(con punto decimal), fraccional o un real con exponente. El exponente debe mostrar la letra

“E”.

Ejemplos: Ejemplos:

• 10000• 20• 500• 60• 7• 2• 35

• 5/7 • 1.E4• 2.10• 1 5/7• 2.E2• 5,678

Page 16: Simulacion de Eventos Discretos

Conceptos BásicosOperands: Variables

Existen dos tipos de variable:

De uso general o global, son definidas por el usuario. Los nombres asignables a estas variables

pueden consistir de letras, número o caracteres especiales (_,@,%,&), pero deben empezar con

una letra o carácter especial.

De uso restringido por SIMAN, predefinidas por el sistema que no necesitan ser definidas por el

usuario.

• tnow ( instante del tiempo actual)

• tfin (tiempo final de la simulación)

• variable• @55• nombre46

Ejemplos: Ejemplos:

Page 17: Simulacion de Eventos Discretos

Conceptos BásicosOperands: Atributos

A diferencia de las variables los atributos son locales, son características que describen y distinguen a las entidades. Todas las entidades poseen los mismos atributos pero generalmente con diferentes valores para diferentes entidades. Algunos son automáticos, el resto deben ser definidos por los usuarios

De uso local, son definidas por el usuario. Los nombres asignables a estos atributos pueden

consistir de letras, número o caracteres especiales (_,@,%,&), pero deben empezar con una letra o

carácter especial.

De uso restringido por SIMAN, predefinidas por el sistema que no necesitan ser definidas por el

usuario.

• NG (número de entidades de un grupo)• NS (número de secuencia de la entidad)

• tipo producto• tiempo de

llegada• color

Ejemplos: Ejemplos:

Page 18: Simulacion de Eventos Discretos

Conceptos BásicosDiferencias entre variables y atributos

Variables

Son globa

les

Cuando se modifica el

valor de una variable en

un bloque se modifica para

todo el modelo

Assign Assign

Al pasar la entidad por el BLOCK Assign sistema activo cambia de valor a 1 (color azul) para TODO EL MODELO

Variable :sistema activo

• Inicialmente valor 0 (color verde)

Al pasar la entidad por el BLOCK Assign el atributo tipo de producto cambia de valor 1(color azul) pero sólo para esa entidad, el resto de entidades no se afectan hasta pasar por el mismo BLOCK

AtributosSon locales vinculados a las entidades

Cuando se modifica el valor de un

atributo en un bloque sólo se modifica para la entidad que está pasando

por dicho bloque en

dicho instante de tiempo

Atributo: tipo de producto

• Inicialmente valor 0 (color verde)

Page 19: Simulacion de Eventos Discretos

Conceptos BásicosOperands: Variables Aleatorias

Existen distribuciones de variables aleatorias disponibles que pueden ser asignados a un operand. Es necesario seleccionar la distribución deseada y definir los parámetros de cada una. Las abreviaturas se muestran en la tabla inferior.

Page 20: Simulacion de Eventos Discretos

Conceptos BásicosOperands: Expresiones

Una expresión es una combinación de constantes, variables, atributos y/o variables aleatorias empleando operadores aritméticos de suma (+), resta (-), multiplicación (x), división(/), potenciación(^), y con paréntesis que indicarán el orden de evaluación.

Ejemplos:constante entera + atributo

5 + tipoproducto

constante real + variable aleatoria

1.E2 + NORM(10,2)

variable aleatoria x variable

TRIA(5,6,7)

* tnow)

(variable aleatoria con parámetro cuyo valor es el del atributo tipo producto) dividida por una constante entera

EXPO(tipoproducto) / 500

(variable con dos parámetros cuyo valor se obtiene de las variables media y desviación) elevada a la suma de una constante real y un atributo

NORM(media,desviación)^(5.2+tipoproducto)

Page 21: Simulacion de Eventos Discretos

Conceptos BásicosOperands: Condiciones

Una condición es una combinación de dos o más expresiones empleando operadores de relación y operadores lógicos

Los operadores lógicos usados en Arena (AND) Se representa con el símbolo &&

(OR) Se representa con el símbolo II

Ejemplos:• (atributo menor a constante entera )tipoproducto < 50

• (variable aleatoria igual a constante entera)NORM(10,2) == 20

• (variable mayor que constante real y al mismo tiempo atributo igual a constante entera)

tnow >20.5 && tipoproducto ==1

Page 22: Simulacion de Eventos Discretos

Conceptos Básicos¿En que orden se evalúan las expresiones y condiciones?

Las expresiones y condiciones en SIMAN son evaluadas siguiendo las prioridades siguientes.

Paréntesis

Operadores Aritméticos

Potencia

Multiplicación y División

Suma y Resta

Operadores relacionales

Operadores lógicos

Page 23: Simulacion de Eventos Discretos

Conceptos BásicosOperands: Condicionales

Una condicional en Arena es una condición encerrada entre paréntesis, que toma resultados binarios ( 0 ó 1) dependiendo de si la condición se cumple o no.

Ejemplos:

(tipoproducto == 6)

Si tipoproducto es 6, la condición entre paréntesis es

verdadera, entonces la condición dentro del

paréntesis toma el valor de 1

Si tipoproducto no es 6, la condición entre paréntesis es falsa, entonces la condición dentro del paréntesis toma el

valor de 0

10*(tnow >200 && tipoproducto ==1)

Si tipoproducto es 1, y al mismo tiempo tnow es mayor que 200 la condición entre paréntesis es verdadera, entonces la condición dentro del paréntesis toma el valor de 1 • Entonces la expresión se reduce a

10*(1)

Si no se cumplen ambas condiciones al mismo tiempo entonces la condición dentro del paréntesis es falsa y toma el valor de 0• Entonces la expresión se

reduce a 10*(0)

Page 24: Simulacion de Eventos Discretos

Conceptos BásicosEjemplos de Condicionales

Dado una entidad con atributo tipoproducto con valor 1, en el instante de tiempo 500. Indique que valor toman las condicionales y cual es el valor resultante de los operandsEjemplos:

15 * (tipoproducto == 1)

tipo de producto == 1 verdadera

(tipo de producto == 1 ) (1)

Entonces:15*(1) = 15

NORM(10,2) * (tnow >400 II tipoproducto ==2)

tnow>400 verdaderatipoproducto==2 falsa

tnow>400 II tipoproducto==2

verdadera(tnow>400 II

tipoproducto==2 ) (1)Entonces:

NORM(10,2)*(1) = NORM(10,2)

(tnow <= 40 && tipoproducto==1) + (tipoproducto ==2 II tnow >4.E2)

15*(tnow > 40 && tipoproducto==1) + expo(2) * (tipoproducto ==3 II tnow < 700)

¿ y en estos casos?

Page 25: Simulacion de Eventos Discretos

Bloques y Elementos BásicosModelo Básico de Flujo de Entidades

LLEGADA SALIDAInicio atención Fin atención

Entidad. Personas en cola Recurso. Persona en Counter

Create Queue Seize Release DisposeDelay

ResourcesQueuesReplicateProject

BLOCKS

ELEMENTS

Servicio

Page 26: Simulacion de Eventos Discretos

Recursos : Cajeras (3)

Tiempo entre llegadas : EXPO(1)

Existe una cola de espera

Tiempo de servicio: NORM(2,1)

Tiempo de simulación 8 horas = 480 minutos

Element RESOURCES

Block CREATE

Block QUEUE

Block SEIZE, Block RELEASE

Block DELAY

Element REPLICATE

Ejemplo 1

Los clientes de un banco llegan con tiempos entre llegadas exponencial con media de 1 minuto a una pequeña sucursal con 3 cajeras, teniendo que esperar en una única cola en caso de que éstas se encuentren ocupadas. El tiempo de servicio de cada una de ellas por entidad se puede aproximar a una distribución normal con media de 2 minutos y desviación estándar de 1 minuto. Se le pide representar el sistema como un modelo de simulación en Arena para un día normal de 8 horas.

Solución

Finalmente dado que existe una cola debe definirse también en el Element QUEUES y las entidades saldrán del sistema por un Block DISPOSE

Page 27: Simulacion de Eventos Discretos

Indicadores de desempeñoArena permite emplear bloques y elementos que se agregan a los modelos con el objetivo de medir indicadores de desempeño específicos.

LLEGADA SALIDA

Para medir:

INDICADORES DE TIEMPOS O DEMORAS

Se emplea en Arena:

Tally

TalliesAttribute

s

BLOCKS

ELEMENTS

Para medir:

INDICADORES DE CANTIDAD O FLUJO

Count

Counters

BLOCKS

ELEMENTS

¿Cuál es el tiempo que pasa la entidad en el sistema?

¿Cuál es el tiempo que pasa la entidad en una cola?

¿Cuantas entidades fueron atendidas en el

sistema?

¿Cuantas clientes ingresaron a la cola?

Page 28: Simulacion de Eventos Discretos

Indicadores de desempeñoIndicadores de tiempo (I)

Create Queue Seize Release DisposeDelay

ResourcesQueuesReplicateProject

BLOCKS

ELEMENTS

¿Dónde se coloca el BLOCK Tally?Se coloca después del BLOCK, que presenta dentro del proceso, el final del intervalo de tiempo que se quiere medir. La única restricción es que NO puede colocarse después de un BLOCK Queue.

Si se desea medir tiempo en el sistema el BLOCK Tally debería colocarse antes del BLOCK Dispose que representa la salida del sistema

Si se desea medir tiempo en cola el BLOCK Tally debería colocarse después del BLOCK Seize

Tally

Tallies Attributes

Create Queue Seize Release DisposeDelay

Tally

Page 29: Simulacion de Eventos Discretos

Indicadores de desempeñoIndicadores de tiempo (II)

¿Cómo se mide el tiempo con el BLOCK Tally? (I)En el operand value del BLOCK Tally se debe definir el valor que se asigna a cada Tally. Este valor como un reflejo de un periodo de tiempo transcurrido debe ser por definición un intervalo de tiempo desde un punto inicial hasta el instante de tiempo transcurrido hasta llegar al BLOCK Tally.

Arena maneja una variable definida en el lenguaje SIMAN que no necesita definirse, tnow, cuyo valor es el instante de tiempo actual de la simulación en cada evento del modelo.

Es posible acumular dentro de un atributo el valor de esta variable tnow en el instante en que una entidad pasa por determinado BLOCK, marcándolo en el operand MarkAttribute del BLOCK.

Page 30: Simulacion de Eventos Discretos

Hay varias formas de asignar un valor a un atributo(como veremos mas adelante una posibilidad es empleando el block ASSIGN) sin embargo la más sencilla es emplear el operand Mark Attribute que poseen todos los bloques de Arena en el segmento de línea superior. Al seleccionar en el Mark Attribute el atributo se guarda automáticamente en él el instante de tiempo en el cual la entidad pasa por dicho bloque.

Por ejemplo si se quiere guardar el tiempo en que ingresa una entidad a un sistema, se puede definir el atributo tinicio y marcarlo con este operand en el BLOCK Create. El resultado será que se registra en este atributo el tiempo de ingreso para cada entidad.

Indicadores de desempeño¿Cómo se emplea el Mark Attribute?

Page 31: Simulacion de Eventos Discretos

Indicadores de desempeñoIndicadores de tiempo (III)

BLOCKS

El valor del operand value del BLOCK Queue entonces se define el intervalo de tiempo que se quiere medir como la diferencia entre el instante actual de tiempo en el BLOCK Tally (tnow) y el instante de tiempo inicial marcado en el atributo tinicio con el operand MarkAttribute es decir:

tnow – tinicio (alternativamente puede emplearse también int(tinicio) )

Para el tiempo en el sistema

Para el tiempo en cola

¿Cómo se mide el tiempo con el BLOCK Tally? (II)

Create Queue Seize Release DisposeDelay Tally

tsistema

Create Queue Seize Release DisposeDelayTally

tcola

ResourcesQueuesReplicateProject

ELEMENTS

Tallies Attributes

tcolatsistema

tinicio

BLOCKS

MarkAttribute: tinicio

MarkAttribute: tinicio

Page 32: Simulacion de Eventos Discretos

Indicadores de desempeñoIndicadores de cantidad

¿Dónde se coloca el BLOCK Count?

Se ubica entre los BLOCKS donde se quiere medir el flujo o número de entidades transitando. No se puede colocar, similarmente al caso anterior, después de un BLOCK Queue. Se necesita definir el operand Increment del BLOCK Count, que representa el número en el cual se incrementa el contador cada vez que una entidad pasa a través de él. Generalmente es 1.

Create Queue Seize Release DisposeDelay

BLOCKS

Si se desea medir el número de entidades que salen del sistema por ejemplo:

Count

ResourcesQueuesReplicateProject

ELEMENTS

Counters

Page 33: Simulacion de Eventos Discretos

Configuración del Reporte SIMAN en ArenaConocidos los bloques y elementos básicos se muestra a continuación la ruta parta configurar el reporte SIMAN que contiene estadísticos de las variables discretas del modelo obtenidas en cada réplica. Run >Setup en Reports seleccionar en Default Report: SIMAN Summary Report

Page 34: Simulacion de Eventos Discretos

Corrida de un Modelo en ArenaUna vez ingresado el modelo y seleccionado el reporte se puede correr el modelo dándole clic al ícono de play (►) en la barra superior del arena con lo cual se puede obtener el reporte SIMAN mostrado como ejemplo a continuación

Page 35: Simulacion de Eventos Discretos

Ejemplo 2Para el caso del ejemplo 1 contabilice el número de clientes atendidos en la sucursal del banco, el tiempo en cola y el tiempo en el sistema para los clientes. Genere el reporte correspondiente

Solución

Se deberá agregar al modelo anterior Los clientes atendidos por el sistema son aquellos que salen de servicio por tanto se debe agregar un

Block COUNT luego del Block RELEASE con operand increment de 1 (COUNT clientes atendidos)

El tiempo en cola es el intervalo de tiempo comprendido entre el momento que la entidad llega al Block QUEUE hasta que sale por el exit point del mismo bloque. Por tanto se debe marcar un atributo tiniciocola en el operand MarkAttribute del Block QUEUE, colocar un Block TALLY inmediatamente luego del Block SEIZE y el value correspondiente para el tally tiempodecola sería “tnow - tiniciocola”

El tiempo en el sistema es el intervalo comprendido desde el ingreso de las entidades hasta la salida de servicio por tanto se debe marcar un atributo tllegada en el operand Mark Attribute del Block CREATE y agregar un Block TALLY con value para el tally tsistema de “tnow-tllegada”

Finalmente agregar los Elements TALLIES, COUNTER y ATTRIBUTES donde se definan el tally tcola y tsistema, el count clientes atendidos y los atributos tllegada y tinicio de cola respectivamente

Page 36: Simulacion de Eventos Discretos

Código SIMANPara obtener el código SIMAN de un modelo se debe seguir la ruta:RUN > SIMAN > View

Código SIMAN del Ejemplo 2

0$ CREATE, 1:expo(1):MARK(tllegada):NEXT(3$);

3$ QUEUE, cola:MARK(tiniciocola);1$ SEIZE, 1,Other: Cajeras,1:NEXT(7$);

7$ TALLY: tcola,tnow-tiniciocola,1;2$ DELAY: norm(2,1),,Other:NEXT(4$);

4$ RELEASE: Cajeras,1;6$ COUNT: clientesatendidos,1;8$ TALLY: tsistema,tnow-tllegada,1;5$ DISPOSE: No;

Indicadores de secuencia

BLOCKS Operands

Separador de operands

Separador de segmentos de línea

Page 37: Simulacion de Eventos Discretos

Construcción de DB a partir de Código SIMAN

0$ CREATE, 1:expo(1):MARK(tllegada):NEXT(3$);

3$ QUEUE, cola:MARK(tiniciocola);1$ SEIZE, 1,Other: Cajeras,1:NEXT(7$);

7$ TALLY: tcola,tnow-tiniciocola,1;2$ DELAY: norm(2,1),,Other:NEXT(4$);

4$ RELEASE: Cajeras,1;6$ COUNT: clientesatendidos,1;8$ TALLY: tsistema,tnow-tllegada,1;5$ DISPOSE: No;

Create Queue

Release Dispose

Batch Size: 1Interval: expo(1)MarkAttribute: tllegada

colaMarkAttribute: tiniciocola

Seize

Priority:1Resource: CajeraNumber of Units:1

Tally

tcolaValue: tnow-tiniciocola

Number of Observations:1

Delay

Duration:norm(2,1)

Resource: CajeraNumber of Units:1

Count

Clientes atendidosIncrement: 1

Tally

tsistemaValue: tnow-tllegada

Number of Observations:1

Page 38: Simulacion de Eventos Discretos

Casos Comunes1.Tiempo entre llegadas diferentes durante el horizonte de simulación

EjemploDebe simular el sistema desde las 8am hasta las 8pm sabiendo que la tasa entre llegadas es exponencial con media de 5 minutos excepto en las horas picos, ya que durante las 10 am y 2pm la tasa de llegadas es exponencial con media de 3 minutos y durante las 12 y 3 pm es exponencial con media de 2 minutos.

8am a 10 am EXPO(5)10am a 12pm EXPO(3)12pm a 3pm EXPO(2)3pm a 8pm EXPO(5)

Método 1: Empleando tantos BLOCKs Create como intervalos de tiempos hayMétodo 2: Empleando un solo BLOCK Create

Page 39: Simulacion de Eventos Discretos

Casos Comunes1.Tiempo entre llegadas diferentes durante el horizonte de simulación – Método 1

Create

Create

Create

Create

Interval: EXPO(5)

Interval: EXPO(2)

Interval: EXPO(3)

Interval: EXPO(5)

Debemos hacer que cada BLOCK Create solo permita el ingreso de entidades durante el intervalo de tiempo correspondiente¿Qué otros parámetros tenía el BLOCK Create que me permitan hacer eso?

First CreationBatch SizeçMaximum Batches

¿Qué se hace entonces?

Empleamos condicionales que nos permitan restringir de alguna manera alguno de los operands del BLOCK Create durante los intervalos requeridos para que no ingresen entidades es decir que en esos intervalos el flujo sea O.

Page 40: Simulacion de Eventos Discretos

Casos Comunes1.Tiempo entre llegadas diferentes durante el horizonte de simulación – Método 1

¿Qué operand al tomar valor 0 me restringe el flujo de entidades?

First CreationBatch SizeMaximum Batches

¿Cómo construimos la condicional?

Empleamos la condición que delimita el rango de tiempo es decir:si a y b son los extremos del intervalo de tiempo.

tnow < a && tnow > b

Create

Create

Create

Create

Interval: EXPO(5)

Interval: EXPO(2)

Interval: EXPO(3)

Interval: EXPO(5)

Al colocarlo entre paréntesis se convierte en . (tnow < a && tnow > b)

Que toma valor 1 cuando el tiempo esta en el intervalo (a,b) o valor 0 si está fuera

Por lo tanto si se multiplica esta condicional por un número muy grande el operand Maximum Batches de cada BLOCK Create se permite que entren entidades durante el intervalo de tiempo y que no ingresen entidades fuera de él.

Maximum Batches:100000* (tnow < 120 && tnow >= 0)

Maximum Batches:100000* (tnow < 240 && tnow >=120)

Maximum Batches:100000* (tnow < 240 && tnow >= 420)

Maximum Batches:100000* (tnow < 720 && tnow >= 420)

Page 41: Simulacion de Eventos Discretos

Casos Comunes1.Tiempo entre llegadas diferentes durante el horizonte de simulación – Verificación Método 1

Create

Create

Create

Create

Interval: EXPO(5)

Interval: EXPO(2)

Interval: EXPO(3)

Interval: EXPO(5)

Maximum Batches:100000* (tnow < 120 && tnow >= 0)

Maximum Batches:100000* (tnow < 240 && tnow >=120)

Maximum Batches:100000* (tnow < 240 && tnow >= 420)

Maximum Batches:100000* (tnow < 720 && tnow >= 420)

tnow=60 tnow=150 tnow=300 tnow=560

M.B =100000

M.B =0

M.B =0

M.B =0

M.B =100000

M.B =0

M.B =0

M.B =0

M.B =0

M.B =0

M.B =0

M.B =100000

M.B =0

M.B =0

M.B =0

M.B =100000

Page 42: Simulacion de Eventos Discretos

Casos Comunes1.Tiempo entre llegadas diferentes durante el horizonte de simulación – Método 2

Create

Debemos hacer un solo BLOCK Create permita el ingreso de entidades con la correspondiente tasa de llegada en cada intervalo de tiempo. Es decir el operand Interval variará de acuerdo al tiempo. Dado que es un solo BLOCK Create entonces se debe permitir el ingreso de entidades durante todo el horizonte de timpo por lo tanto el operand a emplear no será Máximum Batches sino directamente se pondrá una condición al en el operand Interval

¿Cuál será la expresión a colocar en el operand Interval?Empleamos las mismas condicionales del método anterior sólo que se multiplican por las tasas de llegadas correspondientes a cada intervalo

Tasa * (tnow < a && tnow >= b)De esta manera si el tnow esta dentro del intervalo la condicional se

hace 1 y al multiplicarse por la tasa el valor de la expresión es justamente la tasa de llegada del intervalo correspondiente

Entonces lo que se coloca en el operand Interval del BLOCK Create será la sumatoria desde el primer intervalo hasta el último de la tasa i * (tnow < ai && tnow > bi )

Interval: EXPO(5)* (tnow < 120 && tnow >= 0)+ EXPO(3)* (tnow < 240 && tnow >=120)+ EXPO(2)* (tnow < 420 && tnow >=240)+ EXPO(5)* (tnow < 720 && tnow >= 420)+

Page 43: Simulacion de Eventos Discretos

Casos Comunes1.Tiempo entre llegadas diferentes durante el horizonte de simulación – Verificación Método 2

Create

Interval: EXPO(5)* (tnow < 120 && tnow >= 0)+ EXPO(3)* (tnow < 240 && tnow >=120)+ EXPO(2)* (tnow < 420 && tnow >=240)+ EXPO(5)* (tnow < 720 && tnow >= 420)

tnow=60

tnow=150

tnow=300

tnow=560

Interval: EXPO(5)* (1)+ EXPO(3)* (0)+ EXPO(2)* (0)+ EXPO(5)* (0) = EXPO(5)

Interval: EXPO(5)* (0)+ EXPO(3)* (1)+ EXPO(2)* (0)+ EXPO(5)* (0) = EXPO(3)

Interval: EXPO(5)* (0)+ EXPO(3)* (0)+ EXPO(2)* (1)+ EXPO(5)* (0) = EXPO(2)

Interval: EXPO(5)* (0)+ EXPO(3)* (0)+ EXPO(2)* (0)+ EXPO(5)* (1) = EXPO(5)

Page 44: Simulacion de Eventos Discretos

Casos Comunes2.Las entidades llegan en cantidades diferentes durante el horizonte de simulación

EjemploDebe simular el sistema desde las 8am hasta las 8pm sabiendo que si bien la tasa entre llegadas se mantiene durante todo el día en expo(5) las entidades llegan de 2 en 2 entre las 8am y las 12pm, de 4 en 4 entre las 12pm y las 4pm, y de 7 en 7 a partir de las 4pm y hasta las 8pm.

Cantidad de entidades en cada arribo(Batch Size)8am a 12 pm 212pm a 4pm 44pm a 8pm 7

Método 1: Empleando tantos BLOCKs Create como intervalos de tiempos hayMétodo 2: Empleando un solo BLOCK Create

Page 45: Simulacion de Eventos Discretos

Casos Comunes

Create

Create

Create

BatchSize:2Interval: EXPO(5)

BatchSize:7Interval: EXPO(5)

BatchSize:4Interval: EXPO(5)

La cantidad de entidades por arribo se ingresa en el operand Batch Size del BLOCK Create. Como empleamos tres de ellos cada BLOCK Create tiene su correspondiente Batch SizeDebemos hacer que cada BLOCK Create solo permita el ingreso de entidades durante el intervalo de tiempo correspondiente

Empleamos condicionales para limitar el flujo de entidades a través de cada BLOCK Create, limitando el Maximum Batches para que sea un número muy grande en el intervalo de tiempo adecuado y 0 para que no permita el ingreso de entidades fuera del intervalo, tal como hicimos en el caso anterior. Las expresiones a colocar serían entonces:

Maximum Batches:100000* (tnow < 240)

Maximum Batches:100000* (tnow < 480 && tnow >=240)

Maximum Batches:100000* (tnow < 720 && tnow >= 480)

2.Las entidades llegan en cantidadesdiferentes durante el horizonte de simulación – Método I

Page 46: Simulacion de Eventos Discretos

Casos Comunes

Debemos hacer un solo BLOCK Create permita el ingreso de entidades con el correspondiente Batch Size en cada intervalo de tiempo. Dado que es un solo BLOCK Create entonces se debe permitir el ingreso de entidades durante todo el horizonte de tiempo por lo tanto el operand a emplear no será Máximum Baches sino directamente se pondrá una condición al en el operand Batch Size

Create

¿Cuál será la expresión a colocar en el operand BatchSize?Empleamos las mismas condicionales del método anterior sólo que se multiplican por los Batch Size correspondientes a cada intervalo

Batch Size * (tnow < a && tnow >= b)De esta manera si el tnow esta dentro del intervalo la condicional se

hace 1 y al multiplicarse el BatchSize el valor de la expresión es justamente el Batch Size del intervalo correspondiente

Entonces lo que se coloca en el operand Batch Size del BLOCK Create será la sumatoria desde el primer intervalo hasta el último del Batch Size i* (tnow < ai && tnow > bi )

Interval: EXPO (5)Batch Size: 2*(tnow < 240 && tnow >= 0)+ 4*(tnow < 480 && tnow >=240)+7*(tnow < 720 && tnow >=480)

2.Las entidades llegan en cantidadesdiferentes durante el horizonte de simulación – Método II

Page 47: Simulacion de Eventos Discretos

Casos Comunes3.La simulación NO tiene una duración dada

Generalmente se simula un sistema por un tiempo dado que se especifica en el operand Replication Length del ELEMENT Replícate. Sin embargo hay casos donde el fin de la simulación no depende de un instante de tiempo dado sino que debe terminar cuando sale la última entidad del sistema.Un ejemplo:

Los clientes llegan a ser atendidos a un banco entre las 8am y 6pm con una tasa entre llegadas exponencial con media 4. A las 6pm el banco cierra las puertas de ingreso y termina de atender a los clientes que hayan ingresado hasta dicho hora antes que los cajeros cierren sus respectivas ventanillas

¿Por qué sería incorrecto simplemente colocar 600 en el operand Replication Lenght del ELEMENT Replicate?Porque entonces la simulación acabaría en el minuto 600 es decir a las 6pm y no es lo que el problema pide.

sino que termina cuando sale la última entidad del modelo

¿Qué se debe hacer entonces?Se debe restringir el ingreso de entidades en el BLOCK Create para que sólo puedan ingresar entre las 8am y 6pm. Al mismo tiempo NO se debe colocar un ELEMENT Replicate, entonces lo que sucede es que al no haber instante definido de fin de simulación el modelo sigue ejecutándose hasta que no exista mas flujo de entidades por ningún bloque

Page 48: Simulacion de Eventos Discretos

Casos Comunes3.La simulación NO tiene una duración dada

¿Qué expresión permite controlar el flujo de entidades en un periodo definido y en que operand del BLOCK Create se debe colocar esta expresión?

sino que termina cuando sale la última entidad del modelo

La última entidad ingresa sólo hasta antes de las 6pm

Create

Interval: EXPO(4) Maximum Batches: 100000*(tnow < 600)

Queue Seize Release DisposeDelay

Resources Queues ReplicateProject

La última entidad se demora un tiempo t desde su ingreso en el BLOCK Create hasta que alcanza, luego de hacer cola y ser atendida, el BLOCK DisposeAl llegar la última entidad al BLOCK Dispose acaba la simulación en el tiempo x + t

Ingresa la última entidad en el tiempo x < 600

Llega a este punto en x+t

Page 49: Simulacion de Eventos Discretos

Casos Comunes4. Colas con capacidad máxima

Existen casos en las cuales las colas tienen una capacidad máxima definida Q. Cuando la cola alcanza dicho tamaño Q, cualquier entidad que llegue al BLOCK Queue no podrá ingresar a la cola y se envía por un camino alternativo.

Resources Queues ReplicateProject

En una agencia bancaria hay clientes que llegan con una tasa entre llegadas exponencial con media de 1 minutos, siendo atendidos luego de hacer una única cola por un único cajero. El tiempo de servicio es normal con media de 5 minutos y desviación estándar de 12 minutos Se sabe que como máximo pueden haber 7 personas en cola. Si alguien llega cuando hay 7 personas en cola simplemente se retira de la agencia. Simule el sistema por un lapso de dos horas.

¿Cómo se definiría el BLOCK Queue en este caso?

QueueCreate Seize Release DisposeDelay

Las entidades que lleguen al BLOCK Queue cuando el tamaño de cola sea Q no ingresan a la cola y salen por el exit point inferior. Este EXIT POINT INFERIOR SOLO SE USA EN ESTOS CASOS

Page 50: Simulacion de Eventos Discretos

Casos Comunes4. Colas con capacidad máxima

Existen casos en las cuales las colas tienen una capacidad máxima definida Q. Cuando la cola alcanza dicho tamaño Q, cualquier entidad que llegue al BLOCK Queue no podrá ingresar a la cola y se envía por un camino alternativo.

Resources Queues ReplicateProject

En una agencia bancaria hay clientes que llegan con una tasa entre llegadas exponencial con media de 1 minutos, siendo atendidos luego de hacer una única cola por 5 diferentes cajeros. El tiempo de servicio es normal con media de 5 minutos y desviación estándar de 12 minutos Se sabe que como máximo pueden haber 7 personas en cola. Si alguien llega cuando hay 15 personas en cola simplemente se retira de la agencia. Simule el sistema por un lapso de dos horas.

¿Cómo se definiría el BLOCK Queue en este caso?

QueueCreate Seize Release DisposeDelay

Las entidades que lleguen al BLOCK Queue cuando el tamaño de cola sea Q no ingresan a la cola y salen por el exit point inferior. Este EXIT POINT INFERIOR SOLO SE USA EN ESTOS CASOS

Page 51: Simulacion de Eventos Discretos

Casos Comunes5. Contadores para medir flujos de entidades en intervalos

Se quiere medir en un modelo el número de entidades que salen de un sistema entre las 3pm y 5pm sabiendo que el sistema opera desde las 8am hasta las 8pm

de tiempos definidos durante el horizonte de simulación

El BLOCK Count tiene un solo operand que es el Count IncrementRecordando que el operand Count Increment es el incremento en el contador por cada entidad que pasa lo que debemos hacer es que el Count Increment se incremente de 1 en 1 sólo en el intervalo de 3pm a 5pm (es decir cuando el tiempo actual de la simulación esta entre el minuto 420 y 540)

Por tanto recurrimos nuevamente a expresiones que tengan condicionales

Count Increment: 1*(tnow >420 && tnow <= 540)

Count

El BLOCK Count debería colocarse antes del BLOCK Dispose, con la siguiente expresión en el operand Count Increment

Dispose

Page 52: Simulacion de Eventos Discretos

Variables y Funciones de ArenaSon variables y funciones propias del Arena que están predefinidas. Se clasifican en los siguientes grupos:

Variables de Elementos

Variables de Replicación

Variables Relacionadas con las Entidades

Funciones Matemáticas

Funciones de Fecha y Tiempo

Son en total mas de 50 funciones por lo cual memorizar cada una resultaría complicado, el Arena dispone de un asistente de construcción de expresiones a partir de funciones de Arena denominado Expression Builder

Para acceder al Expression Builder solo basta hacer click derecho dentro del campo de cualquier

Operand de cualquier BLOCK o ELEMENT y seleccionar la opción Build Expression

Page 53: Simulacion de Eventos Discretos

Variables y Funciones de Arena

En la sección superior se pueden definir rápidamente elementos y agregarles argumentos, El Expression Type contiene una gama de opciones ramificadas organizadas de acuerdo al tipo, cuando se selecciona un elemento en esta área automáticamente uno o mas argumentos pueden mostrarse a la derecha siendo necesario definirlos para la expresión seleccionada. Automáticamente al efectuar una selección se escribe en Current Expression .

NOTA: Las expresiones de Expression Type están organizadas primero por panel y luego por módulo. Los elementos de expresión disponibles para tipo de módulo en particular estarán disponibles si al menos existe dentro del modelo actual un módulo de ese tipo.

Posibles elementos de expresión organizados por tipos Argumento de la expresión

Botones de Operadores

Campo de construcción de Expresiones

Page 54: Simulacion de Eventos Discretos

Variables y Funciones de ArenaDentro de las funciones mas importantes que usaremos continuamente vinculadas a los BLOCKS y ELEMENTS visto hasta el momento tenemos:

NR (Recurso X)

• Número de unidades del Recurso X ocupadas

DAVG (Recurso X .NumberScheduled )

• El número de unidades promedio programadas del Recurso X

NC (Contador X)

• Valor del Contador X

Vinculadas a Recursos:

Vinculadas a Colas:

Vinculadas a Counters

Vinculadas a Tallies:

Los valores obtenidos son del instante en el cual se emplea la expresión. Estas

expresiones pueden emplearse en cualquier operand de cualquier BLOCK o ELEMENT, generalmente se emplean para

construir condicionales

NQ (Cola X)

• Número de entidades en la Cola X

DAVG (ColaX . NumberInQueue)

• Número promedio de entidades en la Cola XSAQUE(Cola X,NSYM(Atributo X))

• Suma del Atributo X de las entidades en la Cola X

TAVG(Cola X.WaitingTime)

• Tiempo promedio en cola de las entidades en la Cola X

TMIN(Tally X)

• Tiempo mínimo registrado en el Tally X

TMAX(Tally X)

• Tiempo máximo registrado en el Tally XTAVG(Tally X)

• Tiempo promedio en el Tally X

TVALUE(Tally X)

• Último tiempo registrado en el Tally X

Page 55: Simulacion de Eventos Discretos

Variables y Funciones de Arena

Create Queue Seize Release DisposeDelay

ResourcesQueuesReplicateProject

BLOCKS

ELEMENTS

EXPO(3) Cola1 Cajeros CajerosNORM(5,1)

Cajeros (3)Cola1120Luego de un tiempo t se tiene el siguiente estado del sistema

NR(Cajeros) NQ(Cola1)NC(Clientes atendidos)

Counters

Clientes atendidos

Count

Clientes atendidos

== 2== 0 == 0

Si medimos nuevamente las variables de Arena tendríamos:

NR(Cajeros) NQ(Cola1)NC(Clientes atendidos)

== 3== 2 == 1

Page 56: Simulacion de Eventos Discretos

Variables y Funciones de Arena

ABS(X) Valor absoluto de X

AINT(X) Trunca el valor entero de XAMOD(X,Y) Devuelve el residuo real de dividir X entre YMOD(X,Y) Devuelve el residuo entero de dividir X entre YANINT(X) Redondea X al entero mas cercano

EP(X) Exponencial de X

MN(X,Y,…Z) Devuelve el mínimo valor entre X,Y,…..,, y ZMX(X,Y,….Z) Devuelve el máximo valor entre X,Y,…..,, y Z

LN(X) Logaritmo natural de XLOG(X) Logaritmo en base 10 de X

ACOS(X) ASIN(X) ATAN(X)

HCOS(X) HSIN(X) HTAN(X)COS(X) SIN(X) TAN(X)

Dentro de la gama de funciones matemáticas se puede evaluar dados parámetros, X,Y,Z que representan constantes, atributos, variables o expresiones en general la siguiente gama de funciones:

Page 57: Simulacion de Eventos Discretos

Más Bloques y Elementos

Assign

Branch

Duplicate

Split

Drop Off

Group

TraceFailuresSchedulesVariables

BLOCKS

ELEMENTS

DStats

Scan

Signal

Wait

Storages

Page 58: Simulacion de Eventos Discretos

Ejemplo 3

Aliochi Telcom, la transnacional mas grande de telecomunicaciones del continente acaba de hacer su ingreso al mercado nacional y ha aperturado su mas reciente local comercial en una zona céntrica de la ciudad. Los clientes llegan a este centro a adquirir equipos celulares en promedio cada 3 minutos desde las 9am hasta las 9pm hora en que finalizan las operaciones, a excepción de las horas punta ( desde las 3pm hasta las 6pm) donde la frecuencia de tiempos entre llegadas se ve incrementada a una llegada cada 2 minutos.

La Ingeniera Irene Cien Fuentes ha determinado en base a un análisis cuidadoso de los datos de venta que el 35% de los clientes viene con la intención de adquirir un equipo con plan prepago mientras que los restantes planes postpago. Ha destinado entonces como jefa del centro, turnos rotativos de seis horas, en el primero hay 5 cajeras que se encargan de efectuar las ventas (2 para planes prepago y 3 para postpagos) y en el segundo 8 cajeras (3 para planes prepago y las restantes para postpago). Sabe además que si se alcanzan 10 personas en la cola postpago o 8 en la cola prepago los clientes siguientes que ingresen a dichas colas decidirán abandonar el centro sin efectuar compra alguna.

El tiempo de servicio para las cajeras prepago es normal con media de 5 minutos y desviación estándar de 1 minuto. Mientras que para las cajeras postpago es normal con media de 8 minutos y desviación estándar de 2 minutos. Sabe además que es posible que existan fallas en los equipos informáticos empleados por las cajeras. La duración promedio de estas fallas sigue una distribución exponencial con media de 2 minutos, ocurriendo estas un 30% de las veces a intervalos de 45 minutos y 70% de las veces a intervalos de una hora.

Del total de clientes atendidos se estima que un 10% deciden al final del proceso desistir de la compra. Irene se encarga de revisar las boletas de venta y almacenarlas en grupos de diez tomándole 1 minuto esta operación, tras lo cual las archiva. Asuma que la hora de cierra es estricta y las personas en cola en ese instante abandonan el establecimiento

Determine empleando un modelo de simulación con 10 replicas cual es la utilización actual de cada tipo de cajera, los tamaños de las colas, cual es el numero de equipos vendidos, el numero de boletas que pasaron por revisión y los estadísticos de tiempos en cola por tipo de clientes.

Page 59: Simulacion de Eventos Discretos

Ejemplo 4

El Área de Ensamble de GG Enterprise INC se encarga de efectuar el ensamble manual de dos productos líderes de la compañía. El área trabaja las 24 horas al día los siete días de la semana, con turnos de 12 horas que involucran relevos de operarios coordinados que no interrumpen los procesos en actividad en el paso de cada turno. Para el primer producto se necesitan 1 pieza del componente A, 2 del componente B y 3 del componente C, mientras que el segundo producto requiere 1 pieza del componente A, 3 del componente B y 1 del componente C. Estos componentes son entregados al área con los tiempos entre llegadas y cantidades descritos en la tabla siguiente.

Se sabe que el área mantiene siempre cuatro operarios que se encargan de revisar una inspección manual y retoque de los componentes previo al ensamble con tiempos de servicio por pieza de 10 para el componente A, normal con media de 3 minutos y desviación estándar de 1 minuto para el componente B y exponencial con media 2 de minutos para el componente C. Terminado el retoque los componentes se agrupan de acuerdo al tipo de ensamble a ser realizado y esperan a que los operarios de ensamble estén disponibles para efectuar los ensambles manuales. Se conoce que el 30% de los componentes tipo A se emplean para el producto 1 y el restante para el producto tipo 2.

El tiempo de ensamble para el producto 1 sigue una distribución normal con media de 35 minutos y desviación estándar de 3 minutos y para el producto dos una distribución triangular con mínimo, moda y máximo de 18, 20 y 25 minutos respectivamente. Los ensambles son realizados por 2 operarios (distintos a los anteriores) que pueden efectuar ambos tipos de ensambles.

El gerente de producción determinó que la mejor alternativa para visualizar globalmente la eficacia del área era plantear un modelo de simulación del sistema que le permitiera conocer además del número de productos de cada tipo ensamblados, los tamaños promedio de cola de cada uno de los componentes en ensamble y de los componentes agrupados esperando ensambles, además del tiempo promedio desde la agrupación de componentes hasta el ensamble.

ComponentePrimer turno (12 horas) Segundo turno(12 horas)

CantidadTiempo entre llegadas(min) Tiempo entre llegadas(min)A 45 30 2B 240 360 25C 120 180 10

Page 60: Simulacion de Eventos Discretos

Ejemplo 5

El ingeniero Adriano Méndez ha diseñado un nuevo sistema de control de calidad para el área de producción de una importante empresa transnacional.

Actualmente en el área se efectúa una inspección individual sobre cada unidad producida. Se conoce que el área opera desde las 6:00 am hasta las 6:00pm, estando todas las estaciones completamente operativas a partir de las 9:00am. Entre las 6:00 am y las 9:00am los productos llegan en grupos de 4(30% de los casos) u 8 unidades (en los casos restantes) con un intervalo de tiempo que sigue una distribución normal con media de 10 minutos y desviación estándar de 2 minutos. A partir de las 9:00 am el volumen se incrementa recibiéndose cada 30 minutos grupos de 8(en el 50% de los casos) o de 16 unidades.

El método propuesto consiste en agrupar las unidades recibidas en grupos de 4 unidades entre las 6:00am y 9:00am o de 8 unidades luego de las 9:00am. Luego se procede a tomar una muestra de cada grupo (considere como muestra el 50% de las unidades contenidas en cada grupo tomadas en orden). El inspector efectuará luego una revisión con un tiempo que se puede aproximar a una distribución triangular con mínimo, moda y máximo de 30,45 y 60 segundos respectivamente por unidad. Se estima que aproximadamente un 50% de las entidades a inspeccionar pueden presentar defectos. Se aceptará la muestra tomada de cada grupo si es que el porcentaje de defectuoso en cada muestra es menor a este mismo porcentaje. Si la muestra es aceptada se regresa al grupo original y se aceptan todas las unidades del grupo, caso contrario si la muestra es rechazada se regresa al grupo original y todas las unidades del grupo son rechazadas.

Realice un modelo de simulación que represente este modelo propuesto de control de calidad, agregando los bloques y elementos necesarios que le permitan contabilizar cuantas unidades fueron aceptadas y rechazadas en la estación de inspección.

Page 61: Simulacion de Eventos Discretos

Simulación de Sistemas – Semestre 2008 -1

Simulación de Sistemas

Simulación de Modelos de Eventos Discretos

Page 62: Simulacion de Eventos Discretos

Block CREATESe emplea para modelar procesos de llegada al sistema. Las entidades ingresan secuencialmente de acuerdo a un patrón predeterminado. No existen restricciones de número de bloques CREATE

Batch Size: Indica el número de entidades que llegan al sistema en cada punto de la secuencia de llegada. El default es 1

Page 63: Simulacion de Eventos Discretos

Block QUEUEProvee espacio de espera paras las entidades cuyo movimiento ha sido suspendido debido al estado del sistema. Generalmente ocurren por limitaciones en la disponibilidad de recursos.

Queue ID: Nombre o número de la fila

Page 64: Simulacion de Eventos Discretos

Block SEIZEAsigna el recurso a la entidad. En la representación del block se muestra sólo el ID del recurso.

Priority: Es un número entero que establece la prioridad para la asignación de las entidades. A mayor tiempo de espera mayor prioridad

Page 65: Simulacion de Eventos Discretos

Block DELAYRepresenta el tiempo en el cual el recurso permanece ligado a la entidad. Corresponde a la demora por servicio.

Duration: Es el tiempo que la entidad requiere pasar a través del block

Page 66: Simulacion de Eventos Discretos

Block RELEASEAl completarse la actividad por la cual la entidad debía permanecer ligada al recurso es necesario efectuar la des asignación del mismo, para que pueda ser asignado al siguiente.

Resource ID: indica el recurso a ser des asignado de la entidad

Page 67: Simulacion de Eventos Discretos

Block DISPOSEModela la salida de las entidades del sistema. No es necesario ingresar ningún operand en este bloque

Page 68: Simulacion de Eventos Discretos

Element PROJECTPermite que SIMAN genere automáticamente un reporte al final de cada réplica que incluye un resumen estadístico de variables de respuesta seleccionadas por el analista.

Title: Nombre del proyecto

Page 69: Simulacion de Eventos Discretos

Element REPLICATEControla para el modelo el número de replicas, así como la longitud y opciones de inicialización de cada réplica.

Number of Replications: Indica el número de réplicas a ejecutarse. (Default de 1)

Page 70: Simulacion de Eventos Discretos

Element QUEUESSe definen en este elemento las filas empleadas en el modelo. La información respecto a cada una incluye nombres, número y políticas de filas.

Number : Indica el número de la fila (Número entero) Es secuencial por default

Page 71: Simulacion de Eventos Discretos

Element RESOURCESSe definen en este elemento las recursos empleados en el modelo. Se incluye información sobre el nombre y capacidad de los recursos

Name: indica el nombre del recurso

Page 72: Simulacion de Eventos Discretos

Block TALLYPermite registrar un valor por cada llegada de una entidad al bloque, calculando así estadísticas como el tiempo que cada entidad permanece en el sistema

Tally ID: Define el nombre de la estadística a calcular

Page 73: Simulacion de Eventos Discretos

Element TALLIESEste elemento provee información descriptiva acerca de los registros Tally, incluyendo nombre, número y opcionalmente el archivo de salida generado (output file).

Name: Nombre que identifica un registro específico

Page 74: Simulacion de Eventos Discretos

Element ATTRIBUTESSe definen en este elemento los nombres y propiedades de variables locales y atributos

Number: Número del atributo o variable local

Page 75: Simulacion de Eventos Discretos

Block COUNTSe emplea para contar el número de ocurrencia de algunos eventos. Es usado también para calcular la longitud de corrida debido a que tiene un limite asociado que al ser alcanzado o rebasado hace que SIMAN termine la simulación.

Counter ID: Define el nombre del contador

Nota: El operand Counter Increment puede ser no sólo un número entero sino también una expresión o una combinación de expresión y condiciones

Page 76: Simulacion de Eventos Discretos

Element COUNTERElemento donde se definen los counts empleados en el modelo de simulación.

Name: Se asigna el nombre del contador del evento contado en el (los) block(s) Counter

Page 77: Simulacion de Eventos Discretos

Block ASSIGNPermite la asignación de un valor a una variable global o a un atributo o variable local de una entidad. Pueden ser definidos por el usuario, por SIMAN o de propósitos especiales como: Entity.HoldCostRate, Entity.JobStep, Entity.Picture, Entity..Sequence, Entity.Station, Entity.Type

Variable or Attribute: Nombre que representa a la variable o atributo

Page 78: Simulacion de Eventos Discretos

Block ASSIGNDefinido un atributo X, en el ELEMENT Attributes el BLOCK Assign permite asignar un valor a dicho atributo a cada entidad que pasa por él.

Assign

Attributes

Create

Ejemplo: Suponga que a un banco llegan clientes con una tasa entre llegadas exponencial con media de 3 minutos. Los clientes son de distintos tipos pueden ser regulares con una probabilidad de 60%, preferenciales en el 30& de los casos o VIP en los demás casos.

tipocliente

tipocliente

DISC(0.6,1,0.9,2,1,3)EXPO(3) tipocliente

Los clientes deben diferenciarse por un atributo que identifica el tipo de clienteSe define en el ELEMENT Attributes tipocliente Para asignar el tipo adecuado a cada cliente se acumulan las probabilidades y se emplea una distribución discreta. El tipo de cliente regular será tipocliente==1 con probabilidad acumulada 0.6, el preferencial tipocliente==2 con probabilidad acumulada 0.9 y los VIP tipo cliente==3 con probabilidad acumulada 1. La notación en Arena es DISC(valor i, probabilidad acumulada i, ……….,valor n, 1)

Se le da valor al atributo tipocliente de 1, 2 ó 3 de acuerdo a la probabilidad definida

Page 79: Simulacion de Eventos Discretos

Element VARIABLESSe definen en este elemento los nombres y propiedades de variables globales

Number: Número de la variable

Page 80: Simulacion de Eventos Discretos

Element VARIABLES

Existen casos en los cuales es mas conveniente emplear variables ya que simplifica el modelamiento en términos de tiempo, en especial cuando hay expresiones dependientes de un elemento variable o cuando existen posibilidades de que se cambien datos en el modelo, que conllevarían a ubicar los datos en los bloques y proceder a un cambio manual que es bastante difícil y poco preciso

Ejemplo: Suponga que a un banco llegan clientes con una tasa entre llegadas exponencial con media de 3 minutos. Los clientes son de distintos tipos pueden ser regulares con una probabilidad de 60%, preferenciales en el 30& de los casos o VIP en los demás casos. Estos clientes hacen una única cola y son atendidos por un único cajero cuyo tiempo de servicio es normal con media variable y desviación estándar variable de acuerdo al tipo de cliente. (regulares: media 5, desv.est 2, preferenciales: media 4, desv.est 2, VIP: media 3, desv.est 1)

Es posible definir una variable media y una variable desviación, dado que cada una puede tener tres valores estamos hablando de un arreglo vectorial. Cuando se maneja un arreglo vectorial se puede referir a un valor específico del arreglo vectorial de acuerdo a la variable y a su posición en el vector. Es decir variable(x) donde x es la posición en el vector

¿Cómo se define en este caso el vector en el ELEMENT Variables?

Page 81: Simulacion de Eventos Discretos

Element VARIABLESSe definen dos variables vectoriales media y varianza con Operand 1D Array: 3 y se colocan en el Operand Initial Values los valores correspondientes

media

3

543

desviacion

3

2

12

media(2)

media(3)Recordamos que cada entidad en este modelo tiene un atributo tipocliente con valores entre 1 y 3. Por ejemplo la media para una entidad tipo 1 debería ser media(1) que es justamente media(tipocliente) ya que tipocliente para este tipo de entidades toma valor 1. Es decir el tiempo de servicio puede definirse como: NORM(media(tipocliente),desviacion(tipocliente))

Page 82: Simulacion de Eventos Discretos

Element VARIABLES

Create Queue Seize Release DisposeDelay

ResourcesQueuesReplicateProject

EXPO(3) Cola1 Cajero Cajero

NORM(media(tipocliente),desviacion(tipocliente))

CajeroCola1120

Counters

Clientes atendidos

Count

Clientes atendidos

Assign

Variables

mediadesviación

tipocliente

tipocliente==1 NORM(media(1),desviacion(1))= NORM(4,2)

Page 83: Simulacion de Eventos Discretos

Block BRANCHControla el flujo de la entidad permitiendo direccionarla por ramas. SIMAN examina en orden cada una enviando la entidad por la primera que satisfaga la etiquete que llevan las entidades

Max Number of Branches: Número máximo de ramificaciones a tomar por cada entidad

Page 84: Simulacion de Eventos Discretos

Block BRANCH

Branch

¿Cómo funciona el BLOCK Branch?

Por cada condicional se crea una rama de salida del BLOCK Branch.

Las entidades llegan al BLOCK Branch y evalúan en orden descendente cada una de las condiciones, saliendo por todas las ramas vinculadas a las condiciones que la entidad cumpla

Generalmente en nuestro caso el BLOCK Branch será empleado para separar flujos por lo cual sólo se requiere que cada entidad salga por una salida siendo necesario definir en el Operand Max Number of Branches el valor 1, para que la entidad sólo salga por la rama asociada a la PRIMERA CONDICIÓN EN ORDEN DESCENDENTE que satisfaga

If tipocliente==1

If tipocliente==2

Else

Ejemplo: Si en el caso anterior se quisiera dividir a los clientes de la agencia bancaria de acuerdo al tipo de cliente entonces debería usarse el BLOCK Branch con condicionales IF donde la condición en cada caso sea justamente los valores posibles de tipocliente

tipocliente==3

Page 85: Simulacion de Eventos Discretos

Block BRANCH

Branch

Es posible emplearlo también para dividir un flujo de entidades de acuerdo a probabilidades de ocurrencia empleando la condicional de tipo WITH

With 0,2

With 0,6

Else

Ejemplo: El 20% de los clientes que acuden a una estación de correo se dirigen hacia el stand 1, el 60% hacia el stand 2 y el resto hacia el stand 3. ¿Como modelaría la división de clientes con el BLOCK Branch?

En este caso se coloca la probabilidad acumulada vinculada a cada salida eligiendo el condicional de tipo WITH. El Arena internamente genera un aleatorio uniformemente distribuido entre 0 y 1que se compara con la probabilidad acumulada en cada caso y permite elegir la salida adecuada.

Genera R = 0.92

(Acumulada es 0.20)

(Acumulada es 0.80)

Page 86: Simulacion de Eventos Discretos

Element DSTATSSirve para grabar datos acerca de variables dependientes del tiempo en un modelo SIMAN. Este elemento origina grabaciones de estadísticas de una o más variables dependientes del tiempo durante la simulación

Number: Número del DSTAT. El default es secuencial

Page 87: Simulacion de Eventos Discretos

Element STORAGESEspecifica el número total de almacenajes y sus nombres. Permite también grabar estadísticas de utilización individual de un recurso para cada tipo de trabajo existente

Number: Número de almacenaje

Page 88: Simulacion de Eventos Discretos

Block DUPLICATEPermite crear un determinado número de clones de la entidad original que conservan todos los atributos de la misma

Quantity to duplicate: Define el número de clones a crear de la entidad

original

Nota: La entidad original sale del bloque duplicate por el exit point, mientras que las entidades clonadas salen por las ramificaciones inferiores del bloque

Page 89: Simulacion de Eventos Discretos

Block DUPLICATE

Duplicate

Las entidades clonadas salen por el exit point inferior

Las entidades clonadas poseen los mismos atributos que la entidad original

Ejemplos comunes en los cuales se emplea este BLOCK:• Documento generado a partir de una entidad (el clon representa la entidad)• La entidad pasa por procesos simultáneos que involucran diferentes recursos

tipocliente==1 tllegada==10

tipocliente==1 tllegada==10

Page 90: Simulacion de Eventos Discretos

Block GROUPPermite agrupar un determinado número de entidades de forma temporal o permanente. Las entidades que llegan al bloque GROUP esperan hasta que se complete “Quantity to Group” entidades y salen por el exit point como una nueva entidad.

Group Type: Define si la agrupación es temporal o permanente

Nota: La entidad creada que representa al grupo constituye una entidad nueva. Si el agrupamiento es temporal las entidades dentro del grupo conservan los atributos individuales pero no los transfieren a la nueva entidad

Page 91: Simulacion de Eventos Discretos

Block GROUP

Group

tipocliente==1 tllegada==10

Dado un BLOCK Group con Operand Quantity to Group igual a X

Las entidades llegan al BLOCK Group y se forman en una fila interna hasta que hayan X entidades en la fila. Cuando esto sucede se procede a agrupar a estas X entidades. Si el agrupamiento es temporal entonces se crea una nueva entidad que contiene a las X entidades anteriores. Cada una de las X entidades que conforman el grupo mantienen sus atributos, sin embargo NO LOS TRANSMITEN TOTALMENTE a la entidad Grupo creada

Si el agrupamiento es permanente las entidades que forman parte del grupo se envían a un BLOCK Dispose directamente y no es posible separarlas luego.

Quantity to Group = 3

tipocliente==2 tllegada==12

tipocliente==3 tllegada==13

tipocliente==0 tllegada==0

Page 92: Simulacion de Eventos Discretos

Block SPLITPermite UNA división de una entidad constituida como agrupación temporal. No requiere ningún operand.

Page 93: Simulacion de Eventos Discretos

Block DROPOFFPermite retirar una determinada cantidad de entidades en un grupo temporal a partir de una posición u orden definido

Rank of Entity: Posición del grupo a partir de la cual se retiran las entidades

Page 94: Simulacion de Eventos Discretos

Block DROPOFF

DropOff

Si se tienen entidades agrupadas temporalmente en grupos de X el BLOCK DropOff permite retirar una cantidad Y definida en el Operand Quantity to DropOff de las entidades que conforman el grupo a partir de la posición definida en el Operand RankofEntity . Las entidades retiradas salen del bloque por el exit point inferior, mientras que el grupo conteniendo X-Y entidades sale por el exit point regular

Ejemplo: Si se tiene el siguiente BLOCK DropOff con Operands Rank of Entity = 2 y Quantity to DropOff = 2

Se usa generalmente en modelos asociados con Control de Calidad donde se requiere retirar una muestra de tamaño n de un lote de entidades definido como grupo

Page 95: Simulacion de Eventos Discretos

Element SCHEDULESPermite definir capacidades variables para los recursos de acuerdo en intervalos de tiempo definidos.

Identifier: Nombre del schedule

Page 96: Simulacion de Eventos Discretos

Element SCHEDULESEjemplo: En una agencia bancaria se tiene 4 cajeros en el turno de 8am a 10am, 6 cajeros entre 10am hasta las 2pm y 5 cajeros entre las 2pm y las 6pm.

4 cajeros, 120 min6 cajeros ,240 min5 cajeros ,240 min

El Schedule HorarioCajeros debe asociarse luego de estar definido con el Recurso vinculado que en este caso sería el Recurso Cajeros

OBSERVACIÓN: Las variaciones de capacidad definidas en el ELEMENT Schedules son cíclicas es decir al terminar la última variación vuelve a empezar desde la primera si el intervalo de simulación es mayor que la suma de los periodos de variación

Page 97: Simulacion de Eventos Discretos

Element FAILURES

Number: Número de la falla (default secuencial)

Permite definir fallas que pueden vincularse en el elemento RESOURCES a recursos específicos. Las fallas tiene determinada duración y pueden suceder un determinado número de veces o en ciertos intervalos de tiempo

Page 98: Simulacion de Eventos Discretos

Element FAILURES

Ejemplo: La atención de los Cajeros puede verse interrumpida por caídas continuas del sistema, que ocurren a intervalos que se pueden aproximar a una distribución exponencial con media de 45 minutos y que generalmente tienen una duración normal con media de 5 min y desviación estándar de 1 minuto.

Identificamos el tipo de falla Ocurre cada ciertos intervalos de tiempo

El Operand Failure Entity Rule define que sucederá con las entidades siendo atendidas por el recurso al presentarse la falla.

IGNORE: La falla ocurre de acuerdo al tiempo programado pero no afecta al recurso hasta que la entidad siendo

atendida en ese instante libere al recurso

WAIT: La falla inicia solo después que la entidad siendo atendida libera al recurso

PREEMPT: La falla ocurre según lo programado y la entidad siendo atendida en

ese instante espera hasta que el recurso este disponible nuevamente para terminar

de ser atendida

Page 99: Simulacion de Eventos Discretos

Element TRACEPermite obtener el reporte trace al final de la corrida conteniendo el detalle de cada evento, es decir el flujo de cada entidad desde el inicio de la corrida por cada bloque del modelo. No requiere ningún operand a menos que se quiera obtener el reporte trace en algún intervalo de tiempo específico.

Page 100: Simulacion de Eventos Discretos

Block SCANDetiene el flujo de entidades en el bloque mediante una cola auxiliar hasta que se cumpla la condición requerida en el Operand Condition. Al cumplirse la condición se liberan todas las entidades en esta cola auxiliar

Condition: Condición que debe cumplirse para la liberación de entidades en el bloque. Puede ser una condición que combine condicionales o variables de sistema

Ejemplo: una condición puede ser NR(Recurso X) == 1 ó NQ(Cola X) > 5

Page 101: Simulacion de Eventos Discretos

Block SCAN

Ejemplo: Las personas ubicadas en una cola exterior a una agencia no puede ingresar hasta que el tamaño de la cola interna sea menor a 3 personas asegurando que haya espacio suficiente para que entren éstos clientes

Queue QueueScan

ColaExterior ColaInterior

La condición del BLOCK Scan será que el número de personas en el BLOCK Queue que representa a la Cola Interior sea menor a 3

¿Qué función de arena permite conocer el número de personas en una determinada cola?

NQ(ColaInterior)

¿Cuál debe ser la condición en el BLOCK Scan?

NQ(ColaInterior)<3

NQ(ColaInterior)<3

OBSERVACIÓN: Al cumplirse la condición del BLOCK Scan todas las entidades esperando en el BLOCK Queue (o de no haberlo en la cola interna asociada al BLOCK Scan) pasan al siguiente BLOCK

Page 102: Simulacion de Eventos Discretos

Block SIGNALAl pasar entidades por este BLOCK se emite una señal. Generalmente se usa en conjunto con el BLOCK Wait para coordinar liberaciones simultáneas en diferentes ramas de un modelo para posteriormente agruparlas. El Operand Release Limit indica cual es límite en entidades a liberar de un BLOCK Wait que depende de la señal emitida por este BLOCK Signal.

Signal Code: Número que representa al señal emitida por este BLOCK

Page 103: Simulacion de Eventos Discretos

Block WAITEl BLOCK Wait detiene el flujo de entidades en una cola auxiliar hasta que la señal requerida en el Operand Signal Code es emitida en alguna parte del modelo por un BLOCK Signal.

Signal Code: Número de la señal requerida para liberar las entidades en la cola auxiliar del BLOCK Wait

Page 104: Simulacion de Eventos Discretos

Block WAIT & Block SIGNALUno de los principales uso de este par de BLOCKs es la sincronización para ensambles:

En una empresa de producción el producto líder se obtiene del ensamble manual de tres tipos de componentes. Se requieren 1 componente de tipo A, 2 de tipo B y 3 de tipo C. El tiempo de ensamble es normal con media de 9 minutos y desviación estándar de 1,5 minutos.

Componente A

Componente B

Componente C

Producto Ensamblado

Wait

Wait

Signal

Group Delay

signal code : 1 release limit:5

signal code : 1 number to release:2

signal code : 1 number to release:3

Quantity to group:6 NORM(9,1.5)

Se emite la señal 1

Recibe señal 1

Recibe señal 1Note que para que este sistema de

ensamble funcione siempre debe existir la suficiente cantidad de componentes B y C

disponible al emitirse la señal 1¿Cómo haría para que el sistema funcione

siempre?

Page 105: Simulacion de Eventos Discretos

Variables y Funciones de Arena(II)Funciones vinculadas a este nuevo conjunto de BLOCKS y ELEMENTS vistos son:

Vinculadas a Grupos:

tipocliente==1

tipocliente==2 tipocliente==3

NG=AG(2,NSYM(tipocliente))=AG(5,NSYM(tipocliente))=SAG(NSYM(tipocliente)) =

6313+3+1+1+1+2=11

AG (posicion Y,NSYM(Atributo X))

• Suma de valores del Atributo X en el grupo

NG

• El número de entidades en un grupo

SAG (NSYM(Atributo X))

• El valor del Atributo X de la entidad en la posición Y en el grupo