Está en la página 1de 16

Unidad I Software de Simulacin

UNIDAD I. SOFTWARE DE SIMULACIN

1.1 HERRAMIENTAS GPSS

El Lenguaje de Simulacin GPSS (Introduccin)


Una vez que se aprendi a identificar los datos que debern alimentar a la simulacin y a saber que hacer para
analizar los resultados de ella, el paso ms natural es aprender un lenguaje de propsito especfico para elaborar el
programa de simulacin.

Se puede seleccionar el lenguaje de una gran variedad existente en el mercado, pero es conveniente hacerlo con
base en criterios adecuados tanto para el aprendizaje como para la aplicacin a sistemas prcticos.

El GPSS tiene varias caractersticas que lo hacen un lenguaje de simulacin adecuado para introducirse en la
programacin de modelos de simulacin con un lenguaje de propsito especfico. Estas cualidades se pueden agrupar
en tres que son:

1. GPSS es completo. Esto quiere decir que es un lenguaje muy rico ya que contiene incorporadas muchas opciones
estadsticas y se puede aplicar en una gran variedad de situaciones prcticas.

2. Es de fcil empleo y tiene poder. GPSS es fcil de aprender y de usar ya que se requiere invertir una cantidad
mnima de tiempo en la curva de aprendizaje para poder simular y modelar de una manera tan compleja como
necesite.

3. Tiempo de Prueba. El GPSS es uno de los primeros lenguajes de simulacin que se desarroll, as que se ha
probado durante mucho tiempo. (Gordon lo implement en 1962).

Sin embargo tiene la desventaja de que no incluye una animacin incorporada, aunque sus resultados se pueden
animar por otros paquetes tales como el Proff Annimation.

Antecedentes
El GPSS (General Purpose Simulation System) lo implemento Gordon en 1962 y fu J. O. Henrikesen quien hizo la
primera liberacin para la Wolverine Sofware en 1977, desde entonces se ha mantenido como un lenguaje capaz de
simular adecuadamente una gran cantidad de entornos de inters prctico y terico.

Existen diferentes versiones de GPSS, cada una con sus variantes particulares, pero la filosofa operativa es
semejante en todas las versiones. En el ITESM-CEM se dispone de dos: el GPSS/H para plataforma DOS y
compatibles, y el GPSS/C para Plataforma UNIX. En este curso se presentan las instrucciones de manera que sean
aceptadas por ambos compiladores de GPSS (en lo posible) ,marcando siempre que lo amerite, las diferencias entre
una y otra versin. Sien embargo es conveniente recordar que las versiones de los lenguajes y programas cambian
continuamente por lo que, si dispone de una versin de GPSS en donde no corran las instrucciones tal y como
aparecen en este curso, consulte su manual de referencia donde, seguramente, encontrar la sintaxis apropiada para
su versin.

Dnde localizar y correr GPSS


En el ITESM-CEM el GPSS se puede localizar en las mquinas de los laboratorios de cmputo de aulas IV. En el
laboratorio de PCs. (piso 3) se puede encontrar disponible una versin estudiantil y una profesional de GPSS/H.
Mientras que en el laboratorio para Workstationacutes con plataforma UNIX (piso 2) se encuentra disponible un
GPSS/C con capacidad equivalente a una profesional.

Tambin est disponible una versin estudiantil de GPSS/H en la red donde se puede correr y codificar programas.

El GPSS no dispone de un editor as que para formar un programa es necesario tener un editor de texto (en formato
ASCCI) tanto en la plataforma DOS como en UNIX. Bajo DOS y compatibles es posible utilizar el editor de texto que
viene acompaando a sistema operativo o algn editor donde usualmente teclee sus programas en lenguajes como
QBASIC, PASCAL, C, FORTRAN y similares.
L.I. Jos Raymundo Ceja Vzquez 1
Unidad I Software de Simulacin

Bajo UNIX se dispone del editor vi (no grfico) y el asedit que es ms sencillo y amable en su manejo, la
recomendacin es teclear el programa en asedit.

Una vez que se tenga el programa se recomienda salvarlo con extensin .gps. Al correr el programa el compilador
GPSS genera un archivo con los resultados de la simulacin, este archivo tendr extensin .lis y se crea en el mismo
directorio donde se encuentre el archivo del programa (.gps).

Para correr el programa (bajo DOS) solo hace falta colocarse en el directorio donde resida el compilador GPSS y
teclear gpss el cual preguntar cual es el nombre del programa que desea correr (File: ); responda dando el nombre
completo del archivo, es decir incluya la unidad de disquete si es necesario y el nombre (incluyendo directorios) p. e.
a:\diruno\prog.gps. En caso de estar en entorno UNIX colquese en el directorio donde se encuentra su programa,
teclee gpss y responda con el nombre de su archivo directamente. En que no est presente la liga al directorio del
GPSS consulte con el administrador donde localizar el paquete.

Esta es la manera elemental de correr un programa GPSS pero existen diversas modalidades bajo las cuales se
puede correr el programa para hacer un seguimiento especial de la corrida.

Una vez que corra su programa para inspeccionar sus resultados que estn en el archivo .lis es necesario que edite
este archivo para visualizar sus resultados. Para abrir el archivo puede utilizar el mismo editor que emple para crear
el programa. La interpretacin de los resultados bsicos de este reporte se ver posteriormente, cuando sea capaz de
fabricar programas bien formados.

Finalmente para quienes opten por utilizar el GPSS disponible en la red, al conectarse lo harn a un directamente a un
editor de la red y posteriormente la red mandar su archivo al compilador GPSS y le retornar el archivo con los
resultados, visualizndolos con el editor que provee la red.

Conceptos Bsicos de GPSS


Para entender el funcionamiento de GPSS se tienen que conocer las entidades que maneja GPSS para la simulacin
estas entidades son:

a) Transacciones
Las transacciones son entidades dinmicas que atraviesan las instrucciones de bloque del GPSS y que en el modelo
pueden simbolizar autos, personas, mquinas, etc.

Una de las propiedades interesantes de GPSS es que las instrucciones del programa no sern ejecutadas de manera
secuencial ya que el GPSS procesar paralelamente (en tiempo simulado) todas las transacciones del modelo, esto
implica que pueden existir muchas transacciones que circulen a travs del modelo al mismo tiempo simulado.

Las transacciones poseen atributos que les permiten tanto recolectar informacin de lo que les sucede en el modelo,
como definir sus caractersticas particulares, por ejemplo la prioridad que tendrn en el modelo, etc., y esto facilita la
modelacin adecuada de los sistemas de inters.

b) Entidades de equipo
Estas entidades se usarn para simular el empleo de equipo real (o recursos reales) y se clasifican en FACILITIES,
STORAGES, LOGIC SWITCHES Y USER CHAINS.

FACILITIES (recursos).- Se emplean para simular servidores simples, como la caja de un banco, un surtidor de
gasolina, una computadora, un telfono etc. Slo una transaccin puede ocupar este tipo de recursos y bloquea el
acceso a las dems hasta que desocupe el recurso (de este tipo).

STORAGES (almacenes o grupos).- Se usan para simular servidores mltiples e idnticos en cada una de sus
unidades, por ejemplo un grupo de computadores, y conjunto de cajeros automticos etc.

LOGIC SWITCHES (compuertas lgicas).- Se emplean para simular compuertas de acceso que pueden abrirse y
cerrarse para permitir o negar el acceso a una seccin determinada del programa de acuerdo a criterios establecidos.

USER CHAINS (cadenas de usuarios).- Se ocupan para simular comportamientos complejos en procesos de filas,
este es un recurso que est fuera del alcance del curso.
L.I. Jos Raymundo Ceja Vzquez 2
Unidad I Software de Simulacin

c) Entidades computacionales
Estn constituidas por: Variables aritmticas, variables Booleanas, entidades estadsticas, entidades de
almacenamiento de informacin y funciones.
Variables aritmticas.
En estas entidades se puede almacenar informacin ya sea calculando o asignando valores a las variables mediante
el siguiente formato:

etiqueta VARIABLE expresin (para variables enteras)


y
etiqueta FVARIABLE expresin (para variables de punto flotante)

Las etiquetas pueden ser nmeros o caracteres alfanumricos, con la restriccin de que el primer carcter sea
alfabtico. Otra restriccin es que no pueden tomar la forma de las palabras reservadas en GPSS, que estn
formadas por:
1 Los atributos numricos estndar (SNA)
2 Los atributos de carcter estndar (SCA)
3 Los atributos lgicos estndar (SLA)
4 Los nombres de los bloques de GPSS

Las expresiones pueden incluir constantes, smbolos o bien otras variables y utilizar los siguientes operadores: -
(substraccin), + (suma), * (multiplicacin), / (divisin) y @ (mdulo).

Ejemplo(s):
16 VARIABLE S2/2 + 10
HORAS FVARIABLE AC1*100/15

Variables Booleanas
Las variables Booleanas tienen dos alternativas: Falso (0) o verdadero (1) y para declararlas se emplea el siguiente
formato.

etiqueta BVARIABLE expresin

Para declarar este tipo de variables se aplican las mismas restricciones que en las variables aritmticas pero se
admiten los siguientes operadores: 'GE' (para mayor o igual), 'G'(mayor que), 'L' (menor que), 'LE'(menor o igual), 'E'
(igual), 'NE' (diferente), OR (para un OR lgico), AND (para AND lgico), + (OR lgico), * (AND Lgico).
Ejemplo:

VEINTE BVARIABLE Q$'GE'7*Q4'LE'17

(la variable VEINTE ser verdadera si Q4 esta entre 7 y 17)

FUNCIONES
Las funciones son entidades muy importantes que servirn para formar relaciones entre variables y/o caractersticas
de las diferentes entidades del GPSS. La forma de construirlas y el detalle de su operacin se ver en una seccin
especial del curso.

ENTIDADES ESTADISTICAS (QTABLE, TABLE)


Estas entidades sirven para hacer un levantamiento estadstico del comportamiento del sistema simulado. Se ver
ms detalle posteriormente en este curso.

ENTIDADES DE ALMACENAMIENTO DE INFORMACION


Existen 3 tipos (SAVEVALUES, MATRIXSAVEVALUES y AMPERVARIABLES) del los cuales slo se tratar al tercero
en este curso, he aqu una breve descripcin.

L.I. Jos Raymundo Ceja Vzquez 3


Unidad I Software de Simulacin

Ampervariables:
Es un tipo de variable disponible en GPSS/H (solamente) y se distingue por tener el smbolo & antes del nombre de la
variable. Se declaran al principio del programa y se les puede usar como escalares o como arreglos, con valor fijo o
con valor recalculable conforme se ejecutan los bloques.

Existen los siguientes tipos de ampervariables:


INTEGER (para guardar nmeros enteros positivos y negativos)
REAL (para nmeros reales)
CHAR*N (para cadenas de caracteres de longitud N)
EXTERNAL (para aplicaciones especiales en GPSS/H)

Como crear un programa bien formado en GPSS.

Para introducir un programa GPSS se debe seguir cierta estructura y formato para que est bien formado y corra
eficientemente. La estructura bsica de un programa elemental de GPSS es la siguiente:

Las instrucciones SIMULATE, START y END, que aparecen en el diagrama, son de las llamadas instrucciones de
control y sirven para dirigir las acciones del modelo de simulado con las instrucciones de bloque. Las instrucciones
GPSS adems de la estructura adecuada deben seguir un formato especfico, cuando se codifica a fin de que sean
interpretadas correctamente por el compilador y pueda simular adecuadamente lo que se pide.

Las instrucciones de control (SIMULATE, START, END)


Para formular un modelo de simulacin que represente fielmente la idea que se tiene de un sistema, es conveniente
conocer con detalle las opciones que brindan las instrucciones a fin de poderlas usar adecuadamente.

A continuacin se presenta el detalle de las instrucciones de control iniciales ya que posteriormente cuando se inicie la
construccin de programas ser indispensable que las conozca y maneje.

SIMULATE. Es la primera instruccin del programa, si no tiene SIMULATE entonces se compilar pero no se ejecuta,
es decir, slo se verifica su sintaxis y se traduce a lenguaje de mquina pero no se ejecuta la simulacin. Esta
instruccin no se puede etiquetar. Su sintaxis es:

SIMULATE A,B,C

Donde:

A es un operando donde se coloca el tiempo lmite de procesador en minutos.


B es un operando que puede tomar el valor "SAVE", en cuyo caso se genera un reporte salvando las
estadsticas principales si el programa alcanza el tiempo lmite parea su ejecucin el nombre del archivo
generado es GPSCHKPNT.SAV

L.I. Jos Raymundo Ceja Vzquez 4


Unidad I Software de Simulacin

C es un operando donde se coloca el numero lmite de movimientos de una transaccin antes de recibir una
orden de retardo, suspensin de actividades o destruccin.

Bajo DOS y sistemas compatibles no se toma en cuenta el valor de A (y no tienen las opciones B, C para GPSS/h). Su
valor por omisin es infinito.

Esta instruccin es de gran utilidad adicional cuando se trabaja en sistemas donde no se tiene acceso al control del
sistema computacional ya que es posible que algn programa este codificado en ciclos de manera accidental. Con
esta instruccin se puede dar un lmite en los recursos a emplear por el programa. Bajo sistemas operativos como
DOS el operando A no se toma en cuenta ya que se supone que en los sistemas personales el usuario tiene la opcin
de apagar la mquina en caso de desear terminar una corrida si esto fuese necesario.

START. Esta es una instruccin que sirve para indicar que el programa que modela el sistema esta completo y que se
puede iniciar la simulacin de ese grupo de instrucciones hasta que se de la condicin de terminacin del START. Su
sintaxis es la siguiente:

START A,B,C,D

Donde:

A es el nmero de terminaciones antes del reporte final.


B es un operando que puede llevar la opcin NP para suprimir la impresin del reporte escrito.
C es un operando donde se coloca el intervalo de tiempo simulado al cual se desea una impresin de
resultados (hasta ese momento).
D es un operando para inclur en el reporte la cadena de eventos actuales (CEC) y la cadena de eventos
futuros (FEC) en el reporte estndar. El valor par inclur es "1" y nulo en caso contrario.

Finalmente, la instruccin de control END indica el final de la ejecucin del programa y retorna el control al sistema
operativo ya sea DOS, UNIX o cualquier otro. Su sintaxis es:

END

END no posee operandos.

Este conjunto de instrucciones de control permiten formar programas elementales bien estructurados que corran y
simulen el sistema modelado. Existen ms de instrucciones de control que se mostrarn conforme las necesidades del
curso.

Instrucciones de Bloque GPSS (GENERATE, TERMINATE, SEIZE, RELEASE, ADVANCE).

Para iniciar el aprendizaje en la elaboracin de modelos de simulacin en GPSS es necesario saber como generar
transacciones ya que son los elementos computacionales que circularn por el modelo representando toda clase de
elementos que "viajen" por el sistema.

La instruccin de bloque GENERATE


La instruccin de bloque que permite generar las transacciones e ingresarlas en el modelo se llama GENERATE. Su
sintaxis es:

GENERATE A,B, C,D,E,F


Donde el operando A es la tasa promedio a la cual se crean las transacciones en unidades de tiempo simulado. Su
valor por omisin es cero.

B es la dispersin en el tiempo de creacin promedio de las transacciones, es decir, el tiempo de interarrivo de las
transacciones al modelo ser de A + - B unidades de tiempo. Su valor por omisin es cero.
C es un operando donde se coloca el tiempo simulado al que llega la primera transaccin al modelo. El valor por
omisin no est determinado.

D es el nmero lmite de transacciones creadas y su valor por omisin es infinito.


L.I. Jos Raymundo Ceja Vzquez 5
Unidad I Software de Simulacin

E es un operando donde se coloca la prioridad asignada a cada transaccin creada por el GENERATE. En GPSS/C
las prioridades posibles son de 0 a 127 y en GPSS/H se pueden usar valores desde -2E-9 hasta 2E9. La prioridad
mayor tiene preferencia sobre las de prioridad inferior.

F es un operando donde se especifica el nmero y tipo de parmetros asociados a las transacciones creadas. El valor
por omisin es 12PF que implica que cada transaccin creada tendr asociados a 12 parmetros de tipo PF (o de
palabra completa). Las opciones para el tipo de parmetro son:

PF de palabra completa.
PH de media palabra.
PB de tipo Byte.
PL de punto flotante.

El tipo PB dispone de 8 bits para guardar informacin, los otros tipos tienen mayor capacidad y por lo tanto ocupan
ms memoria. El que mayor capacidad tiene es el PF que puede representar nmeros con punto flotante.

Ejemplo(s):

GENERATE 2500

Crea una transaccin cada 2500 unidades de tiempo simulado

GENERATE 2700,200,1000,100,50,20PL

Crea transacciones cada 2700 + - 200 unidades de tiempo, pero la primera transaccin se crea al tiempo 1000.
Despus de 100 transacciones no se generan ms y cada una de las 100 generadas tendrn una prioridad de 50 y 20
parmetros asociados de tipo PL.

Nota(s):
En GPSS/H los operandos pueden tomar valores fraccionarios pero en GPSS/C tienen que ser valores enteros.
Adems, en GPSS/H existe disponible una extensin de este conjunto de operandos, consulte el Manual de
Referencia para hacer uso de ellos.

Las transacciones no pueden ingresar a una instruccin de bloque GENERATE. El ingreso causa error en la ejecucin
del programa.

Instruccin de bloque TERMINATE


TERMINATE se emplea para destruir las transacciones que ingresen a ella, se puede emplear para simular que un
elemento sale del sistema y ahorrar memoria. Ayuda a que se cumplan las condiciones de terminacin de un
programa ya que puede afectar al contador del START. Su sintaxis es:

TERMINATE A
Donde A es un operando donde se coloca el nmero (entero) en que se decrementa el contador de las terminaciones,
cuyo nmero inicial se da en la instruccin de control START. Cuando el contador alcanza un valor menor o igual a
cero se ejecuta la siguiente instruccin debajo del START, si es un END, la simulacin termina.

Ejemplo(s):

TERMINATE

Cada transaccin que ingresa se destruye:

TERMINATE 5

Cada transaccin que ingresa se destruye y decrementa el contador de terminaciones en 5 unidades cada vez.

Con las instrucciones de bloque GENERATE y TERMINATE se est en capacidad de crear y destruir transacciones,
es decir, de ingresarlas al modelo y de sacarlas, pero sin que ejecute alguna actividad en el modelo.
L.I. Jos Raymundo Ceja Vzquez 6
Unidad I Software de Simulacin

Para simular la ocupacin de un equipo por una transaccin se puede utilizar la instruccin de bloque SEIZE y para
indicar la liberacin del equipo ocupado con SEIZE se ocupa RELEASE.

Instruccin de bloque SEIZE


SEIZE sirve para registrar el empleo de una unidad de servicio por parte de una transaccin que entra, de tal forma
que la unidad queda ocupada hasta que la transaccin ingresa a una instruccin RELEASE. Una sola transaccin
puede ocupar cualquier nmero de unidades de servicio. Su sintaxis es:

SEIZE A

Donde el operando A se emplea para dar la identificacin a la unidad que se ocupa (nmero o nombre).

Ejemplo(s):

SEIZE HORNO

Registra la ocupacin de una unidad de servicio llamada HORNO.

SEIZE 9

Registra la ocupacin de la unidad de servicio nmero 9. Esta forma de hacer referencia a las unidades puede resultar
en un programa que no aporta la idea del sistema que se simula y para el no experto puede causar confusin. Para
iniciarse en la programacin se recomienda emplear nombres alfabticos para la identificacin.

Instruccin de bloque RELEASE


Sirve para desocupar la unidad de servicio ocupada previamente por la transaccin. No se reciben negativas para
entrar a este bloque. Su sintaxis es:

RELEASE A

El operando A indica la identificacin de la unidad que se libera.

Ejemplo

RELEASE HORNO

Indica que la transaccin libera a la unidad de servicio HORNO que ocup con anterioridad.

Instruccin de bloque ADVANCE


Suspende el movimiento de una transaccin por una cantidad especificada de tiempo simulado. Puede emplearse
para simular el tiempo que una persona tarda en ocupar un equipo, en una sala de espera, etc. Su sintaxis es:

ADVANCE A,B

Donde el operando A corresponde al tiempo de retardo para la transaccin y B es el intervalo de dispersin alrededor
de A.

Ejemplo:

ADVANCE 12,4

Retarda la transaccin 12 + - 4 unidades de tiempo simulado.

ADVANCE 15

Retarda exactamente 15 unidades de tiempo a la transaccin.


L.I. Jos Raymundo Ceja Vzquez 7
Unidad I Software de Simulacin

Instrucciones de Bloque GPSS (QUEUE, DEPART, ENTER, LEAVE).


Las instrucciones de bloque QUEUE, DEPART, ENTER, LEAVE, junto con las vistas la sesin anterior permitirn la
simulacin de sistemas simples de manera rpida y eficiente.

Instruccin de bloque QUEUE


La instruccin de bloque QUEUE se emplea para obtener estadsticas de las transacciones que pasan por esa
instruccin. Su sintaxis es:

QUEUE A,B

Donde el operando A se emplea para colocar el nombre de la fila a la que se le asignarn las estadsticas. Y B es el
nmero de unidades que se deben sumar a la fila cuando una transaccin pasa por la instruccin. El valor por omisin
es de uno.

Ejemplo(s):

QUEUE FILAA

Declara una fila de nombre FILAA y le suma una unidad a la fila cuando una transaccin pasa por ella.

QUEUE FILAB,3

Declara una fila de nobre FILAB y le suma 3 unidades cada vez que una transaccin pasa por ella.

Instruccin de bloque DEPART


Reduce el contenido de una fila declarada con QUEUE, en una o ms unidades. DEPART es el complemento de
QUEUE ya que sirve para simular que un elemento de la fila se desforma y se va. Su sintaxis es:

DEPART A,B

Donde A es el operando donde se aporta el nombre de la fila a la que se le removern B unidades, el valor por
omisin de B es uno.

Ejemplo(s):

DEPART FILAA

Descuenta una unidad de la fila FILAA que se debe definir antes.

DEPART FILAB 3

La fila FILAB se reduce en 3 unidades cada vez que una transaccin pasa por esta instruccin.
Es necesario tener cuidado de no remover ms unidades que las que tiene cada una de las filas ya que no es posible
hacer esto.

Instruccin de bloque ENTER


Esta instruccin se emplea para ocupar unidades de equipo que tienen capacidad mltiple. Por ejemplo un cubculo
de cajeros automticos, un conjunto de sillas en un saln, etc. Su sintaxis es:
ENTER A,B

Donde A es el nombre del equipo de capacidad mltiple y B es el nmero de unidades que solicita una transaccin, en
caso de omitirlo se solicitar una unidad de equipo. La capacidad mxima del conjunto se puede fijar con la instruccin
de control llamada STORAGE, si no se fija as la capacidad mxima se supone infinita.

Ejemplo:
ENTER SILLAS, 2
L.I. Jos Raymundo Ceja Vzquez 8
Unidad I Software de Simulacin

Aqu la transaccin que ingresa solicita 2 unidades del conjunto llamado SILLAS (el cual puede dimensionarse con
STORAGE) este conjunto SILLAS pertenece a las entidades llamadas storage.

Instruccin de bloque LEAVE


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

LEAVE A, B

Donde A es el operando que se emplea para invocar el nombre del equipo (storage) del cual se liberan B unidades. Si
el operando B se omite, su valor ser de uno. Se debe tener precaucin de no liberar ms unidades de las que se
tengan ocupadas, para cada equipo especfico, ya que eso implica creacin de unidades.
Ejemplo(s):

LEAVE MESAS

Se pide que se libere una unidad del equipo de capacidad mltiple llamado MESAS.

LEAVE MESAS,3

Cada transaccin que ingresa solicita que la unidad de equipo mltiple (o storage) MESAS libere 3 de sus unidades.

Instruccin de control STORAGE


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

etiqueta STORAGE A

Donde "etiqueta" llevar el nombre del equipo que se desea dimensionar y A es el nmero de unidades que tendr el
equipo.

Ejemplo:

CAJA STORAGE 10

Se determina que el storage CAJAS tendr capacidad de 10 unidades.

Nota: STORAGE se codifica junto a las instrucciones de control del inicio del programa (donde usualmente se colocan
las declaraciones de variables).

En la versin GPSS/h la sintaxis es:

STORAGE S$etiqueta, A/ S$etiqueta, B/ ... /S$etiqueta, N

Donde la etiqueta es el nombre del storage y los operandos A, B, C ... N son las unidades de cada uno de los equipos
que se desea dimensionar.

Codificacin de un programa GPSS.


Para codificar un programa en GPSS se tienen que recordar las columnas sugeridas para colocar cada tipo de
informacin (visto en la sesin uno), tener un sistema de inters que se desee simular, hacer la abstraccin de cmo
representar el sistema y su funcionamiento (hacer un modelo), y proceder a representarlo con las instrucciones de
GPSS (siempre que sea posible).

El GPSS no posee un editor propio (al menos en las versiones GPSS/H y GPSS/C), as que se tiene que emplear
algn editor como el asedit en ambiente UNIX o el editor de DOS o el de Pascal etc. a condicin de que se pueda
salvar el archivo en caracteres ASCCI (modo texto).

L.I. Jos Raymundo Ceja Vzquez 9


Unidad I Software de Simulacin

Se desea saber cuntos puntos de cobro se deben abrir, para tenerlos disponibles en caso de que la demanda
aumente al doble de autos por unidad de tiempo (en promedio), puesto que se desea que el nmero de autos en
espera de servicio no sea superior a 20, por el riesgo de accidente que hay en la zona debido a la topologa particular
del caso. Simule ocho horas de operacin para tomar una decisin.

El primer paso es crear el modelo conceptual, descomponiendo el sistema de acuerdo a los elementos que es posible
simular. Por ejemplo: las cabinas de cobro se pueden visualizar como unidades de equipo mltiple, ya que son
similares en caractersticas. Los autos se pueden representar por transacciones y el nmero de autos en espera de
servicio se puede cuantificar como una fila frente al servidor.

De esta manera se puede inferir que se har uso de las siguientes instrucciones: (bsicamente)

SIMULATE para iniciar el programa (compilarlo y correrlo), GENERATE para crear las transacciones que
representarn los autos que llegan por la autopista, QUEUE para tomar datos de los autos que estn en espera del
servicio, ENTER para simular un conjunto de cabinas de cobro de caractersticas semejantes ADVANCE para
representar los tiempos de atencin, TERMINATE para sacar autos del modelo una vez que pasan la caseta,
DEPART para descontar de la fila a los autos atendidos, LEAVE para desocupar las cabinas de cobro START para
dar una condicin de terminacin y END para detener el programa el programa.

Instrucciones de Bloque GPSS (TRANSFER).


La instruccin TRANSFER sirve para bifurcar el trayecto de un grupo de transacciones, que ingresen a esta
instruccin de bloque. En los modelos de simulacin a menudo se necesita simular que los elementos que recorren el
modelo toman decisiones y siguen rutas y estrategias diferentes, para ello se puede usar TRANSFER en GPSS. Su
sintaxis es:

TRANSFER A,B,C,D

Donde A es el modo de operacin, B es el nombre (o etiqueta) de la direccin de la primera opcin, C es el nombre (o


etiqueta) de la segunda opcin y D es un factor de indexacin.

Existen 3 formas de hacer uso de TRANSFER a saber:


La incondicional
La estadstica
La condicional

La forma ms sencilla de ocuparlo es la incondicional, donde las transacciones que llegan se bifurcan (todas)
incondicionalmente a otra direccin.

a) Forma Incondicional
Para hacer esto se deja el campo A en blanco y en B se coloca una etiqueta que seala el bloque donde ingresar
incondicionalmente la transaccin.

Ejemplo: TRANSFER ,PROXIMO

En este ejemplo la transaccin que llega incondicionalmente se transfiere al bloque etiquetado como PROXIMO.

b) Forma Estadstica
Se tienen 4 maneras diferentes de hacer una transferencia estadstica de transacciones, a saber:
Manera 1. se elige en el campo A una probabilidad de pasar al bloque etiquetado como se menciona en el campo C.

Ejemplo 1: TRANSFER .33,DIRUNO,DIRDOS

Esta instruccin enva el 33 % de las transacciones que ingresen al bloque etiquetado con DIRDOS y el 67 % restante
al etiquetado con DIRUNO.

Ejemplo 2: TRANSFER .33,,DIRDOS

L.I. Jos Raymundo Ceja Vzquez 10


Unidad I Software de Simulacin

Aqu el 33 % de las transacciones que ingresen se dirigen al bloque etiquetado con DIRDOS y el resto pasa al
siguiente bloque.

Manera 2. Seleccionando en A el modo PIC, se tiene la opcin de transferir de manera aleatoria uniforme la
transaccin que ingrese a cualquier bloque delimitado entre las etiquetas que se aporten en los campos B y C.

Ejemplo: TRANSFER PIC,ETIQUNO,ETIQDOS

Esta instruccin intentar enviar las transacciones (que ingresen) a algn bloque que est entre el bloque etiquetado
como ETIQUNO y el etiquetado como ETIQDOS (incluyendo los bloques etiquetados). Todos los destinos posibles
tienen la misma probabilidad de ser seleccionados por la instruccin.

Manera 3. Si selecciona el modo SBR en el campo A

Ejemplo: TRANSFER SBR,DESTINO,9PH

De esta manera se transfiere a una transaccin a la etiqueta DESTINO y almacena el nmero de bloque (donde se
hace la transferencia) en el parmetro 9PH. Esta opcin no es del nivel del presente curso, para mayor informacin
consulte el manual de Referencia.

Manera 4. Se tiene cuando se ocupa la opcin PH PF PB PL en el parmetro A.

Ejemplo: TRANSFER PH,4,5

Aqu se transfiere la transaccin que ingrese a la direccin especificada en el parmetro 4PH sumndole 5 unidades.
Es decir la enva al bloque nmero 4PH+5.

Manera 1. Si en el campo A se emplea la opcin BOTH

Ejemplo: TRANSFER BOTH,INICIO,FINAL

La transacin al llegar se trasfiere como primera opcin al bloque etiquetado como INICIO y como segunda opcin al
etiquetado como FINAL hasta que logre el acceso.

Manera 2. Si en el campo A se especifica la opcin ALL

Ejemplo: TRANSFER ALL,UUNO,DDOS,2

Esta es una generalizacin del modo BOTH, ya que la transaccin intentar bifurcarse a la etiqueta UUNO, pero si no
logra el acceso intentar acceder dos bloques abajo (UUNO + 2) y de no lograr acceso seguir intentando acceder en
saltos de D bloques (en este caso 2) hasta que encuentre el lmite marcado con DDOS. Se debe cuidar que
UUNO+nD=DDOS para alguna n.

Si se llega al lmite superior y no se ha logrado el acceso se inicia un nuevo ciclo desde UUNO, hasta que logre
eventualmente su acceso.

Instrucciones de Bloque GPSS (GATE, TEST).


En los modelo de simulacin existe la necesidad (algunas veces) de simular compuertas que se abran o cierren
dependiendo de las condiciones para el acceso a determinados lugares. GPSS tiene las instrucciones GATE y TEST
para esto.

TEST
Esta instruccin de bloque controla el flujo de transacciones a travs de relaciones lgicas entre los atributos
numricos estndar (SNA) del GPSS, que son variables internas de las cuales se sirve para realizar la simulacin.

Ejemplo de SNA's
La instruccin test opera de dos modos: a) Cuando las transacciones se detienen hasta que la relacin lgica se
cumple y b) Cuando las transacciones se dirigen a un bloque alterno cuando la relacin lgica no se cumple.
L.I. Jos Raymundo Ceja Vzquez 11
Unidad I Software de Simulacin

La sintaxis de TEST es:

TEST "X" A,B,C

Donde "X" es un operador relacional que puede ser:


L (menor que)
LE (menor o igual)
E (igual)
NE (diferente)
G (mayor que)
GE (mayor o igual).

El operando A es el primer SNA comparado, B es el segundo SNA comparado y C es la etiqueta del bloque alterno si
la relacin lgica es falsa. A y B tambin pueden tomar valores constantes. Si se omite la etiqueta en el campo C,
entonces TEST opera del primer modo, deteniendo las transacciones mientras la relacin no sea verdadera.
Funcionando como una compuerta.

En caso de que se aporte la etiqueta las transacciones seguirn por el bloque etiquetado cuando la relacin sea falsa.
Ejemplo(S)

TEST LE Q$LINEA,7,SALIDA

En este caso la instruccin enva las transacciones a la etiqueta SALIDA en caso de que la longitud de la fila LINEA
sea mayor que 7. Si es menor o igual las transacciones pasan al siguiente bloque.

TEST E Q$LINEA,Q$INICIO

Aqu la instruccin detendr las transacciones que intenten pasar al bloque siguiente mientras las longitudes de las
filas LINEA e INICIO sean diferentes. Cuando sean iguales las transacciones pasarn al siguiente bloque.

GATE
Esta es una instruccin semejante a TEST pero utiliza relaciones lgicas asociadas con entidades particulares.
Tambin acta de los dos modos en que opera TEST. Su sintaxis es:

GATE "X" A,B

Donde "X" puede ser:

NU que significa (recurso especificado en A no esta en uso)


U (recurso especificado en A esta en uso)
SF (storage especificado en A esta lleno)
SNF (storage especificado en A esta no lleno)
SNE (storage especificado en A esta no vaco)
SE (storage especificado en A esta vaco).

El operando A se emplea para colocar el nombre de la entidad que se inspecciona y en el B se coloca la etiqueta del
bloque alterno en caso de no cumplirse la relacin.

Si se omite la etiqueta en B, la instruccin detendr las transacciones hasta que la relacin sea verdadera, en cuyo
caso pasarn al siguiente bloque.

Ejemplo(s)

GATE SNF NAVE,OTRO

La transaccin al ingresar en el GATE preguntara si es verdad que el storage llamado NAVE esta no lleno, si es
verdad pasar al siguiente bloque, si no se dirige al bloque etiquetado con OTRO.

L.I. Jos Raymundo Ceja Vzquez 12


Unidad I Software de Simulacin

GATE NU CAJAS

Aqu las transacciones se preguntan si el facility llamado CAJAS esta no usado (sin usarse), si es verdad pasan al
siguiente bloque y si es falso se detienen hasta que este sin usarse.

Instrucciones de control GPSS (FUNCTION).


Para crear variables que tengan distribuciones y valores que varen de una manera funcional ya sea aleatoria o
deterministica en GPSS se cuenta con la opcin FUNCTION que se puede utilizar de maneras diversas.

Las funciones, ya sean continuas o discretas, asocian valores de una variable (independiente) con resultados
especficos de los valores que pueden tomar las variables dependientes.

La sintaxis es:

ETIQUETA FUNCTION A, BC
X1,Y1/X2,Y2/X3,Y3/.../Xn,Yn

Donde:

A se emplea para declarar la variable que se usar como independiente


B se emplea para definir el tipo de funcin que se desea
C es el nmero de pares coordenados X,Y que se usan para determinar la forma funcional. Los pares X,Y son
coordenadas que determinan la forma funcional que se desea.
Los tipos de funcin de que se dispone son:
C (para denotar una funcin de tipo continuo)
D (para denotar funciones de tipo discreto)
L (para denotar el tipo lista)
E (para el tipo discreto por atributos)
M (tipo lista por atributos)
S (tipo selector de entidad).

La ETIQUETA se emplea para darle un nombre a la funcin que se declara, con el fin de llamarla as cuando se utilice
en el programa GPSS. Para llamar a la funcin desde alguna parte del programa se necesita llamar al SNA
correspondiente, por ejemplo: Si se declar la funcin TIEMPO, cuando se desea usar el valor actual de la funcin,
dependiendo del valor actual de la variable independiente, es necesario invocar al SNA FN$TIEMPO el cual tendr el
valor deseado.

El valor de la funcin se podr utilizar en muchos de los operandos de las instrucciones de bloque donde tenga
sentido un valor como el que aporta la funcin (o funciones) que defina.

Por ejemplo:

ADVANCE FN$TIEMPO

En esta instruccin de bloque se pide que la transaccin suspenda su recorrido por el modelo, durante un lapso
especificado en la funcin tiempo.

Algunas funciones aparecen de manera tan frecuente que su forma funcional ya esta predefinida en GPSS con el fin
de evitar un trabajo inecesario.

Por ejemplo: en GPSS/C estn definidas la funcin que genera nmeros aleatorios con distribucin exponencial y
normal estndar (adems del generador de aleatorios uniformes en el intervalo 0-1).
En GPSS/H se cuenta con la funcin que genera nmeros con distribucin exponencial, normal y la triangular en
forma de predefinida. Para usarlas no es necesario hacer toda la declaracin funcional como en otros casos.
Para GPSS/C

En el caso de GPSS/C el generador exponencial con que se cuenta tiene una media de 1 y se declara de la siguiente
manera:
L.I. Jos Raymundo Ceja Vzquez 13
Unidad I Software de Simulacin

ETIQUETA FUNCTION RN1,BE

Donde en la ETIQUETA se coloca el nombre que se desea para la funcin, donde dice RN1 se puede colocar el SNA
que invoca a cualquiera de los generadores de aleatorios uniformes, es decir RN2, RN3 etc. y as tener generacin de
aleatorios independientes, al emplear corrientes aleatorias (RNi's) diferentes. BE indica que se invoca al generador
exponencial (con media uno).

Con base en este generador se pueden obtener nmeros aleatorios con distribucin exponencial con media distinta de
uno, tomando en cuenta la expresin matemtica del generador de aleatorios exponencial que se dedujo en la primera
parte del curso.

Si X es un nmero aleatorio exponencialmente distribuido con media uno entonces Y = M*X es un nmero aleatorio
exponencial mente distribuido con media M (Demuestre que as es, a partir de la expresin vista en la primera parte)

Tambin existe un generador de nmeros aleatorios con distribucin normal estndar (media cero y desviacin
estndar uno), se declara de la siguiente manera:

ETIQUETA FUNCTION RN1,BN


Donde en la ETIQUETA se coloca el nombre que se desea para la funcin, donde dice RN1 se puede colocar el SNA
que invoca a cualquiera de los generadores de aleatorios uniformes en el 0-1, es decir RN2, RN3 etc. y as tener
generacin de aleatorios independientes, al emplear corrientes aleatorias (los RNi's) diferentes. BN indica que se
invoca al generador normal estndar.

Con este generador se pueden obtener nmeros aleatorios con distribucin normal con cualquier media y desviacin
estndar, haciendo un cambio de variable.

Si X es un nmero aleatorio normal estndar entonces Y=M+S*X es un nmero aleatorio normalmente distribuido con
media M y desviacin estndar S.

Para GPSS/h
En el GPSS/h las funciones predefinidas se pueden acceder sin necesidad de declararlas en el encabezado con un
FUNCTION. Para hacer uso del generador de aleatorios exponencialmente distribuidos se emplea la expresin
RVEXPO(j,M) en cualquier parte del programa donde se desee el nmero en cuestin. En ella j es el nmero de
corriente aleatoria que se ocupar y M es la media deseada de los aleatorios que se generen, el rango de j en algunas
versiones es de 1 a 2E+09.

La corriente aleatoria es equivalente a seleccionar el generador aleatorio uniforme de base, para producir los
aleatorios exponenciales, como en el caso del GPSS/C.

Para invocar nmeros normalmente distribuidos se cuenta con la expresin RVNORM(j,M,S) donde j es la corriente
aleatoria que se desea emplear, M es la media que se desea y S la desviacin estndar. En las versiones de GPSS/H
es importante tomar en cuenta que RVEXPO(j,M,S) genera nmeros hasta M+-45*S por lo cual eventualmente es
posible que genere nmeros negativos.

Con la expresin RVTRI(j,Min,Mod,Max) se generan aleatorios con distribucin triangular empleando la corriente
aleatoria j, con mnimo Min, moda Mod y mximo Max.
Ejemplo del uso de un generador triangular, un exponencial y un normal en un programa para GPSS/H

Instrucciones de bloque (SPLIT, ASSEMBLE, QTABLE, ASSIGN)

SPLIT
La instruccin SPLIT permite simular que una pieza o un paquete se desensambla en varios que lo componen, su
sintaxis es:

SPLIT A,B,C,D,E,F,G,H

L.I. Jos Raymundo Ceja Vzquez 14


Unidad I Software de Simulacin

Donde A es el nmero de transacciones creadas en la cascada (cuantas transacciones saldrn despus de que
alguna ingrese en el bloque SPLIT. En B se coloca la direccin del bloque al cual se dirige la cascada creada y para
los operandos subsecuentes, vase el manual de referencia correspondiente a la versin que posea ya que estn
fuera del nivel de este curso.

ASSEMBLE
La instruccin ASSEMBLE permite simular el ensamble de piezas o construccin de paquetes ya que sirve para unir
varias transacciones en una sola que represente el paquete. Su sintaxis es:

ASSEMBLE A

Donde A sirve para colocar el nmero de transacciones que constituyen el paquete.

ASSIGN
Esta instruccin de bloque reemplaza, incrementa o decrementa el contenido de los parmetros de la transaccin que
ingrese a el. Su sintaxis es:

ASSIGN A,B,C

Donde A es un operando donde se coloca el nmero del parmetro donde se colocar la informacin. Si esta seguido
de un + o un - se indica que el valor que este presente se ha de decrementar o incrementar en las unidades
especificadas en A.

El parmetro B se ocupa para colocar el valor que se emplea para reemplazar al valor actual a travs de la operacin
especificada en A.

El operando C se ocupa para colocar una funcin modificadora que altera al operando B, como se ilustra en los
siguientes ejemplos.

Ejemplos:

ASSIGN 2,7

Reemplaza el contenido actual del parmetro 2 (P2) con el valor 7.

ASSIGN 2+,4

Reemplaza el contenido en P2 sumndole al valor actual 4 unidades.

ASSIGN 3-,10,FN$EXP

Reemplaza el contenido en P3 con el resultado de restarle al valor actual de P3 la cantidad 10*FN$EXPO.

Instruccin de control RESET


La instruccin de control RESET se emplea para borrar todos los resultados estadsticos de la simulacin pero
conservando la situacin actual de las transacciones en los bloques, se emplea despus de START. Se puede
emplear para simular el precalentamiento de un sistema (warm-up).

El warm-up de un sistema es necesario cuando el sistema a simular no esta vaco al iniciar sus operaciones (que se
desean simular).

Por ejemplo: una fbrica que produce muebles guardar los muebles inconclusos despus de una jornada de trabajo
para proseguir con ellos a la jornada siguiente, por lo tanto si se esta simulando este sistema tal vez no sea adecuado
tomar estadsticas cuando el sistema inicia como vaco, por tanto, para no tomar en cuenta las estadsticas del inicio
puede usar RESET. Su sintaxis es:

L.I. Jos Raymundo Ceja Vzquez 15


Unidad I Software de Simulacin

RESET

Esta instruccin no posee operandos, se usa en conjunto con START

Instruccin de control CLEAR


Esta es una instruccin de control que borra todos los resultados estadsticos colectados a la fecha y adems borra la
situacin actual de las transacciones. Con ella es posible simular las repeticiones necesarias de un programa hasta
que se estabilice (vase el material del parcial II de este curso). Su sintaxis es:

CLEAR

Esta instruccin no posee operandos, se usa en conjunto con START de la siguiente manera:

L.I. Jos Raymundo Ceja Vzquez 16

También podría gustarte