99
Lenguaje de Simulación Lenguaje de Simulación GPSS GPSS http://www.minutemansoftware.com Ing. Luis Zuloaga Rotta Facultad de Ingeniería Industrial y de Sistemas

GPSS Actualizado

Embed Size (px)

Citation preview

Page 1: GPSS Actualizado

Lenguaje de Simulación GPSSLenguaje de Simulación GPSShttp://www.minutemansoftware.com

Ing. Luis Zuloaga Rotta

Facultad de Ingeniería Industrial y de Sistemas

Page 2: GPSS Actualizado

GPSS - PC

• GPSS es un lenguaje de Simulación de Sistemas de Propósito 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 simulación del sistema.

Page 3: GPSS Actualizado

Estructura de un modelo con el Lenguaje GPSS

• Se inicializa con una sentencia de control:

Start n

• Que inicializa un contador de la finalización de la simulación en n, el cual es disminuido por una sentencia de bloque:

Terminate 1

Sentencias de Control1.Storage2.Function3.Initial4.Variable

Sentencias de Bloque1.Generate2.Test3.Queue4.Seize5.Depart6.Advance7.Release8.Terminate

Sentencias de Bloque complementarias:1.Savevalue2.Enter3.Advance4.Leave5.Transfer

Page 4: GPSS Actualizado

Sentencia GPSSSentencia GPSS• Estructura de una sentencia de declaración GPSS/PC : Nro. Etiqueta Verbo Operandos ;Comentario

Nro. Puede ser entero o decimal. Se utilizan solo para las sentencias del programa salvable. Máximo 7 caracteres incluido pto.

Si ingresa una sentencia sin numerar esta solo es temporal. Generalmente se ingresan antes de inicializar la simulación.

Etiqueta Número o nombre para la localización 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

Page 5: GPSS Actualizado

Bloque : GenerateBloque : Generate• La instrucción 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 omisión es cero.

– B es la dispersión en el tiempo de creación 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 omisión es cero.

– C es un operando donde se coloca el tiempo simulado al que llega la primera transacción al modelo. El valor por omisión no está determinado.

– D es el número límite de transacciones creadas y su valor por omisión es infinito.

– E es un operando donde se coloca la prioridad asignada a cada transacción 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

Page 6: GPSS Actualizado

Ejemplos : GenerateEjemplos : Generate

• GENERATE 2700,200,1000,100,50

Crea transacciones cada 2700 ± 200 unidades de tiempo, pero la primera transacción se crea al tiempo 1000. Después de 100 transacciones no se generan más y cada una de las 100 generadas tendrán una prioridad de 50.

• GENERATE 30,FN$XPDIS

Crea transacciones según una distribución exponencial negativa con media 30 unidades de tiempo.

Page 7: GPSS Actualizado

Bloque TerminateBloque 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 terminación 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 número (entero) con el que se disminuirá el contador de termino de la simulación, cuyo número inicial se da en la instrucción de control START. Cuando el contador alcanza un valor menor o igual a cero se ejecuta la siguiente instrucción debajo del START, si es un END, la simulación

termina.

TERMINATE

Page 8: GPSS Actualizado

Ejemplos: TerminateEjemplos: Terminate

• TERMINATE

Cada transacción que ingresa a este bloque se destruye.

• TERMINATE 5

Cada vez que una transacción ingresa a este bloque se destruye y disminuye en 5 el contador de finalización de la simulación.

Page 9: GPSS Actualizado

Bloque : SeizeBloque : Seize• Sirve para registrar el empleo de una unidad de servicio por parte

de una transacción que entra, de tal forma que la unidad queda ocupada hasta que la transacción ingresa a una instrucción RELEASE. Una sola transacción podría ocupar varias unidades de servicio simultáneamente. Su sintaxis es:

• SEIZE A

Donde el operando A se emplea para dar la identificación a la unidad que se ocupa (número o nombre).

• Ejemplo :

SEIZE HORNO

Registra la ocupación de una unidad de servicio llamada HORNO.

SEIZE

Page 10: GPSS Actualizado

Bloque : ReleaseBloque : Release• Sirve para desocupar la unidad de servicio ocupada

previamente por la transacción 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 identificación de la unidad que se libera.

• Ejemplo :RELEASE HORNOIndica que la transacción libera a la unidad de servicio HORNO que ocupó con anterioridad.

RELEASE

Page 11: GPSS Actualizado

Bloque : AdvanceBloque : Advance• Suspende el movimiento de una transacción 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,BDonde el operando A corresponde al tiempo de retardo para la transacción y B es el intervalo de dispersión alrededor de A.

• Ejemplos :ADVANCE 12,4Retarda la transacción 12 ± 4 unidades de tiempo simulado.

ADVANCE 15Retarda exactamente 15 unidades de tiempo a la transacción.

ADVANCE 5,FN$XPDISRetarda a la transacción un tiempo distribuido exponencialmente con media 5 .

ADVANCE

Page 12: GPSS Actualizado

Bloque: QueueBloque: Queue• La instrucción de bloque QUEUE se emplea para obtener

estadísticas 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 asignarán las estadísticas. Y B es el número de unidades que se deben sumar a la fila cuando una transacción pasa por la instrucción. El valor por omisión es de uno.

• Ejemplo(s): QUEUE FILAADeclara una fila de nombre FILAA y le suma una unidad a la fila cuando una transacción pasa por ella.

QUEUE FILAB,3Declara una fila de nombre FILAB y le suma 3 unidades cada vez que una transacción pasa por ella.

QUEUE

Page 13: GPSS Actualizado

Bloque : DepartBloque : Depart• Reduce el contenido de una fila declarada con QUEUE, en una o

más 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,BDonde A es el operando donde se aporta el nombre de la fila a la que se le removerán B unidades, el valor por omisión de B es uno.

• Ejemplo(s):DEPART FILAA Descuenta una unidad de la fila FILAA que se debe definir antes.

DEPART FILAB 3La fila FILAB se reduce en 3 unidades cada vez que una transacción pasa por esta instrucción.

DEPART

Page 14: GPSS Actualizado

Simulación de Sistemas

Tiempoentre

Arribos (t)

Cola

Servicio

Población

SISTEMA DE COLASSISTEMA DE COLAS

Arribos

Tiempo deServicio

Politica deservicio

GENERATE

TERMINATE

QUEUE

SEIZE

ADVANCE

RELEASE

DEPART

Page 15: GPSS Actualizado

Ejemplo 1Ejemplo 1

• Elabore un programa de simulación que represente el siguiente sistema: La operación de un teléfono 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 teléfono cada 10 ± 5 min. Simule 50 llamadas efectuadas. (por ejemplo para saber si un teléfono es suficiente o es necesario otro).

Page 16: GPSS Actualizado

Bloques GPSS

• Elabore un programa de simulación que represente el siguiente sistema: La operación de un teléfono (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 teléfono cada 10 ± 5 min (GENERATE) y si no esta libre el teléfono se quedan esperando (QUEUE). Simule 50 llamadas efectuadas (START 50). (por ejemplo para saber si un teléfono es suficiente o es necesario otro).

Page 17: GPSS Actualizado

Programa GPSS del Programa GPSS del Ejemplo 1Ejemplo 1

• GENERATE 600,300 GENERA USUARIOS DE TELEF. U/C 600±300 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

Page 18: GPSS Actualizado

Bloque : EnterBloque : Enter• Esta instrucción se emplea para ocupar unidades de equipo que

tienen capacidad múltiple. Por ejemplo un cubículo de cajeros automáticos, un conjunto de sillas en un salón, etc. Su sintaxis es:

• ENTER A,BDonde A es el nombre del equipo de capacidad múltiple y B es el número de unidades que solicita una transacción, en caso de omitirlo se solicitará una unidad de equipo. La capacidad máxima del conjunto se puede fijar con la instrucción de control llamada STORAGE, si no se fija así la capacidad máxima se supone infinita.

• Ejemplo :ENTER SILLAS, 2Aquí la transacción que ingresa solicita 2 unidades del conjunto llamado SILLAS, entidad que puede dimensionarse con una sentencia de control STORAGE.

ENTER

Page 19: GPSS Actualizado

Bloque : LeaveBloque : 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 precaución de no liberar más unidades de las que se tengan ocupadas.

• Ejemplo(s):LEAVE MESASSe pide que se libere una unidad del equipo de capacidad múltiple llamado MESAS. LEAVE MESAS,3Cada transacción que ingresa solicita que la unidad de equipo múltiple (o storage) MESAS libere 3 de sus unidades.

LEAVE

Page 20: GPSS Actualizado

Sentencia Control: StorageSentencia Control: Storage• Se emplea para determinar cuántas unidades estarán

disponibles de un equipo de capacidad múltiple (storage). Su sintaxis es:

• etiqueta STORAGE A Donde "etiqueta" llevará el nombre del equipo que se desea dimensionar y A es el número de unidades (o capacidad) que tendrá el equipo.

• Ejemplo:CAJA STORAGE 10Se 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).

Page 21: GPSS Actualizado

Ejemplo 2Ejemplo 2

• Se desea saber cuántos 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 número 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 operación para tomar una decisión.

Page 22: GPSS Actualizado

123

Carril 1

Carril 2GENERATE GENERATE

ENTER

TERMINATE

ADVANCE

QUEUE

DEPARTLEAVE

Page 23: GPSS Actualizado

Simulación de Sistemas

Carril 1Carril 2GENERATEGENERATE

QUEUE

ENTER

DEPARTADVANCE

LEAVE

TERMINATE

Page 24: GPSS Actualizado

Tiempo Inter Arriboen cada carril 20 ± 10 sg

Tiempo Servicioen cada caseta 10 ± 5 sg

Page 25: GPSS Actualizado

Construcción del modelo GPSSConstrucción 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 múltiple, ya que son similares en características. Los autos se pueden representar por transacciones y el número 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: (básicamente) GENERATE para crear las transacciones que representarán los autos que llegan por la autopista, QUEUE para tomar datos de los autos que están en espera del servicio, ENTER para simular un conjunto de cabinas de cobro de características semejantes ADVANCE para representar los tiempos de atención, 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 condición de terminación.

Page 26: GPSS Actualizado

Programa GPSS para el Ejemplo 2Programa 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 transacción a las 8 horas de

operación • TERMINATE 1 Y el programa termina en este momento. • START 1 Inicia una corrida de la siumulación.

Page 27: GPSS Actualizado

GENERATE

QUEUE

DEPART

ENTER

ADVANCE

LEAVE

GENERATE

QUEUE

DEPART

ENTER

ADVANCE

LEAVE

GENERATE20,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 simulación para periodos de 8 horas.

Carril 1 de la via Carril 2 de la via

Page 28: GPSS Actualizado

Bloque : TransferBloque : Transfer• La instrucción TRANSFER sirve para bifurcar el trayecto

de un grupo de transacciones, que ingresen a esta instrucción de bloque. En los modelos de simulación 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,DDonde A es el modo de operación, B es el nombre (o etiqueta) de la dirección de la primera opción, C es el nombre (o etiqueta) de la segunda opción y D es un factor de indexación.

TRANSFER

Page 29: GPSS Actualizado

Forma IncondicionalForma Incondicional

• Para hacer esto se deja el campo A en blanco y en B se coloca una etiqueta que señala el bloque donde ingresará incondicionalmente la transacción.

• Ejemplo:

TRANSFER , PROXIMOEn este ejemplo la transacción que llega al bloque se transfiere incondicionalmente al bloque etiquetado como PROXIMO.

Page 30: GPSS Actualizado

Forma Estadística o fraccionalForma Estadística o fraccional• Se tienen 2 maneras diferentes de hacer una transferencia

estadística 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,DIRDOSEsta instrucción envía 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.

Page 31: GPSS Actualizado

Forma estadística ...Forma estadística ...

• Manera 2. Seleccionando en A el modo PIC, se tiene la opción de transferir de manera aleatoria uniforme la transacción que ingrese a cualquier bloque delimitado entre las etiquetas que se aporten en los campos B y C. – Ejemplo:

TRANSFER PIC,ETIQUNO,ETIQDOS

Esta instrucción intentará enviar las transacciones (que ingresen) a algún 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 instrucción

Page 32: GPSS Actualizado

FoForrma Condicionalma Condicional• Manera 1. Si en el campo A se emplea la opción BOTH

– Ejemplo:

TRANSFER BOTH,INICIO,FINALLa transacción al llegar se transfiere como primera opción al bloque etiquetado como INICIO y como segunda opción al etiquetado como FINAL hasta que logre el acceso.

• Manera 2. Si en el campo A se especifica la opción ALL– Ejemplo:

TRANSFER ALL,UUNO,DDOS,2Esta es una generalización del modo BOTH, ya que la transacción 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 límite marcado con DDOS. Se debe cuidar que UUNO+nD = DDOS para alguna n.

Page 33: GPSS Actualizado

Ejemplo : Máquinas automáticasEjemplo : Máquinas automáticas• Se tiene una sala con dos máquinas automáticas,

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 sólo compra galletas.

• Los tiempos de atención son de 1.5 ± 0.5 min en cualquiera de las máquinas. Obtenga el tiempo promedio de los clientes en la sala (excluyendo los que no compran). Simule 4 horas de operación.

Page 34: GPSS Actualizado

Galletas

Refrescos

60%80%

10%75%

10%25%GENERATE

TERMINATE

QUEUE

DEPART

TERMINATE

SEIZE

ADVANCE

RELEASE

SEIZE DEPART

ADVANCE

RELEASE

TRANSFER

TRANSFER

20%

TRANSFER

Page 35: GPSS Actualizado

Modelo GPSSModelo 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

Page 36: GPSS Actualizado

Bloque: TestBloque: Test• Esta instrucción de bloque controla el flujo de transacciones a través

de relaciones lógicas entre los atributos numéricos estándar (SNA) del GPSS, que son variables internas de las cuales se sirve para realizar la simulación. La instrucción Test opera de dos modos: a) Cuando las transacciones se detienen hasta que la relación lógica se cumple,

(BLOQUEO) y

b) Cuando las transacciones se dirigen a un bloque alterno cuando la relación lógica 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

Page 37: GPSS Actualizado

Bloque : 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 relación lógica es falsa. A y B también pueden tomar valores constantes. Si se omite la etiqueta en el campo C, entonces TEST opera del primer modo, deteniendo las transacciones mientras la relación no sea verdadera. Funcionando como una compuerta.

• En caso de que se aporte la etiqueta las transacciones seguirán por el bloque etiquetado cuando la relación sea falsa.

• Ejemplo(S) :TEST LE Q$LINEA,7,SALIDAEn este caso la instrucción envía 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$INICIOAquí la instrucción 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 pasarán al siguiente bloque.

Page 38: GPSS Actualizado

SNA’sSNA’s• SNA DEFINICION Nj Número total de transacciones que entran en el bloque j WJ Número 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 máximo de la fila j QCj Número total de entradas en la fila j QZj Número 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 Número de unidades restantes en el storage j SRj Porcentaje actual de empleo del storage j SAj Contenido promedio del storage j SMj Contenido máximo del storage j SCj Número total de entradas en el storage j STj Tpo promedio en el storage j C1 Tpo del reloj relativo controlado desde el último bloque MarkAC1 Tpo de reloj absoluto (desde el inicio de la simulación)RNj Generador de nros. aleatorios uniforme j Xj... Es la transacción j etc,

Page 39: GPSS Actualizado

Parqueo de Taxis

DESVIO

1 2 3 4

15±5

20±8

4±2

Page 40: GPSS Actualizado

DESVIO

1 2 3 4

15±5

20±8

4±2

GENERATE

TRANSFER

ENTER

ADVANCE

LEAVE

TERMINATE

ADVANCE

TRANSFER

Page 41: GPSS Actualizado

Diagrama de BloquesGENERATE

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 4Start 50 inicializa un contador de finalizacion de la simulacion el cual es disminuido por cada transaccion que pase por el bloque Terminate

Page 42: GPSS Actualizado

Resultados de la Simulación

Page 43: GPSS Actualizado

Ejemplo 3: RestaurantEjemplo 3: Restaurant• Simule la operación del establecimiento por 8 horas y determine el

tamaño de los componentes de acuerdo a los resultados. Tome en cuenta que de las 13:00 a las 15:00 llegan exactamente tres personas más 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 sólo en la parte inicial de la barra, tomando un tiempo de 40 ± 20 segundos. Después sólo se recorre la barra hasta llegar a la caja para realizar su pago.

• Suponga que las personas permanecen comiendo durante 18 ± 5 min y después se retiran. Se desea una cola menor a 5 personas detrás del punto inicial de la barra en espera de atención (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 tamaño de la barra que necesita (para cuantas personas).

Page 44: GPSS Actualizado

Caja

Bar

ra

Serviciocomida

Entrada

Are

a d

eM

esas

Page 45: GPSS Actualizado

Caja

Bar

ra

Serviciocomida

Entrada

Are

a d

eM

esas

GENERATE

QUEUE

ENTER

DEPART

ADVANCE

LEAVESEIZE

ADVANCERELEASE

ENTER

ADVANCE

LEAVE

TERMINATE

Page 46: GPSS Actualizado

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

ADVANCE18,5

MESAS

TERMINATE

a

a

b

b

TESTL AC1,7200,OTRO

TERMINATE

TEST

TRANSFER

G AC1,14400,FIN

C

C

,VAN

VAN

FIN

OTRO

Page 47: GPSS Actualizado

TEST GE

TRANSFER

GENERATE 15,7.5,7200

AC1,7200,SALIR

TEST LE AC1,14400,SALIR

TERMINATE

C,VAN

SALIR

Page 48: GPSS Actualizado

Ejemplo 4: Dpto. QuejasEjemplo 4: Dpto. Quejas• Se simula la operación 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 atención de uno de ellos, la siguiente queja se pasará al otro especialista para atender a los clientes de manera rápida. El tiempo inter arribo de quejas es de una cada 30±15 min. El 48% son para el especialista A y el resto para el B. El tiempo de atención 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 algún especialista no tenga fila de espera. Simule la atención de 100 quejas.

Page 49: GPSS Actualizado

Modelo GPSSModelo 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.

Page 50: GPSS Actualizado

Bloque : GateBloque : Gate• Esta es una instrucción semejante a TEST pero utiliza relaciones lógicas

asociadas con entidades particulares. También actúa de los dos modos en que opera TEST. Su sintaxis es:

• GATE "X" A,BDonde "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 relación.

• Si se omite la etiqueta en B, la instrucción detendrá las transacciones hasta que la relación sea verdadera, en cuyo caso pasarán al siguiente bloque.

GATE

Page 51: GPSS Actualizado

Bloque : Gate ...Bloque : Gate ...

• Ejemplo(s) :

GATE SNF NAVE,OTRO

La transacción 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.

Page 52: GPSS Actualizado

Modelo GPSSModelo 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.

Page 53: GPSS Actualizado

Ejemplo 5 : Personal VariableEjemplo 5 : Personal Variable

• Elabore un programa de simulación que simule la operación de una oficina, donde el número de personas que laboran es variable, y depende del tiempo promedio que tardan en atender una petición. Las peticiones llegan cada 5 ± 2 min. , el número inicial de empleados es de 3 y pueden aumentar hasta 5.

• Cada empleado atiende una petición 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 más. Simule 8 horas de operación.

Page 54: GPSS Actualizado

Modelo GPSSModelo 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

Page 55: GPSS Actualizado

Sentencia de Control: FUNCTIONSentencia 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 opción FUNCTION que se puede utilizar de maneras diversas.

• Las funciones, ya sean continuas o discretas, asocian valores de una variable (independiente) con resultados específicos de los valores que pueden tomar las variables dependientes. La sintaxis es:

Etiqueta FUNCTION A,B,CX1,Y1/X2,Y2/X3,Y3/.../Xn,YnDonde :– A se emplea para declarar la variable que se usará como independiente – B se emplea para definir el tipo de función que se desea – C es el número 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.

Page 56: GPSS Actualizado

Sentencia de Control: FUNCTION ...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 instrucción de bloque se pide que la transacción suspenda su recorrido por el modelo, durante un lapso especificado en la función tiempo.

Page 57: GPSS Actualizado

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.04.0 -3.0

0.59-0.550.65-0.55

=

TIEMPO

RN5

Page 58: GPSS Actualizado

FunctionFunction• Los tipos de función de que se dispone son :

C (para denotar una función 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 función que se declara, con el fin de llamarla así cuando se utilice en el programa GPSS. Para llamar a la función desde alguna parte del programa se necesita llamar al SNA correspondiente, por ejemplo: Si se declaró la función TIEMPO, cuando se desea usar el valor actual de la función, 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 función se podrá utilizar en muchos de los operandos de las instrucciones de bloque donde tenga sentido un valor como el que aporta la función (o funciones) que defina.

Page 59: GPSS Actualizado

Función Continua ( C )Función Continua ( C )(GPSS realiza internamente una interpolación)(GPSS realiza internamente una interpolación)

• Input Variable 5#x$costo/24.8

Output FUNCTION V$Input,C31.1,10.1/20.5,98.7/33.3,889.2

• Xpdis FUNCTION RN200,C240,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)

Page 60: GPSS Actualizado

Función Discreta ( D )Función Discreta ( D )(GPSS no realiza internamente una interpolación)(GPSS no realiza internamente una interpolación)

• DIista FUNCTION X$A2,D51.1,6.9/2.1,7/6.33,9.4/7,10/9.9,12.01

• Ran1 FUNCTION RN1,D50,0/.2,7.2/.4,6.667/.8,9.92/1.0,10

Page 61: GPSS Actualizado

Función Lista ( L )Función Lista ( L )

• Lista FUNCTION Q$Barbero,L51,PAR1/2,PAR2/3,PAR3/4,PAR4/5,PAR5

• Cantidad FUNCTION P$tipo,L41,10/2,15/3,25/4,50

Page 62: GPSS Actualizado

Función Discreta de Función Discreta de atributo valuado ( E )atributo valuado ( E )

• Edisc FUNCTION X$QRA,E51,S$Stor1/3,S$Stor2/5,S$Stor3/9,S$Stor5/10,S$Stor6

Page 63: GPSS Actualizado

Función lista de Función lista de atributos valuados (M)atributos valuados (M)

• Mlist FUNCTION X$Name1,M51,Q$Nam1/2,Q$Nam2/3,Q$Nam4/4,Q$Nam6/5,Q$Nam7

Page 64: GPSS Actualizado

Función ExponencialFunción Exponencial• EXPONENTIAL (Entrada, Lambda, Beta)

– Entrada: El número de registro del generador de números aleatorios. Requerido. Debe ser mayor o igual a 1.

– Lambda: El valor de compresión utilizado para expandir o contraer la distribución.

– Beta: El valor de cambio utilizado para la posición de la distribución.

– Teniendo en cuenta además que:

Page 65: GPSS Actualizado

Ejemplo de Función ExponencialEjemplo de Función Exponencial

• Ejemplo: la tasa de fallos de un componente se produce con una distribución exponencial con media de 6 minutos, y una desviación estándar de 2 minutos. Luego los valores son β = 2 y λ=4 (6=2+ λ). Y la función queda definida de la siguiente manera:

EXPONENTIAL (1, 4, 2)

Page 66: GPSS Actualizado

Función UniformeFunción Uniforme

• UNIFORM (ENTRADA, A, B) – Entrada: El número de registro del generador de números

aleatorios. Requerido. Debe ser mayor o igual a 1.

– A: El valor más pequeño que cabe extraer de la distribución. Debe ser inferior al máximo.

– B: El valor más grande que se desprende de la distribución. Deberá ser superior al min.

– Teniendo en cuenta además que:

Page 67: GPSS Actualizado

Ejemplo de Función UniformeEjemplo de Función Uniforme

• Ejemplo: a un sistema arriban clientes con una distribución uniforme de medio 20 min y desviación estándar de 10 min. Luego los valores son A=10 y B=30.

UNIFORM (1, 10, 30)

Page 68: GPSS Actualizado

Función NormalFunción Normal

• NORMAL (Entrada, Media, Desv_Estandar)

– Entrada: El número de registro del generador de números aleatorios. Requerido. Debe ser mayor o igual a 1.

– Media: el valor medio de la distribución. Requerido.

– Desv_Estandar: la desviación estándar de la distribución. Estrictamente positiva. Requerido.

Media = µ Desviación Estándar = σ

Page 69: GPSS Actualizado

Función PoissonFunción Poisson

• POISSON (Entrada, Media) – Entrada: El número de registro del generador de números

aleatorios. Requerido. Debe ser mayor o igual a 1.

– Lambda: el valor medio de eventos a ocurrir.

– Teniendo en cuenta además que:

Page 70: GPSS Actualizado

Ejemplo 6 : Ejemplo 6 :

Page 71: GPSS Actualizado

Modelo GPSSModelo GPSS

• HORNOS STORAGE 2 Unidad de recursos multiple de tamaño 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

Page 72: GPSS Actualizado

Modelo GPSS ...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

Page 73: GPSS Actualizado

Bloque : SplitBloque : Split• La instrucción 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,HDonde A es el número de transacciones creadas en la cascada (cuantas transacciones saldrán después de que alguna ingrese en el bloque SPLIT. En B se coloca la dirección del bloque al cual se dirige la cascada creada. Nota : Para los operandos subsecuentes véase el manual de referencia correspondiente a la versión que posea ya que están fuera del nivel de este curso.

SPLIT

Page 74: GPSS Actualizado

Bloque: AssembleBloque: Assemble

• La instrucción ASSEMBLE permite simular el ensamble de piezas o construcción 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 número de transacciones que constituyen el paquete.

ASSEMBLE

Page 75: GPSS Actualizado

Bloque: AssignBloque: Assign• Esta instrucción de bloque reemplaza, aumenta o disminuye el contenido de los

parámetros de la transacción que ingrese a el. Su sintaxis es: • ASSIGN A,B,C

Donde A es un operando donde se coloca el número del parámetro donde se colocará la información. 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 parámetro B se ocupa para colocar el valor que se emplea para reemplazar al valor actual a través de la operación especificada en A. El operando C se ocupa para colocar una función modificadora que altera al operando B, como se ilustra en los siguientes ejemplos.

• Ejemplos: ASSIGN 2,7 Reemplaza el contenido actual del parámetro 2 (P2) con el valor 7. ASSIGN 2+,4Reemplaza el contenido en P2 sumándole al valor actual 4 unidades. ASSIGN 3-,10,FN$EXPReemplaza el contenido en P3 con el resultado de restarle al valor actual de P3 la cantidad 10*FN$EXPO

ASSIGN

Page 76: GPSS Actualizado

Bloque : SavevalueBloque : Savevalue• Este bloque define una locación de registro, y permite actualizar,

adicionar o sustraer el valor de una variable de almacenamiento. Su sintaxis es :SAVEVALUE A,BDonde A. Nombre o número del SAVEVALUE. Puede ser seguido porun signo más (+) o un signo menos (-) para indicar adición o sustraccióndel valor existente. El operando puede ser un nombre, un entero positivoo un SNA. Obligatorio. B. El valor a ser almacenado adicionado o sustraído. El operando puede ser un nombre, un entero o un SNA. Obligatorio.

Ejemplo:SAVEVALUE Caja_Final,X$CajaCuando una transacción ingresa a este bloque el valor de la variablede almacenamiento Caja es grabado en la variable Caja_Final

reemplazando al valor anterior

SAVEVALUE

Page 77: GPSS Actualizado

Sentencia de control ResetSentencia de control Reset• La instrucción de control RESET se emplea para borrar todos los

resultados estadísticos de la simulación pero conservando la situación actual de las transacciones en los bloques, se emplea después 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 fábrica que produce muebles guardará los muebles inconclusos después 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 estadísticas cuando el sistema inicia como vacío, por tanto, para no tomar en cuenta las estadísticas del inicio puede usar RESET. Su sintaxis es :

• RESETEsta instrucción no posee operandos, se usa en conjunto con START

Page 78: GPSS Actualizado

Sentencia de control ClearSentencia de control Clear

• Esta es una instrucción de control que borra todos los resultados estadísticos colectados a la fecha y además borra la situación actual de las transacciones. Con ella es posible simular las repeticiones necesarias de un programa hasta que se estabilice. Su sintaxis es :

• CLEAREsta instrucción no posee operandos, se usa en conjunto con START.

Page 79: GPSS Actualizado

Sentencia de Control EQUSentencia de Control EQU

• Esta sentencia evalúa una expresión y asigna el resultado a un nombre valuado.

• NOMBREEQU X– Nombre es el nombre valuado que recibirá el

valor. Es requerido.– X es la expresión a ser evaluada. Es

requerida.

Page 80: GPSS Actualizado

Ejemplo de EQUEjemplo 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.

Page 81: GPSS Actualizado

Sentencia de Control INITIALSentencia 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.

Page 82: GPSS Actualizado

Ejemplos de INITIALEjemplos 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 través de una sentencia EQU.

• INITIAL Resultados– Esta sentencia prepara una entidad Matrix previamente

definida y denominada Resultados para usar en una simulación a partir de una matriz sin datos.

Page 83: GPSS Actualizado

Bloque TABULATEBloque TABULATE

• Permite organizar una colección de datos dentro de una entidad TABLE.

• TABULATE A,B– El operando A es el nombre o número de la entidad

tabla. Es obligatorio.– El operando B es el factor de ponderación para los

datos a tabular. Es opcional.• Ej: TABULATE Ventas

– Cuando una transacción ingresa a este bloque se ubica la entidad tabla denominada Ventas, especificada en una sentencia de control y tabula los datos según esta sentencia.

TABULATE

Page 84: GPSS Actualizado

Sentencia de Control TABLESentencia de Control TABLE• Esta sentencia permite definir e inicializar una

tabla de distribución de frecuencias.• NOMBRE TABLE A,B,C,D

– Nombre es el nombre y etiqueta de localización 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 límite superior del primer intervalo de clases.

– El operando C es la longitud de la frecuencia de clase.– El operando D es el número de frecuencias de clase.

Page 85: GPSS Actualizado

Ejemplo de TABLEEjemplo 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 50ventas

Page 86: GPSS Actualizado

1*************** Modelo utilizando parametrizacion ***************2 TIPOS FUNCTION RN5,D50.25,1/0.40,2/0.65,3/0.90,4/1.0,53 TPO_TIPO FUNCTION P$TIPO,L51,10/2,15/3,30/4,45/5,604 COLA4 TABLE Q4,2,2,55*****************************************************************10 GENERATE 10,512 ASSIGN TIPO,FN$TIPOS13 TEST LE Q3,2,SALIR14 QUEUE P$TIPO16 SEIZE P$TIPO18 DEPART P$TIPO20 ADVANCE FN$TPO_TIPO22 RELEASE P$TIPO24 TABULATE COLA425 TERMINATE 126 SALIR TERMINATE

Page 87: GPSS Actualizado

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 finalización de la simulación

Numero de transacciones generadas

Numero de transacciones que salieron del sistemaantes de finalizar la simulación

Page 88: GPSS Actualizado

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY1 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

Fracción del tiempo total de simulaciónEn la que estuvo siendo utilizada la facility

Tiempo promedio de uso de la facilityLongitud máxima de la cola

Longitud de la cola al finalizarla simulacion

Page 89: GPSS Actualizado

Sentencia de control MATRIXSentencia de control MATRIX

• Define una entidad matriz, con un número de filas y columnas específicos.

• NOMBRE MATRIX A,B,C– El Nombre es la etiqueta de localización y nombre de

la matriz. Es requerido.– El operando A no es utilizado.– El operando B es el número de filas de la matriz. Es

requerido.– El operando C es el número de columnas de la matriz.

Es requerido.

Page 90: GPSS Actualizado

Ejemplo de MatrizEjemplo de Matriz• Produccion Matrix ,3,2

– Define una entidad matriz de nombre Producción, 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

Page 91: GPSS Actualizado

Bloque MSAVEVALUEBloque MSAVEVALUE

• Este bloque permite actualizar un elemento de una entidad matriz.

• MSAVEVALUE A,B,C,D– El operando A es el nombre o número de la entidad

matriz. Puede opcionalmente ir acompañado de un signo + o -. Es requerido.

– El operando B es el número de fila. Requerido.– El operando C es el número de columna. Requerido.– El operando D es el valor a ser almacenado,

adicionado o sustraído. Requerido

MSAVEVALUE

Page 92: GPSS Actualizado

Ejemplo de MSAVEVALUEEjemplo de MSAVEVALUE

• MsavevalueVentas+,parte_7,cliente_4,6.25– Cuando una transacción 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.

Page 93: GPSS Actualizado

Bloque LOGICBloque LOGIC• Este bloque cambia el estado de una entidad

switch lógico (semáforo).• LOGIC O A

– El operando O es el operador lógico que puede ser S (set), R (reset) o I (invertir).

– El operando A es el nombre o número de la entidad switch lógico.

• Ej: Logic S represa– Este bloque pone en set o verdadero el estado de la

entidad Represa el cual puede significar abierto o cerrado.

LOGICLOGIC

Page 94: GPSS Actualizado

Ejemplo: Cruce vehicular controlado por Ejemplo: Cruce vehicular controlado por semáforosemáforo

• 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 semáforo. El tiempo entre arribos para los autos en la dirección 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 circulación.

Page 95: GPSS Actualizado

E O

N

S

Page 96: GPSS Actualizado
Page 97: GPSS Actualizado

• 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 semáforo• 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

Page 98: GPSS Actualizado

Bloque MARKBloque MARK

• Este bloque estampa el tiempo de reloj absoluto dentro de la transacción activa o dentro de un parámetro.

• MARK A– El operando A es el número o nombre del parámetro 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 tránsito como la diferencia entre el tiempo de reloj absoluto y el tiempo registrado por el bloque Mark.

• Ej. Mark P2– Cuando una transacción ingresa a este bloque en el parámetro

denominado 2 de la transacción se estampa el tiempo de reloj del sistema AC1.

• Ej. Mark – Cuando una transacción ingresa a este bloque se le estampa el tiempo

de reloj absoluto del sistema AC1.

MARK

Page 99: GPSS Actualizado

y todo lo demás ……