Simulación de Sistemas – Semestre 2008 -1
Simulación de Sistemas
Simulación de Modelos de Eventos Discretos
Ing. Eduardo Carbajal L.
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
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
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
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.
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.
Primeros Pasos en ArenaAl iniciar Arena se muestra al pantalla siguiente
Área de Trabajo
Área de Resultados
Barras del
Proyecto
Barra de Estado
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
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
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
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
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
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.
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?
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
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:
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:
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)
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.
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)
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
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
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)
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?
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
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
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?
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
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.
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?
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
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
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
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
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
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
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
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
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.
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)
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
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)+
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)
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
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
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
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
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
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
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
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
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
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
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
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
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:
Más Bloques y Elementos
Assign
Branch
Duplicate
Split
Drop Off
Group
TraceFailuresSchedulesVariables
BLOCKS
ELEMENTS
DStats
Scan
Signal
Wait
Storages
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.
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
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.
Simulación de Sistemas – Semestre 2008 -1
Simulación de Sistemas
Simulación de Modelos 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
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
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
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
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
Block DISPOSEModela la salida de las entidades del sistema. No es necesario ingresar ningún operand en este bloque
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
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)
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
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
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
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
Element ATTRIBUTESSe definen en este elemento los nombres y propiedades de variables locales y atributos
Number: Número del atributo o variable local
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
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
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
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
Element VARIABLESSe definen en este elemento los nombres y propiedades de variables globales
Number: Número de la variable
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?
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))
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)
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
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
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)
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
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
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
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
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
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
Block SPLITPermite UNA división de una entidad constituida como agrupación temporal. No requiere ningún operand.
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
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
Element SCHEDULESPermite definir capacidades variables para los recursos de acuerdo en intervalos de tiempo definidos.
Identifier: Nombre del schedule
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
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
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
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.
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
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
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
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
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?
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
Top Related