Manual del estudiante de Ingeniería en Sistemas de UTN/Simulación/Software de simulación de eventos discretos/Ejercicio 4 GPSS

De Wikilibros, la colección de libros de texto de contenido libre.

Problema 4[editar]

A un supermercado llegan clientes por 2 puertas. Por la puerta 1, uno cada 2 +/- 1 minutos, y por la puerta 2 cada 45 +/- 15 seg. Los que ingresaron por la puerta 1 demoran 40 +/- 20 segundos en juntarse con los que ingresaron por la puerta 2. Un 30% va a dejar los envases a una empleada que los atiende en 30 +/- 10 seg., el resto sigue el recorrido. El 60% va a fiambrería donde sacan un número por el cual los llaman; el puesto es atendido por 3 empleados y el tiempo de atención es de 100 +/- 45 seg. El resto va a verdulería donde hay un único empleado que atiende en 50 +/- 20 seg. Luego recorren la zona de autoservicio durante 300 +/- 120 seg. Una vez finalizadas las compras se dirigen a una única caja que demora 60 +/- 30 segundos en atenderlos. Al terminar de pagar se retiran del supermercado. Simular de 9 a 13 horas. Y obtener:

  • La cantidad de personas que hay en cola frente a la empleada que recibe los envases, vista por una persona antes de ponerse en la citada cola.
  • El tiempo de permanencia de los clientes en el supermercado.
tiempo       TABLE M1 300,300,25
cantCola     TABLE Q$colaEnv 4,4,10

supermercado STORAGE 10000
fiambres     STORAGE 3

             GENERATE 120,60
             ENTER supermercado
             MARK
             ADVANCE 40,20 ;caminando
             TRANSFER ,entrada2

             GENERATE 45,15
             ENTER supermercado
             MARK
entrada2     TRANSFER 0.3,sigue,irEnvases
irEnvases    TABULATE cantCola
             QUEUE colaEnv
             SEIZE empleada
             DEPART colaEnv
             ADVANCE 30,10
             RELEASE empleada
sigue        TRANSFER 0.6,irVerd,irFiamb
irFiamb      ENTER fiambres
             ADVANCE 100,45
             LEAVE fiambres
             TRANSFER ,compras
irVerd       SEIZE verdulero
             ADVANCE 50,20
             RELEASE verdulero
compras      ADVANCE 300,120
             SEIZE caja
             ADVANCE 60,30
             RELEASE caja
             LEAVE supermercado
             TABULATE tiempo
             TERMINATE

             GENERATE 14400
             TERMINATE 1
;guía
             START 1

Como se ve, para evitar código redundante, se utiliza un TRANSFER incondicional que lleva a la transacción a un bloque ubicado en la secuencia de bloques de otro GENERATE.