GPSS/H Una introducción
GPSS – H Bloques Transacciones (Xact) GENERAL PURPOSE SIMULATING SYSTEM CREADOR: G. GORDON (60´S) Bloque 1 Operación que realiza una transacción Bloques Bloque 2 Transacciones (Xact) Todo aquello que fluye a través de un sistema (entidades).
Programación en GPSS Establecer un modelo del sistema Mapear los elementos (entidades) del sistema a componentes del GPSS Unidad básica es la Transacción (entidad activa del sistema) Entidades básicas: De equipo (servidores, switches, cadenas) Computacionales (variables y funciones del GPSS)
Programación en GPSS Estadísticas (colas, tablas) Almacenamiento de datos (Savevalues) Establecer la lógica del modelo de acuerdo a las reglas del GPSS Instrucciones de control Depuración
Programación en GPSS Programación por Bloques Cadena de eventos Lugar donde se envían transacciones que durante su recorrido a través de los bloques hay una condición que impide su flujo libre.
Programación en GPSS Cadena de eventos, continuación Bloqueo de Retraso Transacción entra en t1 saldrá en t2. Generación de clientes arribando al sistema Generación de servicio Cadena de eventos futuros
Programación en GPSS Cadena de eventos, continuación b) Bloqueo Condicional XACT intenta entrar a un bloque pero hay impedimento y espera ser liberado. Capturar un servidor Cadena de eventos actuales
OPERACIÓN DE BLOQUES Elemento básico de producción. Llamada al elemento básico Salida del elemento básico Inicio de la actividad retraso actividad Inicio del retraso Fin del retraso Fin de la actividad 1
LLEGADA AL ELEMENTO BÁSICO: Una transacción hace entrada OPERACIÓN DE BLOQUES LLEGADA AL ELEMENTO BÁSICO: Una transacción hace entrada a) No provenga de otro bloque GENERATE b) De otro bloque i 2
OPERACIÓN DE BLOQUES INICIO DEL RETRASO: Actividad no planeada no se puede iniciar la actividad buscada. Medición del retraso se hace con QUEUE. INICIO DE LA ACTIVIDAD: XACT pasa de espera a actividad, el recurso disponible. SEIZE o ENTER
OPERACIÓN DE BLOQUES FIN DEL RETRASO: Ocurre al mismo tiempo que la actividad anterior. Fin a la espera, dar por terminado el retraso o espera: DEPART ACTIVIDAD: Acción primordial XACT. Entra al elemento básico de producción. Modificar tiempos de proceso. ADVANCE
OPERACIÓN DE BLOQUES FIN DE LA ACTIVIDAD: Este evento ocurre cuando transcurre tiempo de proceso o transporte, libera al recurso. RELEASE y LEAVE. SALIDA DEL ELEMENTO: Salir del elemento básico de producción a) Abandono del sistema: TERMINATE b) 2 bloques interconectados, la salida se transforma en llegada al siguiente bloque. 5
Elementos del Lenguaje Transacciones Recursos Bloques Instrucciones de control Directivas del compilador Atributos Numéricos Estándar
Estructura del Lenguaje Definición de variables FUNCTION Función STORAGE No. de máquinas MATRIX -- EQU Igualdad o asimilación TABLE Histograma.
BLOQUES PRINCIPALES INICIO PROCESO Y CAPTURA MAQUINA SEIZE FIN DE PROCESO Y LIBERACION MAQUINA RELEASE ENTRADA / SALIDA A UN ALMACEN QUEUE/DEPART ENTRADA DE TRANSACCIONES AL SISTEMA GENERATE SALIDA DE XACT DEL SISTEMA TERMINATE CONTROL DE FLUJO DE XACT TRANSFER TEST LOOP . DIVERSOS PROCESOS ADVANCE ASSEMBLE . OPERACIONES ARITMETICAS SAVEVALUE ESTADISTICAS TABULATE
FORMATOS EN GPPS/H La columna 1 se deja para meter un asterisco (*) para comentarios Etiquetas se emplean de la columna 2 a la 9. Las operaciones separadas de las etiquetas por un espacio, (columna 10) Operaciones se meten de la columna 11 a la 20. Columna 21 en blanco Operandos de operadores a partir de la columna 22. Los operadores van separados por comas, sin espacios
FORMATOS EN GPPS/H Comentarios a partir del último operando del bloque, separados por un espacio Para continuar un texto usar _ como último elemento del renglón.
Formatos en GPSS/H 1 Etiqueta (2-9) 10 Operación (11-20) Operandos (22-72) GENERATE 12.5,5.8,3 BANDA ADVANCE 10 comentario * comentario
EJEMPLOS DE INSTRUCCIONES GENERATE A, B, C, D, E GENERATE 6, 4 ok GENERATE 6, 8 ¡Incorrecto! GENERATE 6, 4, 10 GENERATE 6, 4, , 100 GENERATE , , , 500 GENERATE 10, 3, , , 3 6
Ejemplo Torno Un torno manual procesa 1 pieza en 5 ± 2 minutos con distribución uniforme. El tiempo entre llegadas tiene una distribución uniforme con tiempo entre 4 y 10 minutos. Realice un modelo en GPSS que simule el torneado de 500 piezas. SALE PROCESO TORNO ESPERA EN PROCESO
Modelo del Torno en GPSS SIMULATE GENERATE 7,3 QUEUE COLA SEIZE TORNO DEPART COLA ADVANCE 5,2 RELEASE TORNO TERMINATE 1 START 500 END Genera piezas Inicia cola Solicita atención Empieza torneado y se acaba la cola Torneado de la pieza Fin del torneado
Extensión Ejemplo Torno Modificar ejemplo con una rectificación después del torno con tiempo de operación de 6 ± 1 minutos. T R MP SALIDA COLA R COLA T
Ejemplo Banda Las cajas de un producto se ponen en una banda transportadora cada 25 ± 20 minutos y pasan 100 minutos exactos en la banda hasta que la abandonan. Estime el número mayor de cajas que exista en la banda en cualquier instante SIMULATE GENERATE 25, 20 QUEUE Banda ADVANCE 100 DEPART Banda TERMINATE 1 START 500 END
Movimiento no secuencial BLOQUE TRANSFER TRANSFER (B) TRANSFER , B B : ETIQUETA Banda transportadora recibe 2 tipos de material A y B. Los objetos A llegan 15, 45, 75, … cada 30 seg; los objetos B llegan 30, 60, 90 … Ambos objetos se ponen en la banda y tardan 250 seg para llegar hasta el punto final.
Código en GPSS SIMULATE GENERATE 30, , 15 TRANSFER , BANDA GENERATE 30 BANDA ADVANCE 250 TERMINATE 1 START END
Ejemplo Almacén Una línea de ensamble consiste de una tornamesa que reparte trabajos a tres estaciones. Una pieza puede ser maquinada en cualquier estación. Las piezas se ponen en la tornamesa y les toma 120 segundos en llegar a la primera estación. Si la estación está desocupada, acepta el trabajo; en caso contrario, la pieza se manda a la segunda estación y llega después de 120 segundos. De nuevo, la pieza es aceptada si la estación está desocupada; de otra manera, se manda a la tercera estación y llega después de 120 segundos.
Ejemplo Almacén Si la tercera estación está ocupada, entonces la pieza se manda a la primera estación para dar otra vuelta. La tornamesa solo puede aceptar 6 piezas en cualquier momemento; si ésta está llena, las piezas se rechazan. El tiempo de maquinado es de 40 8 segundos, y las piezas llegan en forma constante cada 50 segundos.
Codificación STORAGE S$MESA,6 SIMULATE GENERATE 50 *Segunda estación TRANSFER BOTH,,RECH ENTER MESA EST1 ADVANCE 120 TRANSFER BOTH,,EST2 SEIZE MAQ1 LEAVE MESA ADVANCE 40,35 RELEASE MAQ1 TERMINATE 1 *Segunda estación EST2 ADVANCE 120 TRANSFER BOTH,,EST3 SEIZE MAQ2 LEAVE MESA ADVANCE 40,35 RELEASE MAQ2 TERMINATE 1
Codificación *Tercera estación EST3 ADVANCE 120 *Rechazo TRANSFER BOTH,,EST1 SEIZE MAQ3 LEAVE MESA ADVANCE 40,35 RELEASE MAQ3 TERMINATE 1 *Rechazo RECH TERMINATE * START 1000 END
Nota sobre TRANSACCIONES Toda XACT puede tener los siguientes atributos: Prioridad Parámetros. Estos pueden ser de distinto tipo: entero y real. Al momento de creación en un GENERATE, se asignan estos parámetros.
Nota sobre TRANSACCIONES Valores de default Prioridad = 0 (operando E en el GENERATE) 12 parámetros de tipo entero de media palabra, designados como 1PH, 2PH, 3PH, ...,12PH Asignados en los operandos F-I del GENERATE.
Nota sobre TRANSACCIONES Parámetros posibles Tipo Característica Rango PF Entero, palabra completa 231 -1 PH Entero, media palabra 215 -1 PB Entero, byte 27 -1 PL Real, punto flotante 224 -1
Nota sobre TRANSACCIONES Ejemplos a) GENERATE 245,20 XACT con prioridad 0 y 12 parámetros tipo PH b) GENERATE 245,20,,,5 XACT con prioridad 5 y 12 parámetros tipo PH c) GENERATE 245,20,,,,2PB,5PF,3PH,10PL XACT con prioridad 0 y 2 parámetros tipo PB, 5 tipo PF, 3 tipo PH Y 10 tipo PL
Nota sobre TRANSACCIONES Hay un bloque llamado PRIORITY que puede cambiar la prioridad de una XACT ya creada. Formato: PRIORITY A,BUFFER A prioridad asignada a la XACT BUFFER opción de buffer, puede ser nulo o BUFFER; modifica la secuencia de ejecución (ver el bloque BUFFER)
Bloque SAVEVALUE Guardar en memoria un valor de una variable Usados para guardar valores transitorios Formato SAVEVALUE A,B,C A puede ser una variable que se conoce como savevalue, designado por un número o variable B valor que modifica a A C tipo de variable, indicada por XH,XF,XB o XL Inicializado con INITIAL, posible
Bloque SAVEVALUE SAVEVALUE 6,10,XH El savevalue entero de mitad palabra no. 6 toma el valor 10 SAVEVALUE 2+,10,XF El savevalue entero de palabra completa no. 2 toma el valor actual y se le suma 10 SAVEVALUE TOTAL-,5,XH El savevalue entero de media palabra TOTAL toma el valor actual y se le resta 5
Bloque de control INITIAL Bloque usado para iniciar una variable savevalue, switch lógico o matrix savevalue Similar a definir condiciones iniciales de una o varias variables Se localiza este bloque antes de iniciar el modelo, antes de SIMULATE Necesario hacer referencia al tipo de palabra que representa a variable a iniciarse
Bloque de control INITIAL Formato INITIAL A,B[/C,D...] A switch lógico (Lk$nombre o Lki), savevalue (Xk$nombre o Xki) o matrix savevalue (MX$nombre o Mki) B valor que toma la variable / indica que hay varias variables a inicializarse
Bloque de control INITIAL INITIAL X$CUENTA,100/XH1-XH3,8 Inicializa el savevalue CUENTA a 100 y los savevalues de media palabra 1,2 y 3 a 8 INITIAL XL3,3.1416 Inicializa el savevalue de punto flotante a 3.1416 INITIAL MX$A(1,1),100 Incializa el elemento a(1,1) a 100 INITIAL ML5(1-3,1-3),-1.25 Inicializa la matriz número 5 de punto flotante a – 1.25
Ejemplo de supermercado Una caja de supermercado es el sistema. Se van a simular 1000 clientes. Tiempo entre arribos es exponencial con media 4.5 minutos y el tiempo de servicio está distribuído normalmente con una media de 3.2 minutos y una desviación de .6 minutos. Se desea estimar el tiempo medio de respuesta y la proporción media o promedio de los clientes que les lleva 4 o más minutos en el sistema ( w >= 4)
Ejemplo de supermercado Bloques o funciones nuevas: Variables aleatorias diferentes a la uniforme Comparación de valores Variables que llevan la cuenta de cierta acción
Código en GPSS SIMULATE GENERATE RVEXP(1, 4.5) QUEUE COLA SEIZE CAJA DEPART COLA ADVANCE RVNORM(1,3.2,0.6 ) RELEASE CAJA TEST GE M1,4,TER SAVEVALUE 1+,1,XF TER TERMINATE 1 START 1000 END
Ejemplo Taller de Maquinado Un taller de remachado cuenta con tres remachadoras, las cuales emplean tienen las mismas características y les toma hacer su operación con un tiempo dsitribuido normalmente con una media de 60 segundos y una desviación estándar de 20 segundos. A este taller, llegan piezas a ser remachadas de 5 tipos diferentes, con un tiempo entre arribos distribuido exponencialmente con una media de 25 segundos.
Ejemplo Taller de Maquinado Los tipos de piezas tienen la siguiente distribución Tipo 1 2 3 4 5 Proba-bilidad 0.1 0.25 0.2 0.3 0.15 Se desea contar cuántas piezas de cada tipo se han procesado, en una jornada de trabajo de 8 horas.
Ejemplo Taller de Maquinado Nuevos conceptos: Piezas tienen un tipo diferente (atributos diferentes en cada XACT) Contar piezas procesadas de acuerdo a su tipo
Ejemplo Taller de Maquinado Uso de bloque FUNCTION para definir el tipo de pieza Uso de bloque ASSIGN para modificar el valor de un parámetro de una XACT Uso de bloques SAVEVALUES para contar las piezas de cada tipo
Ejemplo Taller de Maquinado STORAGE S$REMACH,3 SIMULATE TIPO FUNCTION RN1,D5 tipo de pieza 0.1,1/0.35,2/0.55,3/0.85,4/1.0,5 PARTES FUNCTION PH1,L5 separacion de piezas 1,TIPO1/2,TIPO2/3,TIPO3/4,TIPO4/5,TIPO5 GENERATE RVEXP(1,25) ASSIGN 1,FN$TIPO,PH asigna tipo QUEUE COLA ENTER REMACH DEPART COLA
Ejemplo Taller de Maquinado ADVANCE RVNORM(1,60,20) LEAVE REMACH TRANSFER FN,PARTES PARTE1 SAVEVALUE 1+,1,XH TERMINATE PARTE2 SAVEVALUE 2+,1,XH PARTE3 SAVEVALUE 3+,1,XH PARTE4 SAVEVALUE 4+,1,XH
Ejemplo Taller de Maquinado PARTE5 SAVEVALUE 5+,1,XH TERMINATE GENERATE 28800 TERMINATE 1 START 1 END
RESET Se borran las estadísticas recolectadas hasta ese momento y se iniciará el modelo de nuevo en condiciones de estado estacionario La forma de usar esta instrucción es como sigue: START 50, NP no imprime estadisticas RESET START 1000 END
RESET Otros efectos la instrucción RESET son: Los números aleatorios no se reinicializan. El reloj relativo se pone en cero. No se cambian valores de savevalues ni el contenido de matrices. No afecta a los interruptores lógicos.
RESET Es posible dejar ciertas estadísticas intactas al momento de ejecutarse el RESET, las cuales pueden ser: Cadenas de atributos, CHj Almacenes, Sj Instalaciones, Fj Colas, Qj Tablas, TBj RESET Q2, S3, F1 – F3
CLEAR Hacer varias corridas de un modelo, pero variando una característica en particular Borra todas las estadísticas sin excepción, remueve todas las transacciones del modelo, pone los relojes relativo en cero, pero no inicializa los generadores de números aleatorios
CLEAR START 100,NP RESET START 1000 CLEAR se prepara una segunda corrida INITIAL XH$REP,30.8 se inicializa la variable RE al valor de 30.8 START 100,NP START 1000