Está en la página 1de 109

Wolverine Software Corporation

Alfaomega Grupo Editor

Ayuda de GPSS/H
1 Para comenzar 2 Introduccin a GPSS/H 3 Elementos de GPSS/H 4 Instrucciones de bloque 5 Instrucciones de control 6 Comandos de Debugger 7 Estadsticas de tiempo de espera 8 Modelado de servidores mltiples paralelos 2 7 9 14 17 18 23 25

9 Transferencia de transaccin a bloque no secuencial 29 10 Ampervariables 11 Variables de entrada/salida 12 Parmetros de una transaccin 13 Inicio de la simulacin y corridas mltiples 32 37 43 47

14 Instrucciones de control repetitivas y condicionales 52 15 Nmeros aleatorios y funciones de GPSS/H 16 Funciones 17 Ejemplos y ejercicios 56 59 65

1 Para comenzar
Requerimientos de hardware y software
(para la versin de estudiante)

Una computadora IBM o compatible con CPU 80486DX o mayor. Windows 95/98, Windows ME, Windows NT4 o Windows 2000. Espacio en disco: 3 a 10 MB para GPSS/H y otros paquetes de software, 1-50 MB para los modelos de usuario.

Cmo instalar GPSS/H en el disco duro


GPSS/H (versin de estudiante) se distribuye en disco compacto (CD-ROM). Para instalarlo simplemente inserte el disco en el lector de CD en su computadora. A menos que haya deshabilitado el reconocimiento automtico de insercin, Windows debe iniciar de forma automtica el procedimiento de instalacin. Si el CD no se reconoce en forma automtica, puede correr manualmente el "setup.exe" contenido en el CD. El procedimiento de instalacin de GPSS/H requiere el Microsoft Windows Installer, que est integrado en Windows 2000 y Windows ME, pero no en Windows 95/98 o Windows NT. Para los sistemas que no cuentan con el instalador, setup.exe copiar una versin adecuada del mismo desde el CD al disco duro del sistema. El procedimiento de instalacin lo llevar por una secuencia de cuadros de dilogo que le permiten especificar qu componentes de software desea instalar y en qu parte de sus computadora quiere colocarlos. La carpeta predeterminada es Archivos de Programa/ Wolverine y en las subcarpetas dentro de Wolverine. Si desea elegir una carpeta diferente, puede hacerlo; sin embargo, no debe mover o renombrar las carpetas o archivos en esa carpeta creada por el procedimiento de instalacin. La arquitectura que se ha definido para la carpeta proporciona una manera conveniente de instalar una variedad de productos de Wolverine Software.

Cmo modificar, reparar o eliminar GPSS/H


El Windows Installer proporciona tres acciones posibles para el software instalado: modificar, reparar o eliminar. Se puede usar la opcin de modificar (Modify) para agregar o eliminar componentes de software. Por ejemplo, se proporciona una demostracin del software llamado Proof Animation, junto con GPSS/H. Si elige no instalarlo cuando instale GPSS/H, y despus desea verlo, se puede usar la opcin de modificar. La opcin de reparar (Repair) hace que Windows reemplace archivos instalados en un principio pero que se han corrompido.

La accin de eliminar (Remove) borra todos los archivos de GPSS/H que se instalaron. Para modificar, reparar o eliminar GPSS/H, elija Inicio, Configuracin, Panel de control, Agregar o quitar programas y seleccione GPSS/H de la lista de programas que se despliega. Una vez seleccionado GPSS/H, aparecer un cuadro de dilogo que le da las tres opciones descritas.

Cmo correr un modelo de GPSS/H


Hasta la fecha de este escrito, GPSS/H opera como una aplicacin en modo de texto en Windows y debe llamarse con una lnea de comando. El procedimiento de instalacin, crea iconos en el escritorio para iniciar una sesin de DOS, y coloca una opcin en el men de programas. Para iniciar GPSS/H es necesario introducir un comando.

Panorama global
GPSS/H compila y ejecuta modelos creados por el usuario. Los modelos son archivos de texto ASCII que se crean en un editor de texto o procesador de palabras. Los archivos estn constituidos por Instrucciones de control de GPSS/H, instrucciones de bloque y comentarios. Cuando corre un programa de GPSS/H, deber proporcionar el nombre del archivo que contiene el modelo que desea compilar y ejecutar. Tambin puede especificar los nombres de las opciones que cambian la forma en que se compila y/o ejecuta el modelo.

Creacin compilacin y ejecucin de modelos GPSS/H


Para usar GPSS/H para sus modelos, debe hacer lo siguiente: A. Escribir el modelo en un archivo de texto ASCII usando un editor conveniente. (El WordPad o el Bolc de notas de Windows funcionan bien para archivos pequeos a medianos). Cualquier procesador puede servir siempre que se asegura de guardar los archivos como "solo texto". Si el procesador agrega la extensin ".txt" simplemente renombre el archivo con la extensin ".gps" B. Compile y ejecute el modelo escribiendo gpssh y el nombre del archivo que contiene su modelo.

Un ejemplo
Correremos el modelo de una peluquera, que est en el archivo JOEBARB.GPS. Escriba
GPSSH JOEBARB

y oprima la tecla <ENTER>. Note que no es necesario escribir la extensin ".GPS" porque GPSS/H supone que JOEBARB tiene esta extensin. Deben aparecer en su pantalla mensajes similares a los siguientes:

STUDENT GPSS/H RELEASE 3.20-32 (UG021) FILE: JOEBARB.GPS Pass 1 (with source listing) . . . Pass2 . . . Simulation begins.

Sep 2001 12:37:03

GPSS/H IS A PROPIETARY PRODUCT OF, AND IS USED UNDER LICENSE GRANTED BY WOLVERINE SOFTWARE CORPORATION 2111 EISENHOWER AVENUE ALEXANDRIA, VIRGINIA 22314-4679, USA

Despus de unos segundos aparecer el cursor de DOS. Acaba de ejecutar una corrida de un modelo de GPSS/H! Felicitaciones! Cuando termina la corrida de simulacin, GPSS/H escribe un informe de salida estndar en un archivo llamado JOEBARB.LIS en formato de 132 columnas. Se explicar el significado de la salida de simulacin ms adelante. El archivo de salida se puede ver usando un editor de texto. De otra manera, en el cursor de DOS puede escribir
TYPE JOEBARB.LIS

o
TYPE JOEBARB.LIS | MORE

Esto revisar el contenido del archivo de salida en la pantalla. Si usa el comando TYPE para ver la salida y si la lnea de salida contiene ms de 80 columnas, entonces la lnea continuar en la siguiente columna. Use TYPE JOBARB.LIS | MORE para ver el archivo una pgina a la vez. Tambin puede usar las teclas <CTRL> + <BLOQ NUM> (o <PAUSA>) para detener el desplazamiento; despus oprima cualquier otra tecla para continuar. Es obvio que un buen editor de texto es una mejor alternativa ya que se pueden ver las 132 columnas de salida desplazndose a la derecha. Para imprimir el informe estndar en papel carta, se sugiere establecer la impresora en modo condensado o comprimido, o en algn otro tipo pequeo que imprima lneas de 132 caracteres por 8.5 pulgadas. Vea en el manual de la impresora las instrucciones.

Qu pasa cuando compila y corre un modelo?


Al compilar y correr un modelo de GPSS/H aparecen ciertos mensajes en la pantalla. En esta seccin se explicarn esos mensajes. Recuerde que cada modelo de GPSS/H tiene un NOMBRE DE ARCHIVO FUENTE. El archivo fuente es un archivo de texto que contiene el modelo. Un modelo de GPSS/H consiste en instrucciones de bloque, instrucciones de control y direcciones para el compilador. Cuando GPSS/H inicia la compilacin y ejecucin, uno de los mensajes que aparecen en la pantalla es

Pass 1 (with source listing) . . .

Durante esta etapa, GPSS/H lee el archivo fuente, verifica la sintaxis y produce un listado fuente. Tambin asigna valores numricos a los smbolos (es decir, etiquetas de instrucciones, nombres de instalaciones, etctera) usados en el modelo. El mensaje que se muestra en la pantalla es
Pass 2 . . .

Durante "pass 2", GPSS/H compila el modelo en una forma adecuada para su ejecucin rpida. Tambin asigna la memoria y se prepara para ejecutar el modelo. Si no encuentra errores, aparece el siguiente mensaje.
Simulation begins.

Esto significa que GPSS/H est corriendo el modelo. Cuando termina la corrida de simulacin de JOEBARB, GPSS/H produce un informe estndar. Si ocurre un error durante la ejecucin, entonces se genera un mensaje informativo tanto en la pantalla como en el informe de salida. Este informe se escribe en un archivo con el mismo nombre del archivo fuente, pero con extensin ".LIS" (JOEBARB.LIS en este caso).

Limitaciones de tamao de la versin de estudiante de GPSS/H


Los errores ms comunes en una corrida al usar la versin de estudiante de GPSS/H involucran un conjunto de limitaciones. Esta versin tiene las siguientes limitaciones de tamao: 125 bloques de GPSS/H 250 instrucciones en total (que incluyen instrucciones de bloque y de control pero no incluyen comentarios o lneas adicionales de instrucciones largas). Hasta 32 720 bytes de almacenamiento COMMON.

Si se corre un modelo que excede estos lmites, aparecer un mensaje de error general en la pantalla que establece que se excedi un lmite. El mensaje de error tambin especifica cul de los tres lmites est excedido. Por ejemplo, si se corre un modelo que contiene ms de 125 bloques, aparecer el siguiente mensaje:
ERROR: STUDENT VERSION IS LIMITED TO 125 BLOCKS LIMITS OF STUDENT VERSION EXCEEDED - RUN TERMINATED

Si se llega al lmite de almacenamiento COMMON, aparece el error 411 en la pantalla:


Error 411 - Out of COMMON - Add/change REALLOCATE Stmt?

"Out of COMMON" significa que el modelo ha agotado la memoria comn predeterminada que usa cada modelo al ejecutarse. La versin de estudiante tiene acceso a 10 000 bytes de COMMON, que es suficiente para cerca de 100 transacciones simultneas. Una transaccin es la "unidad de trfico" en el modelo. Si se juntan demasiadas, ver el error 411. Las transacciones se pueden acumular debido a un error de lgica o a la complejidad del modelo.
5

Algunos modelos necesitan ms de 10 000 bytes de COMMON para correr hasta terminar. Si es as, se puede usar la opcin MAXCOM o la instruccin RELLOCATE. La eleccin depende ms que nada de la preferencia personal. MAXCOM domina a RELLOCATE si se usan ambas. La opcin MAXCOM se usa en la lnea de comando:
GPSSH JOEBARB MAXCOM

MAXCOM provoca que GPSS/H asigne el mayor COMMON que puede, hasta 32 720 bytes para la versin de estudiante. La cantidad real de COMMON que puede asignar MAXCOM depende de la complejidad del modelo. No depende de la configuracin de la computadora o de otros paquetes de software instalados. RELLOCATE puede usarse en el modelo para aumentar COMMON. RELLOCATE requiere que se especifique una cantidad exacta. La sintaxis de RELLOCATE es
RELLOCATE COM, bytes

El operando A contiene "COM" que es el cdigo de GPSS/H para COMMON, y el operando B especifica el nmero de bytes que se desea asignar en la memoria comn. La instruccin RELOCATE se puede colocar en cualquier lado antes del final del modelo, pero ponerla cerca del principio har mucho ms sencillo el acceso si es necesario un cambio. Si RELLOCATE no puede obtener la cantidad de memoria comn solicitada, la compilacin del modelo falla con un mensaje que indica justo cunta memoria en COMMON se hubiera obtenido. Esto permite que intente de nuevo en seguida. Por ejemplo, RELLOCATE COM, 20000 duplicar el valor predeterminado para COMMON. Si el modelo corre hasta terminar con 10 000 bytes de COMMON, debe correr el doble de tiempo al duplicar la cantidad de COMMON.

2 Introduccin a GPSS/H
Originalmente desarrollado por Geoffrey Gordon en IBM a principios de la dcada de 1960, GPSS ha disfrutado de popularidad continua al pasar los aos. Los conceptos bsicos han demostrado una gran flexibilidad y poder suficiente para el modelado de una amplia variedad de sistemas complejos. GPSS son las iniciales de General Purpose Simulation System que es un sistema de simulacin de propsito general. El GPSS/H es una versin mejorada de GPSS desarrollada por Wolverine Software Corporation. Fue liberado en 1977 para computadoras mainframe de IBM; con una versin para MS-DOS en 1988. El GPSS/H tiene numerosas extensiones de lenguaje que eliminaron las limitaciones de las versiones anteriores de GPSS. (Tambin est disponible una versin de GPSS/H para estaciones de trabajo Sun SPARC.) En estas secciones se explorar cmo se ve el mundo desde el punto de vista de GPSS/H y se introducirn los conceptos esenciales y los elementos del lenguaje.

Punto de vista de GPSS/H


El modelador GPSS/H ve el sistema que se quiere modelar desde el punto de vista de entidades que se mueven a travs del sistema. Estas entidades dinmicas, llamadas transacciones, se mueven por el sistema de un bloque a otro, donde un bloque representa una accin o un evento que afecta a la transaccin misma y a otras entidades. La coleccin de bloques representa el sistema completo y se llama diagrama de bloques. Cada bloque de este diagrama corresponde exactamente a una instruccin de bloque en el archivo fuente. Por ejemplo, una transaccin puede representar un cliente en la caja registradora de un supermercado. GPSS/H tiene un bloque que puede simbolizar la llegada de un cliente a una caja. Este bloque se llama GENERATE. GPSS/H; tambin cuenta con bloques para representar el tiempo que tarda un cliente en la caja (bloque ADVANCE), y para simbolizar la salida de un cliente del sistema (bloque TERMINATE). Las transacciones suelen representar entidades temporales y terminan cuando salen del sistema. Sin embargo, en algunos modelos, las transacciones pueden permanecer en el sistema durante toda la simulacin. Es importante saber que se pueden representar muchas transacciones de manera simultnea en un diagrama de bloques. Dependiendo del tipo de bloque, una o ms transacciones pueden estar en un bloque al mismo tiempo. Cuando una transaccin espera un recurso ocupado o que alguna condicin del sistema cambie, GPSS/H automticamente adopta la disciplina de cola de la prioridad ms alta primero, o de primero en llegar, primero en salir. Adems de las transacciones, existen otras clases de entidades en GPSS/H que se dividen en tres tipos: - Recursos (instalaciones y almacenes) que representan la capacidad limitada de los recursos.

- Entidades computacionales (funciones y ampervariables) que se usan para clculos y la representacin de valores y relaciones numricas. - Entidades estadsticas (tablas y colas) que recolectan informacin estadstica con caractersticas de inters en el sistema. Por ejemplo, el cajero del supermercado es un recurso con capacidad de 1. GPSS/H, proporciona una entidad interna, la instalacin llamada Facility, para modelar un recurso unitario. El bloque SEIZE representa una transaccin que captura una instalacin (facility), y el bloque RELEASE representa su liberacin. Existen 68 bloques en GPSS/H. Algunos se usan con ms frecuencia que otros, y una coleccin ms pequea (de unos 15 bloques) puede recordarse con facilidad y tiene el poder suficiente para modelar una amplia variedad de sistemas. (Algunos de los 68 bloques son obsoletos, slo estn incluidos en GPSS/H para conservar la compatibilidad con versiones anteriores.) En resumen, el punto de vista de GPSS/H es la manera estilizada en que un modelador ve los sistemas que modela. Con respecto al punto de vista ms comn del GPSS/H, las transacciones entran en un diagrama de bloques y se mueven de bloque en bloque compitiendo por los recursos escasos. Las transacciones se demoran (casi siempre de forma implcita, debido a condiciones de bloqueo) cuando debe esperar hasta que el recurso queda libre. Tambin se demoran (de manera explcita debido a un bloque ADVANCE) cuando reciben el "servicio" de un recurso. Las transacciones continan movindose de un bloque a otro hasta que termina la simulacin.

Algunos de los bloques ms usados


GENERATE TERMINATE ADVANCE SEIZE RELEASE ENTER LEAVE TEST TRANSFER Crea e introduce una transaccin al modelo Destruye transacciones cuando salen del modelo Retiene a una transaccin un tiempo definido (por ejemplo, tiempo de procesamiento o tiempo de transporte) Captura una instalacin (facility) Libera una instalacin (facility) Captura una o ms unidades de almacenamiento (storage) Libera una o ms unidades de almacenamiento Enva una transaccin a un bloque no secuencial basado en el estado del sistema o de una entidad Enva una transaccin a un bloque no secuencial de forma probabilstica, condicional o incondicional

3 Elementos de GPSS/H
Los elementos bsicos de un modelo GPSS/H son transacciones (transactions), recursos (resources) y otras entidades, bloques (blocks), instrucciones de control (control statements), directivas de compilacin (compiler directives) y atributos numricos estndar (standard numerical attributes o SNA). Las transacciones son entidades dinmicas en el sistema que se modela. Los recursos son entidades estticas en el mismo. Los bloques GPSS/H representan acciones de una transaccin, mientras el diagrama de bloques como un todo describe cmo se procesan las transacciones en el sistema. Las instrucciones de control definen las entidades de GPSS/H usadas en el modelo y dirigen la ejecucin de las instrucciones de bloque. Las directivas de compilacin comunican informacin al GPSS/H que se requiere para compilar el modelo con xito. Los atributos numricos estndar (SNA) son funciones que proporcionan informacin acerca de las entidades y ejecutan cierto tipo de clculos. Se pueden definir automticamente por el GPSS/H o definirse por el usuario.

TRANSACCIONES
Las transacciones (abreviado como XACT) son elementos esenciales en el modelado de GPSS/H. Se crean para ejecutar ciertas tareas en el modelo. En la mayora de los modelos, al acabar cierta tarea la transaccin deja el sistema y se destruye. Estas transacciones son entidades temporales. En algunos modelos, uno o ms conjuntos de transacciones pueden no dejar nunca el sistema y se llaman entidades permanentes. En muchas situaciones, una transaccin representa a una persona. Por ejemplo, suponga que se modela el proceso de una caja registradora en un supermercado. Tal vez sea de inters saber cunto tiempo debe esperar, en promedio, para ser atendido. En este caso, el sistema es la caja (junto con la lnea de espera) y las transacciones representan las personas que llegan a la lnea. Una transaccin tambin puede representar un objeto. Suponga que se modela una lnea de ensamble de automviles, y se desea saber el tiempo promedio que toma ensamblar un auto. El sistema ser la lnea de ensamble, y las transacciones sern los automviles en proceso de ensamble. stos actan como transacciones porque son las entidades dinmicas de inters para el sistema. Una vez que se ensambla un vehculo, deja el sistema. Se puede recolectar y analizar la informacin sobre el tiempo que tarda cada automvil en pasar por el sistema. Una transaccin puede tener uno o ms atributos. Un atributo es una caracterstica asociada a una transaccin individual. Por ejemplo, un atributo de un automvil podra ser su color o diseo; un atributo de un comprador en un supermercado podra ser el nmero de artculos que contiene su carro de compras al entrar en la lnea de espera de la caja. En GPSS/H, ciertas transacciones estn definidas internamente y otras las determina el usuario.

En la mayora de los modelos ms complejos, existen varios tipos de transacciones, donde cada uno representa algo diferente. Por ejemplo, suponga que se modela un sistema de una caseta de cobro en una carretera. Autos, camiones y camionetas pasan por la caseta. En este modelo algunas transacciones representan automviles, otras representan camiones y otras, camionetas. Sin embargo, quiz los mismos bloques podran procesar los tres tipos de transacciones. Podra tenerse un atributo definido por el usuario para distinguir el tipo de vehculo y usar ese atributo en los bloques si el procesamiento dependiera de dicho tipo. En otro ejemplo, considere un sistema de tren de transporte. Si se modela tanto la llegada de los pasajeros a la estacin como el movimiento del tren, entonces se puede representar a las personas por transacciones y al tren por transacciones. En este caso, tal vez un conjunto de bloques describa las acciones de los pasajeros y otro conjunto de bloques el movimiento del tren. Es importante que en un sistema complejo, dos transacciones no necesariamente representen lo mismo.

RECURSOS
Los recursos son entidades estticas y permanentes de un modelo de simulacin de GPSS/H. Los recursos nunca abandonan el sistema y no pueden eliminarse. Las transacciones compiten por ellos para realizar ciertas operaciones. Al igual que las transacciones, los recursos pueden ser objetos o personas. Por ejemplo, se puede modelar un cajero como un recurso, cuando una transaccin (comprador) llega a la cola, espera para usar el recurso (cajero) y luego se va. En el ejemplo de la lnea de ensamble de automviles, se puede modelar cada estacin de ensamble como un recurso. En un sistema ms complejo, cada estacin podra tener ms de un recurso. Una estacin de ensamble puede consistir en trabajadores, herramientas y mquinas. Cuando cada transaccin (automvil) pasa por la estacin de ensamble, se requieren los recursos (trabajadores, mquinas y herramientas) para completar el proceso.
GPSS/H tiene dos tipos de recursos: facilities y storages. Las facilities se usan para modelar recursos de una unidad. El cajero, en el ejemplo del supermercado, es un recurso de tipo facility. Las storages se usan para modelar recursos mltiples y paralelos. Por ejemplo, suponga que un automvil requiere una operacin de ensamble que puede realizar cualquiera de tres maquinas idnticas. Se pueden modelar las mquinas como un recurso storage con capacidad 3.

BLOQUES EN GPSS/H
En GPSS/H, los bloques se usan para describir cmo se mueve una transaccin por el sistema. Un bloque representa una accin o evento especfico que puede ocurrir en el sistema. Una combinacin de bloques representa el procesamiento de una transaccin que se mueve por un sistema. Este proceso suele llamarse la lgica del modelo de simulacin.

10

Cada instruccin de bloque en el modelo GPSS/H tiene una representacin grfica. La secuencia de bloques que muestra el flujo del proceso se llama diagrama de bloques. Considere el ejemplo de la peluquera de Joe. Los clientes que quieren un corte de pelo llegan a la peluquera cada 186 minutos; cuando un cliente llega, toma 0.5 minutos en colgar su abrigo. Si Joe est ocupado, el cliente espera su turno. Cuando se desocupa Joe le hace el corte en 153 minutos. Despus el cliente sale de la peluquera. La figura a la derecha muestra el diagrama de bloques para el modelo en GPSS/H de la peluquera de Joe. En este modelo, la transaccin representa un cliente. Las transacciones se crean e introducen al modelo con el bloque GENERATE. Joe, el peluquero, se representa por una Facility, con un solo recurso. Al llegar el cliente (transaccin), entra al bloque ADVANCE y espera 0.5 unidades de tiempo. La demora en este bloque representa el tiempo en que el cliente cuelga su abrigo. Cuando pasan 0.5 unidades de tiempo, la Transaccin intenta capturar (SEIZE) el recurso llamado Joe. Si Joe se encuentra ocupado, la transaccin demora ms tiempo en el bloque ADVANCE hasta que Joe est disponible. Cuando la transaccin captura al recurso, pasa del bloque SEIZE a un segundo bloque ADVANCE donde permanece 153 unidades de tiempo simulado. Esta accin de permanecer en el bloque, representa el tiempo en que Joe realiza el corte. Cuando transcurre este tiempo, la transaccin libera (RELEASE) a Joe de su captura y abandona la peluquera va el bloque TERMINATE. GPSS/H mueve automticamente la siguiente transaccin (si la hay) a la instalacin llamada JOE.
GENERATE 18,6

ADVANCE 0.5

SEIZE

JOE

ADVANCE 15,3

RELEASE

JOE

TERMINATE 1

INSTRUCCIONES DE CONTROL EN GPSS/H


Las instrucciones de control se usan para indicar a GPSS/H cmo llevar a cabo la simulacin. Por ejemplo, se puede dar la instruccin a GPSS/H de terminar la simulacin despus de 24 horas de tiempo simulado, o bien, despus de que 100 transacciones hayan dejado el sistema. Las instrucciones de control tambin se usan para definir entidades (storages y ampervariables). A diferencia de los bloques, las instrucciones de control no tienen representacin grfica. Para el ejemplo de la peluquera, las instrucciones de control podran ser:
SIMULATE START 100 END

La instruccin de control SIMULATE indica a GPSS/H que ejecute el modelo despus de la compilacin. La instruccin de control START define la longitud de la corrida de
11

simulacin e inicia la ejecucin del diagrama de bloques. La instruccin END indica el final del archivo fuente que contiene el modelo de GPSS/H. Adems, GPSS/H cuenta con instrucciones de control que incrementan su poder y flexibilidad como lenguaje de simulacin. Ejemplos de estas instrucciones son la construccin de ciclos (DO, ENDDO) y la construccin condicional (IF, ELSEIF, ELSE, ENDIF).

DIRECTIVAS DE COMPILACIN
Las directivas compiladoras son instrucciones que comunican a GPSS/H la informacin vital para la compilacin del modelo, pero no dan como resultado una accin especfica. Por ejemplo, la directiva INTEGER declara que las Ampervariables son de valores enteros.

ATRIBUTOS NUMRICOS ESTNDAR (SNA).


Los atributos numricos estndar (SNA) son atributos asociados con cada miembro de una clase de entidades. Son mantenidos por GPSS/H y puede hacerse referencia a ellos dentro del modelo GPSS/H para implementar la lgica del sistema que se modela. Los atributos de las transacciones son caractersticas asociadas con una accin. Un atributo de transaccin puede ser predeterminado o definido por el usuario. Un ejemplo de atributo predeterminado es el "Mark Time" de la transaccin. Cuando una transaccin entra al modelo GPSS/H en el bloque GENERATE, GPSS/H registra de manera automtica el tiempo de entrada como el "Mark Time" de la transaccin. El valor del atributo "Mark Time" se puede cambiar con el bloque MARK. El valor se usa haciendo referencia a otro atributo, llamado M1, que es el tiempo de residencia de la transaccin. M1 se calcula de la siguiente manera: tiempo actual (AC1) menos el "Mark Time" de la transaccin. GPSS/H usa algunos atributos de transacciones predeterminados para llevar a cabo la simulacin y son inaccesibles para el modelador. Un ejemplo es el bloque actual de la transaccin, que contiene la informacin de la ubicacin actual de la transaccin en el diagrama de bloques. GPSS/H usa este atributo junto con otros para controlar el avance de una transaccin por el diagrama de bloques. Los atributos de las transacciones definidos por el usuario se llaman parmetros de la transaccin. Se puede establecer el valor de un parmetro con el bloque BLET. El significado y uso de los parmetros est determinado por el modelador con base en el uso que se har de estos parmetros en el modelo. Los atributos de recursos son caractersticas asociadas con los recursos llamados "facilities" y "storages". Por ejemplo, F(JOE) es un SNA que proporciona el estado del recurso "Facility" llamado JOE. El valor de este SNA es 1 si JOE est ocupado, y 0 si est ocioso. Cada bloque en el modelo GPSS/H tiene dos atributos asociados:

12

SNA W(nombre) o W(j)

Descripcin Nmero de transacciones actuales existentes en el bloque con etiqueta <nombre> o en nmero de bloque j. Nmero total de transacciones que han entrado en el bloque con etiqueta <nombre> o nmero j.

N(nombre) o N(j)

Como ejemplos de los SNA de los bloques se tiene W(2) o N(TALLER) En el primer ejemplo, GPSS/H proporciona el nmero actual de transacciones

del bloque nmero 2 del modelo. En el segundo ejemplo, GPSS/H da el nmero total de transacciones que han entrado al bloque con etiqueta TALLER. GPSS/H cuenta con dos SNA que controlan el tiempo simulado. Se llaman Absolute Clock (reloj absoluto) y Relative Clock (reloj relativo). El reloj absoluto (AC1) registra la cantidad total de tiempo simulado desde el inicio de la simulacin. El reloj relativo (C1) controla el tiempo transcurrido desde que se ejecut la ltima instruccin de control RESET. Si RESET no se ejecuta, C1 es igual a AC1. En GPSS/H C1 y AC1 se almacenan como nmeros de doble precisin y punto flotante.

INFORME ESTNDAR DE RESULTADOS


Despus de correr el modelo de simulaciones, GPSS/H crea de manera automtica un informe estndar de resultados que se divide en dos partes. La primera contiene el listado del modelo GPSS/H y la informacin general acerca del modelo (como los nombres de las entidades y las referencias). La segunda es un resumen de los resultados de la simulacin. Esta parte contiene el tiempo de terminacin de la simulacin y la informacin estadstica de las diferentes clases de entidades. A continuacin se dar un resumen organizado de las instrucciones y funciones de GPSS/H y sus caractersticas ms importantes.

13

4 Instrucciones de bloque
GENERATE Crea e introduce una transaccin en el bloque GENERATE. Tiene ocho operandos: A especifica el tiempo medio entre llegadas para las transacciones creadas. Su valor predeterminado es 0. B es un valor numrico (en una distribucin uniforme) que especifica la dispersin a partir del tiempo medio entre llegadas. Su valor predeterminado es 0. A y B especifican una distribucin uniforme con lmite inferior A-B y lmite superior A+B. Todos los valores reales entre estos lmites son igualmente probables. El nmero obtenido es el tiempo desde que una transaccin sale del bloque GENERATE hasta que otra llega. C especifica el tiempo en el que llega la primera transaccin al bloque GENERATE. Si se omite, A y B determinan el tiempo de la primera llegada. D especifica el lmite de transacciones que se crearn. Si se omite no habr lmite. Si se da un valor a D, entonces cuando mucho llegarn D transacciones al bloque GENERATE. Ejemplos:
GENERATE GENERATE GENERATE 4.1 4.1, ,3 4.1,2.1,,10 Crea una transaccin cada 4.1 unidades de tiempo, a menos que se haya negado una entrada. Crea una transaccin cada 4.1 unidades de tiempo, con la primera llegada en el tiempo 3. Las transacciones se crean cada 4.12.1 unidades de tiempo (o entre 2 y 6.2 unidades) donde los tiempos entre llegadas tienen distribucin uniforme. En este bloque GENERATE se crear un mximo de 10 transacciones. La nica transaccin llega en el tiempo 0. Llama a una funcin que especifica una distribucin exponencial para los tiempos entre llegadas.

GENERATE GENERATE

,,,1 RVEXPO(2,8.5)

Restriccin No se pueden tener dos bloques GENERATE consecutivos y no hay bloques antes de GENERATE, excepto uno de TERMINATE o algn otro que detenga o desve la transaccin. Representacin
GENERATE A,B C,D

14

TERMINATE Destruye las transacciones. Representa una unidad de trabajo que sale del sistema Tiene un operando Se usa para disminuir el valor de contador de terminacin de la simulacin. Su valor predeterminado es 0. La instruccin de control START establece el valor inicial de contador de terminacin. Cuando el valor del contador de terminacin llega a cero, la simulacin se detiene. Ejemplos
TERMINATE TERMINATE 1 Cuando una transaccin entre en este bloque, se destruye y el valor del contador de terminacin disminuye en 1. El valor del operando es 0 por lo que no disminuye el contador aunque se destruya la transaccin.

Representacin
TERMINATE A

ADVANCE Mantiene una transaccin durante un tiempo especificado. Se usa para representar el tiempo de procesamiento o de viaje de una unidad de trabajo. Tiene dos operandos A especifica el tiempo medio que una transaccin se mantendr en este bloque (con distribucin uniforme). B establece la dispersin arriba y abajo del tiempo medio de permanencia. El valor generado ser un nmero aleatorio en A B. El valor predeterminado de los dos operandos es 0. Ejemplos
ADVANCE 2.1 La transaccin permanece 2.1 unidades de tiempo. Cuando transcurren, la transaccin procede al siguiente bloque; si se le niega el acceso puede quedarse en ADVANCE. La transaccin permanece en el bloque un tiempo elegido al azar en el intervalo (2.75, 4.75). La transaccin no se demora. RVTRI(4,6.0,7.5,15.0) Llama a la funcin interna que especifica que la distribucin no es uniforme.

ADVANCE ADVANCE ADVANCE

3.75,1

Representacin
ADVANCE A,B

15

SEIZE Este bloque modela la captura de una instalacin. Tiene un operando El operando especifica el nombre o nmero de la instalacin. No hay valor predeterminado, por lo que siempre debe especificarse. A menos que sea necesario (en modelos avanzados) se recomienda usar slo nombres simblicos.
SEIZE SEIZE SERVER 1 La instalacin que se captura se llama SERVER. Una transaccin intentar capturar la instalacin nmero 1.

Si la instalacin est ocupada, la transaccin espera en el bloque anterior. Cuando se desocupa, la transaccin hace un nuevo intento y slo entra al bloque SEIZE cuando tiene xito.

Representacin
SEIZE A

RELEASE Libera la instalacin especificada de su captura. Cambia el estado de la instalacin a ociosa para que otra transaccin pueda capturarla. Tiene un operando Especifica el nombre o nmero de la instalacin que va a liberar. No tiene valor predeterminado, por lo que debe especificarse. Ejemplo
RELEASE SERVER La instalacin SERVER se libera y queda libre.

Representacin
RELEASE A

16

5 Instrucciones de control
SIMULATE Indica a GPSS/H que el modelo debe ejecutarse una vez realizada la compilacin. Si no se especifica, GPSS/H verifica el modelo en busca de errores, pero no lo ejecuta. SIMULATE suele escribirse al principio del modelo cuando se desea una corrida de simulacin.

START Establece el valor del contador de terminacin de la simulacin, crea la primera transaccin para cada bloque GENERATE (con lo que inicia la corrida) y al terminar la simulacin imprime el informe estndar de salida. Tiene cuatro operandos A establece el valor inicial del contador de terminacin (TG1) y debe ser mayor que 0. B, C, D Estos operandos se usan para modelos avanzados y no se describirn aqu. Cuando GPSS/H encuentra START, ocurren los siguiente pasos: 1. GPSS/H establece el valor del contador TG1 igual al valor del operando A. 2. GPSS/H introduce transacciones en el modelo en todos los bloques GENERATE, lo que inicia (START) la ejecucin. 3. Cuando TG1 es igual o menor que 0, GPSS/H detiene la simulacin e imprime el informe de resultados.

END Indica el final de un modelo de GPSS/H. No tiene operandos. Debe ser la ltima lnea del modelo de GPSS/H.

17

6 Comandos de Debugger
Una de las caractersticas ms tiles de GPSS/H es su analizador o "debugger" interactivo. Trabaja en ambiente de ventanas y proporciona al modelador comandos poderosos para controlar por completo la ejecucin de un modelo y desplegar el estado de las transacciones y los valores de los atributos durante una corrida de simulacin. Se puede solicitar la entrada al debugger desde la ventana de MS DOS con:
GPSSH <nombre de archivo> TV

Donde <nombre del archivo> corresponde al nombre del archivo fuente de GPSS/H. Al especificar "TV" GPSS/H comenzar la compilacin del modelo. Despus de la compilacin, cuando inicia la simulacin, aparecer la pantalla del debugger. Esta pantalla se divide en tres ventanas: la ventana fuente, la ventana de estado y la ventana de dilogo. Con las cuatro flechas y las diez teclas de funciones se pueden manipular las ventanas y moverse por las lneas. Los dos puntos (:) que aparecen en la ltima lnea indican que GPSS/H est esperando un comando de debugger. A continuacin se resumen los comandos ms comunes de debugger. BREAK Establece puntos de interrupcin de la ejecucin de un modelo cuando una transaccin intenta entrar a uno de los bloques especificados. Cuando se encuentra un BREAK se resalta el bloque en el que ocurri en la ventana fuente y aparece un mensaje en la ventana de dilogo que identifica la transaccin y el bloque involucrados. La ventana de estado tambin muestra informacin de esta transaccin. Ejemplos
BREAK BREAK BREAK LINE 5 LINE 5 Establece un punto de pausa en el bloque con etiqueta LINE. Establece un punto de pausa en el bloque con nmero 5. Se pueden establecer varios puntos de pausa con el mismo comando BREAK. Aqu se suspende en el bloque con etiqueta LINE y en el bloque con nmero 5.

UNBREAK Elimina los puntos de interrupcin establecidos por BREAK. Tiene el mismo formato que BREAK. Ejemplos
UNBREAK UNBREAK UNBREAK LINE 5 LINE 5 Elimina BREAK del bloque con etiqueta LINE. Elimina BREAK del bloque con nmero 5. Es posible eliminar BREAK de varios bloques con un solo comando.

18

TRAP y UNTRAP

Este comando especifica cuatro tipos de condiciones especiales con las cuales debe suspenderse temporalmente la ejecucin del modelo. Una interrupcin puede ser global o bien local. La condicin establecida por TRAP es global y permanece activa hasta que se elimina con UNTRAP. Las cuatro condiciones de TRAP son CLOCK, XACT, NEXT y SYSTEM. Slo se darn detalles de las primeras dos. Los valores posibles para CLOCK estn dados por el valor del tiempo absoluto del reloj. Para XACT se especifica la transaccin que se desea interrumpir. Despus de la pausa el debugger queda en espera de un comando. Ejemplos
TRAP CLOCK=50 Establece que GPSS/H debe interrumpir la ejecucin del modelo cuando el reloj llegue o exceda por primera vez el tiempo 50. Slo una condicin de TRAP puede tener efecto a la vez. Coloca una bandera en la transaccin nmero 5. Cada vez que se activa esta transaccin, se suspende la ejecucin del modelo. Puede haber cualesquier condiciones XACT simultneas. Elimina TRAP para el tiempo del reloj absoluto. Elimina TRAP para la transaccin nmero 5.

TRAP

XACT=5

UNTRAP UNTRAP

CLOCK XACT=5

NEXT y SYSTEM Cuando NEXT est activo, siempre que la transaccin inactiva intenta iniciar un movimiento, GPSS/H suspende la simulacin y despliega un mensaje con informacin sobre esta transaccin. Cuando SYSTEM est activo, si la transaccin que se est moviendo en el diagrama de bloques se detiene (espera), GPSS/H suspende la simulacin y despliega la informacin del estado de esta transaccin y espera un comando. Las suspensiones con NEXT y SYSTEM se eliminan con el comando UNTRAP.

RUN, CONTINUE y STEP Estos tres comandos se usan para iniciar o reanudar la ejecucin de un modelo. RUN inicia (o reanuda) la ejecucin. El modelo corre hasta que se encuentra un BREAK o un TRAP; estos ltimos permanecen activos hasta que se eliminan con los comandos UNBREAK o UNTRAP.

19

Ejemplos
RUN Es la forma ms comn. Inicia o reanuda la ejecucin del modelo. La ejecucin contina hasta encontrar un BREAK o TRAP global o hasta que la simulacin termina. LINE 5 CLOCK=50 XACT=5 GPSS/H inicia la ejecucin del modelo y al mismo tiempo se establece un punto de pausa en el bloque con etiqueta LINE. GPSS/H inicia la ejecucin del modelo y se establece un punto de interrupcin en el bloque nmero 5. Iniciada la ejecucin existe una condicin de pausa cuando el reloj absoluto llega o excede por primera vez el tiempo 50. Iniciada la ejecucin, se coloca una bandera en la transaccin 5 como entidad de interrupcin.

RUN RUN RUN RUN

Nota: el comando RUN tambin puede establecer interrupciones globales con NEXT y SYSTEM.

CONTINUE Es un comando similar a RUN en cuanto a que reanuda la ejecucin de un modelo. Tambin pueden establecerse condiciones de interrupcin, pero sern locales, lo cual significa que las interrupciones tienen efecto durante la ejecucin del comando CONTINUE. Ejemplos
CONTINUE Inicia o reanuda la ejecucin del modelo. No establece pausas. La ejecucin contina hasta encontrar interrupciones globales o hasta que la simulacin termina. LINE 5 Inicia o reanuda la ejecucin del modelo al mismo tiempo que establece un punto de pausa local en el bloque LINE. Inicia o reanuda la ejecucin del modelo al mismo tiempo que establece un punto de pausa local en el bloque nmero 5.

CONTINUE CONTINUE

STEP El comando STEP inicia o reanuda la ejecucin del modelo. Sin embargo ejecuta slo un nmero especificado de bloques. Ejemplos
STEP STEP 5 Indica a GPSS/H que la ejecucin del modelo debe interrumpirse despus de ejecutar 5 bloques. Indica a GPSS/H que la ejecucin del modelo debe interrumpirse despus de ejecutar 5 bloques.

20

DISPLAY Con este comando se puede mostrar una variedad de informacin en la pantalla. La informacin incluye estadsticas de los miembros de una entidad (instalacin, colas, etc.), del estado del modelo (tiempo simulado), del estado del debugger (puntos de interrupcin activos) y de los atributos de las transacciones. El formato de DISPLAY para mostrar la informacin de las clases de entidades y sus miembros es
DISPLAY eclase(miembro, ... )
Clases de entidades Cdigo

BLOQUES BLO donde eclase es el cdigo de una de las clases INSTALACIONES FAC de entidades, segn se muestra en el cuadro a COLAS QUE la derecha. Se puede especificar ms de un miembro. La lista de miembros debe ir entre ALMACENAMIENTOS STO parntesis separados por comas. Si no se AMPERVARIABLES AMP especifica una lista se despliegan todos los TABLAS TAB miembros de la clase de entidades. (La lista del cuadro no est completa.) Excepto por la clase de AMPERVARIABLES, la informacin mostrada para cada clase es similar a la dada en la salida de resultados estndar de esa clase.

Ejemplos
DISPLAY BLO Se piden los contadores completos de los bloques; es decir, el nmero actual y el acumulado de transacciones en cada bloque. Pide los contadores de los bloques 1 y LINE. Solicita informacin sobre las instalaciones 2 y SERVER. Si no se han usado por una transaccin antes del comando, no se despliegan las estadsticas. Solicita la informacin de todas las instalaciones. Se desplegar la informacin de la salida estndar de la simulacin. Este informe es extenso, no debe usarse a menos que sea necesario. Solicita la informacin de todas las condiciones de interrupcin que estn activas, y los valores de los relojes absolutos y relativos. Solicita la informacin concerniente a la transaccin nmero 5. Pide la informacin sobre las transacciones nmero 2 y 10.

DISPLAY DISPLAY

BLO (1, LINE) FAC (2, SERVER)

DISPLAY DISPLAY

FAC OUTPUT

DISPLAY

BREAKPOINTS CLOCKS

DISPLAY DISPLAY

XACT=5 XACT=2 XACT=10

AT El comando AT establece un punto de interrupcin global en un bloque y establece un conjunto de comandos de debugger que ejecutar GPSS/H cuando se interrumpa la corrida en un punto de pausa. Cuando una transaccin intente
21

entrar en un bloque con una interrupcin AT, GPSS/H procesar de manera automtica los comando asociados del debugger. Los comandos establecidos con AT se eliminan con el comando UNBREAK. El formato de un comando AT es
AT <nombre de bloque ...> : lista de comandos :

END

Ejemplo Como ejemplo suponga que se desea desplegar la informacin de la instalacin SERVER siempre que una transaccin entra al bloque nmero 2. Se escribe
AT 2

Se oprime <RETURN>. El cursor cambia a @, lo que significa que GPSS/H est listo para recibir la lista de uno o ms comandos. Escriba
DISPLAY FAC(SERVER)

GPSS/H queda en espera de otro comando del debugger. Oprima <RETURN> despus de la @ para terminar la lista de comandos.

22

7 Estadsticas de tiempo de espera


Esta seccin expone la manera de recolectar las estadsticas de las lneas de espera, los tiempos de trnsito y otras demoras y bloqueos dentro del modelo. Estas estadsticas se pueden recolectar con una entidad QUEUE que funciona con un par de bloques QUEUE y DEPART. El bloque SEIZE hace que las transacciones se demoren o formen lneas de espera. El bloque QUEUE inicia una coleccin de estadsticas para una cola que ya existe o, de manera ms general, la coleccin de estadsticas de los tiempos de trnsito de las transacciones entre cualesquiera dos puntos del modelo. QUEUE y DEPART Amplan la recoleccin y el informe de estadsticas que reportan las instalaciones y otras entidades. Siempre se usan como un par lgico para registrar estadsticas. Una transaccin no puede salir del modelo si todava es miembro de QUEUE. Puede haber cualquier nmero de bloques entre QUEUE y DEPART. Si se desea conocer las estadsticas del nmero de transacciones entre los puntos A y B del modelo o el tiempo que pasan en trnsito del punto A al B, se pone un bloque QUEUE en el punto A y un bloque DEPART en el punto B. QUEUE tiene dos operandos A especifica el nombre de la cola a la que se unir una transaccin. B especifica el nmero de unidades que se van a agregar a la cola. Se usa para recolectar estadsticas de tiempo ponderadas. Esto es, al recolectar las estadsticas de tiempo, una transaccin tiene ms peso que otra. El valor predeterminado es 1 y significa que todas las transacciones tienen el mismo peso. Representacin
QUEUE B A

DEPART tiene dos operandos A especifica el nombre de la cola de la que saldr la transaccin. Este operando debe especificarse. B especifica el nmero de unidades que debe restarse de la cola. El valor predeterminado de B es 1. Representacin
QUEUE B A

23

Cuando una transaccin entra a un bloque QUEUE, GPSS/H hace lo siguiente: 1. asigna a la transaccin como miembro de la cola dada por A de QUEUE, y 2. registra el tiempo en el que la transaccin entra a la cola. Cuando una transaccin entra al bloque DEPART, GPSS/H hace lo siguiente: 1. elimina la transaccin como miembro de la cola dada por A de DEPART, y 2. calcula el tiempo que la transaccin pas en la cola con la diferencia entre el valor absoluto de CLOCK y el tiempo en que la transaccin entr a la cola. Una configuracin comn para estos dos bloques sera
QUEUE SEIZE DEPART LINE SERVER LINE

Cuando la transaccin entra al bloque QUEUE con nombre de la cola LINE, GPSS/H la asigna como miembro de la cola. Despus, la transaccin intenta entrar al bloque SEIZE. Si puede pasa a SEIZE y DEPART sin que transcurra tiempo de simulacin. El tiempo que pasa en la cola LINE se registra como 0. Si no puede entrar a SEIZE, permanece en QUEUE y, por lo tanto, pasa un tiempo en la cola LINE. La transaccin hace otro intento para entrar a SEIZE cuando la instalacin SERVER se libera. QUEUE no tiene restriccin de capacidad por lo que nunca rechaza la entrada de una transaccin. Puede haber ms de una transaccin en el bloque QUEUE compitiendo por la instalacin SERVER. Entonces, de modo conceptual, se forma una cola o lnea de espera en este bloque. Una transaccin que entr a QUEUE es un miembro de esta entidad, sin importar en qu bloque est, hasta que entre al bloque asociado DEPART. SNA asociados con QUEUE
SNA Q(nombre) o Q(j) QA(nombre) o QA(j) QC(nombre) o QC(j) QM(nombre) o QM(j) QT(nombre) o QT(j) QX(nombre) o QX(j) Descripcin Contenido actual de la cola llamada <nombre> o con nmero j. Contenido promedio de la cola llamada <nombre> o con nmero j. Nmero total de transacciones que entran a la cola llamada <nombre> o con nmero j. Nmero mximo de transacciones en la cola llamada <nombre> o con nmero j. Tiempo promedio de residencia de una transaccin en la cola llamada <nombre> o con nmero j. Tiempo promedio de residencia de una transaccin o transacciones que experimenta un tiempo de residencia cero en la cola llamada <nombre> o con nmero j. Nmero de transacciones que experimenta un tiempo de residencia cero en la cola llamada <nombre> o con nmero j.

QZ(nombre) o QZ(j)

24

8 Modelado de servidores mltiples paralelos


En esta seccin se introduce la entidad de almacenamiento Storage. Esta entidad proporciona una manera de modelar servidores mltiples en paralelo. El nmero de servidores es la capacidad de almacn (Storage), y cada servidor es una unidad de almacn. Una entidad de almacn puede usarse para representar un servidor. Otro uso comn de una entidad de almacn es modelar la capacidad limitada de la lnea de espera, donde una unidad de almacn representa un espacio en la cola. Dicha entidad tambin se puede usar para modelar un grupo de mquinas idnticas (o similares), una bada transportadora y un almacn o bodega. En trminos de GPSS/H, un almacn es un recurso que tiene la capacidad de servir transacciones mltiples simultneas. La mencionada entidad se usa en un modelo con el par de bloques ENTER-LEAVE, que de muchas formas son anlogos a los bloques SEIZE-RELEASE usados con una instalacin. La capacidad de almacn se define por la instruccin de control STORAGE.

Declaracin de la capacidad de almacn


Si no se usa la instruccin de control STORAGE para una entidad dada, el almacn tiene una capacidad "infinita"; es decir, su capacidad se establece como el entero ms grande (de 32 bits), 2 147 483 647. El formato de la instruccin de control STORAGE es
STORAGE S(snombre), scap/ . . .

donde snombre es el nombre o nmero de una entidad de almacn y scap es su capacidad. El /... significa que se pueden definir mltiples entidades en la misma lnea, cada una separada por una diagonal (/). Observe que el nombre o nmero se pone entre parntesis. Ejemplos:
STORAGE STORAGE S(BUFFER), 2 S(TOOLS), 3/S(5),4

ENTER El bloque ENTER modela la captura de una o ms unidades de un almacn. Tiene dos operandos. A especifica el nombre o nmero de la entidad de almacn. B especifica el nmero de unidades requeridas por una transaccin. El valor predeterminado del operando B es 1. En muchas aplicaciones el operando B no se usa.
25

Representacin
ENTER B A

Ejemplos
ENTER ENTER BUFFER TOOLS, 2 Una transaccin pide una unidad de BUFFER. Una transaccin pide dos unidades de TOOLS; si la transaccin no puede capturar las dos unidades, espera en el bloque anterior hasta que pueda capturar dos unidades al mismo tiempo. En el caso de que haya slo una unidad libre y otra transaccin que pide slo una unidad desde otra parte del diagrama de bloques, se permitir que esa transaccin entre al bloque antes que la que pide dos unidades.

En un modelo con la siguiente secuencia de bloques:


: RELEASE ENTER : WKR1 WKR2

Cuando una transaccin se mueve a RELEASE, deja libre la instalacin WKR1. La transaccin intenta capturar una unidad del almacn WKR2. Si tiene xito, se mueve al bloque ENTER. Si no, intentar de nuevo cuando se libere una unidad de WKR2. Mientras tanto se queda en RELEASE, pero no tiene efecto en el almacn WKR1. Si ms de una transaccin espera el almacn WKR2, todas forman una cola en RELEASE, que automticamente tiene una disciplina de servicio PEPS (primero en entrar, primero en salir).

LEAVE Este bloque libera una o ms unidades de STORAGE. Tiene dos operandos A y B que poseen el mismo significado que los operandos del bloque ENTER. A especifica el nombre de la entidad de almacn. B especifica el nmero de unidades de la entidad de almacn que se liberan. El valor predeterminado de B es 1. LEAVE nunca rehsa la entrada a una transaccin. Sin embargo, si se hace un intento de salir (LEAVE) de un almacn vaco (o salir con B mayor que el contenido actual), entonces ocurre una rutina de error y el modelo se detiene.

26

Representacin

LEAVE B

Ejemplos
LEAVE LEAVE BUFFER TOOLS, 2 La transaccin libera una unidad del almacn BUFFER. La transaccin libera dos unidades del almacn TOOLS.

Una entidad de almacenamiento se puede usar para representar una lnea de espera de capacidad limitada. Cada unidad de almacn representa un espacio en la cola. Por ejemplo, suponga que BUFFER simboliza una cola con capacidad limitada en la instalacin SERVER. En la siguiente secuencia de bloques,
: ENTER SEIZE LEAVE ADVANCE RELEASE : BUFFER SERVER BUFFER 30,21 SERVER esperar aqu obtener server salir obtener servicio liberar el servicio

antes de que una transaccin pueda entrar al bloque ENTER, debe capturar una unidad del almacn BUFFER. En otras palabras, la transaccin debe asegurar que hay un espacio vaco en la cola antes de que pueda proceder. Cuando captura una unidad de almacn, se mueve al bloque ENTER BUFFER. Despus intenta capturar la instalacin SERVER. Si no tiene xito, espera en el bloque ENTER, tal vez con otra transaccin. Cuando tiene xito procede al bloque SEIZE y de inmediato al bloque LEAVE, donde libera una unidad del almacn BUFFER. En otras palabras, la transaccin sale de la lnea de espera y con esto queda libre un espacio. SNA asociados con los almacenamientos
SNA R(snombre) o R(j) S(snombre) o S(j) SA(snombre) o SA(j) Descripcin Capacidad de almacn restante llamada snombre o con nmero j. Nmero de unidades en el almacn llamado snombre o almacn nmero j actualmente en uso. Nmero promedio de unidades del almacn llamado snombre o nmero j usado.

27

SNA SC(snombre) o SC(j) SE(snombre) o SE(j) SF(snombre) o SF(j) SM(snombre) o SM(j) SR(snombre) o SR(j)

Descripcin Nmero total de unidades del almacn llamado snombre o nmero j usado Est vaco ahora el almacn llamado snombre o nmero j? Si est, SE(snombre) o SE(j) es igual a 1; de otra manera es 0. Est lleno ahora el almacn llamado snombre o nmero j? Si lo est, SF(snombre) o SF(j) es igual a 1; de otra manera es 0. Nmero mximo de unidades del almacn llamado snombre o con nmero j usadas en cualquier tiempo dado. Utilizacin del almacn llamado snombre o nmero j.

Ejemplos
R(BUFFER) S(BUFFER) SE(5) SF(5) El SNA R(BUFFER) da el nmero de unidades del almacn BUFFER que no estn en uso. Se refiere al nmero de unidades del almacn BUFFER que estn en uso. Da un valor de 1 si el almacn nmero 5 est vaco, o 0 de otra manera. Tiene un valor de 1 si el almacn n mero 5 est lleno, y de 0 en otro caso.

Diferencia entre una instalacin y un almacn con capacidad uno. Una instalacin es un recurso unitario. Un almacn con capacidad uno tambin modela un recurso unitario. Sin embargo, existen varias diferencias fundamentales en la forma en que se usan en el modelo. Una transaccin slo libera (RELEASE) una instalacin que antes capt (SEIZE). Si otra transaccin intenta liberar una instalacin que no capt, se emite un mensaje de error y se detiene la simulacin. Para un almacn, cualquier transaccin puede liberar una unidad de almacn. En otras palabras, aun cuando una transaccin no capte una unidad de almacn en un bloque ENTER, la transaccin puede liberar una unidad mediante un bloque LEAVE. En ocasiones esta propiedad de los bloques ENTER y LEAVE se necesita en modelos ms complejos.

28

9 Transferencia de una transaccin a un bloque no secuencial


En los modelos anteriores, las transacciones se mueven por un diagrama de un bloque secuencial a otro. En modelos ms complejos, es comn enviar una transaccin a un bloque no secuencial, segn lo dicte la lgica del sistema. Por ejemplo, al modelar el servicio a clientes en un banco, algunos llegan y esperan un cajero, pero otros necesitan un representante o un ejecutivo de prstamos. Quiz hay reas de espera separadas, representadas en el modelo por otros bloques. Si la transaccin representa un cliente, tendr que dirigirse a la parte apropiada del modelo despus de entrar al sistema. Se dice que la transaccin se dirige a un bloque no secuencial. Otros sistemas cuyos modelos pueden requerir bloques no secuenciales incluyen talleres de trabajo intermitente, redes de transporte, sistemas de manejo de materiales y, de hecho, casi todos los sistemas reales. TRANSFER Un bloque TRANSFER dirige una transaccin a bloque no secuencial de manera incondicional o probabilstica. TRANSFER incondicional Con este bloque, una transaccin siempre se dirige a un bloque no secuencial especificado. Tiene dos operandos: A siempre se omite, es decir, se deja en blanco. Esto indica a GPSS/H que el bloque TRANSFER es incondicional. B especifica la etiqueta del bloque, por nombre o por nmero, a la que se transfiere la transaccin. Este operando no puede omitirse. Representacin

TRANSFER

(B)

Ejemplos
TRANSFER TRANSFER ,MERGE ,10 Cuando una transaccin entra al bloque, el siguiente bloque en su ruta es el que tiene etiqueta MERGE. La transaccin se transfiere al bloque nmero 10. (Recuerde que se recomienda que se usen nombres para los bloques en lugar de nmeros, ya que la insercin de un bloque causa que todos los bloques subsecuentes cambien sus valores numricos y sera necesario modificar el operando B).

29

TANSFER probabilstico En este bloque, una transaccin se enva a uno de dos bloques especificados por TRANSFER con base en un nmero aleatorio generado. Tiene 3 operandos A debe ser un nmero en el intervalo entre 0 y 1, y debe iniciar un punto decimal (.). El punto decimal le dice a GPSS/H que el bloque TRANSFER har una transferencia probabilstica. Cuando una transaccin entra al bloque, GPSS/H genera un nmero aleatorio entre 0 y 999, con distribucin uniforme. El operando A multiplicado por 1000 y truncado, que da un valor entero entre 0 y 999. Si el entero aleatorio es mayor o igual que el valor calculado del operando A, la transaccin se enva al bloque especificado por el operando B; de otra manera, la transaccin se enva al bloque especificado por el operando C. B y C se pueden expresar como nombres o nmeros de bloques. El operando B puede dejarse en blanco, en cuyo caso su valor predeterminado es el bloque que sigue al bloque TRANSFER. El operando C no se puede omitir. Representacin

TRANSFER .A (B)

(C)

Ejemplos
TRANSFER .10, ACCEPT, REJECT La transaccin tiene una oportunidad de 90% de ser enviada al bloque ACCEPT y 10% de ser enviada al bloque REJECT. Cuando una transaccin entra a este bloque, GPSS/H genera un entero aleatorio uniforme en [0, 999]. Si el nmero aleatorio es mayor que o igual a 100, la transaccin va a ACCEPT; de otra manera va a REJECT. La transaccin tendr una oportunidad de 95% de ser enviada al bloque que sigue al bloque TRANSFER y 5% de ser enviada al bloque LINE2.

TRANSFER

.05, , LINE2

TEST Un bloque TEST enva la transaccin a un bloque no secuencial con base en el resultado de una prueba (test) especificada en el bloque. TEST tiene 3 operandos y un cdigo de operacin auxiliar: El cdigo de operacin auxiliar sigue al cdigo de la operacin (en este caso TEST), separada por un espacio. Especifica el mtodo de comparacin entre los operandos A y B. A y B se dan como nmeros, SNA, parmetros de transaccin, ampervariables o expresiones.

30

C especifica el nombre o nmero del bloque al que se enva una transaccin si la comparacin es falsa. Si es verdadera, la transaccin se transfiere al bloque que sigue al bloque TEST. Representacin
A X TEST B (C)

Ejemplo
TEST LE S(BUFFER), 4, EXIT Recuerde que S(BUFFER) es un atributo numrico estndar (SNA) que da el nmero de unidades del almacn BUFFER que estn en uso. Si el valor de S(BUFFER) es menor o igual que 4 (cuatro o menos unidades estn en uso en el almacn BUFFER), la transaccin se enva al bloque inmediato siguiente; de otra manera va al que se llama EXIT.

Observe que cuando una transaccin entra al bloque TEST, la comparacin entre los operandos A y B se realiza de inmediato y se lleva a cabo la tarea que sigue. La comparacin entre A y B slo se hace una vez; aun cuando la transaccin pueda salir de TEST en seguida, su siguiente bloque est decidido. La que sigue es la lista de cdigos de operacin auxiliares vlidos para el bloque TEST:
Cdigo auxiliar G GE L LE E NE Descripcin Es A mayor que B? Es A mayor o igual que B? Es A menor que B? Es a menor o igual que B? Es A igual a B? Es A distinto de B?

31

10 Ampervariables
Una ampervariable es una variable de programa cuyo nombre comienza con un carcter ampersen (&). El propsito es distinguir las ampervariables de otras entidades de GPSS/H. Las ampervariables son variables tipo FORTRAN enteros, reales o caracteres que en esencia aumentan el poder del lenguaje GPSS/H. Pueden ser cantidades escalares o arreglos de una dimensin. Adems, existe una ampervariable que permite a GPSS/H interactuar con subrutinas y funciones de FORTRAN (disponibles en la versin profesional de GPSS/H). Las ampervariables enteras y reales se usan para almacenar datos de entrada ledos de un archivo, para los clculos en las instrucciones de control y en los bloques, para mantener el estado del sistema (cuando el modelador elige no emplear las entidades integradas en GPSS/H), para el clculo y coleccin de estadsticas de salida y para escribir informes de formato especial. Las ampervariables de caracteres se usan para almacenar y manipular datos de caracteres. Se pueden utilizar para construir dilogos interactivos con el usuario del modelo.

Instrucciones de declaracin y asignacin


Una ampervariable debe ser de uno de cinco tipos: entero, real, caracteres de longitud fija, caracteres de longitud variable o externa. Todas las ampervariables deben declararse antes de usarlas. Las ampervariables enteras, reales y de caracteres se declaran como escalares o arreglos de una dimensin. Se hace referencia a cada elemento de un arreglo mediante un ndice. El nombre de una ampervariable consiste en 8 caracteres alfanumricos precedidos por un ampersen (&). El primer carcter debe ser alfabtico.

Ampervariables enteras y reales


Las directivas de compilacin INTEGER y REAL declaran que una ampervariable es entera o real. Cuando se declaran, los valores de las ampervariables se establecen en cero. INTEGER El formato es
INTEGER avar, . . .

Donde avar es el nombre de la ampervariable y ... significa que puede declararse ms de una ampervariable en la misma lnea.

32

Ejemplos
INTEGER INTEGER &I, &J &COUNT, &TOTALS(10) Se declara que &I y &J son ampervariables escalares, enteras. &COUNT es una ampervariable escalar, entera y &TOTALS es un arreglo de una dimensin de tamao 10. Cada elemento del arreglo ser un entero. Los elementos individuales son &TOTALS(1), ..., &TOTALS(10). Se puede hacer referencia a ellos como &TOTALS(&K) donde &K recibi antes valores de 1 a 10.

REAL El formato es
REAL avar, . . .

Donde avar es el nombre de la ampervariable. Puede declararse ms de una ampervariable en la misma lnea. Ejemplos
REAL REAL &R, &T &AVG, &SUM (10) Se declara que &R y &T son ampervariables escalares, reales. &AVG es una ampervariable escalar, real y &SUM es un arreglo de una dimensin de tamao 10. Cada elemento del arreglo &SUM es de tipo real y se hace referencia a ellos de la misma manera que en los arreglos enteros.

Las ampervariables enteras almacenan slo cantidades enteras. Si se asigna un valor real a una ampervariable entera, primero se trunca su valor (no se redondea). Las ampervariables reales pueden manejar cantidades de punto flotante o enteras. Se almacenan como nmeros de punto flotante de doble precisin, pero su intervalo depende de la computadora.

Declaracin de ampervariables de caracteres


Las ampervariables de caracteres se usan para almacenar y manipular datos de caracteres. Pueden ser de longitud fija o variable. Una ampervariable de caracteres de longitud fija se declara con la directiva de compilacin CHAR. Su longitud, N, es fija cuando se declara. Se inicializa como una cadena de N caracteres en blanco. El formato de CHAR es
CHAR*N avar ...

donde avar es el nombre de la ampervariable, y N es el nmero de caracteres que almacenar ste. Puede declararse ms de una ampervariable en una lnea, siempre que todas tengan la misma longitud fija.
33

CHAR Hay tres casos posibles cuando se hace una asignacin a una ampervariable de caracteres de longitud fija. Si la cadena que se asigna contiene justo el mismo nmero de caracteres que puede almacenar la ampervariable, se hace una asignacin simple. Si contiene ms caracteres que los que puede almacenar, slo se almacenar el nmero de caracteres permitido comenzando por la izquierda. Si la cadena contiene menos caracteres, se agregarn espacios en blanco al final de la cadena. Ejemplos
CHAR*5 CHAR*10 &U &V, &W(7) &U se declara como una ampervariable de caracteres con longitud fija 5. &V se declara como una ampervariable de caracteres con longitud fija 10. Cada elemento del arreglo (&W(1), ..., %W(7)) es una ampervariable de longitud fija 10.

VCHAR Es una ampervariable de longitud variable. Se declara su longitud mxima, y la longitud actual la controla GPSS/H de manera automtica. Su longitud actual se puede determinar haciendo referencia a la funcin integrada LEN. Cuando se declara, la ampervariable se inicializa como una cadena nula (de longitud cero). El formato de VCHAR es
VCHARN*N avar, ...

donde N es la longitud mxima de caracteres de la ampervariable y avar es el nombre de la ampervariable. Se puede declarar ms de una ampervariable en una lnea, siempre que su longitud mxima de caracteres sea la misma. Cuando se hace una asignacin a una ampervariable de caracteres de longitud variable, pueden ocurrir dos casos. Si la longitud de la cadena que se asigna contiene un nmero igual o menor de caracteres que la longitud mxima de la ampervariable, se hace una asignacin simple. No se agregan espacios en blanco al final de la cadena. Si la longitud de la cadena contiene ms caracteres que los que puede almacenar la ampervariable, slo el nmero permitido de caracteres se almacenarn, comenzando por la izquierda. Ejemplos
VCHAR*5 VCHAR*10 &X &Y, &Z(5) El nmero mximo de caracteres que puede almacenar &X es 5. &Y puede almacenar un mximo de 10 caracteres y &Z es un arreglo de una dimensin de tamao 10 cuyos elementos &Z(1), ..., &Z(5), puede almacenar un mximo de 10 caracteres.

34

Instrucciones de asignacin
LET Uno de los usos de la instruccin de control LET y el bloque BLET es asignar valores a las ampervariables. El formato de LET es
LET avar=xpress

donde avar es el nombre de la ampervariable y xpress es una expresin matemtica, un valor numrico o una cadena de caracteres. Si se asigna una cadena de caracteres, debe encerrarse entre apstrofes. Ejemplos
LET LET LET LET LET &J=5.0/10 &X=3 &C(1)='WOLVERINE' &C(2)='SOFTWARE ' &C(3)='CORPORATION' &J tendr un valor de 0 (ya que 5.0/10 es igual a 0.5, y la parte decimal se trunca). &X tendr un valor de 3.0. &C(1) es la cadena de caracteres "WOLVERINE". &C(2) contiene la cadena de caracteres "SOFTWARE" (observe el espacio en blanco adicional al final). &C(3) tendr la cadena de caracteres "CORPORATI" (slo los nueve caracteres de la izquierda).

BLET El bloque BLET es la forma de bloque de la instruccin de control LET. Permite a la transaccin asignar o cambiar los valores de las ampervariables en un modelo. El formato de BLET es el mismo que el de LET, excepto que se usa la palabra BLET en lugar de LET. Ventajas al usar ampervariables Algunas de las ventajas de usar ampervariables en los modelos son: 1. Una ampervariable se puede usar como un operando de un bloque. Suponga que debe realizar varias corridas de un modelo y que le interesa el resultado de cada una cuando un conjunto de operandos vara de una corrida a otra. Una manera de hacerlo es ir al modelo, encontrar los bloques afectados y cambiar los valores de los operandos antes de la corrida. Existe el peligro de cambiar algo ms sin querer. Una manera ms sencilla es usar ampervariables como operandos de los bloques afectados. Los valores de las ampervariables se pueden asignar con la instruccin de control LET, o mejor todava, se pueden leer de un archivo, o pedir al usuario que los proporcione desde el teclado. Si se usa LET, las instrucciones se pueden agrupar en una parte del modelo para encontrarlas con facilidad. De este modo, no tiene que buscar los bloques afectados, que pueden estar dispersos, para hacer los cambios necesarios.

35

2. Al usar ampervariables como operandos de los bloques que cambian con frecuencia, hace que GPSS/H sea un modelo estructurado. En otras palabras, el modelo de GPSS/H de hecho estar dividido en dos secciones: la de parmetros y la de lgica del modelo. De nuevo esto hace ms seguros los cambios en el modelo. 3. Los valores de las ampervariables pueden leerse desde el teclado y de un archivo externo. As, si se usan ampervariables como operandos de bloques cuyos valores cambian con frecuencia, estos valores pueden estar almacenados en un archivo. No es necesario cambiar los valores en el modelo. 4. Las ampervariables se pueden usar para recolectar algunas estadsticas que no guarda de manera automtica el GPSS/H 5. Las ampervariables se pueden emplear para ayudar a modelar una coleccin grande de entidades de naturaleza similar. Por ejemplo, considere un sistema de manejo de materiales grande que tiene 200 secciones de transporte o acumulativo (intercaladas con transportadores acumulativos y otros equipos). Se puede escribir un segmento de los bloques que representa un transporte no acumulativo, con operandos dados por ampervariables. stas proporcionan un mtodo conveniente para almacenar los datos de un segmento, como la longitud (o capacidad), velocidad, contenido actual (si no se usa el almacn) y el siguiente transportador.

36

11 Variables de entrada/salida
La capacidad de entrada/salida de GPSS/H no slo es general y poderosa, tambin es fcil de usar. Se pueden construir modelos que lean y escriban a archivos externos, lo mismo que modelos interactivos que piden al usuario datos de entrada y modelos que escriban el estado y otros datos en la pantalla. La conveniencia de poder leer datos desde el teclado es obvia. Por ejemplo, suponga que deben hacerse varias corridas de un modelo, cada una con un conjunto diferente de valores para los datos y parmetros. Se puede escribir el modelo de manera que GPSS/H pida los valores de los parmetros antes de cada corrida o que pida el nombre del archivo que contiene los datos de entrada. Con GPSS/H es sencillo escribir un informe personalizado. Es ms fcil que con muchos otros lenguajes. Adems, es muy til escribir mensajes de estado y estadsticas en la pantalla durante el desarrollo y las pruebas del modelo y en las etapas de experimentacin y anlisis de un proyecto.

Nombre lgico de archivos


GPSS/H requiere que todos los archivos del usuario tengan nombres lgicos. Un nombre lgico consiste en 1 a 8 caracteres alfanumricos, con el primer carcter alfabtico. Estos nombres se asocian con los nombres fsicos de los archivos mediante la instruccin de control FILEDEF. Si los archivos de dos no tienen extensin, entonces FILEDEF puede omitirse. El nombre real y nombre lgico son automticamente el mismo.

FILEDEF Asocia de manera temporal el nombre lgico de un archivo con un nombre de archivo de sistema operativo; en la PC, el nombre de archivo en el sistema operativo es, por supuesto, un nombre de archivo de DOS. La instruccin de control FILEDEF no cambia el nombre de un archivo de DOS. El propsito de usar un nombre lgico es permitir que el modelo de GPSS/H corra en diferentes sistemas de cmputo con diferentes sistemas operativos, cada uno con su convencin para los nombres de archivos. El formato de esta instruccin es
logfn FILEDEF 'fnombre'

donde fnombre es el nombre de un archivo de DOS y logfn es un nombre lgico de archivo. Observe que el nombre del archivo de DOS debe encerrarse entre apstrofes. De otra manera puede establecerse como una ampervariable de caracteres, digamos &CHFNOMM y usar el siguiente formato:
logfn FILEDEF &CHFNOM

37

Ejemplos
FIRST FILEDEF '1' El archivo de DOS "1" se asocia con el nombre lgico "FIRST". Si este archivo es de datos de entrada, entonces GPSS/H tiene acceso a "1" mediante la especificacin del nombre "FIRST" como archivo de entrada. Si es de salida, los datos se escriben en "FIRST". El archivo de DOS "ARRIVAL:DAT" se asocia con el nombre lgico "ARRIVE". Observe que el nombre del archivo de DOS no sigue la convencin del nombre lgico, ya que tiene extensin. El nombre lgico "PROC" se refiere al archivo de DOS "PROCESS". Observe que el archivo de DOS "PROCESS" sigue la convencin del nombre lgico "PROCESS". El nombre del archivo de DOS se guarda en la ampervariable de caracteres, &WEEK1"

ARRIVE FILEDEF

'ARRIVAL.DAT'

PROC

FILEDEF 'PROCESS'

SCHED FILEDEF

&WEEK

Lectura de datos de un archivo o del teclado


Los datos se pueden leer de un archivo externo o del teclado con las instrucciones de control GETLIST o de bloque BGETLIST. Los datos en el archivo externo deben estar en formato libre, con los valores de entrada separados por uno o ms espacios en blanco. Los datos en una cadena de caracteres que contienen blancos en medio deben encerrarse entre apstrofes. GETLIST La instruccin de control GETLIST lee datos de un archivo externo o del teclado. Su formato es
GETLIST opt, . . . , (iolist)

donde opt se refiere a una o ms opciones y iolist es una lista entre parntesis de una o ms ampervariables o SNA. Las opciones deben separarse por comas una de la otra y de la lista de I/O (entrada/salida) Opciones
FILE=logfn END=clabel ERR=clabel

donde logfn es un nombre lgico y clabel es una etiqueta de control La opcin FILE especifica el nombre lgico de donde se leern los datos. Si no se especifica, GPSS/H supone que los datos se leern del teclado.

38

La opcin END especifica el nombre de la instruccin de control a la que se transfiere el control si GPSS/H encuentra una condicin de end-of-file (fin de archivo). Esta condicin significa que GPSS/H trat de leer ms all de la ltima lnea del archivo de datos. La opcin ERR especifica la instruccin de control a la que se transfiere el control cuando GPSS/H encuentra un valor de entrada equivocado. Un ejemplo de valor equivocado es una cadena de caracteres cuando se espera un valor numrico. La instruccin predeterminada para END y ERR es un error de ejecucin de GPSS/H, seguida de un regreso a DOS. En otras palabra, el control pasa a DOS cuando la opcin END no se especifica y se encuentra una condicin de fin de archivo, o cuando la opcin ERR no se especifica y se encuentra un valor de entrada equivocado. Ejemplos
GETLIST FILE=IN,END=NEXT, ERR=ERRPROC, (&I) Establece que el valor de &I se lee en el archivo "IN". Si el modelo trata de leer despus de la ltima lnea del archivo "IN", el control se transfiere a la instruccin con etiqueta "NEXT". Si el valor ledo est equivocado, el control se transfiere a la instruccin ERRPROC. Los valores para &J y &K se obtienen del teclado. Si se encuentra un valor equivocado, el control se transfiere a la instruccin con etiqueta BADDATA.

GETLIST

ERR=BADDATA, (&J, &K)

BGETLIST La funcin y formato de BGETLIST son los mismos que para GETLIST, excepto por las opciones de END y ERR. Mientras que en GETLIST especifican que el control debe transferirse a otra instruccin de control, estas opciones en BGETLIST especifican el nombre o nmero del bloque al que GPSS/H enva la transaccin. Escribir en un archivo o en la pantalla Las instrucciones de control PUTPIC o de bloque BPUTPIC escriben una salida con formato en la pantalla o en un archivo externo. El formato se controla mediante una imagen inmediata o remota. Slo se ver aqu la imagen inmediata. El formato es sencillo de usar comparado con lo que hay disponible en muchos lenguajes de simulacin y generales. Es en especial sencillo si se compara con FORTRAN. PUTPIC La instruccin de control PUTPIC escribe texto literal, valores numricos y valores de caracteres en la pantalla o en un archivo externo. El formato de PUTPIC es
39

PUTPIC

opt, . . . , (iolist)

donde opt se refiere a una opcin asociada con PUTPIC e iolist es una lista de entrada/salida entre parntesis de uno o ms nmeros, cadenas de caracteres o expresiones, ampervariables, SNA o expresiones numricas que GPSS/H escribir en un archivo o en la pantalla. Se puede especificar ms de una opcin y cualquier carcter vlido puede ser parte de la lista de I/O. Todas las opciones deben ir separadas por comas, sin blancos intermedios. Se asocian dos opciones con PUTPIC:
FILE=logfn LINES=lcount

donde logfn es un nombre lgico de archivo y lcount es el nmero de lneas en la imagen (PICTURE) que sigue a PUTPIC. La opcin FILE especifica el nombre lgico del archivo en el que se escribe la salida. Si no se determina, GPSS/H supone que la salida se escribe en la pantalla. La opcin LINES especifica el nmero de lneas de imagen que siguen de la instruccin PUTPIC. Si no se determina, se supone que LINES=1, lo que quiere decir que la lnea que sigue a PUTPIC se considera una lnea de imagen. Debe tenerse cuidado de que el nmero de lneas especificado en la opcin LINES sea igual al que se desea de lneas de imagen. Si no es as, pueden ocurrir dos casos. Si el nmero de lneas especificado es mayor, entonces una o ms instrucciones de control o bloques de GPSS/H se toman como texto literal y no se ejecutan. Esto puede o no causar un error. Si el nmero de lneas especificado es menor, entonces GPSS/H puede diagnosticar como instrucciones o bloques invlidos al exceso de lneas de imagen. Una lnea de imagen consiste en una combinacin de texto literal y campos de edicin. Un campo de edicin se especifica en una lnea de imagen como un grupo de uno o ms asteriscos (*). Un campo de edicin en una lnea de imagen se puede sustituir por un nmero o una cadena de caracteres cuando se escribe la lnea de imagen. La lista de nmeros, cadenas de caracteres, ampervariables y SNA en la lista de I/O reemplaza los campos de edicin de las lneas de imagen. Cuando el nmero de elementos en la lista y el nmero de campos de edicin no coinciden, pueden ocurrir dos casos. Si el nmero de elementos en la lista es menor que el de campos de edicin, el procesamiento se detiene cuando se encuentra el primer campo de ms. Si el nmero en la lista es mayor que el de campos de edicin, el procesamiento se detiene cuando se encuentra el final de la imagen, y se ignoran los elementos de ms en la lista. Por otro lado, si el destino de la salida es la pantalla, y la lnea de salida comienza con "0" o "1" en la primera columna, GPSS/H inserta una lnea en blanco antes de imprimir la salida pero no imprime 0 o 1.

40

Ejemplos
PUTPIC FILE=OUT, LINES=3 Este es el encabezado del informe para la compaa PDQ Octubre 31, 2001 En este caso, se supone que las tres lneas que siguen a la instruccin de control son lneas de imagen. stas se escribirn en el archivo lgico ".OUT". Ninguna de las tres lneas debe tener campos de edicin (por qu?). Observe que la tercera lnea es blanca. En este caso, la lnea que sigue a PUTPIC es una lnea de imagen que se escribir en la pantalla. Observe que en este ejemplo la instruccin PUTPIC es equivalente a PUTPIC LINES=1, (&I) Si &I tiene menos de cuatro dgitos, entonces se escribir justificado a la derecha en el campo de cuatro caracteres. Si &I tiene ms de cuatro dgitos, el campo se expande para que quepa. PUTPIC Esta lnea se escribir en la pantalla Tiene implcito LINES=1 y FILE igual a la pantalla, de modo que hace justo lo que dice.

PUTPIC (&I) Lnea de imagen, &I se imprime aqu: ****

Suponga que el valor de &J es 125, la instalacin JOE tiene una utilizacin fraccionaria de 653 (en escala de 1 a 1000), el valor de &X es 10.855 y &NAME es una ampervariable de caracteres con valor "JOE". Considere el siguiente PUTPIC:
PUTPIC FILE=REPORT, LINES=6, (&MANE, FR(JOE)/10, &NAME, &J10,&X*10) Trabajador *** est ocupado ***.** % del tiempo. El nmero secreto de *** es * y su otro nmero es *****.** En este caso, el informe de salida se ve como sigue El trabajador JOE est ocupado 65.30% del tiempo. El nmero secreto de JOE es 135 y su otro nmero es 108.55.

BPUTPIC La funcin y formato del bloque BPUTPIC son iguales que para la instruccin PUTPIC, excepto que BPUTPIC es un bloque y se ejecuta como parte del diagrama de bloques cuando una transaccin entra en l.

Cmo cerrar un archivo


Debido a las restricciones del sistema operativo, slo un nmero limitado de archivos se puede abrir a la vez. Este nmero depende de la computadora que use y de cmo est configurada. (En DOS, la cantidad mxima de archivos se puede especificar, dentro de los lmites, en el archivo CONFIG.SYS en el directorio raz.) En consecuencia, quiz sea necesario cerrar un archivo durante la corrida de simulacin, en especial cuando est corriendo un modelo grande que trabaja con
41

muchos archivos. Despus de cerrar el archivo, se puede reabrir de manera automtica para entrada y/o salida mediante las instrucciones de control GETLIST o PUTPIC (o los bloques BGETLIST o BPUTPIC). Cuando se abre de nuevo un archivo, se lee desde el principio, o se escribe en l tambin desde el comienzo. CLOSE La instruccin de control CLOSE cierra un archivo externo. Su formato es
CLOSE logfn, . . .

donde logfn es un nombre lgico de archivo. El archivo puede ser de salida o de entrada. Se puede enumerar ms de un archivo en una instruccin de control CLOSE, separados por comas. Ejemplo
CLOSE SHOP, TOOL Se especifican dos archivos, "SHOP" y "TOOL" que deben cerrarse.

BCLOSE Es la forma de bloque de CLOSE. Este bloque tiene un operando, A, que especifica el nombre lgico del archivo que debe cerrarse. Un bloque BCLOSE puede cerrar slo un archivo.

42

12 Parmetros de una transaccin


Los atributos de una transaccin son caractersticas asociadas con ella. Estn en dos categoras principales: integrados o definidos por el usuario. El propsito principal de esta seccin es introducir los atributos de transacciones definidos por el usuario, que se llaman parmetros de la transaccin.

Parmetros integrados de la transaccin:


Nmero de identificacin. Nmero del bloque actual. Nmero del siguiente bloque. Tiempo de marca. Tiempo de movimiento. Nivel de prioridad.

Estos atributos se muestran durante las sesiones de Debugger como parte de la ventana de estado. Los atributos integrados se crean de manera automtica al crear una transaccin. GPSS/H mantiene la mayora de ellos y el modelado no los puede cambiar; todos, excepto el tiempo de marca se usan en forma interna para manejar la simulacin. Por ejemplo, considere el atributo que registra el nmero de bloque actual. Cada vez que una transaccin se mueve de un bloque a otro, GPSS/H actualiza este atributo. Es esencial porque GPSS/H debe saber dnde se localiza cada transaccin. El nivel de prioridad tambin es fundamental; GPSS/H usa la prioridad para determinar la posicin de la transaccin en la lnea de espera. En cuanto al movimiento, especifica cundo debe una transaccin entrar al modelo por un bloque GENERATE, o cundo se completa el tiempo de ADVANCE de una transaccin. Como modeladores, podemos cambiar directamente slo el valor de dos de los atributos integrados de una transaccin: el tiempo de marca y el nivel de prioridad. El tiempo de marca en un inicio es el tiempo de reloj absoluto en el que se crea una transaccin. Al usar el bloque MARK, puede cambiarse el tiempo de marca al valor actual del reloj absoluto. El nivel de prioridad de una transaccin se establece en el bloque GENERATE, pero puede cambiarse con el bloque PRIORITY, que se explicar con brevedad en la seccin de "otras caractersticas". La segunda categora principal de los atributos son los parmetros de la transaccin, los atributos definidos por el usuario. Los parmetros no tienen un significado especial para GPSS/H. Sin embargo, significan algo para el usuario. Por ejemplo, suponga que en un modelo de lnea de ensamble, una transaccin representa un automvil. Las caractersticas del auto que pueden necesitar rastrear el modelo pueden incluir, tipo (sedn, convertible, etc.), color, tipo de motor (2.0 l, 5.0 l, etc.), y otros. Se puede tener un parmetro llamado TIPO, con valores 1 para sedn, 2 para convertible, etc. Otros atributos (COLOR, MOTOR, etc.) se pueden definir de la misma manera.

43

Parmetros de la transaccin
Los parmetros de la transaccin son los atributos definidos por el usuario. Existen cuatro tipos de parmetros:
Cdigo PH PF PB PL Descripcin Media palabra (halfword) Caractersticas Puede almacenar un valor entero entre -32 768 y 32 767.

Palabra completa (fullword) Puede almacenar un valor entre entre -2 147 483 648 y 2 147 483 647. Byte Punto flotante Almacena un valor entero en el intervalo de -128 a 127. Puede almacenar valores de punto flotante.

Una transaccin puede tener cualquier nmero de parmetros en cualquier combinacin de tipos. El propsito de separar los parmetros de la transaccin en cuatro tipos es conservar la memoria de la computadora y poder manejar tanto valores enteros como de punto flotante. Un parmetro de byte usa la menor cantidad de memoria mientras que los de palabra completa y punto flotante usan el mayor nmero. La limitacin de memoria en una computadora puede ser crucial en los sistemas de modelado grandes. Puede hacerse referencia a los parmetros por nmero o por nombre. Por ejemplo, los parmetros de una transaccin que representa un auto pueden llamarse 1, 2 y 3 o TIPO, COLOR Y MODELO. Es claro que usar nombres facilita la lectura del modelo. Se recomienda el uso exclusivo de nombres, a menos que un modelo avanzado requiera parmetros numerados. GENERATE (otra vez) El bloque GENERATE se usa para especificar el nmero y tipos de parmetros que lleva una transaccin. Los operandos F, G, H e I de GENERATE se emplean para esto. Si no se determinan F o I, entonces se suponen doce parmetros de media palabra. Ejemplos
GENERATE 5 GENERATE 5 , , , , , 12PH GENERATE 5 , , , , , 7PH Los dos primeros ejemplos establecen que se crear una transaccin cada 5 unidades de tiempo. Cada transaccin llevar 12 parmetros de media palabra. Se crea una transaccin cada 5 unidades de tiempo. Cada transaccin creada tendr asociados 7 parmetros de media palabra. Se crea una transaccin cada 5 unidades de tiempo. Cada transaccin creada tendr asociados 4 parmetros de palabra completa y 8 parmetros de punto flotante.

GENERATE 5 , , , , , 4PF, 8PL

Los parmetros de una transaccin slo pueden guardar valores numricos. No pueden tener valores de caracteres. As, tal vez tenga que codificarse una caracterstica de una transaccin. Por ejemplo suponga que la transaccin representa

44

un auto. Existen dos tipos; sedn y convertible. El cdigo "1" se refiere a sedn y el cdigo "2" se refiere a un convertible. Suponga que la caracterstica tipo se codifica en el parmetro con nombre TIPO. Si este parmetro tiene valor de 1, entonces la transaccin representa un sedn. Si tiene valor de 2, la transaccin representa un convertible. BLET (otra vez) El bloque BLET se us para asignar un valor a una ampervariable cuando una transaccin ejecuta el bloque BLET. Otra funcin de BLET es asignar un valor numrico a un parmetro de transaccin especificado. Slo afecta al parmetro especificado de la transaccin que entra. Los otros parmetros de la misma transaccin no se afectan. Tampoco afecta los parmetros de otras transacciones en el modelo GPSS/H. Cuando una transaccin se crea, todos sus parmetros tienen un valor predeterminado de cero. Tiene un operando A especifica el tipo de parmetro, el nombre o el nmero entre parntesis, un signo igual y el valor asignado. No hay espacios en blanco intermedios. Representacin
TYPE(A)=VAL BLET

Ejemplos
BLET BLET PH(COLOR)=1 PF(PARTES)=PF(PARTES+8), Se asigna el valor 1 al parmetro de media palabra COLOR. El valor actual en el parmetro de palabra completa PARTES se incrementa en 8. En otras palabras, suponga que el valor actual del parmetro de media palabra PARTES de una transaccin es 14. Cuando entra al bloque BLET, el valor de PARTES cambia a 22. Primero se calcula la expresin 10.0+&SERV(&J)*60.0, y despus el resultado se resta del valor actual en el parmetro de punto flotante PT.

BLET

PL(PT)=PL(PT)-10+&SERV(&J)+60.0

45

Los parmetros de una transaccin son SNA


Los parmetros de una transaccin son atributos numricos estndar. Pueden almacenar slo valores numricos. El cuadro que sigue muestra cmo se hace referencia a los parmetros, donde j puede ser un nmero o un nombre.
SNA PB(j) PF(j) PH(j) PL(j) Descripcin Valor del parmetro de transaccin de byte j Valor del parmetro de transaccin de palabra completa j Valor del parmetro de transaccin de media palabra j Valor del parmetro de transaccin de punto flotante j

Los parmetros de transaccin se pueden usar como operandos de cualquier bloque de GPSS/H que acepte un valor numrico. (Puede usarse un parmetro de transaccin como operando de una instruccin de control?) Ejemplos
ADVANCE PF(SEW) Cuando la transaccin entra al bloque ADVANCE, experimenta un retraso dado por el valor del parmetro de palabra completa SEW. Si el valor de SEW es 10, la transaccin experimentar un retraso de 10 unidades de tiempo. Se trata de un bloque de transferencia incondicional. Cuando la transaccin entra a TRANSFER, ser enviada al bloque con nmero especificado por el valor del parmetro de media palabra RETURN. Si el valor de RETURN es 5, la transaccin se enva al bloque nmero 5. Los ms probable es que para el ejemplo anterior se haya hecho una asignacin previa como sta, donde XYZ es la etiqueta del bloque, y GPSS/H le asign el valor 5 (porque era el quinto bloque). Este tipo de uso es necesario al desarrollar un modelo que tiene "subrutinas" donde la transaccin debe regresar (RETURN) despus de que se ejecutan.

TRANSFER

,PH(RETURN)

BLET

PH(RETURN)=XYZ

46

13 Inicio de la simulacin y corridas mltiples


Las instrucciones de control CLEAR y RESET se usan para contestar las siguientes preguntas: 1. Cmo se hacen repeticiones independientes mltiples de una simulacin? 2. Cmo se elimina, o al menos se reduce, el efecto de observaciones sesgadas debidas a las condiciones arbitrarias o no representativas? Estas dos preguntas son parte de otra ms amplia acerca del diseo y el anlisis de los experimentos de simulacin. [Se puede encontrar un tratamiento ms profundo de los aspectos estadsticos en la simulacin en Banks, Jerry, John S. Carson y Barry L. Nelson, Discrete-Event Sistem Simulation, 2a ed. Prentice-Hall, (1984)]. El objetivo aqu es introducir dos instrucciones de control que pueden ser tiles en el anlisis de los datos de salida de la simulacin. En general, una simulacin con GPSS/H es de naturaleza estocstica, es decir, el modelo usa variables aleatorias, ya sea en un bloque GENERATE para las llegadas aleatorias, o en los bloques ADVANCE para los tiempos de servicio aleatorios, TRANSFER para el direccionamiento aleatorio en el modelo. Para generar variables aleatorias, el modelo usa una cadena de nmeros aleatorios. GPSS/H tiene un generador de nmeros aleatorios integrado que emplea una serie de dichos nmeros para calcular valores que se usan en los operandos A y B de los bloques GENERATE y ADVANCE. As, la estimacin del valor verdadero de una caracterstica depende de los nmeros aleatorios que se generan durante la corrida de simulacin. Al realizar otra corrida de simulacin del mismo modelo (es decir, hacer una rplica) que utiliza un conjunto diferente de nmeros aleatorios, se obtendr una estimacin distinta del valor verdadero. Como la estimacin depende de los mencionados nmeros, tambin es una variable aleatoria y, en consecuencia, existe cierta variabilidad en la estimacin. Con el fin de medir la variabilidad (para determinar la exactitud de la estimacin), se necesita ms de una rplica. CLEAR La instruccin de control CLEAR indica a GPSS/H que establezca todas las estadsticas igual a 0 y elimine todas las transacciones del modelo. CLEAR junto con START se usan para realizar rplicas mltiples de un modelo. GPSS/H realiza las siguientes acciones cuando encuentra una instruccin CLEAR: Elimina todas las transacciones del modelo. Todas las estadsticas respecto a las entidades se hacen 0, a menos que se especifique otra cosa. Los relojes absoluto y relativo se establecen en 0. Los contadores actual y de bloque se hacen igual a 0.
47

La instruccin CLEAR no afecta lo siguiente: Los valores de las ampervariables La secuencia de nmeros producida por una serie de nmeros aleatorios.

Para cambiar los valores de las ampervariables, se usa la instruccin LET. Para modificar la secuencia de nmeros aleatorios, se emplea la instruccin RMULT que se explicar ms adelante. El formato de CLEAR es
CLEAR ent1, ent2, . . .

donde los operandos opcionales ent1, ent2, . . . especifican los nombres o nmeros de las entidades cuyas estadsticas no deben hacerse 0. Si no se determinan, todas las estadsticas se reestablecen en 0. Ejemplos
CLEAR GPSS/H establece en cero los relojes de la simulacin y todas las estadsticas, y elimina todas las transacciones del modelo. Como CLEAR no afecta a las ampervariables, debe usarse LET para cambiar sus valores entre corridas. MX(DATA) ALL(TB,Q) Se reestablecen todos los valores del modelo, excepto los de la matriz llamada DATA. El modelo se reestablece, excepto por los valores de salida en las tablas y colas.

CLEAR CLEAR

Cuando GPSS/H inicia una simulacin por primera vez, no hay transacciones en el modelo y todas las estadsticas son 0. Cuando un contador para terminar llega a 0 o menos, la simulacin slo se suspende. Se puede reiniciar con otra instruccin START (el contador de terminacin de la simulacin se establece en un valor mayor que 0). Si CLEAR se inserta entre dos instrucciones START
START 1 CLEAR START 1

todas las transacciones se eliminan y las estadsticas se hacen 0. GPSS/H reanuda la ejecucin del modelo cuando encuentra el segundo START. Las condiciones antes de reanudar la ejecucin y cuando se realiza por primera vez son bsicamente las mismas. El resultado es que se ejecutaron dos corridas de simulacin independientes del mismo modelo. Pero producen los mismos resultados estadsticos? La respuesta es no. Recuerde que CLEAR no afecta la cadena de nmeros aleatorios. Entonces, las dos corridas de simulacin no usan la misma secuencia de nmeros aleatorios y, por lo tanto, no producen los mismos valores para las estadsticas. Por el contrario, si se tiene una sola instruccin START en el modelo y se ejecuta dos veces con
48

GPSS/H nombre GPSS/H nombre

donde nombre es el archivo fuente del modelo, los resultados de las dos simulaciones sern exactamente iguales, debido a que ambas corridas usan la misma secuencia de nmeros aleatorios. BCLEAR El bloque BCLEAR es el bloque correspondiente a la instruccin CLEAR. Este bloque realizar todas las acciones de la instruccin de control CLEAR. La diferencia est en que BCLEAR puede establecer el valor del contador de terminacin de la simulacin. El nuevo valor del contador se especifica en el operando A. Las entidades cuyas estadsticas no deben hacerse 0 se determinan con el operando B.

Sesgo inicial en la simulacin de estado estable


Al inicio de una simulacin el sistema comienza a trabajar y, al igual que en los sistemas reales, tiene un periodo de "calentamiento" hasta que todo est funcionando. La razn es que el sistema est vaco y todos los recursos estn ociosos cuando inicia la corrida de simulacin. Suponga que se quiere estimar la utilizacin de un servidor a la larga. Se espera que la utilizacin aumente hasta que llega a un punto en que flucta alrededor de cierto valor promedio y que esta fluctuacin contine indefinidamente debido a que las llegadas y los tiempos de servicio son aleatorios. Es difcil determinar el punto en que prevalecen las condiciones de estado estable. Lo mejor que se puede hacer es examinar las diferentes estadsticas y grficas para establecer una aproximacin al punto en que las medidas parecen estabilizarse. Existen dos mtodos para reducir el efecto de las condiciones iniciales no representativas en las estadsticas para estimar las caractersticas de estado estable de un sistema. Los dos mtodos se llaman "saturar" y "borrar". "Saturar" significa que se simula por un tiempo tan largo que el efecto de las condiciones iniciales se vuelve insignificante. La determinacin de "largo" se basa en las grficas, las estadsticas y el conocimiento del sistema real que se simula. "Borrar" se refiere a dividir una corrida de simulacin en dos partes, una etapa inicial seguida de una etapa de recoleccin de datos. Las estadsticas reunidas durante la etapa inicial se descartan y todas se restablecen (RESET) en cero antes de la etapa de recoleccin. Las siguientes son algunas advertencias al respecto: 1. No todas las estadsticas se acercan al estado estable a la misma velocidad. 2. Algunas estadsticas, como la utilizacin, son ms "suaves" que otras como el tiempo o el nmero en la cola. La solucin es obtener promedios para periodos largos o promediar rplicas mltiples. [Vea Banks y Carson (1984).]
49

3. No hay seguridad para extraer conclusiones respecto al estado estable con base en una rplica. Son ms confiables las grficas ms elaboradas basadas en promedios mviles sobre mltiples rplicas. [De nuevo vea Banks y Carson (1984).] RESET GPSS/H realiza las siguientes acciones al encontrar una instruccin de control RESET: Todas las estadsticas se establecen en 0. El valor del reloj relativo se hace 0. Los contadores totales de bloque se establecen en 0.

La instruccin RESET no altera ciertas variables del sistema, no afecta las transacciones que se encuentran en el diagrama de bloques, es decir, no elimina las transacciones actuales, no cambia el valor del reloj absoluto, no modifica los contadores del bloque actual y no afecta las ampervariables. Observe que hay diferencias significativas entre RESET y CLEAR. El formato de RESET es
RESET ent,

donde ent especifica el nombre o nmero de la entidad cuyas estadsticas deben hacerse 0. Si no se determina, todas las estadsticas se establecen en 0. Ejemplos
RESET Establece que todas las estadsticas de todas las entidades se hacen 0, pero las transacciones actuales en el modelo no se eliminan. F(SERVER) S(1), Q(LINE), ALL(F) Todas las estadsticas se hacen 0, excepto las de la instalacin SERVER. Todas las estadsticas se hacen 0, excepto las d el almacn nmero 1, la cola LINE y todas las instalaciones del modelo. Es equivalente a RESET F(SERVER), S(1) START 1

RESET RESET

RESET RESET START

F(SERVER) S(1) 1

RESET y START en combinacin pueden dividir una simulacin en dos etapas, la de inicio y la recoleccin de datos. Considere la siguiente secuencia de instrucciones:
CLEAR START 1 RESET START 10 etapa de inicio etapa de recoleccin de datos

50

CLEAR hace 0 todas las estadsticas y elimina todas las transacciones del modelo. ste queda vaco y todas las instalaciones y almacenes estn ociosos. START inicia la ejecucin del modelo. Despus de un tiempo, cuando el contador de terminacin de la simulacin llega a 0 o menos, se suspende la ejecucin del modelo. RESET restablece todas las estadsticas en 0, es decir, se descartan todas las observaciones recolectadas hasta este punto. Las transacciones se quedan en donde estn. Observe que la combinacin CLEAR-START-RESET especifica el tiempo para la etapa de inicio. El segundo START reanuda la ejecucin y como las transacciones no se eliminaron, el modelo no reanuda vaco y no todas las instalaciones y almacenes estn ociosos. En este tiempo, se espera que el sistema haya alcanzado su estado estable. La ejecucin del modelo contina hasta que el contador de terminacin llega de nuevo a 0 o menos. La etapa de recoleccin de datos consiste en el periodo entre el ltimo RESET y el tiempo de terminacin. Las observaciones recolectadas en este periodo se usan para estimar el valor de las caractersticas de inters. BRESET Es la contraparte de bloque de la instruccin de control RESET. Las acciones del bloque BRESET son idnticas a las de la instruccin de control; es decir, las estadsticas cuyo valor no debe restablecerse en 0 se pueden especificar con el operando A.

51

14 Instrucciones de control repetitivas y condicionales


Se vern dos conjuntos de instrucciones de control, DO-ENDDO para ciclos e IFELSEIF-ELSE-ENDIF para la ejecucin condicional. La combinacin de instrucciones de control DO-ENDDO realiza ejecuciones repetidas de las instrucciones de control que se encuentran entre DO y ENDDO. Su funcin es similar a las instrucciones de ciclos en muchos otros lenguajes, como FOR-NEXT en BASIC, FOR-DO en Pascal y DO en FORTRAN. La combinacin de instrucciones de control IF-ELSEIF-ELSE-ENDIF especifica que un conjunto de instrucciones deben ejecutarse slo cuando es verdadera una condicin dada correspondiente a un conjunto particular de instrucciones. Esta combinacin es similar a IF-THEN-ELSE en BASIC, FORTRAN Y PASCAL.

DO y ENDDO Se usan en combinacin y construyen un ciclo en que debe ejecutarse un conjunto de instrucciones de control. El formato es
DO &index=va11, va12, va13

donde &index, la variable ndice, debe ser una ampervariable entera escalar y va11, va12, va13 son valores numricos, SNA o ampervariables. El valor va11 es el valor inicial de la variable ndice. El valor va12 es el valor lmite del ndice. El valor va13 es el incremento, o sea, el valor que debe agregarse a la variable ndice cada vez que se ejecuta el ciclo. El valor predeterminado de va13 es 1. La instruccin ENDDO no tiene operandos. Cuando GPSS/H encuentra una instruccin DO por primera vez, la variable ndice se hace igual a su valor inicial. Despus, el valor de la variable ndice se compara con el lmite va12. Pueden ocurrir dos casos: 1. Si el valor del ndice es mayor que el valor lmite, GPSS/H sale del ciclo y contina la ejecucin de la simulacin con la instruccin que sigue a ENDDO. 2. Si el valor del ndice es menor o igual que el valor lmite, GPSS/H ejecuta las instrucciones que siguen a DO hasta que encuentra ENDDO. Cuando GPSS/H llega a ENDDO, agrega el valor del incremento al valor actual de la variable ndice. Despus regresa a la instruccin DO donde hace otra comparacin y el control se dirige hacia donde debe.

52

Ejemplo
DO &I=1,5 La ampervariable &I se hace igual a 1. El lmite es 5. El valor del incremento no se establece, se usa el valor predeterminado de 1. Se compara el valor de &I con 5; como es menor, se ejecutan las instrucciones dentro del ciclo. Establece todas las estadsticas igual a 0 y elimina todas las transacciones del modelo. 1 Establece el contador de terminacin de la simulacin igual a 1. Cuando termina la simulacin, el control pasa a ENDDO. Enva de regreso a DO, donde compara el valor de &I hasta que sea mayor que 5.

CLEAR START ENDDO

Observe que el ciclo DO se puede anidar, es decir, es posible tener varias combinaciones DO-END una dentro de la otra. Debe notarse que la variable ndice en una instruccin DO se puede cambiar en otras partes del modelo, lo que puede dar como resultado una ejecucin incorrecta o causar un ciclo infinito. Se recomienda evitar el uso de las variables ndice en otras partes del modelo. IF, ELSEIF, ELSE Y ENDIF La combinacin IF-ELSEIF-ELSE-ENDIF permite la ejecucin condicional de un grupo de instrucciones de control. El formato general es el siguiente.
IF ELSEIF cond2 (instrucciones que se ejecutan si cond2 es verdadera) ELSEIF cond3 (instrucciones que se ejecutan si cond3 es verdadera) ELSE (instrucciones que se ejecutan si todas las condiciones son falsas) ENDIF cond1 (instrucciones que se ejecutan si cond1 es verdadera)

Aqu, cond1, cond2, ... son expresiones lgicas Boleanas que se evalan como falsas o verdaderas. Observe que IF y ENDIF se requieren mientras que ELSEIF y ELSE son opcionales. Adems, ELSEIF puede usarse cualquier nmero de veces, pero ELSE se utiliza slo una vez. Las instrucciones de control ELSE y ENDIF no tienen operandos asociados. Cuando GPSS/H ejecuta una instruccin de control IF, evala la condicin especificada. Si es falsa, procede al siguiente ELSEIF, ELSE o ENDIF. Si es verdadera, entonces ejecuta las instrucciones que siguen de inmediato a IF, hasta que encuentra un ELSEIF, ELSE o ENDIF. Despus de ejecutar estas instrucciones, el control se transfiere a la instruccin que sigue justo despus de ENDIF.

53

La instruccin de control ELSEIF se evala slo cuando la condicin en IF es falsa. Si la condicin especificada en ELSEIF es falsa, GPSS/H procede al siguiente ELSEIF, ELSE o ENDIF. Si es verdadera, ejecuta las instrucciones que siguen inmediatamente a ELSEIF hasta encontrar una instruccin ELSEIF, ELSE o ENDIF. Una vez ejecutadas estas instrucciones, el control se transfiere a la instruccin que sigue a ENDIF. La instruccin ELSE se ejecuta slo cuando las condiciones especificadas en IF y todas las ELSEIF son falsas. GPSS/H ejecuta las instrucciones que siguen a ELSE hasta encontrar ENDIF. Ejemplo
IF PUTPIC VALOR DE &I ES MENOR O IGUA QUE 5 ELSEIF PUTPIC VALOR DE &i ES MAYOR QUE 5 Y MENOR O IGUAL QUE 10 ELSE PUTPIC VALOR DE &i ES MAYOR QUE 10 ENDIF Se ejecuta la instruccin PUTPIC que sigue y transfiere el control a ENDIF. &I<=10 Si &I es mayor que 5 se ejecuta esta instruccin. Si &I es menor o igual a 10, se ejecuta PUTPIC y sale a ENDIF, si no lo es, va a ELSE. &I<=5 Si el valor de &I es mayor o igual que 5 entonces se ejecuta la instruccin PUTPIC que sigue y el control se transfiere a ENDIF.

Las combinaciones IF-ELSEIF-ELSE-ENDIF se pueden anidar:


IF IF CLEAR START 1 ENDIF ENDIF &I=2 &J=2 Dice que CLEAR y START se ejecutan slo si tanto &I como &J son iguales a 2.

Estas combinaciones permiten el uso de expresiones Boleanas complejas con los operadores AND, OR y NOT. La expresiones complejas puede requerir parntesis. El ejemplo anterior se puede simplificar como sigue:
IF CLEAR START 1 ENDIF (&I=2) and (&J=2)

Adems, las expresiones Boleanas pueden contener expresiones aritmticas, como


IF (&I+S(ROOM)<=10) OR (10.&len>=5)

Los ciclos de DO se pueden anidar en una combinacin IF-ELSEIF-ELSE-ENDIF. Por ejemplo

54

IF DO CLEAR START ENDDO ENDIF

&CURRENT<&LIMIT &i=1, 5

Si el valor de &CURRENT es menor que el valor &LIMIT, se ejecuta el ciclo DO. Si no lo es, el control se transfiere a la instruccin que sigue a ENDIF. Estas combinaciones tambin se pueden anidar a la inversa, esto es IF-ELSEIF-ELSE-ENDIF dentro de una combinacin DO-ENDDO.

START (de nuevo) Como se vio, la instruccin de control START establece el contador igual al valor del operando A. Cuando el contador es mayor que 0 se inicia la ejecucin del modelo introduciendo transacciones va los bloques GENERATE. Cuando el contador llega a un valor de 0 o menor, la ejecucin se suspende y se escribe un reporte estndar a un archivo con terminacin ".LIS". Existe un mtodo para suprimir esta escritura de estadsticas. ste especifica los caracteres "NP" como el operando B de la instruccin de control START. Entonces, en
START 7, NP

inicia la simulacin que durar 7 unidades de tiempo y no se imprimir el informe estadstico.

55

15 Nmeros aleatorios y funciones de GPSS/H


Una entidad de funcin define la relacin entre una variable independiente y un conjunto de variables o valores variables dependientes. Una funcin puede ser integrada o definida por el usuario. Una funcin definida por el usuario se define mediante la instruccin de control FUNCTION. Una funcin integrada es una definida por GPSS/H. Se vern las funciones integradas para generar valores a partir de distribuciones. Existen varios tipos de funciones definidas por el usuario: de valores numricos continuos, de valores numricos discretos, de valores numricos en una lista, de valores de atributos discretos, de valores de atributos en una lista y selector de entidades. Se vern los tipos de funciones de valores numricos continuos y discretos. Los nmeros aleatorios tienen un papel importante en simulacin. Como se mencion, la simulacin de un modelo est impulsada por los nmeros aleatorios, y los resultados de la simulacin dependen de los nmeros aleatorios generados durante una corrida. Al realizar mltiples corridas de simulacin del mismo modelo con diferentes conjuntos de nmeros aleatorios se obtienen conjuntos distintos de resultados. Los nmeros aleatorios generados para una simulacin se conocen como nmeros "seudoaleatorios".

Nmeros aleatorios
Los nmeros aleatorios se usan para varios propsitos, como calcular los tiempos entre llegadas de las transacciones (va un bloque GENERATE), para estimar el tiempo de procesamiento de una transaccin (va un bloque ADVANCE), para determinar el direccionamiento probabilstico de una transaccin (a travs de un bloque TRANSFER) y para probar una condicin probabilstica (con un bloque TEST). Los nmeros aleatorios generados por GPSS/H no son verdaderamente "aleatorios", son seudoaleatorios, lo que significa que se generan usando un algoritmo. Por lo tanto, la secuencia de nmeros seudoaleatorios se puede reproducir. An cuando no sean verdaderamente aleatorios, poseen algunas propiedades deseables de los nmeros aleatorios. Adems la posibilidad de reproducirlos permite revisar (debug) el programa. Por ejemplo, si una corrida de simulacin produce resultados poco usuales, se pueden reproducir para analizarlos, ya que puede usarse el mismo conjunto de nmeros aleatorios. Las observaciones aleatorias para distribuciones de probabilidad conocidas se pueden generar a partir de los nmeros derivados de una distribucin uniforme (0, 1). Por ejemplo, una distribucin uniforme (0, 1) se puede transformar con facilidad en una muestra de una distribucin exponencial. Si FRN(1) genera un nmero aleatorio entre 0 y 1, entonces la expresin LOG(FRN(1)) produce una muestra de una distribucin exponencial con media 1. (GPSS/H tiene una funcin logartmica integrada, LOG.)
56

Generadores de nmeros aleatorios


Un generador de nmeros aleatorios usa un algoritmo para generar nmeros uniformes (0, 1) seudoaleatorios. El nmero aleatorio empleado por GPSS/H es el generador lineal congruencial multiplicativo de Lehmer. Un buen generador de nmeros aleatorios debe tener las siguientes propiedades: los nmeros seudoaleatorios deben ser no correlacionados; los nmeros seudoaleatorios deben tener una distribucin uniforme entre 0 y 1; el generador debe producir una secuencia "larga" de nmeros seudo aleatorios, y el generador debe ser lo ms rpido posible.

No tener correlacin significa no contar con un patrn predecible. Por ejemplo, si un nmero est consistentemente cerca del nmero anterior, se dice que tienen correlacin positiva. Si los nmeros seudoaleatorios saltan de un lado a otro entre valores grandes y pequeos, entonces se dice que tienen una correlacin negativa. En general, las observaciones de otras distribuciones estadsticas se pueden calcular a partir de los nmeros aleatorios con distribucin uniforme (0, 1). El procedimiento para generar una observacin aleatoria de otra distribucin se compone de dos pasos. Primero se genera un nmero seudoaleatorio uniforme (0, 1). Segundo, se calcula un valor de la distribucin estadstica de inters sustituyendo este nmero seudoaleatorio en su funcin. Si los nmeros entre 0 y 1 no son uniformes, entonces algunos nmeros entre 0 y 1 aparecern con ms frecuencia que otros. Esto significa que las observaciones aleatorias no son representativas de la distribucin de inters. Una propiedad de la cadena de nmeros seudoaleatorios es que con el tiempo se repetir. La cantidad mxima de dichos nmeros en una secuencia, antes de que se repita, se conoce como el periodo del generador. Es deseable que el generador tenga un periodo extremadamente grande para que no se repita en la mayor parte de los trabajos prcticos. Como se necesita un nmero grande de nmeros seudoaleatorios para una corrida de simulacin (en especial en un modelo grande), es muy deseable que el generador sea eficiente y que produzca los nmeros con rapidez.

Cadenas de nmeros aleatorios


El generador aleatorio de Lehmer usado por GPSS/H tiene un periodo de 2 147 483 646(231-2). As, se pueden generar ms de dos millones de valores antes de que la secuencia se repita. GPSS/H permite usar cualquier nmero de cadenas aleatorias en un modelo. Cada cadena es alguna porcin de la secuencia completa. En algunos modelos complejos, tal vez se desee usar cadenas de mltiplos no traslapadas. Cada cadena se determina por el punto de inicio en la cadena completa. Las instrucciones RMULT y BRMULT se emplean para especificar un punto de inicio para la cadena de nmeros aleatorios.

57

Existen dos atributos numricos estndar asociados con los nmeros seudoaleatorios:
SNA RN(j) Descripcin Genera un nmero de la cadena de nmeros seudoaleatorios j. Cuando se usa como argumento de una funcin, el nmero tiene distribucin uniforme, de punto flotante en el intervalo (0, 1), excluidos los puntos terminales. En otros contextos, el nmero es un entero con distribucin uniforme en el intervalo [0, 999] incluidos los puntos terminales. Genera un nmero de punto flotante, con distribucin uniforme en el intervalo (0, 1), excluidos los puntos terminales, a partir de la cadena de nmeros seudoaleatorios j.

FRN(j)

Ejemplos
RN(1) Genera un nmero de la cadena de nmeros seudoaleatorios 1. Si RN(1) se usa como operando de la instruccin FUNCTION, el nmero obtenido ser un valor de punto flotante; de otra manera, ser un entero. Establece que se debe generar un nmero de punto flotante de la cadena de nmeros seudoaleatorios 3.

FRN(3)

RMULT y BRMULT La instruccin de control RMULT especifica el punto de inicio en la secuencia de nmeros seudoaleatorios para una secuencia generada. El formato es el siguiente
RMULT pt1, pt2, . . .

donde pt1 es el punto de inicio para la cadena de nmeros seudoaleatorios 1 (es decir, para RN(1)), pt2 es el punto de inicio para la cadena 2 (para RN(2)), etctera. Si no se especifica el punto de inicio de la cadena i, entonces el punto de inicio predeterminado es (100 000*I). En otras palabras, el punto de inicio de RN(1) es el elemento en la posicin 100 000 de la secuencia producida por el generador Lehmer. Para RN(2) sera elemento en el lugar 200 000 de la cadena, y as sucesivamente. Ejemplo
RMULT 37487,200000 El punto de inicio de la cadena de nmeros seudoaleatorios 1 es el elemento en la posicin 37 487 en la secuencia de nmeros aleatorios generada por el generador Lehmer. El punto de inicio para RN(2) es el elemento predeterminado en la posicin 200 000 y el punto de inicio para la cadena 3 es el elemento en la posicin 20 000. Observe que la segunda y tercera cadenas sern idnticas, esto no se desea en un modelo.

La contraparte de bloque de la instruccin RMULT es el bloque BRMULT. La funcin de este bloque es similar a la instruccin de control RMULT. Los operandos para el bloque BRMULT tambin son los mismos que para RMULT. Recuerde que en GPSS/H los operandos de RMULT especifican el punto de partida de la secuencia. No es necesario ni posible determinar la "semilla".
58

16 Funciones
La entidad funcin define la relacin entre una variable independiente y uno o ms valores dependientes. Los dos tipos de funciones que se vern a continuacin son funciones de valores numricos discretos y funciones de valores numricos continuos.

FUNCTION En GPSS/H una entidad funcin se define por la instruccin de control FUNCTION. Su formato es
label FUNCTION X1,Y1 / X2,Y2 / . . . ivar, ftipo

Label es el nombre o nmero de la funcin. La variable independiente ivar se puede codificar como una expresin arbitraria o un SNA. El operando B, ftipo, se compone de dos partes: la letra C (para el tipo continuo) o D (para el tipo discreto), seguida de inmediato por un entero positivo que da el nmero de pares ordenados X,Y en la(s) lnea(s) siguiente(s). La X en cada par ordenado (X,Y) debe ser numrica, la Y puede ser numrica o simblica. Los pares ordenados se separan entre s por una diagonal (/). Las siguientes reglas se aplican cuando se define una instruccin FUNCTION: El nmero de pares ordenados en la lista debe ser igual al nmero de pares ordenados especificados en la instruccin FUNCTION. Los valores de X deben ser estrictamente crecientes. No se permiten espacios en blanco al especificar los pares ordenados. Se puede usar ms de una lnea para especificar los pares ordenados (X,Y), con la restriccin de que un par ordenado no debe dividirse en dos renglones. Se usan a lo ms 71 columnas y se pasa a la siguiente lnea.

SNA para funciones El atributo numrico estndar (SNA) asociado con las funciones es FN SNA. El formato de FN SNA es FN(j), donde j es el nmero o nombre de la funcin. Ejemplos
FN(PROB) GPSS/H evala la funcin llamada PROB. Esta funcin debe haberse definido por una instruccin de control FUNCTION. Despus de evaluarla, GPSS/H proporciona el valor numrico de la funcin. Se evala la funcin nmero d 2 y se proporciona el valor numrico.

FN(2)

59

Funciones de valores numricos discretos


En una funcin de valores numricos discretos, GPSS/H evala la variable independiente especificada en el operando A de la instruccin de control FUNCTION. Despus revisa los pares ordenados, que deben estar en orden ascendiente, y determina el primer valor de X que es mayor o igual que el valor de la variable independiente. El valor obtenido para la funcin es el valor de Y correspondiente en el par ordenado. Suponga que la funcin PROB se define como
PROB FUNCTION RN(1), D5 0.2,1/0.4,2/0.6,3/0.8,4/1.0,5
Y 5 4 3 2 1 0 0.2 0.4 0.6 0.8 1.0 RN(1)

Esta funcin se puede representar por la grfica

En esta instruccin de control FUNCTION, se genera un nmero entre 0 y 1 de la cadena de nmeros aleatorios 1. Si el nmero es 0.2 o menor, la funcin regresa un valor de 1. Si el nmero est entre 0.2+ (es decir un valor mayor que 0.2) y 0.4, la funcin regresa un valor de 2, y as sucesivamente. Suponga que el nmero generado es 0.5. La primera X que excede a 0.5 es 0.6. El valor de Y correspondiente es 3. Por lo tanto, la funcin regresa el valor 3. Observe que esta funcin da los valores 1, 2, 3, 4 y 5 cada uno con 20% de oportunidad de ser seleccionado.

Funciones de valores numricos continuos


En las funciones de valores numricos continuos, GPSS/G evala la variable independiente especificada en el operando A de la instruccin de control FUNCTION. Despus revisa los valores de X, que deben estar en orden ascendiente, y determina el primer valor de X mayor que o igual al valor de la variable independiente. Se registra el valor de Y correspondiente y GPSS/H hace una interpolacin lineal entre este valor Y y el valor Y del par ordenado anterior. Proporciona el valor interpolado. Suponga que una funcin se define como
PROB FUNCTION RN(1),C6 0.0,0/0.1,1/0.4,2/0.5,3/0.7,4/1.0,5
Y 5 4 3 2 1 0 0.1 0.2 0.4 0.5 0.7 1.0 RN(1)

Esta funcin se puede representar por la grfica

En este ejemplo, se genera un nmero aleatorio uniforme (0,1) de la cadena de nmeros aleatorios 1. Si el nmero est entre 0 y 0.1, se realiza una interpolacin
60

lineal entre los valores de Y, 0 y 1. Si el nmero est entre 0.1 y 0.4, se realiza una interpolacin lineal entre los valores de Y, 1 y 2, etctera. Suponga que el nmero generado a partir de la cadena 1 es 0.6. El nmero 0.6 est entre los valores 0.5 y 0.7. Los valores de Y correspondientes son 3 y 4. GPSS/H realiza una interpolacin lineal entre 3 y 4 que da 3.5. Entonces, el valor que regresa la funcin PROB es 3.5.

Funciones integradas
GPSS/H tienen funciones integradas que generan observaciones aleatorias a partir de 26 distribuciones de probabilidad conocidas. Otras distribuciones se pueden generar con facilidad usando las distribuciones integradas y los SNA. A continuacin se presenta un resumen de las distribuciones integradas, los parmetros que usan y un ejemplo con la descripcin de su funcionamiento.
Funcin/formato BETA RVBETA(rns,a1,a2) donde Ejemplo Descripcin Establece que se debe usar la cadena de nmeros aleatorios 1 para generar una muestra de una distribucin beta con parmetros 3.0 y 0.5. Se usa la cadena de nmeros aleatorios 6 para generar una muestra de una distribucin binomial con 4 pruebas y probabilidad de 0.8. Con la cadena de nmeros aleatorios 4, genera una muestra de una distribucin uniforme discreta entre 3 y 7. Se usa la cadena 2 para generar una muestra de la distribucin Erlang con parmetro m=6 y media 0.75. Se usa la cadena 6, el parmetro se localiza en -5 y el parmetro de escala de una distribucin de valor extremo tipo A es 1.2. Como el intervalo de la distribucin es de - a +, pueden obtenerse valores negativos. Se usa la cadena de nmeros aleatorios 2, 3.5 es el parmetro de localizacin y .8 es la escala del parmetro. Esta distribucin puede producir nmeros negativos por la misma razn que la funcin anterior.

rns = cadena de RVBETA(1, 3.0, .5) nmeros aleatorios a1 y a2 = parmetros de la distribucin beta. RVBIN(6, 4, .8)

BINOMIAL

Pruebas = entero positivo RVBIN(rns,pruebas,prob) prob = nmero real entre 0.0 y 1.0. UNIFORME DISCRETA RVDUNI(rns,a,b) a = entero, lmite inferior del intervalo, b = entero, lmite superior del intervalo (con a b). m = entero positivo media de la distribucin = nmero positivo real. gama = localizacin del parmetro, cualquier nmero real beta = escala de la distribucin, nmero real positivo.

RVDUNI(4, 3, 7)

ERLANG RVERL(rns,m,media)

RVERL(2, 6, .75)

VALOR EXTREMO TIPO A RVEVA(rns,gama,beta)

RVEVA(6, -5, 1.2)

VALOR EXTREMO TIPO B RVEVB(rns,gama,beta)

gama = localizacin del parmetro, un nmero real beta = nmero real positivo, escala de la distribucin.

RVEVB(2, 3.5, .8)

61

Funcin/formato EXPONENCIAL RVEXPO(rns,media)

donde rns = cadena de nmeros aleatorios media = media de la distribucin exponencial (siempre es positiva) rns = cadena de nmeros aleatorios a = parmetro de forma b = parmetro de escala (a y b positivos) rns = cadena de nmeros aleatorios prob = nmero real entre 0.0 y 1.0 rns = cadena de nmeros aleatorios a = parmetro de forma b = parmetro de escala de la distribucin gaussiana. rns = cadena a = parmetro de forma b = parmetro de escala c = localizacin del parmetro de la distribucin invertida de Weibull.

Ejemplo RVEXPO(1, 3.0)

Descripcin Establece que se debe usar la cadena de nmeros aleatorios 1 para generar una muestra de una distribucin exponencial con media 3.0. Debe usarse la cadena de nmeros aleatorios 8 para generar una muestra de una distribucin gama con parmetro de forma .5 y escala 1.0. Se usa la cadena aleatoria 4 para generar una muestra de una distribucin geomtrica con probabilidad 0.7. Se usa la cadena 7 para generar una muestra de una distribucin de Gauss inversa con parmetro de forma 1.0 y parmetro de escala 0.25.

GAMA RVGAMA(rns,a,b)

RVGAMA(8, .5, 1.0)

GEOMTRICA RVGEO(rns,prob)

RVGEO(4, .7)

GAUSSIANA RVIGAU(rns,a,b)

RVIGAU(7, 1.0, .25)

WEIBULL INVERTIDA RVIWEIB(rns,a,b,c)

RVIWEIB(3,1.5,.5,1.0) Se usa la cadena 3 para generar muestras de la distribucin invertida con los parmetros dados para la distribucin invertida de Weibull.

JOHNSON S ACOTADA RVJSB(rns,a1,a2) (Johnson S acotada)

RVJSB(4,75.1-0) rns = especifica la cadena a1 = parmetro de forma, nmero real de - a + a2 = parmetro de forma, nmero real positivo. rns = cadena a1 = nmero real de - a + a2 = nmero real mayor o igual a 0.0. RBJSU(1,4.5,2.0)

Usa la cadena 4 de nmeros aleatorios para generar muestras de un distribucin Johnson S acotada con parmetros de forma 75 y 1.0.

JOHNSON S NO ACOTADA RVJSU(rns, a1,a2)

Usa la cadena aleatoria 1 para generar muestras aleatorias de una distribucin Johnson S no acotada con parmetros 4.5 y 2.0. Usa la cadena 2, el parmetro de localizacin -1.5 y de escala 1.5 para generar muestras de una distribucin de LaPlace. Como el intervalo de la funcin es - a +, se pueden obtener valores negativos.

LAPLACE RVLAP(rns,gama,beta)

RVLAP(2, -1.5, 1.5) rns = cadena gama = parmetro de localizacin beta = parmetro de escala, nmero real positivo

62

Funcin/formato LOGSTICA RVLGCT(rns,g,b)

donde rns = cadena de nmeros aleatorios g = parmetro de localizacin, nmero real b = parmetro de escala, real positivo rns = cadena alfa = parmetro de forma beta = parmetro de escala (reales 0). rns = cadena de nmeros aleatorios med = media var = variancia (ambos, nmeros reales positivos)

Ejemplo RVLGCT(1, 3.0,2.0)

Descripcin Establece que se debe usar la cadena de nmeros aleatorios 1 para generar una muestra de una distribucin logstica con parmetros 3.0 y 2.0.

LOG-LAPLACE RVLLP(rns,alfa,beta)

RVLLP(2,1.5,.75)

Usa la cadena 2, para generar muestras de una distribucin Log-Laplace con parmetros 1.5 y .75.

LOG-NORMAL RVLNOR(rns,med,var) (Log-Normal)

RVLNOR(6,8.5,2.0)

Se usa la cadena de nmeros aleatorios 6 para generar una muestra de una distribucin con media 8.5 y variancia 2.0

BINOMIAL NEGATIVA RVNBIN(rns,exito,prob)

RVNBIN(6, 2, .12) rns = cadena exito = nmero de xitos (entero positivo) prob = probabilidad de xito (real entre 0 y 1) rns = cadena med = media std = desviacin estndar RVNORM(2,12.0,2.0)

Usa la cadena 6 para generar una muestra de una distribucin binomial negativa para 2 xitos con probabilidad .12. Usa la cadena 2 para generar una muestra normal con media 12.0 y desviacin estndar 2.0.

NORMAL RVNORM(rns,med,std)

Debe tenerse cuidado al obtener esta muestra, pues el intervalo de la normal es de infinito negativo a infinito positivo. Los valores de tiempo no pueden ser negativos. En este caso se recomienda que la media sea al menos 5 veces la desviacin estndar. Esto no garantiza que no se obtenga un nmero negativo, pero la probabilidad ser muy pequea. Si ocurre, saldr un mensaje de error. POISSON RVPSSN(rns,media) rns = cadena de nmeros aleatorios media = media (nmero real mayor que 0.0) 1rns = cadena alfa = parmetro de forma (real > 0) beta = parmetro de escala (real > 0) 1rns = especifica la cadena a1 y a2 = parmetros de forma (reales > 0) beta = parmetro de escala (real > 0). 1rns = cadena alfa = parmetro de forma (real > 0) beta = parmetro de la caminata aleatoria (real > 0). RVPSSN(4, 2.5) Usa la cadena de nmeros aleatorios 4 para generar una observacin a partir de la distribucin Poisson con media de 2.4. Usa la cadena 3 para generar un muestra de una distribucin Pearson tipo 5 con parmetros 1.3 y 0.4. Usa la cadena 7 para generar un muestra de una distribucin Pearson tipo 6 con parmetros de forma 1.3 y 0.4 y parmetro de escala 1.0. Usa la cadena de nmeros aleatorios 1 para generar una muestra de una distribucin de caminata aleatoria con parmetro de forma 3.0 y de escala 2.0.

PEARSON TIPO 5 RVPT5(rns,alfa,beta)

RVPT5(3, 1.3, .4)

PEARSON TIPO 6 RVPT6(rns,a1,a2, b)

RVPT6(7,1.5,1.0,1.0)

CAMINATA ALEATORIA RVRWK(rns,alfa,beta)

RVRWK(1, 3.0, 2.0)

63

Funcin/formato TRIANGULAR

donde

Ejemplo

Descripcin

rns = cadena min = valor mnimo RVTRI(rns,min,mod,max) mod = moda max = valor mximo Observe que min mod max. UNIFORME RVUNI(rns,med,dis)

RVTRI(3,0.0,7.5,10.0) Usa la cadena 3 para generar una muestra aleatoria de la distribucin triangular entre 0.0 y 10.0 con valor de la moda de 7.5. Usa la cadena de nmeros aleatorios 5 para generar una muestra de una distribucin uniforme con media 6.5 y dispersin de .45. El intervalo de la distribucin es 6.5 .45 Usa la cadena de nmeros aleatorios 1 para generar una muestra de una distribucin de Weibull con parmetros 3.0 de forma y 2.75 de escala.

RVUNI(5, 6.5, .45) rns = cadena med = media (nmero real) dis = dispersin arriba y abajo de la media. rns = cadena alfa = parmetro de forma beta = parmetro de escala (ambos reales > 0.0) RVWEIB(1, 3.0, 2.75)

WEIBULL RVWEIB(rns,alfa,beta)

64

17 Ejemplos y ejercicios Ejemplo: fbrica de ropa (seccin 3)


Se necesita un fajo de tela para hacer una docena de camisetas. Los bultos se entregan en el muelle de una planta de ropa con una frecuencia de entre 3 y 5 minutos. Como existe incertidumbre en la variacin del tiempo entre llegadas real, se usar la distribucin uniforme para representarlo. En cuanto llega un fajo al muelle, se descarga a una canastilla del alimentador y se empuja el rea de corte. Lleva cerca de 2 minutos que el alimentador transporte un fajo del muelle al rea de corte. Se supone que existen suficientes canastillas para que cuando llega un fajo no tenga que esperar. En el rea de corte, un servidor arregla la tela en las componentes separadas de una camiseta y las carga en un carro de transporte. Se estima que el servidor toma entre 2.75 y 4.75 minutos, con distribucin uniforme para terminar su tarea. La siguiente figura muestra un diagrama del sistema.

REA DE CORTE

DEL MUELLE

TELA

TELA

TELA

TELA

AL REA DE COSTURA

Estamos interesados en dos preguntas: 1. Cunto tiempo toma al servidor de la lnea preparar 100 fajos? 2. Qu tan ocupado est el servidor de la lnea durante este periodo?
GENERATE 4,1

Modelo de GPSS/H
El sistema inicia con la llegada de un fajo al muelle y termina cuando el fajo sale del rea de corte. Una transaccin representa un fajo, cada uno hace una docena de camisetas. Como el servidor es un recurso de una unidad, se modela como una instalacin. Por otra parte, existe un nmero casi ilimitado de canastillas; no se necesita una entidad especial para modelar esa "capacidad infinita" del servidor. En este modelo de GPSS/H, una unidad de tiempo representa 1 minuto. El diagrama de bloques para este modelo se muestra en la figura de la derecha. La llegada de un fajo de tela se modela por un bloque GENERATE. El tiempo de transporte del muelle al rea de corte se modela por un bloque ADVANCE. La instalacin llamada SERVER representa el servidor de la lnea. El bloque SEIZE modela la solicitud y captura de la instalacin de servicio. Otro bloque
ADVANCE 2

SEIZE SERVER

ADVANCE 3.75,1

SERVER RELEASE

TERMINATE 1

65

ADVANCE modela el tiempo que toma al servidor preparar el fajo de tela. Un bloque RELEASE libera la instalacin SERVER. Por ltimo, el bloque TERMINATE modela la salida de un fajo del rea de corte y del sistema A continuacin se muestra el listado del modelo. Observe que se muestran tanto las instrucciones de bloque como las de control.
SIMULATE * * * GPSS/H block section GENERATE ADVANCE SEIZE ADVANCE RELEASE TERMINATE * * * 4,1 2 SERVER 3.75,1 SERVER 1 Llega un fajo cada 4+-1 minutos Tiempo de transporte al rea de costura Capturar al servidor de la lnea Preparar un fajo Libera al servidor Se suma 1 a los fajos terminados

GPSS/H Control Statement START END 100 Terminar simulacin despus de 100 fajos

Este modelo se puede interpretar con la explicacin anterior y los comentarios a la derecha del listado.

Corrida del modelo de GPSS/H


El modelo de GPSS/H se puede escribir en un procesador de textos. Asegrese que queda en ASCII. Esto elimina el formato de caracteres que algunos procesadores escriben en el archivo. Este formato puede causar errores en la compilacin. GPSS/H reconoce los tabuladores como tales (en las columnas 9, 17, 25, ...). Asegrese de que el nombre del archivo de GPSS/H tiene la extensin ".GPS", por ejemplo, EX3-1.GPS. Existen dos maneras de correr un modelo. La primera se expuso en la seccin de "introduccin a GPSS/H". Se escribe
GPSSH

y se oprime <ENTER>. GPSS/H pide el nombre del modelo. La otra manera es especificar directamente el nombre del modelo. Se escribe
GPSSH <nombre del archivo>

Donde el nombre del archivo corresponde al archivo fuente con o sin extensin. Por ejemplo, para compilar Ex3-1.GPS, se escribe
GPSSH EX3-1 o GPSSH EX3-1.GPS

Si la compilacin tiene xito, GPSS/H ejecutar el modelo. Escribir la salida estndar en un archivo con el mismo nombre y extensin ".LIS". Si se detecta un error, aparecer un mensaje de error en la pantalla.
66

Explicacin del archivo de salida estndar de la simulacin


El archivo de salida estndar se divide en dos partes. La primera contiene un resumen del modelo de GPSS/H. La segunda contiene los resultados de la simulacin. El siguiente cuadro contiene el resumen del modelo para el ejemplo, que se divide en cuatro secciones: el listado, el directorio de entidades, las referencias cruzadas y un breve resumen de uso de memoria.
STUDENT GPSS/H RELEASE 3.20-32 (UG021) 28 Aug 2001 13:34:54 FILE EX3-1.GPS LINE# STMT# IF DO BLOCK# *LOC OPERATION A,B,C,D,E,F,G COMMENTS 1 1 SIMULATE 2 2 * 3 3 * Seccin de bloques de GPSS/H 4 4 * 5 5 1 GENERATE 4,1 Llega un fajo cada 4+-1 minutos 6 6 2 ADVANCE 2 Tiempo de transporte al rea de costura 7 7 3 SEIZE SERVER Capturar al servidor de la lnea 8 8 4 ADVANCE 3.75,1 Preparar un fajo 9 9 5 RELEASE SERVER Libera al servidor 10 10 6 TERMINATE 1 Se suma 1 a los fajos terminados 11 11 * 12 12 * Instrucciones de control GPSS/H 13 13 * 14 14 START 100 Terminar simulacin despus de 100 fajos 15 15 END ENTITY DICTIONARY (IN ASCENDING ORDER BY ENTITY NUMBER; "*" => VALUE CONFLICT.) Facilities: 1=SERVER SYMBOL VALUE EQU DEFNS CONTEXT REFERENCES BY STATEMENT NUMBER SERVER 1 Facility 7 9

La seccin del listado proporciona informacin del modelo. La primera lnea de cada pgina muestra el nmero de versin de GPSS/H, la fecha y la hora de la ejecucin, y el nombre del modelo. El listado en s muestra las asignaciones de nmeros de lnea y de bloque dadas en la compilacin. El diccionario de entidades resume los smbolos usados en el modelo. Un smbolo es un nombre de una entidad (como el nombre de un bloque o una instalacin). Esta seccin muestra el nmero de referencia dado a una entidad en la compilacin. Por ejemplo, se asigno el valor 1 a la instalacin SERVER. Las seccin de referencias cruzadas muestra a qu se refiere cada smbolo en la lista del diccionario de entidades y en qu parte del modelo se hace referencia a l. En el ejemplo, abajo de CONTEXT se muestra que SERVER se us como instalacin y que se hace referencia a SERVER en las lneas 7 y 9. Estas dos secciones llegan a ser tiles al analizar (debug) modelos grandes. Por otro lado, cuando un modelo es grande, estos listados pueden ser muy extensos, de manera que despus de terminar de hacer un anlisis, tal vez sea mejor suprimirlos. Para esto se usan las opciones NODICT y NOXREF para suprimir la impresin del diccionario de entidades y las referencias cruzadas, respectivamente. Estas opciones se pueden

67

especificar al llamar a GPSS/H. Por ejemplo, para correr EX3-1 de esta manera se escribe
GPSSH EX3-1 NODICT NOXREF

La segunda parte del informe de salida estndar, los resultados de la simulacin se muestran en el siguiente cuadro. Estos resultados se puede separar en cuatro secciones: el reloj, el bloque de conteo, el resumen de entidades y las cadenas de nmeros aleatorios.
RELATIVE CLOCK: 399.2730 BLOCK CURRENT 1 2 1 3 4 5 6 FACILITY PERCENT AVAIL TOTAL 101 101 100 100 100 100 -AVG-UTIL-DURINGTOTAL AVAIL SEIZING PREEMPTING TIME TIME XACT XACT SERVER 0.956 100 RANDOM STREAM UNIFORMITY 1 ANTITHETIC VARIATES OFF UNAVL TIME 3.818 ENTRIES AVERAGE CURRENT TIME/XACT AVAIL STATUS ABSOLUTE CLOCK: 399.2730

INITIAL CURRENT SAMPLE CHI-SQUARE POSITION POSITION 10000 100202 202 0.70

COUNT

La seccin de reloj muestra los valores de los relojes relativo y absoluto al final de la corrida de simulacin. La seccin de conteo proporciona informacin de cada bloque en el modelo: La columna BLOCK muestra los nombres y nmeros de bloque La columna CURRENT muestra el nmero total de transacciones que residen en un bloque en el tiempo de simulacin actual La columna TOTAL muestra el nmero total de transacciones que entraron a los bloques en el curso de la simulacin. Por ejemplo, al terminar la simulacin en el tiempo 399.27, el nmero bajo CURRENT era 1 para el bloque 2, es decir que haba una transaccin en el bloque 2 en ese momento. El nmero bajo TOTAL era 101, o sea que el bloque 2 haba tenido 101 ejecuciones cuando la simulacin termin. La seccin de resumen despliega un resumen de la informacin sobre cada entidad usada en el modelo. En el ejemplo, la nica entidad usada fue la instalacin SERVER. Los encabezados del reporte de instalaciones (Facilities) dan la siguiente informacin: 1. La columna de FACILITY da el nombre o nmero de la instalacin 2. La columna AVG-UTIL-DURING- TOTAL TIME muestra la fraccin del tiempo total que la instalacin estaba capturada. 3. Una instalacin siempre est en uno de dos estados, disponible (available) o no disponible (unavailable). Las columnas correspondientes se refieren a la fraccin de

68

4. 5. 6.

7. 8. 9.

tiempo que la instalacin estuvo capturada en uno de esos dos estados. Si la instalacin estaba disponible, estas dos columnas quedan en blanco. La columna ENTRIES muestra el nmero total de veces que la instalacin fue capturada. La columna AVERAGE TIME/XACT muestra el tiempo promedio por captura. La columna CURRENT SATATUS muestra si el estado actual de la instalacin es disponible o no disponible. Para los ejemplos sencillos, siempre estar disponible (AVAIL) La columna PERCENT AVAIL muestra la fraccin del tiempo total que la instalacin estuvo disponible. En blanco significa 100%. La columna SEIZING XACT muestra el nmero de la transaccin actual que tiene el control de la instalacin. Si la instalacin est libre, la columna queda en blanco. Una instalacin puede ser interrumpida. La columna PREEMPTING XACT muestra la transaccin que interrumpe.

En el cuadro, el nmero abajo de -AVG-UTIL-DURING- TOTAL TIME es 0.956. Esto significa que la instalacin SERVER estuvo ocupada 95.6% del tiempo total. De la columna ENTRIES, SERVER estuvo capturada un total de 100 veces. De la columna AVERAGE TIME/UNIT, el tiempo promedio que las transacciones tuvieron a SERVER fue 3.818 unidades. Como 1 unidad de tiempo corresponde a 1 minuto, el tiempo promedio fue 3.818 minutos por transaccin. El espacio en blanco abajo de SEIZING XACT significa que SERVER estaba ocioso al terminar la corrida de simulacin. La seccin de nmeros aleatorios muestra la informacin sobre las cadenas de nmeros aleatorios usadas en el modelo. Slo se us una cadena de nmeros aleatorios para generar los nmeros aleatorios usados. Se usaron 202 nmeros aleatorios para simular la llegada al procesamiento de los fajos de tela. El nmero aleatorio en la posicin 201 se us para generar el tiempo entre el fajo 100 y el fajo 101. El nmero aleatorio en la posicin 202 se us para generar el tiempo entre el fajo 101 y el fajo 102 aunque ste ltimo no haba llegado cuando la simulacin termin.

Ejercicios (seccin 3)
1. Observe que cuando una simulacin se detiene con contador de terminacin cero o negativo, de hecho slo se suspende. Todas las transacciones (si hay) permanecen en el diagrama de bloque y todos los contadores estadsticos conservan su valor. Entonces, la simulacin puede seguir. Se puede modificar el modelo de la fbrica de ropa (en el archivo "EX3-1.GPS") agregando la instruccin de control START, como sigue.
: : TERMINATE START START END

1 100 100

simular hasta que 100 fajos se hayan ido simular hasta que otros 100 fajos se hayan ido

69

Se obtendrn dos cuadros de salida en el mismo archivo. Compare los resultados. Examine la salida para determinar si el segundo conjunto de estadsticas cubre los 200 fajos o slo los segundos 100. 2. En el ejemplo de la fbrica de ropa, la simulacin termin despus que 100 transacciones salieron del sistema. Qu pasa si la simulacin debe terminar despus de 8 horas? Esto puede lograrse si se modifica el modelo como sigue: a) Cambie el operando del bloque TERMINATE a 0. b) Inserte los siguientes dos bloques antes de la instruccin START: GENERATE 480 TERMINATE 1 c) Cambie el operando de START a 1. Corra el modelo y examine la salida. Puede explicar el efecto de los dos bloques GENERATE en el modelo? Qu pasa si la instruccin START 100 se deja sin cambio? 3. Escriba un modelo de GPSS/H para la siguiente situacin. Las partes llegan a una clula de trabajo cada 125100 segundos. Se transportan a la estacin de inspeccin en una banda. El tiempo de transporte es 60 segundos. Al final de la banda, un inspector prueba las partes; le lleva de 80 a 140 segundos, con distribucin uniforme. Despus, un operario ensambla las partes. El operario realiza una preparacin que toma 108 segundos, seguida del ensamble, que toma de 40 a 180 segundos con distribucin uniforme. Suponga que existe un espacio infinito delante de la estacin de inspeccin y entre las dos estaciones de trabajo. Simule hasta que salgan 500 partes de la estacin de ensamble. Corra su modelo y conteste: a) Qu representa una transaccin? b) Cules son los recursos del sistema? c) Cunto tiempo toma procesar las 500 partes? d) Cules son las tasas de utilizacin de los recursos? 4. Considere la siguiente variacin del ejercicio 3: Suponga que no hay espacio entre la estacin de inspeccin y la estacin de ensamble, de manera que una parte debe esperar en la estacin de inspeccin si el operario est ocupado. Esto es, si el inspector termina una inspeccin y el operario est ocupado, el inspector no puede iniciar la siguiente inspeccin hasta que el operario se desocupe. Responda las mismas preguntas del ejercicio 3. (Sugerencia: puede resolver este ejercicio con un simple intercambio entre los dos bloques en la solucin del ejercicio 3!) 5. Un cajero en un banco da servicio slo para depsitos. Estos clientes se procesan en 5025 segundos. Su tiempo entre llegadas es 7070 segundos. El gerente del banco observa que el cajero no est suficientemente ocupado y decide enviarle todos los clientes de cambio de moneda. Su tiempo de servicio ser 200100 segundos. Qu tiempo entre llegadas, en la forma de XX segundos, puede tolerar si el cajero debe estar ocupado 85% del tiempo? Simule la operacin del cajero para un da que inicia a las 9:00 am y concluye a las 4:00 pm sin descansos. (Sugerencia: simule con y sin el bloque ADVANCE con el operando A igual a 0 despus de cada bloque GENERATE. Son iguales los resultados? Por qu?

70

6. Los trabajos llegan a un centro de trabajo cada 6060 minutos. Los trabajos se colocan en un dispositivo y despus pasan a una operacin de perforacin durante 4020 minutos. Luego pasan a una estacin de lavado por 1210 minutos; por ltimo, van a una estacin de inspeccin durante 21 minutos, despus de lo cual el dispositivo se quita. Simule la operacin del sistema durante 100 horas. Use cero, uno, y tres pares de SEIZE-RELEASE para modelar el trabajo del centro (perforar, lavar, inspeccionar). Existen diferencias? 7. Los trabajos llegan a una estacin de inspeccin cada 6060 minutos. La inspeccin consiste en tres operaciones: examen de espectroscopia para identificar materiales desconocidos o contaminantes, prueba de impacto en partculas por ruido para localizar objetos extraos y prueba de tensin. Los tiempos respectivos para realizar estas operaciones son 2020, 2515 y 105 minutos. Simule 250 horas para determinar la utilizacin de la estacin de inspeccin. Existen diferencias en los resultados si las tres operaciones se combinan en una, llamada "inspeccin" con tiempo de 5540? 8. Los pacientes llegan a una clnica dental con servicio 24 horas, cada 5050 minutos. Hay slo un dentista de guardia en todo momento. El dentista tiene un tiempo de servicio que se distribuye como XX. Cul es el valor de X si el dentista debe estar ocupado alrededor de 90% del tiempo? Base su respuesta en la terminacin del tratamiento de 1000 pacientes. 9. Un avin con 80 pasajeros llega a la terminal. Cada pasajero sale en 2520 segundos. Cunto tiempo tomar que todos los pasajeros salgan del avin? Compare el resultado simulado con el resultado esperado. 10. Las llegadas a una taquilla ocurren cada 2020 segundos durante el periodo pico. Toma 2525 segundos vender un boleto. Cada cliente compra slo un boleto. Intente simular la terminacin de 1000 ventas. Explique los errores que ocurren durante la corrida. 11. Si las transacciones se generan cada 5050 segundos, cunto toma generar 100 transacciones? Compare el resultado simulado con el resultado esperado.

71

Ejemplo: estadsticas (seccin 7)


Suponga que ahora nos interesa el tiempo promedio que un fajo debe esperar al servidor de la lnea antes de seguir adelante. Entonces, la pregunta es, Cunto tiempo en promedio, tiene que esperar un fajo antes de recibir el servicio del servidor de la lnea? Otra estadstica de inters es el tiempo promedio que pasa en el sistema un fajo de tela. En este caso, una observacin de un fajo en el sistema comienza en el momento en que el fajo llega a la fbrica y termina en el momento en que el servidor de la lnea termina de prepararlo. As, la segunda pregunta es, Cul es el tiempo promedio en el sistema para un fajo de tela? Otro aspecto de inters es el nmero promedio de fajos que hay en el sistema, que representa el inventario en proceso de fajos de tela. Entonces, la tercera pregunta es, Cul es el nmero promedio de fajos de tela en el sistema?

Modelo de GPSS/H
El diagrama de bloques para este ejemplo se muestra a la derecha. Recuerde que el sistema que se desea modelar comienza con la llegada de un fajo de tela al muelle y termina cuando el fajo sale del rea de corte. Una transaccin en el modelo representa un fajo de tela. Se usa una instalacin llamada SERVER para representar al servidor de la lnea. Una unidad de tiempo en el modelo es igual a 1 minuto. El listado del modelo es el siguiente
SIMULATE * * * GPSS/H Block Section GENERATE QUEQUE ADVANCE QUEUE SEIZE DEPART ADVANCE RELEASE DEPART TERMINATE * * * 4,1 SYSQ 2 LINE SERVER LINE 3.75,1 SERVER SYSQ 2

GENERATE 4,1

DEPART LINE

QUEUE SYSQ

ADVANCE 3.75,1

ADVANCE 2

REALEASE

SERVER

QUEUE LINE

DEPART SYSQ

SEIZE SERVER

TERMINATE 1

Llega un fajo cada 4+-1 minuto Tiempo de inicio para recoleccin de estadsticas Tiempo de transporte al rea de costura Tiempo de inicio para el servidor de lnea Captura del servidor de lnea Fin de tiempo de espera para el servidor de lnea Prepara un fajo Libera el servidor de lnea Fin de tiempo de sistema Incremento de 1 en el nmero de fajos terminados

GPSS/H Control Statements START END 100 La simulacin termina despus de 100 fajos

72

Para desarrollar este modelo, se comenz con la solucin del ejemplo de la fbrica de ropa (seccin 3) y se agregaron las entidades de cola (QUEUE). Si se comparan se ve que son similares excepto por los pares de bloques QUEUE-DEPART insertados. El primer par con operando SYSQ recolecta el tiempo que pasa una transaccin en el sistema (desde que llega al muelle hasta que sale del rea de corte). El segundo par con operando LINE, recolecta el tiempo que una transaccin debe esperar antes de capturar la instalacin SERVER.

Ejercicios (seccin 7)
1. Modele el siguiente sistema: Un taller de trabajos por pedido procesa "chafaldranas" y "adminculos". Las chafaldranas llegan al taller segn una distribucin uniforme con media de 30 minutos y dispersin de 30 minutos. Los adminculos tienen un tiempo entre llegadas constante de 30 minutos. Cuando llegan las chafaldranas, se colocan en un dispositivo, del que slo hay uno; despus Jones, el nico trabajador, las procesa. Esto toma 125 minutos. Tan pronto termina el procesado, se puede usar el dispositivo con otro trabajo en espera. Jones tambin procesa los adminculos, con un tiempo exacto de 12 minutos. No se requiere dispositivo para procesarlos. Simule la operacin para un da de 8 horas. Conteste las siguientes preguntas: a) Cunto tiempo deben esperar las chafaldranas el dispositivo? b) Cul es el nmero promedio de trabajos que esperan a Jones? c) Cul es el nmero mximo de adminculos que esperan a Jones? d) Cuntas chafaldranas quedan en el taller al final del da? e) Cuntas chafaldranas estn terminadas al final de las 8 horas? Sugerencia: un modelo de GPSS/H puede tener cualquier nmero de bloques GENERATE. Cualquier bloque como SEIZE JONES puede aparecer en ms de un lugar del diagrama de bloques. 2. Los mecnicos llegan a un depsito de herramientas de un taller grande con un tiempo entre llegadas de 44 minutos. El tiempo de servicio de un solo servidor es 3.22 minutos. Se paga a los mecnicos $16.00 por hora y a los servidores en el depsito $7.50 por hora. Si el taller est en operacin durante 12 horas por da, con base en la simulacin de un da, cul es el costo diario de los mecnicos que esperan? De manera similar, cul es el costo diario de los servidores ociosos en el depsito? 3. Able abre un negocio de reparacin de aspiradoras. Able contrata a Baker, Charlie y Delta para realizar las reparaciones en turnos de 8 horas las 24 horas del da, siete das de la semana. (La tarea de Able es llevar todo el dinero al banco.) Llega una aspiradora al taller cada 1.051.05 horas. Las reparaciones requieren 5540 minutos. Con base en la simulacin de 10 das completos de reparaciones, cunto

73

tiempo debe planear un cliente promedio dejar su aspiradora en reparacin? Si las personas que reparan ganan $16/hora, las partes promedio de un trabajo de reparacin cuestan $15.00, los costo generales y otras partes son 50% y el recibo por la reparacin promedio es $55.00, cul es la ganancia diaria de Able? 4. Se da servicio a las chafaldranas y los adminculos en Cosa-demaGia. Las chafaldranas llegan cada 1010 minutos y se les da servicio en la mquina 1 en 64 minutos. Los adminculos llegan cada 2020 minutos y tambin se les da servicio en la mquina 1, pero el tiempo que requieren es 62 minutos. Adems, un adminculo requiere un dispositivo para sostenerlo en posicin. Toma 1 minuto sujetarlo al dispositivo. Hay un solo dispositivo para sujetar los adminculos. El tiempo para quitar el adminculo del dispositivo est incluido en el proceso. Simule la operacin de este sistema para un da completo. a) Cul es la utilizacin de la mquina 1? b) Cul es el nmero promedio de transacciones que esperan un dispositivo? 5. Dos tipos de clientes llegan a un restaurante de comida rpida. Los clientes que se quedan a comer llegan a una tasa de XX segundos. Los clientes de comida para llevar llegan a una tasa de 1.5X1.5X segundos. Sin importar el tipo de cliente, el tiempo de servicio del cajero de la nica caja registradora es 12060 segundos. El gerente desea que el nmero de clientes promedio que esperan para pagar su orden sea ms o menos 1.5. Simule un da de 8 horas. Cul es el valor de X? 6. Los clientes llegan con un estilista unisex cada 1010 minutos. Hay una silla para lavar el cabello y una para cortarlo. Los clientes esperan en la silla de lavado, y no la dejan hasta que van a la silla de corte. Un lavado de cabello toma 31 minutos. Un corte toma 82 minutos. Simule este sistema hasta que 200 clientes se vayan. a) Cunto tiempo espera en promedio un cliente para que le laven el cabello? b) Cul es el tiempo promedio que pasa un cliente en el sistema? c) Conteste los incisos a) y b) si el cliente puede dejar la silla de lavado y slo esperar "parado" a que la silla de corte se desocupe.

74

Ejemplo: servidores mltiples

(seccin 8)

El ejemplo de la seccin anterior se ampliar ahora para incluir la costura de las camisetas. Un fajo de tela es suficiente para coser una docena de ellas. Coser una camiseta consiste en cinco operaciones, que en secuencia son: 1. 2. 3. 4. 5. Cerrar el primer hombro. Coser el cuello. Bastilla. Cerrar el segundo hombro. Colocar las mangas.

Los minutos estndar permitidos por docena de camisetas para cada operacin estn dados en la siguiente tabla, en la columna de "media". La variacin en los tiempos de costura de un fajo al siguiente se representa por una distribucin uniforme, con dispersin tambin dada en la tabla. Por ejemplo, la operacin "coser el cuello" toma 7 ms menos 2 minutos, con distribucin uniforme. El nmero de estaciones de cada una de las cinco operaciones son 1, 2, 1, 1 y 3, respectivamente. Una estacin consiste en un trabajador y una mquina de coser. Se supone que no hay limitacin de espacio entre dos operaciones; as, la lnea de espera delante de una operacin se considera de capacidad ilimitada. Las estaciones para "coser el cuello" comparten una cola; as una docena de camisetas puede ir a cualquiera de las dos estaciones siempre que quede libre. Lo mismo es cierto para la operacin "colocar las mangas". Cuando la operacin "colocar las mangas" termina, las camisetas van a una de dos estaciones de inspeccin. El tiempo de inspeccin tambin se da en la tabla.

Operacin

Descripcin

Nmero de estaciones

Minutos estndar permitidos Media 3.50 7.00 3.00 3.25 11.00 7.00 Dispersin 1.00 2.00 0.75 1.00 3.00 2.00

1 2 3 4 5 6

Cerrar primer hombro Coser cuello Bastilla Cerrar segundo hombro Colocar mangas Inspeccin

1 2 1 1 3 2

75

El siguiente es un diagrama de la lnea de costura.

REA DE CORTE

CERRAR PRIMER HOMBRO

COSER CUELLO

BASTILLA

CERRAR SEGUNDO HOMBRO

COLOCAR MANGAS

INSPECCIN

Las preguntas de inters son: 1. Cunto tiempo toma coser e inspeccionar 100 docenas de camisetas? 2. Qu tan ocupados estn los dos inspectores? 3. Qu conjunto de estaciones de trabajo es el ms ocupado?

Modelo de GPSS/H
Se modelan los fajos de tela desde su llegada al muelle hasta que salen de la estacin de inspeccin. Se usan las entidades instalacin y almacn para modelar el servidor de la lnea, las operaciones de costura y las inspecciones. Una transaccin representa un fajo de tela, una docena de camisetas en proceso o una docena de camisetas terminadas, segn la parte del modelo en la que se encuentra en un tiempo dado. De la llegada al muelle hasta la operacin 1, "cerrar primer hombro", la transaccin representa un fajo. De esta operacin al inicio de "colocar mangas", representa una docena de camisetas en proceso. Del final de esta operacin al final de la inspeccin, una transaccin representa un docena de camisetas terminadas. Una operacin de costura con una sola operacin se modela como una instalacin. As, "cerrar el primer hombro", "colocar mangas" e "inspeccin" se modelan como una instalacin. Como antes, el servidor de lnea tambin se modela como instalacin. (El servidor o cualquiera de estas operaciones de un servidor podran modelarse como un almacn con capacidad 1.) La tabla siguiente de la izquierda da la lista de instalaciones usadas en el modelo.

76

Instalacin SEVER WKR1 WKR3 WKR4

Descripcin servidor de la lnea estacin cerrar 1er. hombro estacin bastilla estacin cerrar 2o. hombro

Almacn WKR2 WKR5 INSPECT

Capacidad 2 3 2

Descripcin est. coser cuello est. colocar mangas est. inspeccin

Las operaciones de "coser cuello", "colocar mangas" e "inspeccin" con ms de una estacin se modelan como entidades de almacn; las capacidades se dan en la tabla de la derecha. La siguiente figura muestra el diagrama de bloques para este modelo. Una unidad de tiempo representa 1 minuto.

El modelo completo de GPSS/H es el siguiente

77

SIMULATE * * * * * * * * Instruccin de declaracin de almacn STORAGE S(WKR2),2/S(WKR5),3/S(INSPECT),2

Seccin de bloques de GPSS/H rea de corte GENERATE ADVANCE SEIZE ADVANCE RELEASE 4,1 2 SERVER 3.75,1 SERVER Un fajo llega alrededor de cada 4+-1 minutos Tiempo de transporte al rea de corte Captura al servidor de la lnea Cerrar primer hombro Liberar al servidor de la lnea

* * *

Lnea de costura SEIZE ADVANCE RELEASE WKR1 3.5,1 WKR1 WKR2 7,2 WKR2 WKR3 3,0.75 WKR3 WKR4 3.25,1 WKR4 WKR5 11,3 WKR5 Captura la es tacin de trabajo 1 Cierra el primer hombro Libera la estacin de trabajo 1 Captura la estacin de trabajo 2 Cose el cuello Libera la estacin de trabajo 2 Captura la estacin de trabajo 3 Hace la bastilla Libera la estacin de trabajo 3 Captura la estacin de trabajo 4 Cierra el segundo hombro Libera la estacin de trabajo 4 Captura la estacin de trabajo 5 Coloca las mangas Libera la estacin de trabajo 5

* ENTER ADVANCE LEAVE * SEIZE ADVANCE RELEASE * SEIZE ADVANCE RELEASE * ENTER ADVANCE LEAVE * * *

Estaciones de inspeccin ENTER ADVANCE LEAVE TERMINATE INSPECT 7,2 INSPECT 1 Captura al inspector 1 Inspecciona una docena de camisetas Libera al inspector 1 Disminuye el TG1 en 1

* * *

Instrucciones de control de GPSS/H START END 100 Establece TG1 igual a 100

78

La capacidad de cada almacn se especifica por la instruccin de control STORAGE. Un bloque ENTER modela la peticin y captura de una unidad de almacn. Un Bloque LEAVE libera una unidad de almacn. Los bloques ADVANCE modelan el tiempo de transporte de un fajo de tela del muelle al rea de corte, el tiempo de preparacin del servidor de lnea, los tiempos de costura en cada estacin y el tiempo de inspeccin de una docena de camisetas. Con esta breve introduccin, debe poder entender el diagrama de bloques anterior.

Ejercicios (seccin 8)
1. Cambie el ejemplo de la siguiente manera: suponga que no hay espacio para inventario delante de cada estacin, excepto en el rea de corte donde es ilimitado. En otras palabras, si la operacin actual termina pero no hay trabajador disponible en la siguiente operacin, la camiseta en proceso se queda en la estacin de trabajo actual y el trabajador no puede iniciar el siguiente fajo. Haga las modificaciones adecuadas al modelo de GPSS/H. Corra el modelo modificado durante 40 horas de tiempo simulado. Compare los resultados de los dos modelos. Conteste las siguientes preguntas: a) Cuntas docenas de camisetas se producen en cada modelo? b) Qu tan ocupados estn el servidor de la lnea y las estaciones de trabajo? c) Limitar el tamao de la cola delante de cada estacin de trabajo disminuye la salida del sistema? Por qu? d) Existen desventajas al limitar el tamao de la cola delante de cada estacin? Sugerencia: la mayor parte del ejercicio se puede resolver sin agregar bloques al ejemplo. Slo mueva los existentes! Sin embargo, deben agregarse dos nuevos bloques al final del modelo con base en el tiempo. 2. Modifique el ejemplo de manera que el inventario delante de cada estacin puede contener justo dos fajos (excepto, de nuevo, en el rea de corte donde es ilimitado). Si el espacio de inventario de la siguiente estacin est lleno, entonces el trabajador de la actual no libera el fajo y no puede iniciar el trabajo en el siguiente. Simule 40 horas. Conteste las mismas preguntas del ejercicio 1. 3. Los trabajos se inician cada 10 minutos en una fbrica que tiene tres procesos. Al principio los trabajo se montan en un dispositivo costoso. Hay dos trabajadores que montan y desmontan los trabajos. El tiempo requerido para el montaje es 43 minutos por un solo trabajador. Los tres procesos se describen a continuacin. Proceso 1 Proceso 2 Proceso 3 1814 minutos 2715 minutos 3830 minutos 2 mquinas disponibles 3 mquinas disponibles 4 mquinas disponibles

Hay espacio para slo cuatro transacciones esperando antes del proceso 3. Si no hay espacio disponible, el proceso 2 se bloquea. Cul es el nmero mnimo de
79

dispositivos necesarios para que los trabajos no tengan que esperar que se desocupe uno? Base su decisin en una simulacin de 250 horas transacciones en el sistema. 4. Determine el nmero de mquinas paralelas requeridas para asegurar que el tiempo de espera para capturar una mquina tiene un promedio entre 15 y 25 minutos. Las llegadas ocurren con distribucin uniforme entre 0 y 32 minutos. El tiempo de servicio en una sola mquina tiene distribucin uniforme entre 30 y 90 minutos. Base su respuesta en una simulacin de 300 transacciones en el sistema. 5. Se est diseando una clnica mdica de llegada sin cita. Se anticipa que los pacientes llegarn con distribucin uniforme entre 0 y 10 minutos de diferencia. Habr dos recepcionistas que obtendrn la historia mdica del paciente y vern los arreglos financieros en 63 minutos, de nuevo con distribucin uniforme. Despus los pacientes esperarn sentados para ver al mdico. Habr tres mdicos trabajando en la clnica en todo momento. Vern a los pacientes segn lleguen, es decir, con disciplina de cola PEPS (primero en llegar, primero en salir) en un tiempo de 129 minutos con distribucin uniforme. Despus del servicio, los pacientes regresarn con las recepcionistas que harn el trabajo de cajeras. Los pacientes forman una cola para que los atienda la cajera. Tomar 31 minutos pagar la cuenta. a) Cuantas sillas sern necesarias en la sala de espera? b) Cul ser la utilizacin promedio de las recepcionistas/cajeras y de los mdicos? c) Cul ser el tiempo promedio que un paciente pasa en el sistema? d) Cul ser el tiempo promedio que un paciente pasa esperando pagar despus de ver al doctor? Base sus repuestas en una simulacin de 24 horas.

80

Ejemplo: transferencia no secuencial (seccin 9)


Suponga ahora que los dos inspectores no trabajan a la misma tasa. Tienen las siguientes tasas de inspeccin.
Estacin de trabajo Minutos estndar permitidos Media Estacin de inspeccin 1 Estacin de inspeccin 2 7.00 9.00 Dispersin 2.00 1.00

Se har referencia al inspector en la estacin de inspeccin 1 como inspector 1 y el que est en la estacin de inspeccin 2 como inspector 2. Observe que el inspector 1 trabaja ms rpido que el inspector 2. Las camisetas que esperan inspeccin forman una sola cola delante de los dos inspectores. En promedio, una docena de camisetas tiene una oportunidad de 5% de ser rechazada por uno de los inspectores. Los rechazos se descartan. Las preguntas de inters son: 1. Cunto tiempo toma producir 100 docenas de camisetas con calidad aceptable? 2. Cuntas docenas de camisetas se rechazan entre las primeras 100? 3. Qu tan ocupados estn los dos inspectores? Cuntas camisetas inspecciona cada uno?

Modelo de GPSS/H
El sistema que debe modelarse es similar al descrito en la seccin anterior. Comienza con la llegada de un fajo de tela al muelle y termina cuando una docena de camisetas pasa la inspeccin o se rechaza. Una transaccin representa un fajo de tela, una docena de camisetas en proceso o una docena rechazada, dependiendo del bloque en el que se encuentra la transaccin en un momento dado. Se analizarn slo los cambios y adiciones al ejemplo anterior. En particular el anlisis se restringe a los dos inspectores. Se modelan los dos inspectores mediante un almacn y dos instalaciones. Este enfoque cumple con el requerimiento de tener una lnea de espera para dos servidores no idnticos. Se usan los bloques TEST y TRANSFER para llevar a las transacciones con el inspector correcto y modelar los rechazos. La figura que sigue muestra el diagrama de bloque para el ejemplo.

81

El modelo completo de GPSS/H es el siguiente.


SIMULATE * * * * * * * * Segmento de declaracin de almacn STORAGE S(WKR2),2/S(WKR5),3/S(INSPECT),2

Seccin de bloques de GPSS/H rea de corte GENERATE ADVANCE SEIZE ADVANCE RELEASE 4,1 2 SERVER 3.75,1 SERVER Un fajo llega alrededor de cada 4+-1 minutos Tiempo de transporte al rea de corte Captura al servidor de la lnea Cerrar primer hombro Liberar al servidor de la lnea

* * *

Lnea de costura SEIZE WKR1 Captura la estacin de trabajo 1

82

ADVANCE RELEASE * ENTER ADVANCE LEAVE * SEIZE ADVANCE RELEASE * SEIZE ADVANCE RELEASE * ENTER ADVANCE LEAVE * * *

3.5,1 WKR1 WKR2 7,2 WKR2 WKR3 3,0.75 WKR3 WKR4 3.25,1 WKR4 WKR5 11,3 WKR5

Cierra el primer hombro Libera la estacin de trabajo 1 Captura la estacin de trabajo 2 Cose el cuello Libera la estacin de trabajo 2 Captura la estacin de trabajo 3 Hace la bastilla Libera la estacin de trabajo 3 Captura la estacin de trabajo 4 Cierra el segundo hombro Libera la estacin de trabajo 4 Captura la estacin de trabajo 5 Coloca las mangas Libera la estacin de trabajo 5

Estaciones de inspeccin ENTER TEST E SEIZE ADVANCE RELEASE TRANSFER SEIZE ADVANCE RELEASE LEAVE TRANSFER TERMINATE TERMINATE INSPECT 0,F(INSP1),OTHER INSP1 7,2 INSP1 ,BACK INSP2 9,1 INSP2 INSPECT .05,,REJ 1 Captura la estacin de inspeccin 1 Est desocupado el inspector 1? Captura al inspector 1 Inspecciona una docena de camisetas Libera al inspecto r 1 Va al bloque BACK Captura al inspector 2 Inspeccin de camisetas Libera al inspector 2 Libera una estacin de inspeccin Se rechazan 5% Disminuye el TG1 en 1 Camisetas rechazadas salen del sistema

OTHER

BACK

REJ * * *

Instrucciones de control de GPSS/H START END 100 Establece TG1 igual a 100

Ejercicios (seccin 9)
1. Suponga que en el ejemplo anterior, los inspectores no comparten una cola sino que se forman dos. Al llegar a inspeccin, una docena de camisetas elegir de manera automtica al inspector que est desocupado, o si ambos estn ocupados, se unir a la cola ms corta. En caso de empates, se selecciona cualquiera de las dos con igual probabilidad. Modifique el modelo y conteste las preguntas del ejemplo.

83

2. Suponga que en el ejemplo, las camisetas rechazadas se mandan de regreso a la primera operacin (cerrar el primer hombro) y debe pasar por todo el sistema de nuevo. El tiempo de procesamiento para las camisetas rechazadas es el mismo que para las nuevas. Conteste las mismas preguntas. 3. Considere una tercera variacin del ejemplo. De las camisetas rechazadas, 10% se descartan y el resto se reprocesan en una y slo una de las estaciones, como sigue: 20% se reprocesan en la estacin de cerrar el primer hombro 20% se reprocesan en la estacin de cerrar el segundo hombro 15% se reprocesan en la estacin de coser el cuello 17% se reprocesan en la estacin de colocar mangas 18% se reprocesan en la estacin de bastillas Los tiempos de reproceso son el doble de los del proceso normal, y las camisetas reprocesadas se envan directamente a la inspeccin, donde su probabilidad de rechazo es 0.9%. Las camisetas que se rechazan por segunda vez se descartan. Conteste las mismas preguntas. 4. Una habitacin tiene 10 telares de hilado de algodn. Una vez preparados, son automticos. El tiempo de preparacin tiene distribucin uniforme de 102 minutos. Las mquinas operan durante 405 minutos. Los operarios de los telares ganan $12 por hora y un telar que no opera cuesta $50 por hora. Opere los telares durante 24 horas para tomar las siguientes decisiones. a) Cuntos operarios debe emplear para minimizar el costo total? b) Si el objetivo es "en promedio, ningn telar debe esperar ms de 1 minuto para que llegue un operario, cuntos operarios deben contratarse? c) Cul es el nmero mnimo de operarios que deben emplearse para asegurar que un promedio de al menos 7.5 telares estn en operacin todo el tiempo? 5. Un taller de produccin intermitente tiene dos mquinas. La mquina A puede procesar dos piezas a la vez, cada una toma 2010 minutos. (Las piezas no tienen que cargarse en el mismo instante.) La mquina B procesa tres piezas al mismo tiempo en 3020 minutos cada una. (De nuevo, la piezas pueden cargarse conforme llegan.) Un 5% de las piezas procesadas en la mquina A requiere retrabajo y 15% de las procesadas en la mquina B requiere retrabajo, no necesariamente en la mquina que produjo la pieza. Cuando llega una pieza, va a la mquina A, si hay espacio disponible. Si no lo hay, la pieza intenta la mquina B. Si ambas estn ocupadas por completo, la pieza usa la mquina que se desocupe primero. Las piezas llegan cada 64 minutos. Corra el sistema hasta que 250 piezas estn terminadas. Cunto toma hacer 250 piezas? En lugar de usar el mtodo actual para seleccionar la mquina, se propone que una fraccin de las piezas vaya a la mquina A, al azar, y el resto vaya a la mquina B. Cul es la mejor fraccin que se puede usar si el objetivo es minimizar el tiempo requerido para hacer 250 piezas? Sugerencia: existen dos mtodos para modelar este tipo de seleccin de mquina. Una usa una capacidad de almacenamiento adicional de 5, y la otra usa un TRANSFER BOTH.
84

Ejemplo: ampervariables

(seccin 10)

El problema descrito en la seccin anterior no cambia. Slo cambiar el modelo de GPSS/H. Se almacenarn los tiempos medios de inspeccin para los inspectores 1 y 2 usando las ampervariables enteras &M(1) y &M(2), y las dispersiones de los tiempos de inspeccin usando las ampervariables &S(1) y &S(2), respectivamente.

Modelo de GPSS/H
El sistema modelado es el mismo que se describi en la seccin anterior. La definicin de una transaccin es igual; se usan las mismas instalaciones y almacenes. Como antes, la unidad de tiempo representa 1 minuto. El modelo de GPSS/H es el siguiente.
SIMULATE * * * Definicin de ampervariables INTEGER LET LET LET LET * * * * * * * * &M(2), &S(2) &M(1)=7 &M(2)=9 &S(1)=2 &S(2)=1 Tiempo medio de inspeccin para inspector 1 Tiempo medio de inspeccin para inspector 2 Dispersin para el tiempo del inspector 1 Dispersin para el tiempo del inspector 2

Segmento de declaracin de almacn STORAGE S(WKR2),2/S(WKR5),3/S(INSPECT),2

Seccin de bloques de GPSS/H rea de corte GENERATE ADVANCE SEIZE ADVANCE RELEASE 4,1 2 SERVER 3.75,1 SERVER Un fajo llega alrededor de cada 4+-1 minutos Tiempo de transporte al rea de corte Captura al servidor de la lnea Cerrar primer hombro Liberar al servidor de la lnea

* * *

Lnea de costura SEIZE ADVANCE RELEASE WKR1 3.5,1 WKR1 WKR2 7,2 WKR2 WKR3 3,0.75 Captura la estacin de trabajo 1 Cierra el primer hombro Libera la estacin de trabajo 1 Captura la estacin de trabajo 2 Cose el cuello Libera la estacin de trabajo 2 Captura la estacin de trabajo 3 Hace la bastilla

* ENTER ADVANCE LEAVE * SEIZE ADVANCE

85

RELEASE * SEIZE ADVANCE RELEASE * ENTER ADVANCE LEAVE * * *

WKR3 WKR4 3.25,1 WKR4 WKR5 11,3 WKR5

Libera la estacin de trabajo 3 Captura la estacin de trabajo 4 Cierra el segundo hombro Libera la estacin de trabajo 4 Captura la estacin de trabajo 5 Coloca las mangas Libera la estacin de trabajo 5

Estaciones de inspeccin ENTER TEST E SEIZE ADVANCE RELEASE TRANSFER SEIZE ADVANCE RELEASE LEAVE TRANSFER TERMINATE TERMINATE INSPECT 0,F(INSP1),OTHER INSP1 &M(1), &S(1) INSP1 ,BACK INSP2 &M(2), &S(2) INSP2 INSPECT .05,,REJ 1 Captura la estacin de inspeccin 1 Est desocupado el inspector 1? Captura al inspector 1 Inspecciona camisetas Libera al inspector 1 Va al bloque BACK Captura al inspector 2 Inspecciona camisetas Libera al inspector 2 Libera una estacin de inspeccin Se rechazan 5% Disminuye el TG1 en 1 Camisetas rechazadas salen del sistema

OTHER

BACK

REJ * * *

Instrucciones de control de GPSS/H START END 100 Establece TG1 igual a 100

La instruccin INTEGER es una direccin de compilacin que define ampervariables enteras. En el modelo, se declaran dos ampervariables &M y &S como enteros y cada ampervariable es un arreglo de tamao 2. La instruccin LET establece los valores iniciales de las ampervariables, &M(1), &M(2), &S(1), &S(2). Estas ampervariables se usan como operandos, en lugar de los nmeros, en los bloques ADVANCE, para representar los tiempos de inspeccin de los dos inspectores.

Ejercicios (seccin 10)


1. Considere el ejemplo de la seccin 8. Suponga que el servidor de la lnea est consciente del nmero de fajos que esperan servicio y que la media y la dispersin del tiempo de preparacin son inversamente proporcionales al nmero en la cola, como sigue: tiempo medio de prep = 3.75/(longitud de cola antes de iniciar servicio) dispersin de tiempo de prep = 1./(longitud de cola antes de iniciar servicio)

86

Modifique el modelo de la seccin 8 para que tome esto en cuenta. Compare los resultados de este modelo con los del de la seccin 8. Sugerencia: asegrese de no dividir entre cero! En GPSS/H la divisin entre cero da cero. 2. No es necesario que aparezca una instruccin LET antes de los bloques de GPSS/H en un modelo para que sea efectiva la asignacin del valor. Sin embargo, la instruccin LET es necesaria antes de la instruccin de control START. En el modelo para el ejemplo de la seccin 8, coloque las cuatro instrucciones LET despus de los bloques de GPSS/H, pero antes de START, y despus corra el modelo. Se obtuvieron los mismos resultados? Por qu? Puede deducir de esto la secuencia de instrucciones de bloque y de control? Se ejecutan todas las instrucciones en la misma secuencia en la que aparecen en el modelo? 3. Considere los siguientes modelos sencillos de GPSS/H. Conteste las preguntas sin correr el modelo. Si no puede contestarlas, o desea confirmar sus repuestas, slo entonces debe escribir y correr el modelo. a) Cul es el valor de &I al final de la simulacin?
SIMULATE INTEGER BLET GENERATE LET TERMINATE START END &I &I=10 10 &I=&I+1 1 10

b) Cul es el valor de &I al final de la simulacin?


SIMULATE INTEGER LET GENERATE BLET TERMINATE START END &I &I=10 10 &I=&I+1 1 10

c) Cuantas instalaciones se habrn usado al final de la simulacin? Cules se habrn usado y cul sera la cuenta de entradas de cada una?
SIMULATE INTEGER LET GENERATE SEIZE ADVANCE RELEASE TERMINATE LET START END &I &I=10 10 &I 1 &I 1 &I=&I+1 10

87

d) Cuantas instalaciones se habrn usado al final de la simulacin? Cules se habrn usado y cul sera la cuenta de entradas de cada una?
SIMULATE INTEGER LET GENERATE BLET SEIZE ADVANCE RELEASE TERMINATE LET START END &I &I=10 10 &I=&I+1 &I 1 &I 1 &I=&I+1 10

e) Si se intercambiaran los tiempos ADVANCE y GENERATE en el operando A en el inciso d, el modelo en ese inciso correra un periodo corto y despus explotara con un error en la corrida. Cul es el error y cul es el valor de ACI al explotar? 4. Reconsidere el ejercicio 2 de la seccin 7. Coloque todos los datos en ampervariables. Realice los clculos de costos usando ampervariables. Use el debugger para obtener el costo diario de los mecnicos que esperan y el costo diario de los servidores del depsito de herramientas. 5. Reconsidere el ejercicio 4 de la seccin 9, pero use tres operarios de telares. Establezca el nmero de operarios en una ampervariable. Modifique su programa de manera que se pueda usar el debugger para proporcionar los valores de los SNA que se necesitan para contestar los incisos a, b y c. Use el debugger para obtener los valores de SNA deseados. 6. Resuelva el ejercicio 4 de la seccin 9 usando slo ampervariables. Esto es, todos los clculos deben lograrse dentro del programa. Use el debugger para desplegar los resultados para cada nmero de operarios de telares. 7. El propsito de este ejercicio es ilustrar algunos de los operadores aritmticos en GPSS/H. Los operadores de suma (+), resta (-), multiplicacin (*) y divisin (/) se usaron en esta seccin. Otro operador es la divisin mdulo (@). Sea &ONE=19.5 Y &TWO=6.5. a) Complete la siguiente tabla si &RESA, &RESB, &RESC y &RESD son todas reales:
Condicin 1 &RESA = &ONE/&TWO &RESA = &ONE+&TWO &RESA = &ONE*&TWO &RESA = &ONE@&TWO 2 3 4

88

Las cuatro condiciones son las siguientes: 1) &ONE y &TWO son reales 2) &ONE y &TWO son enteras 3) &ONE entera y &TWO reales 4) &ONE real y &TWO entera b) Confirme los valores en la tabla usando GPSS/H con el debugger c) Trabaje de nuevo los incisos a y b para la condicin 3 si &RESA, &RESB, &RESC y &RESD son todas enteros.

89

Ejemplo: entrada/salida

(seccin 11)

En este ejemplo se ilustrar el uso del teclado para proporcionar los valores de los parmetros al modelo de GPSS/H. Tambin se mostrar cmo escribir un informe con formato a un archivo externo. Se trata de una extensin del ejemplo de la seccin 10. Suponga que en lugar de la instruccin LET para asignar valores a las ampervariables que representan la media y la dispersin de los tiempos de inspeccin para los dos inspectores, como se hizo en el modelo para el ejemplo de la seccin 10, se desea que GPSS/H pida esos valores antes de que inicie la corrida de simulacin. Tambin se desean respuestas a las siguientes preguntas escritas en un archivo externo llamado "ANS11.OUT". 1. Cunto tiempo toma producir 100 docenas de camisetas de calidad aceptable? 2. Cuntas docenas de camisetas se rechazan? 3. Qu tan ocupados estn los dos inspectores?

Modelo de GPSS/H
El sistema que se modela en este ejemplo es el mismo que el descrito en la seccin 9. El modelo es el siguiente.
SIMULATE * * * Definicin de ampervariables

INTEGER &M(2), &S(2) PUTPIC 0POR FAVOR D EL TIEMPO MEDIO DE SERVICIO DEL INSPECTOR 1 GETLIST &M(1) Entrada de tiempo medio para inspector 1 PUTPIC 0POR FAVOR D EL TIEMPO MEDIO DE SERVICIO DEL INSPECTOR 2 GETLIST &M(2) Entrada de tiempo medio para inspector 2 PUTPIC 0POR FAVOR D LA DISPERSIN DEL TIEMPO MEDIO DEL INSPECTOR 1 GETLIST &S(1) Entrada de dispersin para e l tiempo del inspector 1 PUTPIC 0POR FAVOR D LA DISPERSIN DEL TIEMPO MEDIO DEL INSPECTOR 2 GETLIST &S(2) Entrada de dispersin para el tiempo del inspector 2 * * Definicin de archivo de salida * OUT FILEDEF 'ANS9.OUT' * * Segmento de declaracin de almacn * STORAGE S(WKR2),2/S(WKR5),3/S(INSPECT),2

90

* * * * *

Seccin de bloques de GPSS/H rea de corte GENERATE ADVANCE SEIZE ADVANCE RELEASE 4,1 2 SERVER 3.75,1 SERVER Un fajo llega alrededor de cada 4+-1 minutos Tiempo de transporte al rea de corte Captura al servidor de la lnea Cerrar primer hombro Liberar al servidor de la lnea

* * *

Lnea de costura SEIZE ADVANCE RELEASE WKR1 3.5,1 WKR1 WKR2 7,2 WKR2 WKR3 3,0.75 WKR3 WKR4 3.25,1 WKR4 WKR5 11,3 WKR5 Captura la estacin de trabajo 1 Cierra el primer hombro Libera la estacin de trabajo 1 Captura la estacin de trabajo 2 Cose el cuello Libera la estacin de trabajo 2 Captura la estacin de trabajo 3 Hace la bastilla Libera la estacin de trabajo 3 Captura la estacin de trabajo 4 Cierra el segundo hombro Libera la estacin de trabajo 4 Captura la estacin de trabajo 5 Coloca las mangas Libera la estacin de trabajo 5

* ENTER ADVANCE LEAVE * SEIZE ADVANCE RELEASE * SEIZE ADVANCE RELEASE * ENTER ADVANCE LEAVE * * *

Estaciones de inspeccin ENTER TEST E SEIZE ADVANCE RELEASE TRANSFER SEIZE ADVANCE RELEASE LEAVE TRANSFER TERMINATE TERMINATE INSPECT 0,F(INSP1),OTHER INSP1 &M(1), &S(1) INSP1 ,BACK INSP2 &M(2), &S(2) INSP2 INSPECT .05,,REJ 1 Captura la estacin de inspeccin 1 Est desocupado el inspector 1? Captura al inspector 1 Inspecciona camisetas Libera al inspector 1 Va al bloque BACK Captura al inspector 2 Inspecciona camisetas Libera al inspector 2 Libera una estacin d e inspeccin Se rechazan 5% Disminuye el TG1 en 1 Camisetas rechazadas salen del sistema

OTHER

BACK

REJ * * *

Instrucciones de control de GPSS/H START END 100 Establece TG1 igual a 100

91

Ejercicios (seccin 11)


1. Haga las modificaciones adecuadas al modelo del ejemplo de la seccin 8 para que las preguntas y respuestas se impriman en la pantalla cuando termine la simulacin. 2. Haga las siguientes modificaciones al modelo del ejemplo de esta seccin: a) Para las lneas de imagen de las primeras cuatro instrucciones PUTPIC reemplace "0" en la primera columna por el carcter "1". Corra el modelo. Existe alguna diferencia en la manera en que GPSS/H imprime las lneas de imagen en la pantalla con el modelo anterior? Ahora elimine el carcter "1" y corra el modelo de nuevo. Se observa alguna diferencia? b) Elimine las cuatro combinaciones PUTPIC-GETLIST y sustityalas con
PUTPIC 0INTRODUZCA LOS VALORES PARA &M(1), &M(2), &S(1) AND &S(2) GETLIST (&M(1), &M(2), &S(1), &S(2))

Corra el modelo. Descubra cmo introducir los valores para las ampervariables. (No se preocupe por errores, GPSS/H le dir.) 3. Modele el siguiente sistema: Los trabajos llegan a un centro de trabajo cada 55 minutos. Un trabajador los desgrasa, lava y coloca en un dispositivo. Las partes esperan en una cola para comenzar el desgrasado, que toma 4.21.2 minutos, el lavado requiere un tiempo constante de 3.6 minutos y colocarlos en el dispositivo requiere 62 minutos. Una vez que comienza el trabajo en una parte, el trabajador completa las tres tareas. Las partes se envan por banda transportadora al torno. Transportarlas toma justo 6 minutos. Al final de la banda, las partes pueden esperar uno de los cuatro tornos y operarios. Si esperan, lo hacen en una cola. Las operaciones en el torno toman 182 minutos. Cuando los trabajos esperan, el costo es el siguiente: Categora 1: $1.00/trabajo/hora antes del desgrasado Categora 2: $2.00/trabajo/hora antes del torno El costo de los trabajadores ociosos es el siguiente: Categora 3: $16.00/hora para el trabajador que desgrasa, lava y coloca Categora 4: $24.00/hora para el operario del torno Las regalas de patente por parte terminada son de $0.50. Corra una simulacin durante 8 horas. a) Para las categoras 1 y 2 de partes calcule los costos de espera y su suma e imprima los resultados al final de la simulacin. b) Para los dos tipos de operarios, 3 y 4, calcule los costos de tiempo inactivos imprima estos valores al final de la simulacin. c) Calcule las regalas para el da e imprima los resultados al final de la simulacin.

92

4. Realice de nuevo el ejercicio 3, cuando todos los tiempos de operacin y el nmero de trabajadores en cada grupo se leen en un archivo externo o se introducen por el teclado. Con el fin de experimentar, determine qu ocurre si hay 3 o 5 tornos. Adems de los costos, imprima las longitudes de las colas y la utilizacin de los trabajadores en un archivo externo. D un formato de fcil lectura y diseo agradable, como si fuera a presentarlo a su jefe (o su profesor!). 5. Trabaje de nuevo el ejercicio 3 de la seccin 7 usando GETLIST para pedir al usuario que introduzca los datos desde el teclado, y PUTPIC para escribir las salidas (el tiempo de espera promedio y mximo, y las ganancias) en la pantalla.

93

Ejemplo: parmetros de transaccin (seccin 12)


Este ejemplo es una revisin del ejemplo de la seccin 9. En este caso, la lnea de costura confecciona dos tipos de camisetas: de manga corta y de manga larga. La tasa de llegadas de una docena de cada tipo de camisetas sigue una distribucin uniforme entre 7 y 9 minutos. Estos dos tipos se procesan en las mismas operaciones descritas en el ejemplo de la seccin 8. Excepto por la operacin de colocar mangas, el tiempo de procesamiento en cada estacin no depende del tipo de camiseta y es el dado en la seccin 8. Para la operacin de colocar mangas, se desea experimentar con el nmero de trabajadores. Adems, para las camisetas de manga corta, la media y la dispersin del tiempo de colocar mangas son 8 y 2 minutos, respectivamente; para las camisetas de manga larga, las medidas respectivas son 14 y 5 minutos. Al inicio, se simular con 3 trabajadores en la operacin de colocar mangas. Las preguntas de inters son: 1. Cunto tiempo toma producir 100 docenas de ambos tipos de camisetas con calidad aceptable? 2. De las 100 docenas de camisetas producidas, cuntas son de manga corta y cuntas de manga larga?

Modelo de GPSS/H
Las fronteras del sistema son las mismas que en los ejemplos anteriores (secciones 9, 10 y 11). Esto es, se modela un fajo de tela desde su llegada al muelle hasta la inspeccin despus de pasar por la lnea de costura. Como en las secciones anteriores, una transaccin representa un fajo de tela, una docena de camisetas en proceso o una docena de camisetas terminadas. Adems, cada transaccin tiene un parmetro llamado SLEEVES que tiene un valor de 1 para la manga corta y de 2 para la manga larga. Las definiciones de instalaciones y almacenes en el modelo son similares a las descritas en la seccin 8. Una unidad de tiempo en el modelo representa un minuto. El listado del modelo en este caso es el siguiente.

94

SIMULATE * * * Definicin de ampervariables INTEGER REAL INTEGER INTEGER * DATA FILEDEF GETLIST GETLIST GETLIST GETLIST GETLIST GETLIST * * * * * * * * &M(2), &S(2) &MSET(2), &SSET(2) &I &NSETSL 'SERVICE.DAT' FILE=DATA, (&M(1)) FILE=DATA, (&M(2)) FILE=DATA, (&S(1)) FILE=DATA, (&S(2)) &arreglos para tiempo de inspeccin &arreglos para tiempo de colocar mangas &ndice para ciclo de GETLIST Nmero de trabajadores en colocar mangas

Leer tiempo medio de inspeccin para inspector 1 Leer tiempo medio de inspeccin para inspector 2 Leer dispersin de tiempo para inspeccin 1 Leer dispersin de ti empo para inspeccin 2

* FILE=DATA, ((&MSET(&I), &SSET(&I), &I=1, 2)) Leer tiempo para mangas FILE=DATA,(&NSETSL) Leer # de trabajadores para colocar mangas

Segmento de declaracin de almacn STORAGE S(WKR2), 2/S(WKR5), &NSETSL/S(INSPECT), 2

Seccin de bloques de GPSS/H Camiseta de manga corta GENERATE BLET TRANSFER 8,1,,,,1PH PH(SLEEVES)=1 , STAGE Llega camiseta de manga corta Establece parmetro SLEEVES igual a 1 Enva al bloque ADVANCE

* * *

Camiseta de manga larga GENERATE BLET 8,1,,,,1PH PH(SLEEVES)=2 Llega camiseta de manga larga Establece parmetro SLEEVES igual a 2

* * *

Lnea de costura SEIZE ADVANCE RELEASE WKR1 3.75,1 WKR1 WKR2 7,2 WKR2 WKR3 3,0.75 WKR3 WKR4 3.25,1 Captura la estacin de trabajo 1 Cerrar primer hombro Libera la estacin de trabajo 1 Captura la estacin de trabajo 2 Cose el cuello Libera la estacin de trabajo 2 Captura la estacin de trabajo 3 Hace la bastilla Libera la estacin de trabajo 3 Captura la estacin de trabajo 4 Cierra el segundo hombro

* ENTER ADVANCE LEAVE * SEIZE ADVANCE RELEASE * SEIZE ADVANCE

95

RELEASE * ENTER ADVANCE LEAVE * * *

WKR4

Libera la estacin de trabajo 4

WKR5 Captura la estacin de trabajo 5 &MSET(PH(SLEEVES)),&SSET(PH(SLEEVES)) Coloca las mangas WKR5 Libera la estacin de trabajo 5

Estaciones de inspeccin ENTER TEST E SEIZE ADVANCE RELEASE TRANSFER SEIZE ADVANCE RELEASE LEAVE TRANSFER TEST E TERMINATE TERMINATE TERMINATE INSPECT Captura la estacin de inspeccin 1 0,F(INSP1),OTHER Est desocupado el inspector 1? INSP1 Captura al inspector 1 &M(1), &S(1) Inspecciona camisetas INSP1 Libera al inspector 1 ,BACK Va al bloque BACK INSP2 Captura al inspector 2 &M(2), &S(2) Inspecciona camisetas INSP2 Libera al inspector 2 INSPECT Libera una estacin de inspeccin .05,,REJ Se rechazan 5% PH(SLEEVES),1,TYPE2 Se rechaza camiseta manga corta? 1 Camisetas manga corta salen del sistema 1 Camisetas manga larga salen del sistema Camisetas rechazadas salen del sistema

OTHER

BACK

TYPE1 TYPE2 REJ * * *

Instrucciones de control de GPSS/H START END 100 Establece TG1 igual a 100

Este ejemplo ilustra tambin el uso de un archivo externo para introducir los datos a un modelo GPSS/H. En lugar de dar por el teclado los valores de las ampervariables que representan la media y la dispersin de los tiempos de inspeccin para los dos inspectores, estos valores se almacenan en el archivo externo "SERVICE.DAT". De manera parecida, la media y la dispersin de los tiempos para colocar las mangas cortas y largas y el nmero de trabajadores en esas operaciones se dan en ese archivo. Observe las instrucciones FILEDEF y GETLIST en el listado del modelo.

96

Ejercicios (seccin 12)


1. Modele el siguiente sistema: Las partes llegan a una tasa de uno cada 2020 segundos. Alrededor de 40% de ellas son tipo 1 y el resto son tipo 2. (Sugerencia: use un TRANSFER probabilstico para diferenciar los dos tipos.) Hay tres inspectores que trabajan en paralelo. Las partes forman una sola cola y van al inspector que se desocupa primero. Las partes tipo 1 se inspeccionan en 5030 segundos, mientras que la de tipo 2 llevan 6040 segundos. Existen cuatro ensambladores. Los respectivos tiempos de ensamble son 7030 segundos para cada parte. La preparacin toma 55 segundos para cada parte. Simule el sistema para 250 partes terminadas. Debe usar slo un conjunto de bloques para ambos tipos de partes con los inspectores. Cuntas partes tipo 1 y 2 tienen un tiempo de estancia menor que 150 segundos? Cuntas partes tipo 1 y 2 tienen un tiempo de estancia de ms de 225 segundos? 2. Con referencia al ejemplo de esta seccin, sustituya los bloques SEIZE para las operaciones de costura con bloques ENTER, cada uno con capacidad de almacn de 1. Use un parmetro para mantener un registro de la siguiente operacin secuencial. Para hacerlo sencillo, asegrese de definir los almacenes de la lnea de costura en orden WRK1, WRK2, . . . , WRK5. (Qu hace esto? Verifique el diccionario de entidades en el archivo del listado.) Modifique el modelo en el ejemplo para que acepte estos cambios. Note que este mtodo reducir el nmero de bloques en el modelo de una manera considerable. Compare los resultados con los del ejemplo. 3. Trabaje de nuevo el ejercicio 3 de la seccin 9 usando parmetros. Elimine el mayor nmero de bloques posible del modelo original. En particular use parmetros para contar el nmero de veces que se rechaza una docena de camisetas y para registrar los tiempos de procesamiento (o de retrabajo). 4. Los trabajos llegan cada 2525 minutos a un taller de produccin intermitente. 50% de los trabajos son tipo A, 25% son tipo B y el resto son tipo C, de acuerdo con la siguiente tabla. Las partes pasan por los siguientes tres procesos: lavado/desgrasado, maquinado e inspeccin/empaque. Los tiempos (en minutos) para cada proceso y los costos asociados con la inactividad son los siguientes.
Tiempo de procesamiento Proceso Lavado / desgrasado Maquinado Inspeccin / empaque Tipo A 2212 2410 2020 Tipo B 2015 245 2121 Tipo C 233 217 2215 Costo de inactividad $22/hora $36/hora $30/hora

97

Proporcione todos los datos desde el teclado. Imprima todos los tiempos (como valores enteros) en un archivo, con una instruccin de cul es el valor que se est imprimiendo. Hay una cola delante de cada proceso. El costo de espera se calcula en $2.50 por hora por trabajo que espera. Calcule el costo de espera (global) y el costo de inactividad (por proceso). Imprima la siguiente informacin en un archivo: (Nombre del costo) es xxx.xx para una simulacin de xx.xx horas, o xxx.xx por hora Simule 250 partes terminadas. Modele este sistema de la manera ms eficiente posible, es decir, use parmetros de transacciones. El menor nmero de bloques le da una calificacin ms alta! 5. Dados los siguiente valores para 8 parmetros PB de una transaccin activa:
Parmetros Valor 1 5 2 4 3 -3 4 0 5 1 6 4 7 3 8 3

La transaccin activa va al siguiente bloque, cul es el parmetro afectado y cul es su valor? BLET PB(3)=PB(3)+PB(6) Respuesta________

Si la transaccin activa va al siguiente bloque, cul es el parmetro afectado y cul es su valor? BLET PB(PB(2))=7 Respuesta________

Si la transaccin activa va al siguiente bloque, cul es el parmetro afectado y cul es su valor? BLET PB(PB("))=PB(PB(2))-PB(8) Respuesta________

98

Ejemplo: corridas mltiples

(seccin 13)

Ahora se extender el ejemplo para realizar ms de una rplica en una sola corrida de un modelo de GPSS/H. El propsito es ilustrar la variabilidad inherente en los experimentos de simulacin. Respecto al ejemplo de la seccin 9, suponga ahora que nos interesan las siguientes caractersticas del sistema: el tiempo de espera promedio de un fajo de tela antes del corte; el nmero promedio de fajos de tela que esperan en la cola; la utilizacin promedio del inspector 1, y la utilizacin promedio del inspector 2. Se decide realizar cinco corridas de simulacin, cada una con una cadena de nmeros aleatorios diferente. Cada rplica se correr durante 9 horas. De las cinco rplicas, se obtendr una estimacin de la exactitud de las estimaciones de las caractersticas de inters.

Modelo de GPSS/H
El sistema a modelar es similar al descrito en la seccin 9. El sistema inicia con la llegada de un fajo de tela al muelle y termina cuando un inspector acepta o rechaza una docena de camisetas. Vea en el ejemplo de la seccin 9 la definicin de las instalaciones y almacenes. Recuerde que las instalaciones y almacenes modelan al servidor de la lnea, las estaciones de costura de las cinco operaciones de costura y los dos inspectores. El modelo tambin contiene una entidad de cola (QUEUE) llamada SERVER que recolecta los tiempos de espera de los fajos de tela para el servidor de la lnea. Una unidad de tiempo en este modelo representa un minuto. El listado del modelo de GPSS/H es el siguiente.

SIMULATE * * * Declaracin de ampervariables INTEGER REAL * * * &I (A(5), &B(5), &C(5), &D(5)

Segmento de declaracin de almacn STORAGE S(WKR2),2/S(WKR5),3/S(INSPECT),2

99

* * * * *

Seccin de bloques de GPSS/H rea de corte GENERATE ADVANCE QUEUE SEIZE DEPART ADVANCE RELEASE 4,1 2 SERVER SERVER SERVER 3.75,1 SERVER Un fajo llega alrededor de cada 4+-1 minutos Tiempo de transporte al rea de corte Inicia la recoleccin de tiempo de costura Captura al servidor de la lnea Registra la observacin del tiempo de costura Cerrar primer hombro Liberar al servidor de la lnea

* * *

Lnea de costura SEIZE ADVANCE RELEASE WKR1 3.5,1 WKR1 WKR2 7,2 WKR2 WKR3 3,0.75 WKR3 WKR4 3.25,1 WKR4 WKR5 11,3 WKR5 Captura la estacin de trabajo 1 Cierra el primer hombro Libera la estacin de trabajo 1 Captura la estacin de trabajo 2 Cose el cuello Libera la estacin de trabajo 2 Captura la estacin de trabajo 3 Hace la bastilla Libera la estacin de trabajo 3 Captura la estacin de trabajo 4 Cierra el segundo hombro Libera la estacin de trabajo 4 Captura la estacin de trabajo 5 Coloca las mangas Libera la estacin de trabajo 5

* ENTER ADVANCE LEAVE * SEIZE ADVANCE RELEASE * SEIZE ADVANCE RELEASE * ENTER ADVANCE LEAVE * * *

Estaciones de inspeccin ENTER TEST E SEIZE ADVANCE RELEASE TRANSFER SEIZE ADVANCE RELEASE LEAVE TRANSFER TERMINATE INSPECT 0,F(INSP1),OTHER INSP1 7,2 INSP1 ,BACK INSP2 9,1 INSP2 INSPECT .05,,REJ 1 Captura la estacin de inspeccin 1 Est desocupado el inspector 1? Captura al inspector 1 Inspecciona una docena de camisetas Libera al inspector 1 Va al bloque BACK Captura al inspector 2 Inspeccin de camisetas Libera al inspector 2 Libera una estacin de inspeccin Se rechazan 5% Disminuye el TG1 en 1

OTHER

BACK

100

REJ * * *

TERMINATE Segmento de tiempos GENERATE BLET BLET BLET BLET BLET TERMINATE

Camisetas rechazadas salen del sistema

540 &I=&I+1 &A(&I)=QA(SERVER) &B(&I)=QT(SERVER) &C(&I)=FR(INSP1)(1000) &D(&I)=FR(INSP2)(1000) 1

Llegada despus de 9 horas Incrementa &I en 1 Registra nmero promedio en la cola Registra tiempo promedio de espera Registra utilizacin promedio de inspector 1 Registra utilizacin promedio de inspector 2 Disminuye TG1 en 1

* * *

Instrucciones de control de GPSS/H START CLEAR START CLEAR START CLEAR START CLEAR START PUTPIC 1 1 1 1 1 FILE=ANS11,LINES=3 AVG NO TRANS AVG WAITG TIME AVG UTILIZ IN SEWING LINE FOR TRASACTION OF INSP 1 FILE=ANS11, (1, &A(1), &B(1)M, &C(1), &D(1)) ***.**** ***.**** *.**** FILE=ANS11, (2, &A(2), &B(2)M, &C(2), &D(2)) ***.**** ***.**** *.**** FILE=ANS11, (3, &A(3), &B(3)M, &C(3), &D(3)) ***.**** ***.**** *.**** FILE=ANS11, (4, &A(4), &B(4)M, &C(4), &D(4)) ***.**** ***.**** *.**** FILE=ANS11, (5, &A(5), &B(5)M, &C(5), &D(5)) ***.**** ***.**** *.**** AVG UTILIZ OF INSP 2 *.**** *.**** *.**** *.**** *.**** Establece TG1 igual a 100

PUTPIC * PUTPIC * PUTPIC * PUTPIC * PUTPIC * END

En este listado, observe el uso de las ampervariables &A, &B, &C y &D para registrar las estadsticas de inters dentro del segmento de tiempos del modelo. Para las 9 horas simuladas, una transaccin que llega (mediante el bloque GENERATE 540), ocasiona que GPSS/H registre las estadsticas de inters y despus termine la rplica. Tambin observe la secuencia de instrucciones de control START CLEAR START : 1 1

101

Cada START 1 da como resultado una simulacin de 9 horas. La instruccin de control CLEAR, introducida en la seccin 11, prepara al modelo para una nueva rplica. Establece todas las estadsticas en 0 y elimina todas las transacciones del modelo. No tiene efecto en la cadena de nmeros aleatorios. Con el siguiente START se inicia una nueva corrida de simulacin del mismo modelo, con la cadena de nmeros aleatorios que contina donde se qued.

Ejercicios (seccin 13)


1. Modele el siguiente sistema: Los mecnicos llegan a un depsito de herramientas en una planta grande con un tiempo entre llegadas de 44 minutos. El tiempo de servicio es 3.22 minutos para un solo operario del depsito. Los mecnicos ganan $30.00 por hora y el operario del depsito gana $15.00 por hora. La planta est abierta 8 horas por da. Si no un trabajo no termina al final de las 8 horas, contina la siguiente maana. Inicie el sistema durante 1 da y realice la corrida durante 5 das. Cules son los costos diarios de los mecnicos que esperan? Cules son los costos diarios de un operario ocioso en el depsito? 2. Con referencia al ejemplo de esta seccin, realice cinco rplicas del modelo descrito. Corra cada rplica durante 9 horas. Use la primera de las 9 horas como etapa inicial y obtenga estimaciones para las caractersticas de inters a partir de la etapa de recoleccin de datos de cada rplica. Compare los resultados obtenidos en este ejercicio con los del ejemplo. Tienen un efecto importante las condiciones iniciales sobre los resultados? Requiere este modelo una etapa inicial? 3. El restaurante de comida para llevar Speedo tiene un nuevo producto llamado Especial Blue Plate. Los clientes llegan cada 1414 segundos durante la hora pico. Hay 6 servidores en el mostrador. Cerca de 55% de los clientes quieren slo el Especial y toma 6015 segundos preparar el plato, ponerlo en la caja y marcar el precio. El resto de los clientes quieren el Especial Plus, que incluye pan de maz, budn de pltano y t helado. Toma 9020 segundos prepararlo. Hay dos personas para entregar. Toma 2510 segundos hacer la entrega. Si hay ms de dos personas en la cola para salir, el cliente no paga! a) Cunto tiempo pasa antes de que se d la primera comida gratis? (puede usar el debugger interactivo para contestar esta pregunta) b) Si uno de los servidores est enfermo, cul es el efecto sobre el nmero promedio de personas que esperan despus de 1 hora? c) Compare el tiempo promedio en la cola del servidor para una simulacin de 200 clientes con un inicio de 100 clientes, y sin etapa de inicio. d) Compare el tiempo promedio en la cola del servidor con un grupo de 1000 clientes contra una corrida de slo 200 clientes. 4. Los trabajos llegan a un centro de trabajo cada 55 minutos. Uno de los tres trabajadores los desgrasa, lava y coloca en un dispositivo. Las partes esperan en una
102

cola para iniciar el desgrasado que toma 4.21.2 minutos, el lavado requiere 3.6 minutos constantes y la colocacin en el dispositivo lleva 62 minutos. Una vez que comienza el trabajo de una parte, el trabajador termina las tres tareas. Existen 6 dispositivos. Las partes se envan por banda transportadora al torno. Transportarlas toma 6 minutos. Al final de la banda, las partes pueden esperar, por turno, uno de los cuatro operarios de los tornos. La operacin en el torno toma 182 minutos. Despus de la operacin, el operario del torno quita el dispositivo en 30 segundos. Simule 100 partes terminadas. a) Cul es el nmero promedio de partes que esperan desgrasado? b) Cul es el nmero promedio de dispositivos en uso? c) Cul es la capacidad necesaria para el transportador, de manera que ninguna parte espere su servicio? d) Cunto tiempo toma, en promedio, que una parte transite por el sistema? Inicie el sistema con 50 partes terminadas. Restablezca (RESET) las estadsticas en 0 y despus simule 100 partes terminadas. Compare los resultados con los obtenidos sin etapa inicial. Cambie el modelo y crralo de manera que la simulacin pase por una etapa de inicio durante 1 hora. Despus restablezca las estadsticas en 0 y simule 8 horas. 5. La partes llegan con una tasa de una cada 2020 segundos. Hay tres inspectores que trabajan en paralelo. Las partes forman una sola cola y van con el primer inspector disponible. Las partes se inspeccionan en 5530 segundos. Despus de la inspeccin se mueven a la lnea de ensamble en una banda transportadora. El tiempo de transporte es 60 segundos. Existen cuatro ensambladores. El tiempo de ensamble es 7030 segundos para cada parte. La preparacin de cada parte lleva 55 segundos. Inicie el sistema con 100 partes terminadas. Restablezca las estadsticas en 0 y despus simule 250 partes terminadas. a) Cul es el nmero promedio de partes en cada cola? b) Cunto tiempo, en promedio, toma que una parte transite por el sistema? c) Use BPUTPIC para desplegar el estado del almacn y la cola cada 5 minutos de tiempo simulado. d) Qu capacidad de banda transportadora se necesita entre los inspectores y el ensamble? e) Si la distribucin de las llegadas cambia a 1919 segundos, qu ocurre con las lneas de espera o colas? f) Se autoriza un incremento de una persona en la fuerza de trabajo. Cmo debe ocurrir esto para reducir la longitud de las colas? g) Cambie el modelo para que la simulacin corra un periodo fijo de 1 hora. Realice la corrida. h) Cambie el modelo para que la simulacin pase por una etapa de inicio durante 20 minutos, despus restablezca las estadsticas y corra durante una hora. Realice la corrida.

103

Ejercicios (seccin 14)


1. Modele el siguiente sistema: La manufactura de chafaldranas es un proceso de dos etapas. La etapa 1 opera a una tasa de MU(1)SP(1) minutos por chafaldrana, con distribucin uniforme. La cola delante de la etapa 1 es ilimitada. La etapa 2 tambin opera de acuerdo a una distribucin uniforme con media MU(2) y dispersin SP(2). La cola delante de la etapa 2 est limitada a la cantidad C. El costo de C es $D por espacio por hora. Si una chafaldrana queda bloqueada para entrar a la etapa 2 se descarta con una prdida de $4D. La ganancia por chafaldrana terminada es $2D. El tiempo entre llegadas de las chafaldranas tiene distribucin uniforme con media MU(3) y dispersin SP(3). Las etapas 1 y 2 pueden procesar una chafaldrana a la vez. Todos los materiales para iniciar la etapa 1 estn disponibles. Los valores iniciales de los parmetros son: MU(1) = 10 minutos SP(1) = 2 minutos MU(2) = 9 minutos SP(2) = 2 minutos MU(3) = 11 minutos SP(3) = 2 minutos D = 2 Corra el modelo durante 40 horas. El intervalo de C es de 0 a 10. Encuentre el valor de C que maximiza la ganancia. Deje que GPSS/H realice todos los clculos e informe su conclusin. 2. Use un ciclo DO para resolver el ejercicio 5 de la seccin 5. 3. Use un ciclo DO para resolver el ejercicio 5 de la seccin 7.

104

Ejemplo: nmeros aleatorios y funciones


(secciones 15 y 16)
Este ejemplo es la ltima modificacin del ejemplo de la seccin 9. Recuerde que los fajos de tela llegan con una diferencia de 3 a 5 minutos, con distribucin uniforme. Ahora, la llegada de los fajos de tela sigue un proceso Poisson con media de 0.25 fajos por minuto. As, la distribucin de los tiempos entre llegadas para los fajos de tela es exponencial con media de 4 minutos (debido a las propiedades de la distribucin exponencial con relacin a la Poisson que puede consultar en el libro de texto). Otra modificacin en este caso, es la adicin de otra estacin de inspeccin al final de la lnea de costura. El tiempo de inspeccin del nuevo inspector seguir una distribucin uniforme con una media de 8 minutos y dispersin de 1 minuto. Cuando una docena de camisetas est lista para inspeccin, se elige cualquiera de los tres inspectores con igual probabilidad, y cada estacin de inspeccin tiene su propia cola. Las preguntas de inters para este problema son: 1. Cunto tiempo toma producir una docena de camisetas con calidad aceptable? 2. Cuntas docenas de camisetas inspecciona cada inspector? 3. Cul es la utilizacin de cada uno de los tres inspectores?

Modelo de GPSS/H
El sistema que se quiere modelar es similar al descrito en la seccin 9. Se describen slo las diferencias entre los dos ejemplos. El listado del modelo es el siguiente:
SIMULATE * * * Definicin de ampervariables INTEGER LET LET LET LET LET LET * * * &M(7), &S(7) &M(5)=7 &M(6)=9 &M(7)=8 &S(5)=2 &S(6)=1 &S(7)=1

Tiempo medio de servicio para inspector 1 Tiempo medio de servicio para inspector 2 Tiempo medio de servicio para inspector 3 Dispersin del tiempo de servicio para inspector 1 Dispersin del tiempo de servicio para inspector 2 Dispersin del tiempo de servicio para inspector 3

Segmento de declaracin de almacn

STORAGE S(WKR2),2/S(WKR5),3 * * Definicin de funciones * PROB FUNCTION RN(1), D3 0.333, 5/0.667, 6/1.0, 7

105

* * * * *

Seccin de bloques de GPSS/H rea de corte GENERATE ADVANCE SEIZE ADVANCE RELEASE 4,1 2 SERVER 3.75,1 SERVER Un fajo llega alrededor de cada 4+-1 minutos Tiempo de transporte al rea de corte Captura al servidor de la lnea Cerrar primer hombro Liberar al servidor de la lnea

* * *

Lnea de costura SEIZE ADVANCE RELEASE WKR1 3.5,1 WKR1 WKR2 7,2 WKR2 WKR3 3,0.75 WKR3 WKR4 3.25,1 WKR4 WKR5 11,3 WKR5 Captura la estacin de trabajo 1 Cierra el primer hombro Libera la estacin de trabajo 1 Captura la estacin de trabajo 2 Cose el cuello Libera la estacin de trabajo 2 Captura la estacin de trabajo 3 Hace la bastilla Libera la estacin de trabajo 3 Captura la estacin de trabajo 4 Cierra el segundo hombro Libera la estacin de trabajo 4 Captura la estacin de trabajo 5 Coloca las mangas Libera la estacin de trabajo 5

* ENTER ADVANCE LEAVE * SEIZE ADVANCE RELEASE * SEIZE ADVANCE RELEASE * ENTER ADVANCE LEAVE * * *

Estaciones de inspeccin BLET SEIZE ADVANCE RELEASE TRANSFER TRANSFER TERMINATE TERMINATE PH(INSP)=FN(PROB) Asigna nmero de inspector a PH(INSP) PH(INSP) Captura al inspector nmero PH(IN SP) &M(PH(INSP)),&S(PH(INSP) Inspecciona una docena de camisetas PH(INSP) Libera al inspector nmero PH(INSP) ,BACK Va al bloque BACK .05,,REJ Se rechazan 5% 1 Disminuye el TG1 en 1 Camisetas rechazadas salen del sistema

REJ * * *

Instrucciones de control de GPSS/H START END 100 Establece TG1 igual a 100

106

Ejercicios (secciones 15 y 16)


1. Modele el siguiente sistema: La partes llegan de acuerdo a la siguiente distribucin de probabilidad:
Tiempo entre llegadas (segundos) 10 15 20 25 30 35 40 Probabilidad 0.05 0.11 0.26 0.31 0.17 0.07 0.03

Alrededor de 72% de las partes son chafaldranas tipo A que requieren uno de los inspectores 1 o 2. Forman una cola para pasar con el primer inspector disponible. El tiempo de inspeccin tiene distribucin exponencial con media de 55 segundos. Las partes restantes (chafaldranas tipo B) slo pasan con el inspector 3. Cerca de 50% de las partes toman entre 40 y 60 segundos, 30% toman entre 60 y 70 segundos, mientras que el 20% restante toma entre 70 y 90 segundos. Estos tiempos siguen una distribucin uniforme. Simule 4 horas de operacin y conteste las siguientes preguntas: a) Cul es el tiempo de espera promedio para el inspector 3? b) Cul es el nmero promedio de chafaldranas tipo A que esperan la inspeccin? c) Cunto tiempo, en promedio, tarda una parte en transitar por el sistema? 2. El restaurante Sam's Sandwich est en proceso de desarrollo. Los planes son tener cinco personas para hacer sndwiches y dos cajeros. La tasa de llegada de los clientes es exponencial; sin embargo, las medias difieren de la hora de abrir a las 10:00 am a la hora de cerrar a las 2:00 pm, de la siguiente manera:
Hora 10:00-11:00 am 11:00-12:00 pm 12:00-1:00 pm 1:00-2:00 pm Tasa de llegadas 100 por hora 140 por hora 180 por hora 110 por hora

Las personas que hacen sndwiches trabajan con la misma velocidad exponencial. Sin embargo, trabajan ms rpido cuando la tasa de llegadas es ms alta. Los tiempos medios de servicio son los siguientes:

107

Tasa de llegadas 100 por hora 140 por hora 180 por hora 110 por hora

Tiempo para hacer un sndwich por trabajador 2.5 minutos 2.0 minutos 1.8 minutos 1.5 minutos

Una de las colas se forma para los trabajadores que hacen sndwiches y la otra para las cajas. Las cajas trabajan a una velocidad de 90 clientes por hora, con distribucin exponencial. Cul es el nmero mximo de clientes que esperan en ambas colas? Base su respuesta en un da de operacin. 3. Los mecnicos llegan al depsito de herramientas de Walter con una distribucin normal para los tiempos entre llegadas. La media de la distribucin normal cambia continuamente durante el da como sigue. La tasa de llegada aumenta de manera lineal de 12 por hora a las 7 de la maana a 24 por hora a las 11 de la maana, y despus disminuye de manera lineal hasta 6 por hora a las 4 de la tarde. La desviacin estndar es el tiempo medio entre llegadas dividido entre 6. Mientras esperan a Walter, los mecnicos forman una sola cola. Cuando los mecnicos estn esperando, Walter trabaja ms rpido. El tiempo de trabajo de Walter por mecnico tiene distribucin exponencial con media dependiente de la longitud de la cola como sigue:
Nmero de mecnicos en la cola 0 1 2 o ms Tiempo medio de trabajo 7.5 minutos 3.75 minutos 2.5 minutos

El depsito de herramientas est abierto 9 horas. Simule el depsito durante 10 das, con cada 9 horas del da independientes del da anterior. Encuentre el promedio y el nmero mximo de mecnicos en la cola por da, y durante el curso de las 10 horas. Tambin encuentre la utilizacin promedio de Walter durante el da, y durante el curso de las 10 horas. Use SNA, ampervariables y PUTPIC para calcular y despliegue todas las estadsticas requeridas.

108

También podría gustarte