Simulacin 1
GPSS. SOFTWARE DE SIMULACIN DE EVENTOS DISCRETOS.
SimulacinIngeniera en Sistemas de
Informacin Simulacin con GPSSGPSS (General Purpose System Simulation)Lenguaje de propsito general para la simulacin de sistemas.Desarrollado por Geoffrey Gordon en IBM alrededor de 1960.Lenguaje orientado a la simulacin de sistemas discretos cuya estructura de funcionamiento est basada en el enfoque de Interaccin del Proceso.
Elementos bsicosEntidades Transacciones: se
mueven a travs del sistema, entran, permanecen y salen.
Entidades Permanentes: estn siempre en el sistema y actan como recursos disponibles o no.
Elementos bsicosFuncionamiento: las transacciones se mueven a travs del sistema hasta que encuentran una entidad que las atiende.Flujo: el programa avanza con una transaccin de un bloque a otro, hasta que algn bloque las retiene, porque representa un tiempo de espera o por que no puede seguir hasta cumplir con alguna condicin lgica.
Simulacin 2
Estructura del LenguajeInstrucciones de comandos o de definicin de Variables.
Definicin de Funciones: FUNCTION Definicin de capacidad de almacenes: STORAGE Definicin de matrices: MATRIX Asignacin numrica a variables: EQU Inicializacin de variables: INITIAL Definicin de histogramas: TABLE, QTABLE Definicin de operaciones: VARIABLE y FVARIABLE De control de la simulacin: CLEAR, RESET, START,
SHOW, BVARIABLE
Estructura del LenguajeInstrucciones de lgica del programa (Block statements).
Inicio de proceso y captura de servidores
SEIZE, ENTER, PREEMPT
Fin de proceso y liberacin de servidores
RELEASE, LEAVE, RETURN
Ingreso de transacciones a un almacn o un bloque de espera
QUEUE, ENTER, LINK
Egreso de transacciones a un almacn o un bloque de espera
DEPART, LEAVE, UNLINK
Estructura del LenguajeInstrucciones de lgica del programa (Block statements).
Ingreso de una transaccin al sistema
GENERATE, SPLIT
Salida de una transaccin del sistema
TERMINATE
Procesos ADVANCE, ASSEMBLE, MATCH, GATHER
Control de flujo TRANSFER, TEST, GATE, LOGIC, SELECT, LOOP, BUFFER
Estructura del LenguajeInstrucciones de lgica del programa (Block statements).
Bloques de operaciones aritmticas
SAVEVALUE, MSAVEVALUE, ASSIGN, INDEX, PRIORITY
Bloques de creacin de estadsticas
TABULATE
Simulacin 3
Estructura del LenguajeFormato de las instrucciones-fields: en definicin de variables o de lgica.
ETIQUETA BLOQUE OPERANDOS ;COMENTARIOSVERBOS
REPRESENTA EL NOMBRE DE UN ETIQUETA O UNA DIRECCIN
ES LA INSTRUCCIN ESPECFICA A EJECUTAR
PARA QUE CADA BLOQUE EJECUTE LA ACCIN CORRESPONDIENTE ES NECESARIO INCLUIR UN CONJUNTO DE CALIFICADORES
ES EL ESPACIO DONDE EL USUARIO PUEDE COLOCAR CUALQUIR INDICACIN
SNAs: System Numerical AttributesSon variables de estados en la simulacin que estn disponibles para ser usadas en la simulacin. Ellas retornan un valor string o numrico y pueden ser usadas en los operandos y en expresiones.
AC1: valor absoluto del reloj de la simulacin, desde el ltimo CLEAR
M1: tiempo de trnsito de un transaccin
Distribucciones de ProbabilidadLibrera:
EXPONENTIAL(nro. generador,0,media) UNIFORM(nro. generador,mnimo,mximo) NORMAL(nro. generador,media,desviacin) POISSON(nro. generador,media) Otras
Empricas: se deben crear usando el comando FUNCTION.
Cmo ingresa una transaccin al sistema? Cmo la genero??
Ingreso de una transaccin al sistema
GENERATE, SPLIT
GENERATE A,B,C,D,EA: tiempo medio entre llegadasB: Desviacin respecto a la mediaC: Tiempo en que se generar la primera transaccinD: Lmite de generacin de transaccionesE: Nivel de prioridad
Simulacin 4
GENERATEEjemplo 1: Los tiempos entre arribos de llegada de los clientes al banco es exponencial con media de 7 minutos.
GENERATE (EXPONENTIAL(1,0,7))
Ejemplo 2: otro tipo de cliente arriba unif. cada 4+-2 minutos y cuyo primer arribo ocurre luego de 1hs.30min. despus del inicio de apertura del banco.
GENERATE (UNIFORM(1,2,6)),,90O
GENERATE 4,2,90
SPLITSPLIT A,B
A: Cantidad de transacciones a generar B: Destino de las nuevas transacciones (opcional)
Ejemplo 1: En un sistema arriban lotes exponencialmente con media de 30 minutos. El tamao de cada lote es de 10 piezas las cuales se procesan individualmente
GENERATE (EXPONENTIAL(1,0,30))SPLIT 9
10SE CREAN 9 TRANSACCIONES GEMELAS
SPLITModificacin Ejemplo 1: Todas las piezas (10) van a ser procesadas en la mquina 2.
SPLIT 10,procesoMaq21 LAS 10 TRANSACCIONES
GEMELAS VAN A LA ETIQUETA PROCESO MAQ2
LA TRANSACCIN ORIGINAL
Cmo salen las transacciones del sistema?
TERMINATE: se utiliza para mover las transacciones activas de la simulacin. Ejecuta una funcin opuesta al GENERATE.
TERMINATE AA: Cantidad decremental del contador de
terminacin (opcional)
Simulacin 5
Cmo salen las transacciones del sistema?
Ejemplo: Las piezas arriban exponencialmente con media de 1 minuto y luego son procesadas en una mquina y luego salen de la fabrica.
GENERATE (EXPONENTIAL(1,0,1))..............
..............
TERMINATE Estoy sacando la transaccin del sistema
Cmo salen las transacciones del sistema?
Utilizacin del TERMINATE para decrementar el contador de terminacin de la simulacin.
Ejemplo: el proceso se simula por una hora (en minutos)
GENERATE 60TERMINATE 1 decrementa el contador
START 1
Captura de servidoresSEIZE: simula la captura de un servidor. Acta como bloque controlador del flujo de transacciones. Maneja una variable interna llamada F, que puede tomar los valores 0 o 1.
SEIZE AA:identificacin del servidor
Ejemplo: GENERATE (EXPONENTIAL(1,0,1))SEIZE MAQUINA..............
TERMINATE
Captura de servidoresENTER: simula la seleccin o captura de uno o ms servidores en paralelo.
ENTER A,BA: nombre o nmero del almacn por utilizar.B: nmero de unidades para las que se decrementa la
capacidad disponible del almacn. Por default 1.
Para los almacenes se necesita definir su capacidad. Nomb_almacen STORAGE 100
Simulacin 6
Captura de servidoresENTER
Ejemplo: Las piezas arriban exponencialmente con media de 1 minuto y luego son pueden ser procesadas cualquiera de las 4 mquinas con igual tiempo de procesamiento y luego salen de la fabrica.
MAQUINAS STORAGE 4
GENERATE (EXPONENTIAL(1,0,1))ENTER MAQUINAS............
............
TERMINATE
Liberacin de los servidoresRELEASE: permite simular la liberacin de un servidor que haba sido capturado, con el bloque SEIZE.
RELEASE AA: Identificacin del servidor.
Ejemplo: GENERATE (EXPONENTIAL(1,0,1))SEIZE MAQUINA..............
RELEASE MAQUINATERMINATE
Liberacin de los servidoresLEAVE: permite simular la liberacin de uno o ms servidores que haban sido capturados con el bloque ENTER.
LEAVE A,BA: Identificacin del servidor.B: nro. de unidades a liberarMAQUINAS STORAGE 4
GENERATE (EXPONENTIAL(1,0,1))ENTER MAQUINAS............
LEAVE MAQUINASTERMINATE
Bloques de espera/colaIngresoQUEUE: nos permitir obtener estadsticas de colas que se forman al momento que las transacciones esperan usar un servidor.
QUEUE A,BA: nombre/nro. de cola B: nro. de unidades en que se incrementa el
contenido de la entidad de cola . Default =1
Simulacin 7
Bloques de espera/colaSalidaDEPART: reduce el contenido de la entidad cola.
DEPART A,BA: nombre/nro. de cola B: nro. de unidades en que se decrementa el
contenido de la entidad de cola . Default =1
Bloques de espera/colaEjemplo:
GENERATE (EXPONENTIAL(1,0,1))QUEUE COLAMAQSEIZE MAQUINADEPART COLAMAQ..............
RELEASE MAQUINATERMINATE
ProcesoADVANCE: este bloque retarda el progreso de una transaccin por una cantidad especificada de tiempo de simulacin
ADVANCE A,B
A: es el tiempo de retraso de la actividad (servicio)B: desviacin con respecto a la media para una
distribucin uniforme.
Ejemplo 1Una mquina procesa 1 pieza en un tiempo de 10+-3 minutos. Las piezas arriban al sector de la mquina con tiempo de arribo exponencial con media de 2.4 minutos. a) Simule el modelo planteado durante 8 horas, para conocer cuntas piezas han sido procesadas durante ese perodo. Y tiempo en cola de espera.b) Simule el modelo planteado para conocer el tiempo total para procesar 100 piezas
MQUINA
PIEZA PROCESADA
Simulacin 8
Ejemplo 1Entonces debemos: 1- generar el tiempo de arribo de las piezas al sector de la mquina 2- colocar en cola de espera3- ocupar la mquina si est disponible4- procesar la pieza5- sacar la pieza , liberar la mquina
Ejemplo 1 item a)Proceso de arribo y procesamiento de las piezas
GENERATE (EXPONENTIAL(1,0,2.4)) ;arribo de las piezasQUEUE COLAMAQ ;coloco la pieza en cola de esperaSEIZE MAQUINA ; si mq. Disponible, se ocupaDEPART COLAMAQ ;se saca la pieza de la colaADVANCE 10,3 ;avanzo el tiempo tambin puede ser UNIFORM(2,7,13)RELEASE MAQUINA ; libero la mquinaTERMINATE ; sale una pieza procesada
Proceso de control de fin de la simulacinGENERATE 480 ; se ejecuta a las 8 horasTERMINATE 1 ; decrementa el contador
START 1
Ejemplo 1 item b)Proceso de arribo y procesamiento de las piezas
GENERATE (EXPONENTIAL(1,0,2.4)) ;arribo de las piezasQUEUE COLAMAQ ;coloco la pieza en cola de esperaSEIZE MAQUINA ; si mq. Disponible, se ocupaDEPART COLAMAQ ;se saca la pieza de la colaADVANCE UNIFORM(2,7,13) ;avanzo el tiempo RELEASE MAQUINA ; libero la mquinaTERMINATE 1 ; sale una pieza procesada
START 100
Entorno GPSSPantalla Principal
Crear un nuevo modelo
Simulacin 9
Entorno GPSS Se ejecuta la simulacin, utilizando la opcin CREATE SIMULATION del Menu COMMAND. Si no existen errores de sintaxis el software mostrar un mensaje de listo(Ready). Desde el menu COMMAND, seleccionar la opcin START, que nos permitir ingresar el valor del contador de terminacin.
Entorno GPSS Ejemplo 1Cargar el modelo item a) en el software , ejecutar e interpretar las salidas
Cargar el modelo item b) en el software , ejecutar e interpretar las salidas
Ejemplo 2Cuatro mquinas procesan piezas en un tiempo de 10+-3 minutos. Las piezas arriban al sector de las mquinas con tiempo de arribo exponencial con media de 2.4 minutos. a) Simule el modelo planteado durante 8 horas, para conocer cuntas piezas han sido procesadas durante ese perodo. Y tiempo en cola de espera.
Entonces debemos: 1- generar el tiempo de arribo de las piezas al sector de la
mquina 2- colocar en cola de espera 3- ocupar cualquier de las mquinas que est disponible 4- procesar la pieza 5- sacar la pieza , liberar la mquina
Ejemplo 2 Proceso de arribo y procesamiento de las piezas
GENERATE (EXPONENTIAL(1,0,2.4)) ;arribo de las piezasQUEUE COLAMAQ ;coloco la pieza en cola de esperaENTER MAQUINAS ; si hay mq. Disponible, ocupa unaDEPART COLAMAQ ;se saca la pieza de la colaADVANCE 10,3 ;avanzo el tiempo tambin puede ser UNIFORM(2,7,13)LEAVE MAQUINAS ; libero una mquinaTERMINATE ; sale una pieza procesada
Proceso de control de fin de la simulacinGENERATE 480 ; se ejecuta a las 8 horasTERMINATE 1 ; decrementa el contador
Definicin de la capacidad del almacenMAQUINAS STORAGE 4 ; para simular las 4 mquinas
Simulacin 10
Entorno GPSS Ejemplo 2Cargar el modelo en el software , ejecutar e interpretar las salidas
Control de Flujo TEST: compara valores y controla el destino de la transaccin de acuerdo al resultado de la comparacin.
TEST O A,B,CO: es un operador relacional entre A, B. Puede ser E, G, L,
NE, GE o LE.A: es el valor para el testB: es un valor de referencia.C: bloque destino si el test no se cumpleEjemplo:
TEST LE AC1,60,FIN
Control de Flujo TRANSFER: este bloque permite que una transaccin activa se dirija a una nueva ubicacin dentro del modelo.
TRANSFER A,B,C,DA: modalidad de referencia. El operando puede ser BOTH,
ALL, fraccin, etc.B: nmero o ubicacin del bloque.C: nmero o ubicacin del bloqueD: nmero de incremento de bloques cuando est en
modalidad ALLEl mtodo que se utiliza para la eleccin se indica
mediante un factor de seleccin en el campo A.
Control de Flujo IncondicionalTRANSFER ,Lugar
Se deja en blanco
FraccionalTRANSFER %,Lugar1,Lugar2
La transaccin va a C (Lugar2) con la probabilidad indicada en A y a B (Lugar1) con la probabilidad 1-A.
Ver problema 1 y 4 del ANEXO 5Ver problema 1 y 4 del ANEXO 5
Simulacin 11
Gua de Trabajos Prcticos N 5 - ANEXO GPSS ejercicios resueltos
Problema 1 A un taller llegan piezas cada 15 minutos, las que son procesadas por una mquina en 14 4 minutos. Luego son inspeccionadas en 11 3 minutos. El 90% de las piezas son aceptadas y el 10% restante va a ser reprocesado por la mquina.
a) Cunto tiempo toma aceptar 50 piezas? b) Cul es el tiempo medio de espera para ser atendida por la mquina?
Control de Flujo Control de Flujo
Control de Flujo BOTH:
TRANSFER BOTH,Lugar1,Lugar2
La transaccin va a B (Lugar1) si est desocupada, sino va a C (Lugar2).
Ver problema 2 del ANEXO 5Ver problema 2 del ANEXO 5
Simulacin 12
Problema 2 Los usuarios del laboratorio de computacin llegan cada 5 3 minutos. Si el laboratorio esta lleno van al bar donde permanecen 5 minutos. Pasado ese tiempo, el 50% de los alumnos vuelve a intentar usar el laboratorio, el resto permanece durante 60 minutos ms y luego se va. El tiempo de permanencia en el laboratorio es de 60 20 minutos, y su capacidad es de 10 mquinas. a) Cuntos alumnos se van sin haber usado el laboratorio despus de 8 horas de
simulacin? b) Cuntos usaron el laboratorio?
Control de Flujo ALL
TRANSFER ALL,primerlugar,ltimolugar,incremento
Si hay ms de 2 destinos, chequea si estn disponibles todos los bloques comprendidos entre el bloque especfico en B y el bloque C.
Si se quiere saltar cierto nro. fijo de bloques, se lo especifica en D.
Ver problema 3 del ANEXO 5Ver problema 3 del ANEXO 5
Simulacin 13
Control de Flujo TEST: compara valores y controla el destino de la transaccin de acuerdo al resultado de la comparacin.
TEST O A,B,CO: es un operador relacional entre A, B. Puede ser E, G, L,
NE, GE o LE.A: es el valor para el testB: es un valor de referencia.C: bloque destino si el test no se cumpleVer problema 5 ANEXO 5
Simulacin 14
TABLE TABLE: Inicializa una tabla de distribucin de frecuencias.nombre_tabla TABLE A,B,C,D
A: Variable a tabularB: lmite superior de la primera frecuencia.C: incrementoD: cantidad de intervalosEl operando A puede ser un SNA como M1(tiempo
trasncurrido), Qi (contenidos de una queue), Si (contenidos de un storage) o Xi (contenidos de un savevalue)
Ejemplo: TIEMPO TABLE M1,50,50,10
MARK MARK: permite asignar un tiempo a la transaccin activa diferente al tiempo de entrada.
MARK AA: es un parmetro numrico que recibe el valor del reloj del
sistema.
Si no se especifica el operando A se toma el tiempo del reloj del sistema en el momento que la transaccin pasa por el bloque MARK.
Si el operando A es especificado , el tiempo del reloj se toma de acuerdo al parmetro especificado en el operando A
TABULATE TABULATE: recolecta los datos de la medicin y los coloca en una tabla.
TABULATE AA: es el nombre o nmero de la tabla que debe ser incluido
obligatoriamente.
Ejemplo: Un sistema simple de telfono tiene 2 lneas externas. Las llamadas que se originan externamente arriban en forma uniforme cada 100 +- 60 segundos. Cuando la lnea est ocupada la persona que llama vuelve a discar despus de 5+- 1 minuto. Las llamadas duran 3+-1 minuto. Se necesita la distribucin de frecuencias para cada llamada que se complete. Cmo ser para completar 100 llamadas
TABLE - MARK - TABULATE SET STORAGE 2TRANS TABLE M1,100,100,20
GENERATE 100,60REPETIR TEST L S$SET,2,OCUPA
MARKENTER SETADVANCE 180,60LEAVE SETTABULATE TRANSTERMINATE 1
OCUPA ADVANCE 300,60TRANSFER ,REPETIR
START 100
Simulacin 15
QTABLEQTABLE: inicializa una tabla de distribucin de frecuencia para una cola
Nomb_qtabla QTABLE A,B,C,D
A: es el nombre o nmero de la cola.B: lmite superior de la primera frecuencia.C: incrementoD: cantidad de intervalosNo se necesita incluir el TABULATE, yq que la medicin del
tiempo ser entre el QUEUE y el DEPART de la cola AEj: tiemposcola QTABLE nomb_cola,0,10,50
FUNCTIONFUNCTION: se utiliza para definir funciones y distribuciones estadsticas.
Nombre FUNCTION A,BNX1,Y1/X2,Y2/......./Xn,YnA: es el argumento de la funcin que puede ser un nombre,
un entero positivo o un SNABN: donde B es el tipo de la funcin : C(continua), D(discreta), L(lista) y N
es el nmero de pares de puntos que se ingresanEj: Una estacin de servicio ofrece 4 tipos de combustibles.
Existen las siguientes preferencias de los clientes: el 40% prefiere 87octanos, 30% prefiere 89 octanos, 20% prefiere 95 octanos y el resto diesel.
COMBUSTIBLE FUNCTION RN1,D40.40,87/0.70,89/0.90,95/1.0,100
ASSIGNASSIGN: este bloque se utiliza para asignar o modificar un entero en un parmetro de una transaccin.
ASSIGN A,B,CA: es el nro. del parmetro de la transaccin activa, debe ser
incluido necesariamenteB: valor C: nombre de un funcin que es opcionalEjemplo: ASSIGN 2,10
ASSIGN SUMA+,1 O ASSIGN RESTO-,3ASSIGN TIPO,FN$COMBUSTIBLEASSIGN 1,AC1
El valor del parmetro puedo ser invocado usando el P y el nombre o nro. de parmetro.
Ej: TEST E P$TIPO,100,VER
SAVEVALUESAVEVALUE: este bloque cambia el valor de una entidad savevalue (que graba o guarda valores).
SAVEVALUE A,BA: es el nombre de la entidad savevalueB: es el valor a reemplazar, sumar o restarEjemplo: SAVEVALUE 3,5
SAVEVALUE SUMA+,1 O SAVEVALUE RESTA-3
El valor del savevalue puede ser invocado usando X y el nombre del savevalue
Ej: TEST G X$SUMA,20,SALIR
Simulacin 16
PreemptBloque PREEMPT en su versin elemental: Interrumpe el ADVANCE
donde una transaccin est haciendo uso de la FACILITY. Cuando se produce la devolucin del recurso se reanuda el ADVANCE (es decir, se reinicia el ADVANCE con el tiempo que quedaba por hacerse al momento de la interrupcin).
Ejemplo:GENERATE clientes...
QUEUE empleadoSEIZE empleadoDEPART empleadoADVANCE 60RELEASE empleado...
TERMINATE
PreemptPREEMPT A,B,C,D,EA: Facility que se intenta arrebatarB: PR para indicar que es un arrebato con prioridad (el
mismo se produce si el que arrebata tiene mayor prioridad que el arrebatado)
C: Rtulo al que bifurca la transaccin afectada por el arrebato si la transaccin afectada est en un ADVANCE
D: Parmetro de la transaccin afectada por el arrebato donde el GPSS pone el tiempo remanente para terminar el ADVANCE.
E: RE para indicar que el arrebato es definitivo (con REMOVE de la FACILITY arrebatada)
PreemptCmo se simulan las interrupciones a empleado que suceden concurrentemente con la atencin de
clientes por parte de empleado?GENERATE clientes...
QUEUE empleadoSEIZE empleadoDEPART empleadoADVANCE 60RELEASE empleado
. ..
TERMINATEGENERATE interrupcionesPREEMPT empleadoADVANCE 15RETURN empleadoTERMINATE
El bloque PREEMPT arrebata al recurso que fue tomado por el bloque SEIZE, interrumpiendo el ADVANCE que estuviera ejecutando la transaccin afectada.
PreemptExiste la posibilidad que se produzcan arrebatos de arrebatos?S, ejecutando el bloque:
PREEMPT A,PRA: FACILITY que se intenta arrebatarPR: modalidad de arrebato que determina que el arrebatoSe produce si la transaccin que tiene la facility es de menor prioridad que la que
hace el PREEMPT A,PR
si una transaccin ejecuta un PREEMPT empleado,PR y la prioridad de la transaccin que tiene a empleado es mayor o igual que la que ejecuta el PREEMPT, la transaccin no puede arrebatar a empleado y queda en una PENDING CHAIN
Simulacin 17
PreemptCmo podemos simular que la transaccin que sufre el arrebato, debe
reiniciar la tarea, o sufre un recargo de tiempo, de 5 segundos, por ejemplo?
GENERATE 60 PRIORITY 100 SEIZE empleado
DENU ADVANCE 25 RELEASE empleadoSAVEVALUE CUEN+,1 SAVEVALUE X$CUEN,AC1 TERMINATE 1 GENERATE 60,,10PREEMPT empleado,,DENU ADVANCE 20 RETURN empleadoTERMINATE
PreemptGENERATE 60 PRIORITY 100 ASSIGN 3,25 SEIZE empleado
REAN ADVANCE P3 RELEASE empleadoSAVEVALUE CUEN+,1 SAVEVALUE X$CUEN,AC1 TERMINATE 1
GENERATE 60,,10 PREEMPT empleado,,DENU,3RETURN empleadoTERMINATE
DENU ASSIGN 3+,5TRANSFER ,RENAN
SelectSELECT O A,B,C,D,ESelecciona una entidad y coloca el nmero de esta entidad en un
parmetro de la transaccin activa.
Operandos :O Operador condicional u operador lgico :FNV, FV, I, LS, LR, NI, NU,
SE, SF, SNE, SNF, SNV, SV, U, E, G, GE, L, LE, MIN, MAX, or NE.A Nombre o nmero del paramtro que recibe el nmero de la entidad
seleccionada.B Nmero de la entidad menor.C Nmero de la entidad mayor.D - Opcional. No usado con MIN.E Nombre de la clase SNA.
FNV - The Facility Entity must be unavailable in order to be selected. FV - The Facility Entity must be available in order to be selected. I - The Facility Entity must be currently interrupted (preempted) in order to be selected. LS - The Logicswitch Entity must be set in order to be selected. LR - The Logicswitch Entity must be reset in order to be selected. NI - The Facility Entity must NOT be currently interrupted (preempted) in order to be selected. NU - The Facility Entity must not be in use in order to be selected. SE - The Storage Entity must be empty in order to be selected. SF - The Storage Entity must be full in order to be selected. SNE - The Storage Entity must NOT be empty in order to be selected. SNF - The Storage Entity must NOT be full in order to be selected. SNV - The Storage Entity must NOT be available in order to be selected. SV - The Storage Entity must be available in order to be selected. U - The Facility Entity must be in use in order to be selected.
Special Restrictions
Either a conditional operator or a logical operator is required.
Evaluated entity numbers must be positive integers.
D and E are required if O is a conditional operator. Other than MIN or MAX.
When evaluated, C must be greater than or equal to B.
Ejemplo uso del SelectUna Compaa est diseando un nuevo programa para sus estaciones expendedoras de combustible. La estacin de servicio ofrecer 4 tipos de combustibles: 87 octanos, 89 octanos, 95 octanos y diesel. Cada surtidor puede dispensar los tres grados de gasolina. Slo un surtidor de las cuatro expender diesel, adems de los distintos grados de gasolina.Un estudio reciente de los clientes determin las siguientes preferencias: el 40 % prefiere 87 octanos, 30 % prefiere 89 octanos, 20 % prefiere 95 octanos y el resto diesel. Durante perodos picos los clientes arriban uniformemente distribuidos entre 15 y 45 segundos. El combustible es bombeado a una velocidad de 5 litros por minuto. El tiempo requerido para comenzar y terminar la carga de combustible est distribuido uniformemente entre 2 y 7 minutos.
El modelo en GPSS, utilizando sentencia select, es el siguiente :
Simulacin 18
COMBUSTIBLE FUNCTION RN1,D4 0.40,87/0.70,89/0.90,95/1.0,100
COLA1 EQU 1 COLA4 EQU 4
GENERATE (UNIFORM(1,15,45)) ASSIGN TIPO,FN$COMBUSTIBLE TEST E P$TIPO,100,VERCOLAS TRANSFER ,IRDIESEL
VERCOLAS SELECT MIN MCOLA,COLA1,COLA4,,Q QUEUE P$MCOLA SEIZE P$MCOLA DEPART P$MCOLA ADVANCE (UNIFORM(1,120,420)) RELEASE P$MCOLA TERMINATE
IRDIESEL ASSIGN DIESEL,4 QUEUE P$DIESEL SEIZE P$DIESEL DEPART P$DIESEL ADVANCE (UNIFORM(1,120,420)) RELEASE P$DIESEL TERMINATE
GENERATE 3600 TERMINATE 1
Ejemplo uso del Selecta) Aplicar sentencias alternativas para obtener el mismo
resultado. b) Calcular en el modelo, la consumicin promedio de
combustible por cliente y tipo.c) Calcular en el modelo, qu tiempo promedio permanece
en el sistema un cliente que compra diesel.d) Modifique el problema anterior para tratar una falla en los
surtidores que en forma aleatoria afecta a cualquiera de los surtidores y se produce en forma exponencial cada 30 minutos. Y deja al surtidor fuera de servicio por 51,5 minutos. El auto que est en servicio y la cola esperan la reparacin del mismo para seguir la carga de combustible.
Test
Preempt
1. El reporte de la simulacin del modelo original es la siguiente :
START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 3600.000 20 4 0
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 117 0 0 2 ASSIGN 117 0 0 3 TEST 117 0 0 4 TRANSFER 17 0 0 VERCOLAS 5 SELECT 100 0 0 6 QUEUE 100 52 0 7 SEIZE 48 0 0 8 DEPART 48 0 0 9 ADVANCE 48 4 0 10 RELEASE 44 0 0 11 TERMINATE 44 0 0 IRDIESEL 12 ASSIGN 17 0 0 13 QUEUE 17 11 0 14 SEIZE 6 0 0 15 DEPART 6 0 0 16 ADVANCE 6 0 0 17 RELEASE 6 0 0 18 TERMINATE 6 0 0 19 GENERATE 1 0 0 20 TERMINATE 1 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY 1 15 0.989 237.315 1 50 0 0 0 16 2 14 0.968 248.917 1 53 0 0 0 15 3 14 0.937 240.910 1 59 0 0 0 15 4 11 0.925 302.886 1 52 0 0 0 17
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY 1 16 16 31 1 7.532 874.662 903.818 0 2 15 15 29 1 7.286 904.495 936.798 0 3 15 15 29 1 6.915 858.370 889.026 0 4 17 17 28 1 7.297 938.211 972.960 0
Cuntos clientes usaron el surtidor diesel?
Cul es el nmero mximo de autos esperando por el servicio en todos los surtidores?
AssembleASSEMBLE Ael comando ASSEMBLE espera y destruye una cantidad de
transacciones asociadas por un mismo Assembly Set.Es usado para sincronizacin. Las transacciones relacionadas son
destruidasA- cantidad de transacciones. Requerido. Debe ser nombre , posint, SNA,
SNA*param)Ejemplo: ASSEMBLE 2La primera transaccin de un conjunto de reunin (assembly set) es
puesta a esperar cuando ingresa en el bloque ASSEMBLE. Cuando otra transaccin del mismo conjunto de reunin ingresa al bloque, sta es destruida y la transaccin que esperaba es permitida para que contine.
Simulacin 19
Assemble- Ejercicio 9 A una mquina llegan pares de componentes (como una unidad) cada
130 segundos. Una vez dentro de la mquina, este par de componentes es
desensamblado en 105 segundos. Cada componente se procesa en forma separada demorando 805 segundos (el procesamiento de cada uno de los componentes se realiza en forma simultnea).
La mquina slo puede procesar de a un par por vez, los que lleguen detrs esperan en cola.
Luego de procesar cada par de componentes, la misma mquina los ensambla en 4020 segundos y los libera, para continuar con el par siguiente.
Simular 1000 pares de componentes procesados. Se necesita conocer la cantidad en cola encontrada por cada par de componentes llegados a la mquina, antes de ingresar a la cola.
Assemble- Ejercicio 9CANTIDAD TABLE Q$COLA,2,2,20 MAQUINA STORAGE 1
GENERATE 130 TABULATE CANTIDAD QUEUE COLA ENTER MAQUINA DEPART COLA ADVANCE 10,5 SPLIT 1,OTRA ADVANCE 80,5 TRANSFER ,SEGUIR
OTRA ADVANCE 80,5 SEGUIR ASSEMBLE 2 ADVANCE 40,2 LEAVE MAQUINA TERMINATE 1
GatherGATHER Afunciona como una barrera, esperando que lleguen al mismo la
cantidad de transacciones (del mismo assembly set) especificada en su nico parmetro.
A- cantidad de transacciones a esperar
Es similar al assemble pero no destruye
LinkLINK A,B,[C] Encadena una transaccin a la cadena A. Las transacciones quedan
congeladas hasta que otra haga un UNLINK
A- nombre o nro. de la cadena donde se encadena la transacc. (nom, posint, SNA)
B- disciplina por la cual se encadena (FIFO, LIFO, PR, Pn, M1, etc). Por param. de menor a mayor. Es aconsejable no mezclar disciplinas distintas para una misma cadena (FIFO, LIFO, nom, posint, SNA, SNA*param)
C- es a la etiqueta al que van las transacciones en caso de que la cadena este en estado de reset. (nom, posint, SNA*Param. O al que bifurca la primera transaccin de la cadena(no se utiliza en sistema transporte)
Simulacin 20
UnlinkUNLINK [O] A, B, [C], [D], [E], [F]
Libera C transacciones encadenadas que cumplen la condicin que se establece relacionando los operandos D y E mediante el operador O. envindolas a la etiqueta B
O. operador relacional entre D y E para seleccionar que transacciones pueden liberarse. (E, G, GE, L, LE, NE). Si no se coloca operador es E (equal).
A. nombre o nro. de la cadena desde donde se libera. (nom, posint, SNA, SNA*param)B. rtulo al que van las transacc. liberadas. (nom, posint, SNA, SNA*param)C. [ALL] mxima cantidad de transacciones a liberar. Para que el UNLINK sea Verd.
Deben poder liberarse todas las pedidas.DyE definen la condicin que deben cumplir para ser liberadas.
D. param, PR, BV, BACK. Si no es BV se comp. con valor de E para ver si se puede liberar (nom, int, SNA, SNA*param, BACK). BACK saca de la cola.
E. valor que debe tener parm. D para que la transacc. sea liberada. No se usa con BV en D. (nom, int, SNA, SNA*param)
F. Etiqueta alternativa si no se puede cumplir el UNLINK, o sea si no se pueden liberar C transacciones. (nom, posint, SNA, SNA*param)
Uso en el transporte de objetos
Pasivastransportadas
Activastransportan
Los que viajan tienen dos momentos en que son objetos pasivos (dependen del colectivo): 1. Cuando esperan el colectivo. No saben cunto
tiempo van a estar en la parada ya que ignoran cunto va a tardar en venir el colectivo.
2. Cuando viajan: No saben cunto tiempo van a demorar viajando porque no saben lo rpido que van a llegar a destino.
Uso en el transporte de objetos Las transacciones pueden entrar en un estado de letargo si
ejecutan un Link encadenndose a una cadena. (ej, a la PARADA para esperar el colectivo, BUS cuando estn viajando en el colectivo)
Una transaccin que ejecuta un LINK sale de circulacin. Pasividad total, nada de lo que pasa a su alrededor le afecta, slo
aguarda que otra transaccin la libere mediante el bloque UNLINK. Una transaccin que est encadenada en ningn caso puede
liberarse a si misma.
Transacciones pasivas Transacciones activas Pasajeros en la parada Pasajeros viajando en el colectivo
Colectivo
Bultos apilados Bultos en la pluma de la gra
Gra
Expedientes apilados Expedientes bajo el brazo del cadete
Cadete
Ejemplo de uso en el transporte de objetos
En una Institucin Gubernamental, donde el pblico presenta notas que las hace ingresar por MESA DE ENTRADAS, un empleado la recibe y la apila a la espera que un nico cadete la recoja y la lleve a DESPACHO. Las notas estn en la PILA de notas aguardando ser transportadas.
El cadete, realiza una tarea inicial habitual (se cambia, limpia su lugar de trabajo, ordena sus cosas, etc), se dirige a Mesa de entradas, all recoge todas las notas (saca todas las notas de la PILA), se dirige a Despacho, all entrega todas las notas, hace otras tareas, vuelve a Mesa de entradas repitiendo el ciclo aqu descripto.
Las notas hacen un LINK a PILA y luego hacen un LINK a CAD. En ambos casos es el cadete el que hace el UNLINK cuando saca todas las notas de la PILA y cuando saca a todas de CAD.
Simulacin 21
Ejemplo de uso en el transporte de objetosSubsistemas de notas (pasivo)
Se encadenan a PILA y a CAD antes de llegar a despacho (rtulo ENT)
Subsistema Cadete (activo) (transporta las notas)
GENERATE notas Se representan las tareas que se hacen . ... con las notas antes de ponerlas en la pila... LINK PILA,FIFO BRA LINK CAD,FIFO ENT se representa el trmite en DESPACHO (otra descripcin de tareas que se realizan all)
GENERATE ,,,1 ADVANCE tiempo tarea inicial VUEL ADVANCE tiempo ir a Mesa Entr UNLINK PILA,BRA,ALL ADVANCE tiempo ir a Despacho UNLINK CAD,ENT,ALL ADVANCE otras tareas TRANSFER ,VUEL
Ejemplo de uso en el transporte de objetosGENERATE 4,1
ADVANCE 2 LINK PILA,FIFO BRA LINK CAD,FIFO ENT SAVEVALUE CONTA+,1 TERMINATE
GENERATE ,,,1 ADVANCE 10 VUEL ADVANCE 2 UNLINK PILA,BRA,ALL ADVANCE 10 UNLINK CAD,ENT,ALL ADVANCE 5 TRANSFER ,VUEL
GENERATE 480 TERMINATE 1
START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 480.000 16 0 0
NAME VALUE BRA 4.000 CAD 10001.000 CONTA 10002.000 ENT 5.000 PILA 10000.000 VUEL 9.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 120 0 0 2 ADVANCE 120 1 0 3 LINK 119 3 0 BRA 4 LINK 116 4 0 ENT 5 SAVEVALUE 112 0 0 6 TERMINATE 112 0 0 7 GENERATE 1 0 0 8 ADVANCE 1 0 0 VUEL 9 ADVANCE 28 0 0 10 UNLINK 28 0 0 11 ADVANCE 28 1 0 12 UNLINK 27 0 0 13 ADVANCE 27 0 0 14 TRANSFER 27 0 0 15 GENERATE 1 0 0 16 TERMINATE 1 0 0
USER CHAIN SIZE RETRY AVE.CONT ENTRIES MAX AVE.TIME PILA 3 0 2.181 119 5 8.799 CAD 4 0 2.408 116 5 9.966
SAVEVALUE RETRY VALUE CONTA 0 112.000