-
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