Comandos GPSS

Embed Size (px)

Citation preview

LENGUAJE DE SIMULACION GPSSCOMANDOS BASICOSMATERIA: INVESTIGACION DE OPERACIONES II

UNIDAD II: TEORIA DE COLASING. GENOVEVO GONZALEZ DE LA ROSA

SENTENCIA GPSSEstructura de una sentencia de declaracin GPSS/PC:Nro. Nro. Etiqueta Verbo Operandos ;Comentario

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. Nmero o nombre para la localizacin de un bloque. Si se coloca un asterisco, la sentencia es de comentario. Nombre identificador para el control o el bloque Dependen del verbo identificador utilizado

Etiqueta

Verbo Operandos

Comentario Para explicar brevemente el significado de la sentencia

GENERATE - TERMINATE

GENERATE A,B,C,D,E _ _ _ _ TERMINATE

GENERATE

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.

EJEMPLO: GENERATEGENERATE 2700,200,1000,100,50Crea 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.

TERMINATE

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 ADonde 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.

EJEMPLO: TERMINATE

TERMINATECada transaccin que ingresa a este bloque se destruye.

TERMINATE 5Cada 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

SEIZE

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 ADonde 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.

RELEASE

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 AEl 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.

ADVANCE

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,BDonde 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.

EJEMPLO 1Elabore 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,5GENERATE 10,5 Genera usuarios de telfono cada 105min Solicitan acceso al telfono Tiempo de ocupacin del telfono

GENERATE

SEIZE

TELEFONO

SEIZE TELEFONO

ADVANCE

5,2

ADVANCE 5,2

RELEASE

RELEASE TELEFONO Liberan el tiempo despus de llamar TELEFONOTERMINATE 1 Se cuenta una llamada

TERMINATE

1

START 50

Se realizan 50 llamadas

TAREA 1Elabore un programa que represente el sistema del ejemplo 1, en lugar de minutos use segundos.

QUEUE - DEPART

CUEUE A,B _ _ _ _ DEPART A,B

QUEUE

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,BDonde 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.

DEPART

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,BDonde 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.

ENTER - LEAVE

ENTER A,B _ _ _ _ LEAVE A,B

ENTER

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,BDonde 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.

LEAVE

BLOQUE: LEAVE

LEAVE se utiliza para que las transacciones liberen unidades de equipo ocupadas con ENTER. Su sintaxis es:

LEAVE A, BDonde 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.

SENTENCIA DE CONTROL STORAGESe emplea para determinar cuntas unidades estarn disponibles de un equipo de capacidad mltiple (storage). Su sintaxis es:

Etiqueta STORAGE ADonde "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 2Se 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.

Max 20 autos

CASETAS DE COBRO

PROGRAMA GPSS DEL EJEMPLO 2.CASETASGENERATECASETAS STORAGE 1 Se inicia con 1 cabina Tiempo inter arribo en segundos Auto forma frente a la caseta (hace cola)

20,10GENERATE 20,10

QUEUE

ESPERA

QUEUE ESPERA

ENTER CASETAS ENTER

CASETAS,1

Se solicita acceso a alguna caseta

DEPART

ESPERA

DEPART ESPERA

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

ADVANCE

10,5

ADVANCE 10,5

PROGRAMA GPSS DEL EJEMPLO 2.LEAVE

CASETAS

LEAVE CASETAS

Auto deja la caseta

TERMINATE

1

TERMINATE 1

Se cuenta 1 auto

START 200

Se corren 200 autos

PROGRAMA GPSS DEL EJEMPLO 2.Programa GPSS con 1 carril y 2 casetas. CASETAS STORAGE 2

GENERATE 20,10QUEUE 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,10QUEUE ESPERA1 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

TERMINATE 1START 200

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.

1

2

3

Carril 2

Carril 1

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,10QUEUE ESPERA1 ENTER CASETAS,1 DEPART ESPERA1 ADVANCE 10,5 LEAVE CASETAS TERMINATE GENERATE 20,10 QUEUE ESPERA2 ENTER CASETAS,1 DEPART ESPERA2 ADVANCE 10,5

TERMINATEGENERATE 1 TERMINATE 1 START 28800

20,10

20,10

1

ESPERA1

ESPERA2 1

CASETAS

CASETAS

START

28800

ESPERA1

ESPERA2

10,5

10,5

CASETAS

CASETAS

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).