You are on page 1of 99

Lenguaje de Simulacin GPSS

http://www.minutemansoftware.com
Ing. Luis Zuloaga Rotta


Facultad de Ingeniera Industrial y de Sistemas
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.

Estructura de un modelo con el Lenguaje GPSS
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
Sentencias de Control
1. Storage
2. Function
3. Initial
4. Variable
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
Sentencia GPSS
Estructura de una sentencia de declaracin GPSS/PC :
Nro. Etiqueta Verbo Operandos ;Comentario

Nro. Puede ser entero o decimal. Se utilizan solo para las sentencias
del programa salvable. Mximo 7 caracteres incluido pto.
Si ingresa una sentencia sin numerar esta solo es temporal.
Generalmente se ingresan antes de inicializar la simulacin.
Etiqueta Nmero o nombre para la localizacin de un bloque.
Si se coloca un asterisco, la sentencia es de comentario.
Verbo Nombre identificador para el control o el bloque
Operandos Dependen del verbo identificador utilizado
Comentario Para explicar brevemente el significado de la sentencia
Bloque : Generate
La instruccin de bloque que permite generar las transacciones e
ingresarlas en el modelo se llama GENERATE. Su sintaxis es:
GENERATE A,B,C,D,E,F
A es la tasa promedio a la cual se crean las transacciones en unidades de
tiempo simulado. Su valor por omisin es cero.
B es la dispersin en el tiempo de creacin promedio de las transacciones, es
decir, el tiempo de inter arrivo de las transacciones al modelo ser de A + - B
unidades de tiempo. Su valor por omisin es cero.
C es un operando donde se coloca el tiempo simulado al que llega la primera
transaccin al modelo. El valor por omisin no est determinado.
D es el nmero lmite de transacciones creadas y su valor por omisin es
infinito.
E es un operando donde se coloca la prioridad asignada a cada transaccin
creada por el GENERATE. En GPSS/PC las prioridades posibles son de 0 a
127. La prioridad mayor tiene preferencia sobre las de prioridad inferior.
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 se emplea para destruir las transacciones que ingresen
a ella, se puede emplear para simular que un elemento sale del
sistema y ahorrar memoria. Ayuda a que se cumplan las condiciones
de terminacin de un programa ya que puede afectar al contador del
START. Su sintaxis es:
TERMINATE A

Donde A es un operando donde se coloca el nmero (entero) con el
que se disminuir el contador de termino de la simulacin, cuyo
nmero inicial se da en la instruccin de control START. Cuando el
contador alcanza un valor menor o igual a cero se ejecuta la siguiente
instruccin debajo del START, si es un END, la simulacin termina.
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
Sirve para registrar el empleo de una unidad de servicio por parte
de una transaccin que entra, de tal forma que la unidad queda
ocupada hasta que la transaccin ingresa a una instruccin
RELEASE. Una sola transaccin podra ocupar varias unidades de
servicio simultneamente. Su sintaxis es:
SEIZE A
Donde el operando A se emplea para dar la identificacin a la
unidad que se ocupa (nmero o nombre).

Ejemplo :
SEIZE HORNO
Registra la ocupacin de una unidad de servicio llamada HORNO.
SEIZE
Bloque : Release
Sirve para desocupar la unidad de servicio ocupada
previamente por la transaccin al haber ingresado a un
bloque Seize. No se reciben negativas para entrar a este
bloque. Su sintaxis es :
RELEASE A
El operando A indica la identificacin de la unidad que se
libera.

Ejemplo :
RELEASE HORNO
Indica que la transaccin libera a la unidad de servicio
HORNO que ocup con anterioridad.
RELEASE
Bloque : Advance
Suspende el movimiento de una transaccin por una cantidad
especifica de tiempo simulado. Puede emplearse para simular el
tiempo que una persona tarda en ocupar un equipo, en una sala de
espera, etc. Su sintaxis es:
ADVANCE A,B
Donde el operando A corresponde al tiempo de retardo para la
transaccin y B es el intervalo de dispersin alrededor de A.
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 .
ADVANCE
Bloque: Queue
La instruccin de bloque QUEUE se emplea para obtener
estadsticas de las transacciones que pasan por una fila o cola. Su
sintaxis es:
QUEUE A,B
Donde el operando A se emplea para colocar el nombre de la fila a
la que se le asignarn las estadsticas. Y B es el nmero de
unidades que se deben sumar a la fila cuando una transaccin
pasa por la instruccin. El valor por omisin es de uno.
Ejemplo(s):
QUEUE FILAA
Declara una fila de nombre FILAA y le suma una unidad a la fila cuando
una transaccin pasa por ella.
QUEUE FILAB,3
Declara una fila de nombre FILAB y le suma 3 unidades cada vez que una
transaccin pasa por ella.
QUEUE
Bloque : Depart
Reduce el contenido de una fila declarada con QUEUE, en una o
ms unidades. DEPART es el complemento de QUEUE ya que
sirve para simular que un elemento de la fila se desforma y se va.
Su sintaxis es:
DEPART A,B
Donde A es el operando donde se aporta el nombre de la fila a la
que se le removern B unidades, el valor por omisin de B es uno.
Ejemplo(s):
DEPART FILAA
Descuenta una unidad de la fila FILAA que se debe definir antes.
DEPART FILAB 3
La fila FILAB se reduce en 3 unidades cada vez que una transaccin pasa
por esta instruccin.
DEPART
Simulacin de Sistemas
Tiempo
entre
Arribos (t)
Cola
Servicio
Poblacin
SISTEMA DE COLAS
Arribos
Tiempo de
Servicio
Politica de
servicio
GENERATE
TERMINATE
QUEUE
SEIZE
ADVANCE
RELEASE
DEPART
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).

Programa GPSS del
Ejemplo 1

GENERATE 600,300 GENERA USUARIOS DE
TELEF. U/C 600300 SEG
QUEUE COLA COLA POR LLAMADAS
SEIZE TELEFON SOLICITAN ACCESO AL
TELEFONO.
DEPART COLA SALIDA DE COLA
ADVANCE 300,120 TPO. OCUPACION DEL
TELEF: 300 120 SEG
RELEASE TELEFON LIBERAN EL TELEFONO
DESPUES DE LLAMAR.
TERMINATE 1 SE CUENTA UNA
LLAMADA.
START 50 SE SIMULAN 50
LLAMADAS

ADVANCE
SEIZE
RELEASE
10,5
TELEFONO
5,2
TELEFONO
1
GENERATE
TERMINATE
QUEUE
DEPART
COLA
COLA
Bloque : Enter
Esta instruccin se emplea para ocupar unidades de equipo que
tienen capacidad mltiple. Por ejemplo un cubculo de cajeros
automticos, un conjunto de sillas en un saln, etc. Su sintaxis es:
ENTER A,B
Donde A es el nombre del equipo de capacidad mltiple y B es el
nmero de unidades que solicita una transaccin, en caso de
omitirlo se solicitar una unidad de equipo. La capacidad mxima
del conjunto se puede fijar con la instruccin de control llamada
STORAGE, si no se fija as la capacidad mxima se supone infinita.
Ejemplo :
ENTER SILLAS, 2
Aqu la transaccin que ingresa solicita 2 unidades del conjunto llamado
SILLAS, entidad que puede dimensionarse con una sentencia de control
STORAGE.
ENTER
Bloque : Leave
LEAVE se utiliza para que las transacciones liberen unidades de
equipo ocupadas con ENTER. Su sintaxis es:
LEAVE A, B
Donde A es el operando que se emplea para invocar el nombre del
equipo (storage) del cual se liberan B unidades. Si el operando B
se omite, su valor ser de uno. Se debe tener precaucin de no
liberar ms unidades de las que se tengan ocupadas.
Ejemplo(s):
LEAVE MESAS
Se pide que se libere una unidad del equipo de capacidad mltiple llamado
MESAS.
LEAVE MESAS,3
Cada transaccin que ingresa solicita que la unidad de equipo mltiple (o
storage) MESAS libere 3 de sus unidades.
LEAVE
Sentencia Control: Storage
Se emplea para determinar cuntas unidades estarn
disponibles de un equipo de capacidad mltiple (storage). Su
sintaxis es:
etiqueta STORAGE A
Donde "etiqueta" llevar el nombre del equipo que se desea
dimensionar y A es el nmero de unidades (o capacidad) que
tendr el equipo.
Ejemplo:
CAJA STORAGE 10
Se determina que el storage CAJAS tendr capacidad de 10
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.
1
2
3
Carril 1
Carril 2
GENERATE GENERATE
ENTER
TERMINATE
ADVANCE
QUEUE
DEPART
LEAVE
Simulacin de Sistemas
1 1 1 2 3
Carril 1 Carril 2
GENERATE
GENERATE
QUEUE
ENTER
DEPART
ADVANCE
LEAVE
TERMINATE
Tiempo Inter Arribo
en cada carril 20 10 sg
Tiempo Servicio
en cada caseta 10 5 sg
Construccin del modelo GPSS
El primer paso es crear el modelo conceptual, descomponiendo el sistema
de acuerdo a los elementos que es posible simular. Por ejemplo: las
cabinas de cobro se pueden visualizar como unidades de equipo mltiple,
ya que son similares en caractersticas. Los autos se pueden representar
por transacciones y el nmero de autos en espera de servicio se puede
cuantificar como una fila frente al servidor.
De esta manera se puede inferir que se har uso de las siguientes
instrucciones: (bsicamente)
GENERATE para crear las transacciones que representarn los autos que
llegan por la autopista, QUEUE para tomar datos de los autos que estn en
espera del servicio, ENTER para simular un conjunto de cabinas de cobro
de caractersticas semejantes ADVANCE para representar los tiempos de
atencin, TERMINATE para sacar autos del modelo una vez que pasan la
caseta, DEPART para descontar de la fila a los autos atendidos, LEAVE
para desocupar las cabinas de cobro, y START para dar una condicin de
terminacin.
Programa GPSS para el Ejemplo 2
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.
GENERATE
QUEUE
DEPART
ENTER
ADVANCE
LEAVE
GENERATE
QUEUE
DEPART
ENTER
ADVANCE
LEAVE
GENERATE
20,10
FILA
CABINAS
FILA
20,10
FILA
CABINAS
FILA
10,5
10,5
CABINAS
CABINAS
8*3600
1
TERMINATE TERMINATE
TERMINATE
Representa a un reloj
de control de fin de la
simulacin para
periodos de 8 horas.
Carril 1 de la via Carril 2 de la via
Bloque : Transfer
La instruccin TRANSFER sirve para bifurcar el trayecto
de un grupo de transacciones, que ingresen a esta
instruccin de bloque. En los modelos de simulacin a
menudo se necesita simular que los elementos que
recorren el modelo toman decisiones y siguen rutas y
estrategias diferentes, para ello se puede usar el bloque
TRANSFER . Su sintaxis es:
TRANSFER A,B,C,D
Donde A es el modo de operacin, B es el nombre (o
etiqueta) de la direccin de la primera opcin, C es el
nombre (o etiqueta) de la segunda opcin y D es un factor
de indexacin.
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
En este ejemplo la transaccin que llega al bloque se
transfiere incondicionalmente al bloque etiquetado
como PROXIMO.
Forma Estadstica o fraccional
Se tienen 2 maneras diferentes de hacer una transferencia
estadstica de transacciones, a saber:
Manera 1. se elige en el campo A una probabilidad de pasar
al bloque etiquetado como se menciona en el campo C.
Ejemplo 1:
TRANSFER .33,DIRUNO,DIRDOS
Esta instruccin enva el 33 % de las transacciones que ingresen al bloque
etiquetado con DIRDOS y el 67 % restante al etiquetado con DIRUNO.
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.
Forma estadstica ...
Manera 2. Seleccionando en A el modo PIC, se tiene la
opcin de transferir de manera aleatoria uniforme la
transaccin que ingrese a cualquier bloque delimitado
entre las etiquetas que se aporten en los campos B y C.
Ejemplo:
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.
Manera 2. Si en el campo A se especifica la opcin ALL
Ejemplo:
TRANSFER ALL,UUNO,DDOS,2
Esta es una generalizacin del modo BOTH, ya que la transaccin
intentar bifurcarse a la etiqueta UUNO, pero si no logra el acceso
intentar acceder dos bloques abajo (UUNO + 2) y de no lograr acceso
seguir intentando accesar en saltos de D bloques (en este caso 2)
hasta que encuentre el lmite marcado con DDOS. Se debe cuidar que
UUNO+nD = DDOS para alguna n.
Ejemplo : Mquinas automticas
Se tiene una sala con dos mquinas automticas,
una que vende galletas y otra que vende refrescos.
Los posibles clientes llegan cada 2 1min. a la sala.
El 20 % no compra nada y se sale, el 60 % compra
una bebida, el 10% compra una bebida y una galleta.
El resto slo compra galletas.
Los tiempos de atencin son de 1.5 0.5 min en
cualquiera de las mquinas. Obtenga el tiempo
promedio de los clientes en la sala (excluyendo los
que no compran). Simule 4 horas de operacin.
Galletas
Refrescos
60%
80%
10%
75%
10%
25%
GENERATE
TERMINATE
QUEUE
DEPART
TERMINATE
SEIZE
ADVANCE
RELEASE
SEIZE
DEPART
ADVANCE
RELEASE
TRANSFER
TRANSFER
20%
TRANSFER
Modelo GPSS

GENERATE 120,60 TIEMPO ENTRE LLEGADAS EN SEGUNDOS.
TRANSFER .20,,FINAL PORCENTAJE QUE NO COMPRA
QUEUE FILA FILA DE LOS QUE COMPRAN
TRANSFER .25,,GALLET PORCENTAJE QUE ADQUIEREN GALLETAS
SEIZE MBEBIDAS SOLICITAN ACCESO A LAS BEBIDAS 75%
DEPART FILA SALEN DE LA FILA DE CLIENTES
ADVANCE 90,30 TIEMPO DE SERVICIO
RELEASE MBEBIDAS LIBERAN LA MAQUINA
TERMINATE
GALLET TRANSFER .40,,SOLOGALL PORCENTAJE QUE COMPRAN SOLO GALLETAS (10% DE 25%)
SEIZE MBEBIDAS SOLICITAN ACCESO A LAS BEBIDAS
ADVANCE 90,30 TIEMPO DE SERVICIO
RELEASE MBEBIDA LIBERAN LA MAQUINA SOLOBO
SOLOGALL SEIZE MGALLETAS SOLICITAN ACCESO A LAS BOTANAS
ADVANCE 90,30 TIEMPO DE SERVICIO
RELEASE MGALLETAS LIBERAN LA MAQUINA DE BOTANAS
DEPART FILA SALEN DE LA FILA DE CLIENTES FINAL
FINAL TERMINATE
GENERATE 4*3600 TIEMPO DE SIMULACION
TERMINATE 1
START 1
Bloque: Test
Esta instruccin de bloque controla el flujo de transacciones a travs
de relaciones lgicas entre los atributos numricos estndar (SNA)
del GPSS, que son variables internas de las cuales se sirve para
realizar la simulacin. La instruccin Test opera de dos modos:
a) Cuando las transacciones se detienen hasta que la relacin lgica se cumple,
(BLOQUEO) y
b) Cuando las transacciones se dirigen a un bloque alterno cuando la relacin
lgica no se cumple.
La sintaxis de TEST es:
TEST "X" A,B,C
Donde "X" es un operador relacional que puede ser:
L (menor que)/LE (menor o igual)/E (igual)/NE (diferente)/G (mayor que)/GE (mayor
o igual).
TEST
Bloque : Test ...
El operando A es el primer SNA comparado, B es el segundo SNA
comparado y C es la etiqueta del bloque alterno si la relacin lgica
es falsa. A y B tambin pueden tomar valores constantes. Si se omite
la etiqueta en el campo C, entonces TEST opera del primer modo,
deteniendo las transacciones mientras la relacin no sea verdadera.
Funcionando como una compuerta.
En caso de que se aporte la etiqueta las transacciones seguirn por
el bloque etiquetado cuando la relacin sea falsa.
Ejemplo(S) :
TEST LE Q$LINEA,7,SALIDA
En este caso la instruccin enva las transacciones a la etiqueta SALIDA en
caso de que la longitud de la fila LINEA sea mayor que 7. Si es menor o igual
las transacciones pasan al siguiente bloque.
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.
SNAs
SNA DEFINICION
Nj Nmero total de transacciones que entran en el bloque j
WJ Nmero de transacciones esperando en el bloque j
Qj Contenido actual de la fila j (alternativamente podemos utilizar Q$nombre_cola)
QAj Contenido promedio de la fila j
QMj Contenido mximo de la fila j
QCj Nmero total de entradas en la fila j
QZj Nmero total de transacciones que no hicieron la fila j
QTj Tpo prom. de las transacciones en la fila j
QXj Tpo prom. de las transacciones en la fila j excluyendo las que no hicieron fila.
Sj Contenido actual del storage j (alternativamente podemos utilizar S$nombre_almacen)
Rj Nmero de unidades restantes en el storage j
SRj Porcentaje actual de empleo del storage j
SAj Contenido promedio del storage j
SMj Contenido mximo del storage j
SCj Nmero total de entradas en el storage j
STj Tpo promedio en el storage j
C1 Tpo del reloj relativo controlado desde el ltimo bloque Mark
AC1 Tpo de reloj absoluto (desde el inicio de la simulacin)
RNj Generador de nros. aleatorios uniforme j
Xj... Es la transaccin j etc,
Parqueo de Taxis
DESVIO
1 2 3 4
155
208
42
DESVIO
1 2 3 4
155
208
42
GENERATE
TRANSFER
ENTER
ADVANCE
LEAVE
TERMINATE
ADVANCE
TRANSFER
Diagrama de Bloques
GENERATE
TRANSFER
ENTER
ADVANCE
LEAVE
TERMINATE
ADVANCE
TRANSFER
15,5
Both,ingreso,desvio
ingreso
Parqueos
desvio 4,2
,intento
intento
20,8
Parqueos
1
Parqueos Storage 4
Start 50 inicializa un contador de finalizacion de
la simulacion el cual es disminuido por cada transaccion
que pase por el bloque Terminate
Resultados de la Simulacin
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).
Caja
B
a
r
r
a

Servicio
comida
Entrada
A
r
e
a

d
e

M
e
s
a
s

Caja
B
a
r
r
a

Servicio
comida
Entrada
A
r
e
a

d
e

M
e
s
a
s

GENERATE
QUEUE
ENTER
DEPART
ADVANCE
LEAVE
SEIZE
ADVANCE
RELEASE
ENTER
ADVANCE
LEAVE
TERMINATE
GENERATE
QUEUE
DEPART
ENTER
ADVANCE
LEAVE
DEPART
ENTER
ADVANCE
LEAVE
60,30
COLA
BARRA
COLA
COLAMESA
CAJA
14,20
90,50
BARRA
MESAS
SEIZE
RELEASE
CAJA
QUEUE
COLAMESA
ADVANCE
18,5
MESAS
TERMINATE
a
a
b
b
TEST
L AC1,7200,OTRO
TERMINATE
TEST
TRANSFER
G AC1,14400,FIN
C
C
,VAN
VAN
FIN
OTRO
TEST
GE
TRANSFER
GENERATE
15,7.5,7200
AC1,7200,SALIR
TEST
LE AC1,14400,SALIR
TERMINATE
C
,VAN
SALIR
Ejemplo 4: Dpto. Quejas
Se simula la operacin de un Departamento
que recibe y resuelve Quejas de clientes. El
Dpto. tiene 2 especialistas que resuelven
situaciones diferentes cada uno de ellos,
pero en caso de que se acumulen 5 o mas
casos en espera de la atencin de uno de
ellos, la siguiente queja se pasar al otro
especialista para atender a los clientes de
manera rpida. El tiempo inter arribo de
quejas es de una cada 3015 min. El 48%
son para el especialista A y el resto para el
B. El tiempo de atencin de la queja es
uniforme entre 10 y 30 min por queja, y en
caso de ayuda su tiempo es de 30 5 min.
La ayuda se da mientras algn especialista
no tenga fila de espera. Simule la atencin
de 100 quejas.
Modelo GPSS
GENERATE 30,15 SE GENERAN LAS QUEJAS (MIN)
TRANSFER .52,ESPUNO,ESPDOS SE DISTRIBUYEN LOS CASOS 48% PARA UN ESP.
ESPUNO TEST L Q$ESPA,5,AYUDB SI LA FILA ES DE 5 LA SIG. SE TURNA AL OTR. ESP.
NOAYB QUEUE ESPA SE FORMAN PARA VER EL ESP. A.
SEIZE ESPECIA SOLICITAN ATENCION DEL ESP. A
DEPART ESPA SALEN DE LA FILA
ADVANCE 20,10 LOS ATIENDE EN 20 10 MIN.
RELEASE ESPECIA SE DESOCUPA EL ESPECIALISTA A
TERMINATE 1
ESPDOS TEST L Q$ESPB,5,AYUDA SI LA FILA ES DE 5 LA SIG. SE TURNA AL OTR. ESP.
NOAYA QUEUE ESPB SE FORMAN PARA VER AL ESP. B
SEIZE ESPECIB SOLICITAN ATENCION DEL ESP. B
DEPART ESPB SALEN DE LA FILA
ADVANCE 20,10 LOS ATIENDE EN 20 10 MIN.
RELEASE ESPECIB SE DESOCUPA EL ESPECIALISTA B
TERMINATE 1
AYUDA TEST E Q$ESPA,0,NOAYA SI EL ESP. NO TIENE QUEJAS ESPERANDO
QUEUE ESPA SE FORMAN EN SU FILA
SEIZE ESPECIA SOLICITAN SU ATENCION
DEPART ESPA SE DESFORMAN
ADVANCE 30,5 TIEMPO POR QUEJA (AYUDA)
RELEASE ESPECIA SE DESOCUPA EL ESPECIALISTA A
TERMINATE 1
AYUDB TEST E Q$ESPB,0,NOAYB SI EL ESP. NO TIENE QUEJAS ESPERANDO
QUEUE ESPB PASAN POR SU FILA
SEIZE ESPECIB SOLICITAN SU ATENCION
DEPART ESPB SALEN DE SU FILA
ADVANCE 30,5 TIEMPO DE ATENCION POR QUEJA (AYUDA)
RELEASE ESPECIB SE DESOCUPA EL ESPECIALISTA B
TERMINATE 1
START 100 SE SIMULAN 100 QUEJAS ATENDIDAS.
Bloque : Gate
Esta es una instruccin semejante a TEST pero utiliza relaciones lgicas
asociadas con entidades particulares. Tambin acta de los dos modos en
que opera TEST. Su sintaxis es:
GATE "X" A,B
Donde "X" puede ser:
NU (recurso especificado en A no esta en uso)
U (recurso especificado en A esta en uso)
SF (storage especificado en A esta lleno)
SNF (storage especificado en A esta no lleno)
SNE (storage especificado en A esta no vacio)
SE (storage especificado en A esta vacio).
El operando A se emplea para colocar el nombre de la entidad que se
inspecciona y en el B se coloca la etiqueta del bloque alterno en caso de no
cumplirse la relacin.
Si se omite la etiqueta en B, la instruccin detendr las transacciones hasta
que la relacin sea verdadera, en cuyo caso pasarn al siguiente bloque.
GATE
Bloque : 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.

Modelo GPSS
GENERATE 30,15 SE GENERAN LAS QUEJAS (MIN)
TRANSFER .52,ESPUNO,ESPDOS SE DISTRIBUYEN LOS CASOS 48% PARA UN ESP.
ESPUNO TEST L Q$ESPA,5,AYUDB SI LA FILA ES DE 5 LA SIG. SE TURNA AL OTR. ESP.
NOAYB QUEUE ESPA SE FORMAN PARA VER EL ESP. A.
SEIZE ESPECIA SOLICITAN ATENCION DEL ESP. A
DEPART ESPA SALEN DE LA FILA
ADVANCE 20,10 LOS ATIENDE EN 20 10 MIN.
RELEASE ESPECIA SE DESOCUPA EL ESPECIALISTA A
TERMINATE 1
ESPDOS TEST L Q$ESPB,5,AYUDA SI LA FILA ES DE 5 LA SIG. SE TURNA AL OTR. ESP.
NOAYA QUEUE ESPB SE FORMAN PARA VER AL ESP. B
SEIZE ESPECIB SOLICITAN ATENCION DEL ESP. B
DEPART ESPB SALEN DE LA FILA
ADVANCE 20,10 LOS ATIENDE EN 20 10 MIN.
RELEASE ESPECIB SE DESOCUPA EL ESPECIALISTA B
TERMINATE 1
AYUDA GATE NU ESPECIA,NOAYA SI EL ESP. NO TIENE QUEJAS ESPERANDO
QUEUE ESPA SE FORMAN EN SU FILA
SEIZE ESPECIA SOLICITAN SU ATENCION
DEPART ESPA SE DESFORMAN
ADVANCE 30,5 TIEMPO POR QUEJA (AYUDA)
RELEASE ESPECIA SE DESOCUPA EL ESPECIALISTA A
TERMINATE 1
AYUDB GATE NU ESPECB,NOAYB SI EL ESP. NO TIENE QUEJAS ESPERANDO
QUEUE ESPB PASAN POR SU FILA
SEIZE ESPECIB SOLICITAN SU ATENCION
DEPART ESPB SALEN DE SU FILA
ADVANCE 30,5 TIEMPO DE ATENCION POR QUEJA (AYUDA)
RELEASE ESPECIB SE DESOCUPA EL ESPECIALISTA B
TERMINATE 1
START 100 SE SIMULAN 100 QUEJAS ATENDIDAS.
Ejemplo 5 : Personal Variable
Elabore un programa de simulacin que simule la
operacin de una oficina, donde el nmero de personas
que laboran es variable, y depende del tiempo promedio
que tardan en atender una peticin. Las peticiones llegan
cada 5 2 min. , el nmero inicial de empleados es de 3 y
pueden aumentar hasta 5.
Cada empleado atiende una peticin en 10 8 min. pero,
si el tiempo promedio de espera en el sistema es de 15
min o superior entonces se aumenta un empleado ms.
Simule 8 horas de operacin.
Modelo GPSS
CONTRES STORAGE 3
EXTRAS STORAGE 1
GENERATE 5,2 EN MINUTOS
QUEUE FILA
TEST L QT$FILA,15,OTRO
NORMAL ENTER CONTRES
ADVANCE 10,8
LEAVE CONTRES
DEPART FILA
TERMINATE OTRO
GATE UN UNOMAS,DOSEX
TRANSFER BOTH,NORMAL,EXTRA
EXTRA SEIZE UNOMAS
ADVANCE 10,8
RELEASE UNOMAS
DEPART FILA
TERMINATE
DOSEX TRANSFER BOTH,NORMAL,DEXTRA
DEXTRA ENTER EXTRAS
ADVANCE 10,8
LEAVE EXTRAS
DEPART FILA
TERMINATE
GENERATE 8*60
TERMINATE 1
START 1
Sentencia de Control: FUNCTION
Para crear variables que tengan distribuciones y valores que varien
de una manera funcional ya sea aleatoria o deterministica en GPSS
se cuenta con la opcin FUNCTION que se puede utilizar de maneras
diversas.
Las funciones, ya sean continuas o discretas, asocian valores de una
variable (independiente) con resultados especficos de los valores
que pueden tomar las variables dependientes. La sintaxis es:
Etiqueta FUNCTION A,B,C
X1,Y1/X2,Y2/X3,Y3/.../Xn,Yn
Donde :
A se emplea para declarar la variable que se usar como independiente
B se emplea para definir el tipo de funcin que se desea
C es el nmero de pares coordenados X,Y que se usan para determinar
la forma funcional. Los pares X,Y son coordenadas que determinan la
forma funcional que se desea.
Sentencia de Control: FUNCTION ...
Algunas funciones aparecen de manera tan frecuente que
su forma funcional ya esta predefinida en GPSS con el fin
de evitar un trabajo innecesario.
Por ejemplo:
TIEMPO Function RN5,C,8
0,0/0.35,1/0.45,2/0.55,3/0.65,4/0.80.5/0.90,6/1.0,8

ADVANCE FN$TIEMPO
En esta instruccin de bloque se pide que la transaccin
suspenda su recorrido por el modelo, durante un lapso
especificado en la funcin tiempo.
0.35
1.0
0
0.45 0.55 0.65 0.80 0.90
1.0
2.0
3.0
4.0
5.0
6.0
8.0
v
059
x
X-3.0
4.0 -3.0
0.59-0.55
0.65-0.55
=
TIEMPO
RN5
Function
Los tipos de funcin de que se dispone son :
C (para denotar una funcin de tipo continuo)
D (para denotar funciones de tipo discreto)
L (para denotar el tipo lista)
E (para el tipo discreto por atributos)
M (tipo lista por atributos)
S (tipo selector de entidad).

La ETIQUETA se emplea para darle un nombre a la funcin que se declara,
con el fin de llamarla as cuando se utilice en el programa GPSS. Para llamar
a la funcin desde alguna parte del programa se necesita llamar al SNA
correspondiente, por ejemplo: Si se declar la funcin TIEMPO, cuando se
desea usar el valor actual de la funcin, dependiendo del valor actual de la
variable independiente, es necesario invocar al SNA FN$TIEMPO el cual
tendr el valor deseado.
El valor de la funcin se podr utilizar en muchos de los operandos de las
instrucciones de bloque donde tenga sentido un valor como el que aporta la
funcin (o funciones) que defina.
Funcin Continua ( C )
(GPSS realiza internamente una interpolacin)
Input Variable 5#x$costo/24.8
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
1
lnx
0
tpo =
-1

ln(1- #R)
tpo entre arribos ~ exp(1/)
FN$Xpdis = -ln(1- #R)
Funcin Discreta ( D )
(GPSS no realiza internamente una interpolacin)
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 FUNCTION P$tipo,L4
1,10/2,15/3,25/4,50



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$Nam1/2,Q$Nam2/3,Q$Nam4/4,Q$Nam6/5,Q$Nam7
Funcin Exponencial
EXPONENTIAL (Entrada, Lambda, Beta)
Entrada: El nmero de registro del generador de nmeros aleatorios.
Requerido. Debe ser mayor o igual a 1.
Lambda: El valor de compresin utilizado para expandir o contraer la
distribucin.
Beta: El valor de cambio utilizado para la posicin de la distribucin.
Teniendo en cuenta adems que:
Ejemplo de Funcin Exponencial
Ejemplo: la tasa de fallos de un componente se
produce con una distribucin exponencial con
media de 6 minutos, y una desviacin estndar
de 2 minutos. Luego los valores son = 2 y =4
(6=2+ ). Y la funcin queda definida de la
siguiente manera:
EXPONENTIAL (1, 4, 2)

Funcin Uniforme
UNIFORM (ENTRADA, A, B)
Entrada: El nmero de registro del generador de nmeros
aleatorios. Requerido. Debe ser mayor o igual a 1.
A: El valor ms pequeo que cabe extraer de la distribucin.
Debe ser inferior al mximo.
B: El valor ms grande que se desprende de la distribucin.
Deber ser superior al min.
Teniendo en cuenta adems que:
Ejemplo de Funcin Uniforme
Ejemplo: a un sistema arriban clientes con una
distribucin uniforme de medio 20 min y
desviacin estndar de 10 min. Luego los
valores son A=10 y B=30.
UNIFORM (1, 10, 30)

Funcin Normal
NORMAL (Entrada, Media, Desv_Estandar)
Entrada: El nmero de registro del generador de nmeros
aleatorios. Requerido. Debe ser mayor o igual a 1.
Media: el valor medio de la distribucin. Requerido.
Desv_Estandar: la desviacin estndar de la distribucin.
Estrictamente positiva. Requerido.
Media = Desviacin Estndar =
Funcin Poisson
POISSON (Entrada, Media)
Entrada: El nmero de registro del generador de nmeros
aleatorios. Requerido. Debe ser mayor o igual a 1.
Lambda: el valor medio de eventos a ocurrir.
Teniendo en cuenta adems que:
Ejemplo 6 :
Modelo GPSS
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 ENTER PINTORS SE OCUPA UNO DE LOS DOS PINTORES SEMEJANTES
DEPART FILAAP SE LIBERA UN LUGAR DE LA FILA POR PINTAR
ADVANCE FN$PINTOS*10+60 TIEMPO DE PINTURA
LEAVE PINTORS SE LIBERA UN PINTOR
QUEUE FILAHOR SE FORMA UN AUTO EN LA FILA PARA HORNEADO
ENTER HORNOS SOL. ACC AL HORNO
DEPART FILAHOR SE REDUCEN LOS AUTOS POR PINTAR
ADVANCE 30,5 SE HORNEA EL AUTO
LEAVE HORNOS LIBERA EL HORNO
QUEUE FILAINS PASA A INSPECCION
SEIZE INSPECC
DEPART FILAINS
ADVANCE 7,2
RELEASE INSPECC
TRANSFER .01,,REPIN
QUEUE FILAFIN
TERMINATE SE TERMINA UN AUTO DESPINTADO
REPIN PRIORITY 1
QUEUE FILAAP
TRANSFER BOTH,DIRPINU,DIRPIND
TERMINATE 0
GENERATE 1080
TERMINATE 1
START 1
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.
SPLIT
Bloque: Assemble
La instruccin ASSEMBLE permite simular el
ensamble de piezas o construccin de paquetes
ya que sirve para unir varias transacciones en
una sola que represente el paquete. Su sintaxis
es:
ASSEMBLE A
Donde A sirve para colocar el nmero de
transacciones que constituyen el paquete.
ASSEMBLE
Bloque: Assign
Esta instruccin de bloque reemplaza, aumenta o disminuye el contenido de los
parmetros de la transaccin que ingrese a el. Su sintaxis es:
ASSIGN A,B,C
Donde A es un operando donde se coloca el nmero del parmetro donde se
colocar la informacin. Si esta seguido de un + o un - se indica que el valor que
este presente se ha de aumentar o disminuir en las unidades especificadas en A.
El parmetro B se ocupa para colocar el valor que se emplea para reemplazar al
valor actual a travs de la operacin especificada en A.
El operando C se ocupa para colocar una funcin modificadora que altera al
operando B, como se ilustra en los siguientes ejemplos.
Ejemplos:
ASSIGN 2,7
Reemplaza el contenido actual del parmetro 2 (P2) con el valor 7.
ASSIGN 2+,4
Reemplaza el contenido en P2 sumndole al valor actual 4 unidades.
ASSIGN 3-,10,FN$EXP
Reemplaza el contenido en P3 con el resultado de restarle al valor actual de P3 la
cantidad 10*FN$EXPO
ASSIGN
Bloque : Savevalue
Este bloque define una locacin de registro, y permite actualizar,
adicionar o sustraer el valor de una variable de almacenamiento.
Su sintaxis es :
SAVEVALUE A,B
Donde A. Nombre o nmero del SAVEVALUE. Puede ser seguido por
un signo ms (+) o un signo menos (-) para indicar adicin o sustraccin
del valor existente. El operando puede ser un nombre, un entero positivo
o un SNA. Obligatorio.
B. El valor a ser almacenado adicionado o sustrado. El operando puede ser un
nombre, un entero o un SNA. Obligatorio.
Ejemplo:
SAVEVALUE Caja_Final,X$Caja
Cuando una transaccin ingresa a este bloque el valor de la variable
de almacenamiento Caja es grabado en la variable Caja_Final
reemplazando al valor anterior
SAVEVALUE
Sentencia de control Reset
La instruccin de control RESET se emplea para borrar todos los
resultados estadsticos de la simulacin pero conservando la
situacin actual de las transacciones en los bloques, se emplea
despus de START. Se puede emplear para simular el
precalentamiento de un sistema (warm-up).
El warm-up de un sistema es necesario cuando el sistema a simular
no esta vacio al iniciar sus operaciones (que se desean simular).
Por ejemplo: una fbrica que produce muebles guardar los muebles
inconclusos despus de una jornada de trabajo para proseguir con
ellos a la jornada siguiente, por lo tanto si se esta simulando este
sistema tal vez no sea adecuado tomar estadsticas cuando el
sistema inicia como vaco, por tanto, para no tomar en cuenta las
estadsticas del inicio puede usar RESET. Su sintaxis es :
RESET
Esta instruccin no posee operandos, se usa en conjunto con START
Sentencia de control Clear
Esta es una instruccin de control que borra
todos los resultados estadsticos colectados a la
fecha y adems borra la situacin actual de las
transacciones. Con ella es posible simular las
repeticiones necesarias de un programa hasta
que se estabilice. Su sintaxis es :
CLEAR
Esta instruccin no posee operandos, se usa en
conjunto con START.
Sentencia de Control EQU
Esta sentencia evala una expresin y
asigna el resultado a un nombre valuado.
NOMBRE EQU X
Nombre es el nombre valuado que recibir el
valor. Es requerido.
X es la expresin a ser evaluada. Es
requerida.
Ejemplo de EQU
Precio EQU 19.5
Esta sentencia define el nombre PRECIO y le
asigna el valor de 19.5. Cualquier referencia
futura del nombre valuado usar el valor de
19.5.

Sentencia de Control INITIAL
Permite inicializar una entidad Matrix
(matriz), un Logicswitch, un Savevavlue o
un elemento de una matriz.
INITIAL A,B
El operando A debe tener la forma de un SNA
del tipo LS, X o MX o el nombre de una entidad
Matriz. Es obligatorio.
El operando B es el valor a ser asignado, que
por default es 1. Es opcional.
Ejemplos de INITIAL
INITIAL X$InvInicial,25
Esta sentencia asigna el valor inicial de 25 a la variable
global InvInicial del tipo Savevalue.
INITIAL MX$Inventario(parte_5, nivelStock),163
Esta sentencia asigna el valor de 163 al elemento de la
matriz denominada Inventario con nro. fila parte_5 y nro.
columna nivelStock.
Los nombres de la fila y la columna tienen que haber sido
previamente asignados a travs de una sentencia EQU.
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
Permite organizar una coleccin de datos dentro
de una entidad TABLE.
TABULATE A,B
El operando A es el nombre o nmero de la entidad
tabla. Es obligatorio.
El operando B es el factor de ponderacin para los
datos a tabular. Es opcional.
Ej: TABULATE Ventas
Cuando una transaccin ingresa a este bloque se
ubica la entidad tabla denominada Ventas,
especificada en una sentencia de control y tabula los
datos segn esta sentencia.
TABULATE
Sentencia de Control TABLE
Esta sentencia permite definir e inicializar una
tabla de distribucin de frecuencias.
NOMBRE TABLE A,B,C,D
Nombre es el nombre y etiqueta de localizacin de la
tabla. Es requerido.
El operando A es el argumento de la tabla, lo que se
va a tabular. Puede ser un SNA.
El operando B es el lmite superior del primer intervalo
de clases.
El operando C es la longitud de la frecuencia de clase.
El operando D es el nmero de frecuencias de clase.
Ejemplo de TABLE
Ventas Table X$ventas,10,10,5
Define una entidad tabla que tabula los valores
de la variable global tipo savevalue
denominada ventas en una tabla como la
siguiente:
10 20 30 40 50
ventas
1*************** Modelo utilizando parametrizacion ***************
2 TIPOS FUNCTION RN5,D5
0.25,1/0.40,2/0.65,3/0.90,4/1.0,5
3 TPO_TIPO FUNCTION P$TIPO,L5
1,10/2,15/3,30/4,45/5,60
4 COLA4 TABLE Q4,2,2,5
5*****************************************************************
10 GENERATE 10,5
12 ASSIGN TIPO,FN$TIPOS
13 TEST LE Q3,2,SALIR
14 QUEUE P$TIPO
16 SEIZE P$TIPO
18 DEPART P$TIPO
20 ADVANCE FN$TPO_TIPO
22 RELEASE P$TIPO
24 TABULATE COLA4
25 TERMINATE 1
26 SALIR TERMINATE

GPSS World Simulation Report - MOD_PARAM.4.1
Friday, April 29, 2005 21:00:48

START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 1138.502 11 5 0

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 114 0 0
2 ASSIGN 114 0 0
3 TEST 114 0 0
4 QUEUE 114 11 0
5 SEIZE 103 1 0
6 DEPART 102 0 0
7 ADVANCE 102 2 0
8 RELEASE 100 0 0
9 TABULATE 100 0 0
10 TERMINATE 100 0 0
SALIR 11 TERMINATE 0 0 0

Tiempo de finalizacin de la simulacin
Numero de transacciones generadas
Numero de transacciones que salieron del sistema
antes de finalizar la simulacin
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
1 28 0.237 9.646 1 114 0 0 0 0
2 13 0.171 15.000 1 0 0 0 0 0
3 27 0.711 30.000 1 0 0 0 0 0
4 26 0.988 43.269 1 96 0 0 0 10
5 9 0.438 55.470 1 112 0 0 0 1


QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 1 0 28 23 0.014 0.549 3.076 0
2 1 0 13 11 0.014 1.206 7.837 0
3 3 0 27 6 0.529 22.326 28.705 0
4 11 11 36 2 3.233 102.239 108.253 0
5 1 1 10 6 0.060 6.831 17.077 0


TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.%
COLA4 3.170 2.094 0
- 2.000 32 32.00
2.000 - 4.000 51 83.00
4.000 - 6.000 10 93.00
6.000 - 8.000 5 98.00
8.000 - _ 2 100.00

Fraccin del tiempo total de simulacin
En la que estuvo siendo utilizada la facility
Tiempo promedio de uso de la facility
Longitud mxima de la cola
Longitud de la cola al finalizar
la simulacion
Sentencia de control MATRIX
Define una entidad matriz, con un nmero de filas
y columnas especficos.
NOMBRE MATRIX A,B,C
El Nombre es la etiqueta de localizacin y nombre de
la matriz. Es requerido.
El operando A no es utilizado.
El operando B es el nmero de filas de la matriz. Es
requerido.
El operando C es el nmero de columnas de la matriz.
Es requerido.
Ejemplo de Matriz
Produccion Matrix ,3,2
Define una entidad matriz de nombre Produccin, de
3 filas y 2 columnas.






Los elementos de una matriz se registran,
incrementan o sustraen mediante un bloque
MSavevalue.
Maq1: 1 Maq2: 2
ProdA: 1
ProdB: 2
ProdC: 3
Bloque MSAVEVALUE
Este bloque permite actualizar un elemento de
una entidad matriz.
MSAVEVALUE A,B,C,D
El operando A es el nombre o nmero de la entidad
matriz. Puede opcionalmente ir acompaado de un
signo + o -. Es requerido.
El operando B es el nmero de fila. Requerido.
El operando C es el nmero de columna. Requerido.
El operando D es el valor a ser almacenado,
adicionado o sustrado. Requerido
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
Este bloque cambia el estado de una entidad
switch lgico (semforo).
LOGIC O A
El operando O es el operador lgico que puede ser
S (set), R (reset) o I (invertir).
El operando A es el nombre o nmero de la entidad
switch lgico.
Ej: Logic S represa
Este bloque pone en set o verdadero el estado de la
entidad Represa el cual puede significar abierto o
cerrado.
LOGIC
Ejemplo: Cruce vehicular controlado por
semforo
Se desea controlar el cruce vehicular entre
dos calles, una que de norte a sur (NS) y
otra que va de este a oeste (EO) cuyo pase
es controlado por un semforo. El tiempo
entre arribos para los autos en la direccin
NS es de 1 0.5 min y para EO es de 4 2
min; el tiempo de paso es de 0.75 0.25
min. Simular una semana de circulacin.
E
O
N
S
10 *******CONTROL DE FLUJO VEHICULAR POR SEMAFORO*******
20 GENERATE 1,0.5 ; autps que arriban de NS
21 QUEUE COLANS
22 TEST E LS$SEMAFORO,1
23 SEIZE PASO
24 DEPART COLANS
25 ADVANCE 0.75,0.25
26 RELEASE PASO
26 TERMINATE
30 GENERATE 4,2 ; autps que arriban de EO
32 QUEUE COLAEO
34 TEST E LS$SEMAFORO,0
35 SEIZE PASO
36 DEPART COLAEO
38 ADVANCE 0.75,0.25
40 RELEASE PASO
42 TERMINATE
50 *****************************************************
52 GENERATE 1,,,1 ; control del semforo
54 CAMBIO LOGIC S SEMAFORO
56 ADVANCE 5
58 LOGIC R SEMAFORO
59 ADVANCE 2
60 TRANSFER ,CAMBIO
70 *****************************************************
72 GENERATE 60 ; reloj de control de la simulacion
74 TERMINATE 1


Bloque MARK
Este bloque estampa el tiempo de reloj absoluto dentro de la
transaccin activa o dentro de un parmetro.
MARK A
El operando A es el nmero o nombre del parmetro que recibir el valor
del tiempo del reloj del sistema. El tiempo colocado por un bloque Mark
puede ser recuperado por M1, el cual retorna el tiempo de trnsito como
la diferencia entre el tiempo de reloj absoluto y el tiempo registrado por el
bloque 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.
MARK
y todo lo dems

You might also like