Documentos de Académico
Documentos de Profesional
Documentos de Cultura
01 Herramientas GPSS
01 Herramientas GPSS
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.
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.
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:
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.
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:
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.
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.
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.
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:
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:
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
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.
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.
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.
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
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.
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
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.
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
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.
RELEASE A
Ejemplo
RELEASE HORNO
Indica que la transaccin libera a la unidad de servicio HORNO que ocup con anterioridad.
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
ADVANCE 15
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.
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
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.
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.
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.
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
Nota: STORAGE se codifica junto a las instrucciones de control del inicio del programa (donde usualmente se colocan
las declaraciones de variables).
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.
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).
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.
TRANSFER A,B,C,D
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.
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.
Esta instruccin enva el 33 % de las transacciones que ingresen al bloque etiquetado con DIRDOS y el 67 % restante
al etiquetado con DIRUNO.
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.
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.
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.
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.
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.
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.
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
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:
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)
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.
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.
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:
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
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:
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
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
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
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
ASSIGN 2+,4
ASSIGN 3-,10,FN$EXP
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:
RESET
CLEAR
Esta instruccin no posee operandos, se usa en conjunto con START de la siguiente manera: