Sei sulla pagina 1di 34

LENGUAJE DE

SIMULACION GPSS
COMANDOS BASICOS
MATERIA: INVESTIGACION DE OPERACIONES II
UNIDAD II: TEORIA DE COLAS
ING. GENOVEVO GONZALEZ DE LA ROSA
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 el
programa.

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
GENERATE - TERMINATE
GENERATE A,B,C,D,E
_
_
_
_
TERMINATE
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. 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 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
EJEMPLO: 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 genera transacciones y las mete al sistema.
BLOQUE: TERMINATE
TERMINATE se emplea para destruir las transacciones que ingresen a
ella, se puede emplear para que un elemento salga 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 del programa, 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 programa termina.


TERMINATE saca la transaccin del sistema.
TERMINATE
EJEMPLO: 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 del programa.
SEIZE - RELEASE
SEIZE A
_
_
_
_
RELEASE A
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 captura la atencin de un servidor.
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 libera la atencin de un servidor.
RELEASE
BLOQUE: ADVANCE
Suspende el movimiento de una transaccin por una cantidad
especifica de tiempo. Puede emplearse para 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.

ADVANCE 15
Retarda exactamente 15 unidades de tiempo a la transaccin.

ADVANCE ejecuta el tiempo de un servicio.
ADVANCE
EJEMPLO 1
Elabore un programa 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 minutos
con probabilidad uniforme; los empleados llegan al telfono
cada 10 5 minutos. Realice 50 llamadas efectuadas (por
ejemplo, para saber si un telfono es suficiente o es necesario
otro).
PROGRAMA GPSS DEL EJEMPLO 1.
10,5


TELEFONO


5,2


TELEFONO



1
GENERATE
SEIZE
ADVANCE
RELEASE
TERMINATE
GENERATE 10,5

SEIZE TELEFONO

ADVANCE 5,2

RELEASE TELEFONO

TERMINATE 1

START 50
Genera usuarios de
telfono cada 105min
Solicitan acceso al
telfono
Tiempo de ocupacin
del telfono

Liberan el tiempo
despus de llamar
Se cuenta una llamada

Se realizan 50 llamadas
TAREA 1
Elabore un programa que represente el sistema del ejemplo 1,
en lugar de minutos use segundos.
QUEUE - DEPART
CUEUE A,B
_
_
_
_
DEPART A,B
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 genera estadstica de una cola.
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
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 actualiza estadstica de salida.
DEPART
ENTER - LEAVE
ENTER A,B
_
_
_
_
LEAVE A,B
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 captura uno o varios servidores.
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 libera la atencin de los servidores.
LEAVE
SENTENCIA DE 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).

STORAGE define la capacidad del servidor.
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
segundos y el tiempo de cobro por auto es de 10 5 segundos,
realice la operacin de 200 autos para tomar una decisin.
CASETAS
DE
COBRO
Max 20 autos
PROGRAMA GPSS DEL EJEMPLO 2.
CASETAS

20,10



ESPERA


CASETAS,1


ESPERA


10,5

GENERATE
CASETAS STORAGE 1

GENERATE 20,10

QUEUE ESPERA

ENTER CASETAS


DEPART ESPERA

ADVANCE 10,5
Se inicia con 1 cabina

Tiempo inter arribo en
segundos
Auto forma frente a la
caseta (hace cola)

Se solicita acceso a
alguna caseta

Auto se mueve a
caseta (deja la cola)
Tiempo de servicio de
la caseta

QUEUE
ENTER
DEPART
ADVANCE
PROGRAMA GPSS DEL EJEMPLO 2.
CASETAS



1
TERMINATE
LEAVE CASETAS


TERMINATE 1


START 200
Auto deja la caseta


Se cuenta 1 auto


Se corren 200 autos
LEAVE
PROGRAMA GPSS DEL EJEMPLO 2.
Programa GPSS con 1 carril y 2 casetas.
CASETAS STORAGE 2
GENERATE 20,10
QUEUE ESPERA
ENTER CASETAS,1
DEPART ESPERA
ADVANCE 10,5
LEAVE CASETAS
TERMINATE 1
START 200
PROGRAMA GPSS DEL EJEMPLO 2.
Programa GPSS con 2 carriles y 1 caseta.
CASETAS STORAGE 1 LEAVE CASETAS
GENERATE 20,10 TERMINATE 1
QUEUE ESPERA1 START 200
ENTER CASETAS,1
DEPART ESPERA1
ADVANCE 10,5
LEAVE CASETAS
TERMINATE 1
GENERATE 20,10
QUEUE ESPERA2
ENTER CASETAS,1
DEPART ESPERA2
ADVANCE 10,5
EJERCICIO 2.
Modele el mismo sistema que en el ejemplo 2:
Con 3 casetas y 2 carriles.
Con 3 carriles y 1 caseta.
Con 2 casetas y 3 carriles.
Elabore las conclusiones de cada modelo en base al reporte.
Carril 2
Carril 1
1 2 3
Tiempo Inter Arribo en
cada 20 10 segundos
Tiempo Servicio en cada
caseta 10 5 segundos
AVANCE DE TIEMPO.
Todos los ejemplos anteriores son modelos con avance de tiempo
variable o por eventos.

Para hacer un programa con un avance de tiempo fijo, es necesario
agregar al programa otra secuencia con un comando GENERATE para
controlar el tiempo de operacin. Este comando GENERATE se agrega
al final del programa.

Por ejemplo, si queremos un programa, el tiempo que corresponde a
un turno de trabajo de 8 horas, y los eventos dentro del modelo estn
en segundos, quedara de la siguiente manera:

(Programa)
TERMINATE
GENERATE 1
TERMINATE 1
START 28800

(3600 Seg x hora)(8 horas) = 28800
PROGRAMA GPSS DEL EJEMPLO 2.
Realice 8 horas de operacin con 2 carriles y 1 caseta.
CASETAS STORAGE 1 LEAVE CASETAS
GENERATE 20,10 TERMINATE
QUEUE ESPERA1 GENERATE 1
ENTER CASETAS,1 TERMINATE 1
DEPART ESPERA1 START 28800
ADVANCE 10,5
LEAVE CASETAS
TERMINATE
GENERATE 20,10
QUEUE ESPERA2
ENTER CASETAS,1
DEPART ESPERA2
ADVANCE 10,5
20,10
ESPERA1
CASETAS
ESPERA1
10,5
CASETAS
20,10
ESPERA2
CASETAS
ESPERA2
10,5
CASETAS
1
1
START 28800
EJERCICIO.
Modele la operacin del establecimiento por 8 horas y determine el
tamao de los componentes de acuerdo a los resultados.
Los clientes llegan 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
minutos y despus se retiran. Se desea una fila 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).

Potrebbero piacerti anche