Professional Documents
Culture Documents
http://www.minutemansoftware.com
GPSS - PC
GPSS es un lenguaje de Simulacin de Sistemas
de Propsito General (General Purpouse System
Simulation).
Es un lenguaje estructurado en base a sentencias
de bloque para representar los eventos del
sistema y las sentencias de control para
controlar la simulacin del sistema.
Sentencias de Bloque
1. Generate
2. Test
3. Queue
4. Seize
5. Depart
6. Advance
7. Release
8. Terminate
Sentencias de Bloque complementarias:
1. Savevalue
2. Enter
3. Advance
4. Leave
5. Transfer
Se inicializa con
una sentencia de
control:
Start n
Que inicializa un
contador de la
finalizacin de la
simulacin en n, el
cual es disminuido
por una sentencia
de bloque:
Terminate 1
Sentencia GPSS
Estructura de una sentencia de declaracin GPSS/PC :
Nro. Etiqueta
Nro.
Etiqueta
Verbo
Operandos
Comentario
Verbo
Operandos
;Comentario
Bloque : Generate
GENERATE
Ejemplos : Generate
GENERATE 2700,200,1000,100,50
Crea transacciones cada 2700 200 unidades de
tiempo, pero la primera transaccin se crea al tiempo
1000. Despus de 100 transacciones no se generan ms
y cada una de las 100 generadas tendrn una prioridad
de 50.
GENERATE 30,FN$XPDIS
Crea transacciones segn una distribucin exponencial
negativa con media 30 unidades de tiempo.
Bloque Terminate
TERMINATE
Ejemplos: Terminate
TERMINATE
Cada transaccin que ingresa a este bloque se
destruye.
TERMINATE 5
Cada vez que una transaccin ingresa a este
bloque se destruye y disminuye en 5 el contador
de finalizacin de la simulacin.
Bloque : Seize
SEIZE
Bloque : Release
RELEASE
Bloque : Advance
ADVANCE
Ejemplos :
ADVANCE 12,4
Retarda la transaccin 12 4 unidades de tiempo simulado.
ADVANCE 15
Retarda exactamente 15 unidades de tiempo a la transaccin.
ADVANCE 5,FN$XPDIS
Retarda a la transaccin un tiempo distribuido exponencialmente con media 5 .
Bloque: Queue
QUEUE
QUEUE FILAB,3
Declara una fila de nombre FILAB y le suma 3 unidades cada vez que una
transaccin pasa por ella.
Bloque : Depart
DEPART
DEPART FILAB 3
La fila FILAB se reduce en 3 unidades cada vez que una transaccin pasa
por esta instruccin.
Cola
Poblacin
Tiempo
entre
Arribos (t)
Politica de
servicio
SEIZE
Arribos
GENERATE
QUEUE
DEPART
ADVANCE
TERMINATE
SISTEMA DE COLAS
Simulacin de Sistemas
Tiempo de
Servicio
RELEASE
Servicio
Ejemplo 1
Elabore un programa de simulacin que represente el
siguiente sistema: La operacin de un telfono que sirve
para que los empleados hagan sus llamadas. El tiempo
por llamada es de 3 a 7 min con probabilidad uniforme;
los empleados llegan al telfono cada 10 5 min. Simule
50 llamadas efectuadas. (por ejemplo para saber si un
telfono es suficiente o es necesario otro).
Bloques GPSS
Elabore un programa de simulacin que represente el
siguiente sistema: La operacin de un telfono (SEIZE)
que sirve para que los empleados hagan sus llamadas. El
tiempo por llamada es de 3 a 7 min con probabilidad
uniforme (ADVANCE); los empleados llegan al telfono
cada 10 5 min (GENERATE) y si no esta libre el
telfono se quedan esperando (QUEUE). Simule 50
llamadas efectuadas (START 50). (por ejemplo para
saber si un telfono es suficiente o es necesario otro).
QUEUE
COLA
SEIZE
TELEFONO
GENERATE
600,300
QUEUE
SEIZE
COLA
TELEFON
GENERATE
10,5
COLA
DEPART
ADVANCE
5,2
DEPART
ADVANCE
COLA
300,120
RELEASE
TELEFONO
RELEASE
TELEFON
TERMINATE
START
50
TERMINATE
GENERA USUARIOS DE
TELEF. U/C 600300 SEG
COLA POR LLAMADAS
SOLICITAN ACCESO AL
TELEFONO.
SALIDA DE COLA
TPO. OCUPACION DEL
TELEF: 300 120 SEG
LIBERAN EL TELEFONO
DESPUES DE LLAMAR.
SE CUENTA UNA
LLAMADA.
SE SIMULAN 50
LLAMADAS
Bloque : Enter
ENTER
Bloque : Leave
LEAVE
LEAVE MESAS,3
Cada transaccin que ingresa solicita que la unidad de equipo mltiple (o
storage) MESAS libere 3 de sus unidades.
Nota : STORAGE se ubica junto a las instrucciones de control del inicio del
programa (donde usualmente se colocan las declaraciones de variables).
Ejemplo 2
Se desea saber cuntos puntos de cobro (casetas)
de peaje se deben abrir en uno de los sentidos de
una autopista, para tenerlos disponibles en caso
de que la demanda aumente al doble de autos por
unidad de tiempo (en promedio), puesto que se
desea que el nmero de autos en espera de
servicio no sea superior a 20, por el riesgo de
accidente que hay en la zona. Si el tiempo inter
arribo de los autos en cada carril es 20 10 sg y el
tiempo de cobro por auto es de 10 5 sg, simule
ocho horas de operacin para tomar una decisin.
TERMINATE
LEAVE
ADVANCE
DEPART
ENTER
QUEUE
Carril 1
Carril 2
GENERATE
GENERATE
LEAVE
DEPART
TERMINATE
ADVANCE
ENTER
QUEUE
GENERATE
Carril 2
Simulacin de Sistemas
Carril 1
GENERATE
Tiempo Servicio
en cada caseta 10 5 sg
CABINAS
STORAGE 3
Se inicia con 3 cabinas.
* ESTE PROGRAMA SIMULA LA OPERACION DE UN PUNTO DE COBRO
* SOBRE UNA AUTOPISTA. INICIA CON 3 CABINAS DE COBRO *
* PROGRAMA BASE: *
GENERATE
20,10
Tiempo de inter arrivo (seg) en el carril 1
QUEUE
FILA
Auto forma frente a las cabinas (alguna de ellas)
ENTER
CABINAS
Se solicita acceso a alguna cabina
DEPART
FILA
Auto abandona la fila.
ADVANCE
10,5
Tiempo de servicio en alguna cabina.
LEAVE
CABINAS
Auto deja alguna cabina.
TERMINATE
GENERATE
20,10
Tiempo de inter arrivo (seg) en el carril 2.
QUEUE
FILA
Auto forma frente a las cabinas (alguna de ellas)
ENTER
CABINAS
Se solicita acceso a alguna cabina
DEPART
FILA
Auto abandona la fila.
ADVANCE
10,5
Tiempo de servicio en alguna cabina.
LEAVE
CABINAS
Auto deja alguna cabina.
TERMINATE
GENERATE
8*3600
Se crea 1 transaccin a las 8 horas de operacin
TERMINATE
1
Y el programa termina en este momento.
START
1
Inicia una corrida de la siumulacin.
Carril 1 de la via
GENERATE
QUEUE
ENTER
DEPART
20,10
FILA
CABINAS
FILA
Carril 2 de la via
GENERATE
QUEUE
ENTER
20,10
GENERATE
8*3600
FILA
TERMINATE
CABINAS
DEPART
FILA
ADVANCE
10,5
ADVANCE
10,5
LEAVE
CABINAS
LEAVE
CABINAS
TERMINATE
TERMINATE
Representa a un reloj
de control de fin de la
simulacin para
periodos de 8 horas.
Bloque : Transfer
TRANSFER
Forma Incondicional
Para hacer esto se deja el campo A en blanco y en
B se coloca una etiqueta que seala el bloque
donde ingresar incondicionalmente la
transaccin.
Ejemplo:
TRANSFER
, PROXIMO
.33,DIRUNO,DIRDOS
Ejemplo 2:
TRANSFER .33, ,DIRDOS
Aqu el 33 % de las transacciones que ingresen se dirigen al bloque
etiquetado con DIRDOS y el resto pasa al siguiente bloque.
TRANSFER PIC,ETIQUNO,ETIQDOS
Esta instruccin intentar enviar las transacciones (que ingresen)
a algn bloque que est entre el bloque etiquetado como
ETIQUNO y el etiquetado como ETIQDOS (incluyendo los
bloques etiquetados). Todos los destinos posibles tienen la misma
probabilidad de ser seleccionados por la instruccin
Forma Condicional
Manera 1. Si en el campo A se emplea la opcin BOTH
Ejemplo:
TRANSFER BOTH,INICIO,FINAL
La transaccin al llegar se transfiere como primera opcin al bloque
etiquetado como INICIO y como segunda opcin al etiquetado como
FINAL hasta que logre el acceso.
TERMINATE
20%
Galletas
SEIZE
DEPART
RELEASE
TRANSFER
10%
25%
GENERATE
ADVANCE
10%
75%
TRANSFER
Refrescos
QUEUE
TRANSFER
ADVANCE
RELEASE
60%
80%
SEIZE
TERMINATE
DEPART
Modelo GPSS
GENERATE 120,60
TRANSFER .20,,FINAL
QUEUE
FILA
TRANSFER .25,,GALLET
SEIZE
MBEBIDAS
DEPART
FILA
ADVANCE 90,30
RELEASE MBEBIDAS
TERMINATE
GALLET
TRANSFER .40,,SOLOGALL
SEIZE
MBEBIDAS
ADVANCE 90,30
RELEASE
MBEBIDA
SOLOGALL SEIZE
MGALLETAS
ADVANCE 90,30
RELEASE
MGALLETAS
DEPART
FILA
FINAL
TERMINATE
GENERATE 4*3600
TERMINATE 1
START 1
Bloque: Test
TEST
"X" A,B,C
TEST E Q$LINEA,Q$INICIO
Aqu la instruccin detendr las transacciones que intenten pasar al bloque
siguiente mientras las longitudes de las filas LINEA e INICIO sean diferentes.
Cuando sean iguales las transacciones pasarn al siguiente bloque.
SNA DEFINICION
SNAs
Ejemplo 3: Restaurant
Simule la operacin del establecimiento por 8 horas y determine el
tamao de los componentes de acuerdo a los resultados. Tome en cuenta
que de las 13:00 a las 15:00 llegan exactamente tres personas ms por
unidad de tiempo y que el comedor abre a la 11:00.
Los clientes llegan a partir de las 11:00 de manera independiente con un
tiempo entre llegadas distribuido con probabilidad uniforme entre 60 y 30
segundos. El tiempo de cobro en la caja es aleatorio e uniformemente
distribuido entre 90 y 50 segundos. Suponga que la comida se sirve slo
en la parte inicial de la barra, tomando un tiempo de 40 20 segundos.
Despus slo se recorre la barra hasta llegar a la caja para realizar su
pago.
Suponga que las personas permanecen comiendo durante 18 5 min y
despus se retiran. Se desea una cola menor a 5 personas detrs del
punto inicial de la barra en espera de atencin (zona de servicio comida).
Con base en los resultados de su programa diga cuantos lugares
(asientos) debe tener el comedor (considere que un comensal puede
sentarse en cualquier mesa siempre que exista un lugar libre en ella) y
diga el tamao de la barra que necesita (para cuantas personas).
Barra
Area de
Mesas
Caja
Servicio
comida
Entrada
GENERATE
TEST
C
VAN
AC1,7200,OTRO
OTRO
QUEUE
ENTER
DEPART
TEST
SEIZE
G AC1,14400,FIN
ADVANCE
BARRA
COLA
FIN TERMINATE
RELEASE
90,50
18,5
LEAVE
CAJA
TERMINATE
QUEUE
,VAN
TRANSFER
COLAMESA
C
MESAS
14,20
BARRA
b
a
ADVANCE
MESAS
DEPART
LEAVE
CAJA
COLA
ENTER
ADVANCE
60,30
COLAMESA
15,7.5,7200
GENERATE
TEST
GE
AC1,7200,SALIR
TEST
LE
AC1,14400,SALIR
SALIR TERMINATE
TRANSFER
,VAN
GENERATE 30,15
TRANSFER .52,ESPUNO,ESPDOS
ESPUNO TEST L
Q$ESPA,5,AYUDB
NOAYB QUEUE
ESPA
SEIZE
ESPECIA
DEPART
ESPA
ADVANCE 20,10
RELEASE ESPECIA
TERMINATE 1
ESPDOS TEST L
Q$ESPB,5,AYUDA
NOAYA QUEUE
ESPB
SEIZE
ESPECIB
DEPART
ESPB
ADVANCE 20,10
RELEASE ESPECIB
TERMINATE 1
AYUDA TEST E
Q$ESPA,0,NOAYA
QUEUE
ESPA
SEIZE
ESPECIA
DEPART
ESPA
ADVANCE 30,5
RELEASE ESPECIA
TERMINATE 1
AYUDB TEST E
Q$ESPB,0,NOAYB
QUEUE
ESPB
SEIZE
ESPECIB
DEPART
ESPB
ADVANCE 30,5
RELEASE ESPECIB
TERMINATE 1
START
100
Modelo GPSS
Bloque : Gate
GATE
Ejemplo(s) :
GATE SNF NAVE,OTRO
La transaccin al ingresar en el GATE preguntara si es verdad que el storage
llamado NAVE no est totalmente lleno, si es verdad pasar al siguiente
bloque, si no se dirige al bloque etiquetado con OTRO.
GATE NU CAJAS
Aqu las transacciones se preguntan si el facility llamado CAJAS no est
siendo usado (sin usarse), si es verdad pasan al siguiente bloque y si es falso
se detienen hasta que este sin usarse.
GENERATE 30,15
TRANSFER .52,ESPUNO,ESPDOS
ESPUNO TEST L
Q$ESPA,5,AYUDB
NOAYB QUEUE
ESPA
SEIZE
ESPECIA
DEPART
ESPA
ADVANCE 20,10
RELEASE ESPECIA
TERMINATE 1
ESPDOS TEST L
Q$ESPB,5,AYUDA
NOAYA QUEUE
ESPB
SEIZE
ESPECIB
DEPART
ESPB
ADVANCE 20,10
RELEASE ESPECIB
TERMINATE 1
AYUDA GATE NU ESPECIA,NOAYA
QUEUE
ESPA
SEIZE
ESPECIA
DEPART
ESPA
ADVANCE 30,5
RELEASE ESPECIA
TERMINATE 1
AYUDB GATE NU ESPECB,NOAYB
QUEUE
ESPB
SEIZE
ESPECIB
DEPART
ESPB
ADVANCE 30,5
RELEASE ESPECIB
TERMINATE 1
START
100
Modelo GPSS
CONTRES
EXTRAS
NORMAL
EXTRA
DOSEX
DEXTRA
STORAGE 3
STORAGE 1
GENERATE 5,2 EN MINUTOS
QUEUE
FILA
TEST L
QT$FILA,15,OTRO
ENTER
CONTRES
ADVANCE 10,8
LEAVE
CONTRES
DEPART
FILA
TERMINATE OTRO
GATE UN UNOMAS,DOSEX
TRANSFER BOTH,NORMAL,EXTRA
SEIZE
UNOMAS
ADVANCE 10,8
RELEASE
UNOMAS
DEPART
FILA
TERMINATE
TRANSFER BOTH,NORMAL,DEXTRA
ENTER
EXTRAS
ADVANCE 10,8
LEAVE
EXTRAS
DEPART
FILA
TERMINATE
GENERATE 8*60
TERMINATE 1
START 1
Modelo GPSS
Function
Funcin Continua ( C )
Output FUNCTION
V$Input,C3
1.1,10.1/20.5,98.7/33.3,889.2
Xpdis
FUNCTION RN200,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38
.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2
.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
Funcin Discreta ( D )
DIista
FUNCTION
X$A2,D5
1.1,6.9/2.1,7/6.33,9.4/7,10/9.9,12.01
Ran1
FUNCTION
RN1,D5
0,0/.2,7.2/.4,6.667/.8,9.92/1.0,10
Funcin Lista ( L )
Lista
FUNCTION
Q$Barbero,L5
1,PAR1/2,PAR2/3,PAR3/4,PAR4/5,PAR5
Cantidad
1,10/2,15/3,25/4,50
FUNCTION
P$tipo,L4
Funcin Discreta de
atributo valuado ( E )
Edisc
FUNCTION
X$QRA,E5
1,S$Stor1/3,S$Stor2/5,S$Stor3/9,S$Stor5/10,S$Stor6
Funcin lista de
atributos valuados (M)
Mlist
FUNCTION
X$Name1,M5
1,Q$Nnam1/2,Q$NamX/3,Q$Nam4/4,Q$Nam6/5,F$Tan1
Ejemplo 6 :
HORNOS STORAGE 2
Unidad de recursos multiple de tamao 2
PINTORS STORAGE 2
Se declaran 2 pintores iguales
PINUNO
FUNCTION RN1,D4
TIEMPO DE PINTURA PARA EL PINTOR 1
.1,70/.5,50/.8,60/1.0,65
PINTOS
FUNCTION RN2,BN
TIEMPO DE PINTURA PARA LOS PINTORES 2 Y 3
EXPON
FUNCTION RN3, BE
FUNCION EXPONENCIAL
GENERATE FN$EXPON*30,,540,150
GENERACION DE LLEGADAS POISS. AUTOS (MIN)
* * EMPIEZAN LAS LLEGADAS A LAS 9 HRS Y ES UN TOTAL DE 150 AUTOS. ****
QUEUE
FILAAP
SE FORMA UN AUTO PARA PINTURA
TRANSFER BOTH,DIRPINU,DIRPIND
SE LOCALIZA EL PINTOR DESOCUPADO
DIRPINU SEIZE
PINTORU
SE OCUPA AL PINTOR UNO
DEPART
FILAAP
ADVANCE FN$PINUNO
TIEMPO DE PINTADO
RELEASE PINTORU
TERMINA DE PINTAR Y SE DESOCUPA
QUEUE
FILAHOR
FORMA EL AUTO PARA ENTRAR AL HORNO
ENTER
HORNOS
SE SOLICITA ACCESO AL HORNO
DEPART
FILAHOR
ADVANCE 30,5 SE HORNEA
LEAVE
HORNOS
SE LIBERA EL HORNO
QUEUE
FILAINS
SE FORMA PARA INSPECCION
SEIZE
INSPECC
PASA AL PUESTO DE INSPECCION
DEPART
FILAINS
LIBERA LA FILA DE INSP.
ADVANCE 7,2
LO INSPECCIONAN
RELEASE INSPECC
LIBERA EL PUESTO DE INSP.
TRANSFER .01,,REPIN
SE MANDA A REPINTADO
QUEUE
FILAFIN
FILA DE AUTOS TERMINADOS
TERMINATE
SE TERMINA UN AUTO
Modelo GPSS
DIRPIND
REPIN
ENTER
PINTORS
DEPART
FILAAP
ADVANCE FN$PINTOS*10+60
LEAVE
PINTORS
QUEUE
FILAHOR
ENTER
HORNOS
DEPART
FILAHOR
ADVANCE 30,5
LEAVE
HORNOS
QUEUE
FILAINS
SEIZE
INSPECC
DEPART
FILAINS
ADVANCE 7,2
RELEASE INSPECC
TRANSFER .01,,REPIN
QUEUE
FILAFIN
TERMINATE
PRIORITY 1
QUEUE
FILAAP
TRANSFER BOTH,DIRPINU,DIRPIND
TERMINATE 0
GENERATE 1080
TERMINATE 1
START 1
SPLIT
Bloque : Split
La instruccin SPLIT permite simular que una
pieza o un paquete se desensambla en varios
que lo componen. Su sintaxis es:
SPLIT A,B,C,D,E,F,G,H
Donde A es el nmero de transacciones creadas
en la cascada (cuantas transacciones saldrn
despus de que alguna ingrese en el bloque
SPLIT. En B se coloca la direccin del bloque al
cual se dirige la cascada creada.
Nota : Para los operandos subsecuentes vase el manual de referencia
correspondiente a la versin que posea ya que estn fuera del nivel de este
curso.
Bloque: Assemble
ASSEMBLE
Bloque: Assign
ASSIGN
Bloque : Savevalue
SAVEVALUE
Ejemplo de EQU
Precio EQU
19.5
Ejemplos de INITIAL
INITIAL X$InvInicial,25
Esta sentencia asigna el valor inicial de 25 a la variable
global InvInicial del tipo Savevalue.
INITIAL Resultados
Esta sentencia prepara una entidad Matrix previamente
definida y denominada Resultados para usar en una
simulacin a partir de una matriz sin datos.
Bloque TABULATE
TABULATE
Ej:
TABULATE
Ventas
Ejemplo de TABLE
Ventas Table
X$ventas,10,10,5
ventas
10
20
30
40
50
SALIR
LOC
1
2
3
4
5
6
7
8
9
10
11
BLOCK TYPE
GENERATE
ASSIGN
TEST
QUEUE
SEIZE
DEPART
ADVANCE
RELEASE
TABULATE
TERMINATE
TERMINATE
FACILITY
1
2
3
4
5
ENTRIES
28
13
27
26
9
QUEUE
1
2
3
4
5
TABLE
COLA4
MEAN
3.170
STD.DEV.
2.094
RANGE
2.000
4.000
6.000
8.000
- _
2.000
4.000
6.000
8.000
RETRY
0
AVE.(-0) RETRY
3.076 0
7.837 0
28.705 0
108.253 0
17.077 0
FREQUENCY
32
51
10
5
2
CUM.%
32.00
83.00
93.00
98.00
100.00
Ejemplo de Matriz
Produccion
Matrix ,3,2
Maq2: 2
ProdA: 1
ProdB: 2
ProdC: 3
MSAVEVALUE
Bloque MSAVEVALUE
Ejemplo de MSAVEVALUE
Msavevalue Ventas+,parte_7,cliente_4,6.25
Cuando una transaccin ingresa a este bloque el
elemento de la matriz denominada Ventas,
ubicado en la fila parte_7 y columna cliente_4 es
incrementada en 6.25.
Bloque LOGIC
LOGIC
Bloque MARK
MARK
Ej. Mark P2
Cuando una transaccin ingresa a este bloque en el parmetro
denominado 2 de la transaccin se estampa el tiempo de reloj del
sistema AC1.
Ej. Mark
Cuando una transaccin ingresa a este bloque se le estampa el tiempo
de reloj absoluto del sistema AC1.
y todo lo dems