1
GPSS/H
Una introducción
2
GENERAL PURPOSE SIMULATING SYSTEMGENERAL PURPOSE SIMULATING SYSTEM
CREADOR: G. GORDON (60´S)
GPSS – HGPSS – H
Bloque 1
Bloque 2
Bloques
Transacciones(Xact)
Operación que realiza una transacción
Todo aquello que fluye a través de un sistema (entidades).
3
Programación en GPSSGPSS
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:a. De equipo (servidores, switches, cadenas)b. Computacionales (variables y funciones del
GPSS)
4
Programación en GPSSGPSS
c. Estadísticas (colas, tablas)
d. Almacenamiento de datos (Savevalues)
– Establecer la lógica del modelo de acuerdo a las reglas del GPSS
– Instrucciones de control– Depuración
5
Programación en GPSSGPSS
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.
6
Programación en GPSSGPSS
Cadena de eventos, continuación
a)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
7
Programación en GPSSGPSS
Cadena de eventos, continuación
b) Bloqueo CondicionalXACT intenta entrar a un bloque
pero hay impedimento y espera ser liberado.
Capturar un servidor
Cadena de eventos actuales
8
Elemento básico de producción.
Llamada alelemento básico
Inicio delretraso
Inicio de la actividad
Salida del elemento básico
Fin delretraso
Fin de la actividad
retraso actividad
OPERACIÓN DE BLOQUESOPERACIÓN DE BLOQUES
9
OPERACIÓN DE BLOQUESOPERACIÓN DE BLOQUES
LLEGADA AL ELEMENTO BÁSICO:
Una transacción hace entrada
a)No provenga de otro bloque GENERATEb)De otro bloque i
10
OPERACIÓN DE BLOQUESOPERACIÓ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
11
OPERACIÓN DE BLOQUESOPERACIÓ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
12
OPERACIÓN DE BLOQUESOPERACIÓ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óna) Abandono del sistema: TERMINATEb) 2 bloques interconectados, la salida se transforma
en llegada al siguiente bloque.
13
Elementos del LenguajeElementos del Lenguaje
Transacciones Recursos Bloques Instrucciones de control Directivas del compilador Atributos Numéricos Estándar
14
Estructura del LenguajeEstructura del Lenguaje
• Definición de variables
FUNCTION FunciónSTORAGE No. de máquinasMATRIX --EQU Igualdad o asimilaciónTABLE Histograma.
15
INICIO PROCESO Y CAPTURA MAQUINA SEIZE
FIN DE PROCESO Y LIBERACION MAQUINA RELEASE
ENTRADA / SALIDA A UN ALMACEN QUEUE/DEPART
ENTRADA DE TRANSACCIONES ALSISTEMA GENERATE
SALIDA DE XACT DEL SISTEMA TERMINATE
CONTROL DE FLUJO DE XACT TRANSFERTESTLOOP..
DIVERSOS PROCESOS ADVANCEASSEMBLE..
OPERACIONES ARITMETICAS SAVEVALUEESTADISTICAS TABULATE
BLOQUES PRINCIPALES
16
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
17
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.
18
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
19
GENERATE 6, 4 okGENERATE 6, 8 ¡Incorrecto!GENERATE 6, 4, 10GENERATE 6, 4, , 100 GENERATE , , , 500GENERATE 10, 3, , , 3
GENERATE A, B, C, D, E
EJEMPLOS DE INSTRUCCIONES
20
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
ESPERA EN PROCESO
PROCESO
TORNO
Ejemplo Torno
21
Modelo del Torno en GPSS
• Genera piezas• Inicia cola• Solicita atención• Empieza torneado y se
acaba la cola• Torneado de la pieza• Fin del torneado
SIMULATE
GENERATE 7,3
QUEUE COLA
SEIZE TORNO
DEPART COLA
ADVANCE 5,2
RELEASE TORNO
TERMINATE 1
START 500
END
22
Modificar ejemplo con una rectificación después del torno con tiempo de operación de 6 ± 1 minutos.
SALIDA
COLA T COLA R
Extensión Ejemplo Torno
T R
MP
23
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
SIMULATEGENERATE 25, 20QUEUE BandaADVANCE 100DEPART BandaTERMINATE 1START 500END
Ejemplo Banda
24
BLOQUE TRANSFER
(B)
TRANSFER
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.
Movimiento no secuencial
25
SIMULATE
GENERATE 30, , 15
TRANSFER , BANDA
GENERATE 30
BANDA ADVANCE 250
TERMINATE 1
START
END
Código en GPSS
26
Ejemplo AlmacénUna 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.
27
Ejemplo AlmacénSi 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.
28
CodificaciónSTORAGE S$MESA,6
SIMULATE
GENERATE 50
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
TRANSFERBOTH,,EST3
SEIZE MAQ2
LEAVE MESA
ADVANCE 40,35
RELEASE MAQ2
TERMINATE 1
29
Codificación
*Tercera estación
EST3 ADVANCE 120
TRANSFER BOTH,,EST1
SEIZE MAQ3
LEAVE MESA
ADVANCE 40,35
RELEASE MAQ3
TERMINATE 1
*Rechazo
RECH TERMINATE
*
START1000
END
30
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.
31
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.
32
Nota sobre TRANSACCIONES
Parámetros posiblesTipo 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
33
Nota sobre TRANSACCIONES
Ejemplos
a) GENERATE 245,20XACT con prioridad 0 y 12 parámetros tipo PH
b) GENERATE 245,20,,,5XACT con prioridad 5 y 12 parámetros tipo PH
c) GENERATE 245,20,,,,2PB,5PF,3PH,10PLXACT con prioridad 0 y 2 parámetros tipo PB, 5 tipo PF, 3 tipo PH Y 10 tipo PL
34
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 XACTBUFFER opción de buffer, puede ser nulo o
BUFFER; modifica la secuencia de ejecución (ver el bloque BUFFER)
35
Bloque SAVEVALUE Guardar en memoria un valor de una variable Usados para guardar valores transitorios Formato
SAVEVALUE A,B,CA puede ser una variable que se conoce como
savevalue, designado por un número o variable
B valor que modifica a AC tipo de variable, indicada por XH,XF,XB o
XL Inicializado con INITIAL, posible
36
Bloque SAVEVALUE
SAVEVALUE 6,10,XHEl savevalue entero de mitad palabra no. 6 toma el valor 10SAVEVALUE 2+,10,XFEl savevalue entero de palabra completa no. 2 toma el valor actual y se le suma 10SAVEVALUE TOTAL-,5,XHEl savevalue entero de media palabra TOTAL toma el valor actual y se le resta 5
37
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
38
Bloque de control INITIAL
FormatoINITIAL 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
39
Bloque de control INITIAL
INITIAL X$CUENTA,100/XH1-XH3,8Inicializa el savevalue CUENTA a 100 y los
savevalues de media palabra 1,2 y 3 a 8INITIAL XL3,3.1416
Inicializa el savevalue de punto flotante a 3.1416INITIAL MX$A(1,1),100
Incializa el elemento a(1,1) a 100INITIAL ML5(1-3,1-3),-1.25
Inicializa la matriz número 5 de punto flotante a –1.25
40
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
41
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
42
SIMULATEGENERATE RVEXP(1, 4.5)QUEUE COLASEIZE CAJADEPART COLAADVANCE RVNORM(1,3.2,0.6 )RELEASE CAJATEST GE M1,4,TERSAVEVALUE 1+,1,XF
TER TERMINATE 1START 1000END
Código en GPSS
43
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.
44
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.
45
Ejemplo Taller de Maquinado
Nuevos conceptos: Piezas tienen un tipo diferente (atributos
diferentes en cada XACT) Contar piezas procesadas de acuerdo a su
tipo
46
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 XACTUso de bloques SAVEVALUES para contar las piezas de cada tipo
47
Ejemplo Taller de Maquinado
STORAGE S$REMACH,3SIMULATE
TIPO FUNCTION RN1,D5 tipo de pieza0.1,1/0.35,2/0.55,3/0.85,4/1.0,5PARTES FUNCTION PH1,L5 separacion de piezas1,TIPO1/2,TIPO2/3,TIPO3/4,TIPO4/5,TIPO5
GENERATE RVEXP(1,25)ASSIGN 1,FN$TIPO,PH asigna tipoQUEUE COLAENTER REMACHDEPART COLA
48
Ejemplo Taller de Maquinado
ADVANCE RVNORM(1,60,20)LEAVE REMACHTRANSFER FN,PARTES
PARTE1 SAVEVALUE 1+,1,XHTERMINATE
PARTE2 SAVEVALUE 2+,1,XHTERMINATE
PARTE3 SAVEVALUE 3+,1,XHTERMINATE
PARTE4 SAVEVALUE 4+,1,XHTERMINATE
49
Ejemplo Taller de Maquinado
PARTE5 SAVEVALUE 5+,1,XH
TERMINATE
GENERATE 28800
TERMINATE 1
START 1
END
50
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
RESETSTART 1000END
51
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.
52
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
53
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
54
CLEAR
START 100,NPRESETSTART 1000CLEAR se prepara una segunda corridaINITIAL XH$REP,30.8 se inicializa la
variable RE al valor de 30.8
START 100,NPRESETSTART 1000