Professional Documents
Culture Documents
http://www.minutemansoftware.com
GPSS - PC
GPSS es un lenguaje de Simulacin de Sistemas de Propsito General (General Purpouse System Simulation). Es un lenguaje estructurado en base a sentencias de bloque para representar los eventos del sistema y las sentencias de control para controlar la simulacin del sistema.
Sentencias de Bloque 1. Generate 2. Test 3. Queue 4. Seize 5. Depart 6. Advance 7. Release 8. Terminate
Sentencias de Bloque complementarias: 1. Savevalue 2. Enter 3. Advance 4. Leave 5. Transfer
Se inicializa con una sentencia de control: Start n Que inicializa un contador de la finalizacin de la simulacin en n, el cual es disminuido por una sentencia de bloque: Terminate 1
Sentencia GPSS
Estructura de una sentencia de declaracin GPSS/PC :
Nro. Etiqueta
Nro.
Verbo
Operandos
;Comentario
Puede ser entero o decimal. Se utilizan solo para las sentencias del programa salvable. Mximo 7 caracteres incluido pto.
Si ingresa una sentencia sin numerar esta solo es temporal. Generalmente se ingresan antes de inicializar la simulacin. Nmero o nombre para la localizacin de un bloque. Si se coloca un asterisco, la sentencia es de comentario. Nombre identificador para el control o el bloque Dependen del verbo identificador utilizado Para explicar brevemente el significado de la sentencia
Bloque : Generate
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
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 inter arrivo 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. E es un operando donde se coloca la prioridad asignada a cada transaccin creada por el GENERATE. En GPSS/PC las prioridades posibles son de 0 a 127. La prioridad mayor tiene preferencia sobre las de prioridad inferior.
Ejemplos : Generate
GENERATE 2700,200,1000,100,50 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. GENERATE 30,FN$XPDIS Crea transacciones segn una distribucin exponencial negativa con media 30 unidades de tiempo.
Bloque Terminate
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) con el que se disminuir el contador de termino de la simulacin, 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.
Ejemplos: Terminate
TERMINATE Cada transaccin que ingresa a este bloque se destruye.
TERMINATE 5 Cada vez que una transaccin ingresa a este bloque se destruye y disminuye en 5 el contador de finalizacin de la simulacin.
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 podra ocupar varias unidades de servicio simultneamente. 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 : SEIZE HORNO Registra la ocupacin de una unidad de servicio llamada HORNO.
Bloque : Release
RELEASE
Sirve para desocupar la unidad de servicio ocupada previamente por la transaccin al haber ingresado a un bloque Seize. 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.
Bloque : Advance
ADVANCE
Suspende el movimiento de una transaccin por una cantidad especifica de tiempo simulado. Puede emplearse para simular el tiempo que una persona tarda en ocupar un equipo, en una sala de espera, etc. Su sintaxis es: ADVANCE A,B Donde el operando A corresponde al tiempo de retardo para la transaccin y B es el intervalo de dispersin alrededor de A.
Ejemplos :
ADVANCE 12,4
Retarda la transaccin 12 4 unidades de tiempo simulado.
ADVANCE 15
Retarda exactamente 15 unidades de tiempo a la transaccin.
ADVANCE 5,FN$XPDIS
Retarda a la transaccin un tiempo distribuido exponencialmente con media 5 .
Bloque: Queue
QUEUE
La instruccin de bloque QUEUE se emplea para obtener estadsticas de las transacciones que pasan por una fila o cola. 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 nombre FILAB y le suma 3 unidades cada vez que una transaccin pasa por ella.
Bloque : Depart
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.
Poblacin
Tiempo entre Arribos (t)
Cola
Politica de servicio
SEIZE
Arribos
GENERATE
QUEUE
DEPART
ADVANCE TERMINATE
Tiempo de Servicio
RELEASE
SISTEMA DE COLAS
Simulacin de Sistemas
Servicio
Ejemplo 1
Elabore un programa de simulacin que represente el siguiente sistema: La operacin de un telfono que sirve para que los empleados hagan sus llamadas. El tiempo por llamada es de 3 a 7 min con probabilidad uniforme; los empleados llegan al telfono cada 10 5 min. Simule 50 llamadas efectuadas. (por ejemplo para saber si un telfono es suficiente o es necesario otro).
Bloques GPSS
Elabore un programa de simulacin que represente el siguiente sistema: La operacin de un telfono (SEIZE) que sirve para que los empleados hagan sus llamadas. El tiempo por llamada es de 3 a 7 min con probabilidad uniforme (ADVANCE); los empleados llegan al telfono cada 10 5 min (GENERATE) y si no esta libre el telfono se quedan esperando (QUEUE). Simule 50 llamadas efectuadas (START 50). (por ejemplo para saber si un telfono es suficiente o es necesario otro).
GENERATE
10,5
QUEUE
COLA
TELEFONO COLA 5,2 TELEFONO
SEIZE
DEPART
ADVANCE
DEPART ADVANCE
RELEASE TERMINATE START
COLA 300,120
TELEFON 1 50
RELEASE
TERMINATE
Bloque : Enter
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
Aqu la transaccin que ingresa solicita 2 unidades del conjunto llamado SILLAS, entidad que puede dimensionarse con una sentencia de control STORAGE.
Bloque : Leave
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. 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.
Ejemplo 2
Se desea saber cuntos puntos de cobro (casetas) de peaje se deben abrir en uno de los sentidos de una autopista, para tenerlos disponibles en caso de que la demanda aumente al doble de autos por unidad de tiempo (en promedio), puesto que se desea que el nmero de autos en espera de servicio no sea superior a 20, por el riesgo de accidente que hay en la zona. Si el tiempo inter arribo de los autos en cada carril es 20 10 sg y el tiempo de cobro por auto es de 10 5 sg, simule ocho horas de operacin para tomar una decisin.
ADVANCE
TERMINATE
LEAVE
DEPART ENTER
QUEUE
Carril 1 Carril 2
GENERATE GENERATE
LEAVE
TERMINATE
DEPART
ADVANCE
ENTER QUEUE
GENERATE
Carril 2
Carril 1
GENERATE
Simulacin de Sistemas
Carril 1 de la via
GENERATE
Carril 2 de la via
GENERATE
20,10
20,10
GENERATE
8*3600
QUEUE
FILA
QUEUE
FILA
TERMINATE
ENTER
CABINAS
ENTER
DEPART
FILA
DEPART
FILA
ADVANCE
10,5
ADVANCE
10,5
LEAVE
CABINAS
LEAVE
CABINAS
TERMINATE
TERMINATE
Bloque : Transfer
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 el bloque TRANSFER . 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.
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 al bloque se transfiere incondicionalmente al bloque etiquetado como PROXIMO.
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 Aqu el 33 % de las transacciones que ingresen se dirigen al bloque etiquetado con DIRDOS y el resto pasa al siguiente bloque.
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
Forma Condicional
Manera 1. Si en el campo A se emplea la opcin BOTH
Ejemplo: TRANSFER BOTH,INICIO,FINAL La transaccin al llegar se transfiere como primera opcin al bloque etiquetado como INICIO y como segunda opcin al etiquetado como FINAL hasta que logre el acceso.
TERMINATE
20%
SEIZE
TRANSFER
DEPART
RELEASE
GENERATE TRANSFER
ADVANCE
TERMINATE
Refrescos
QUEUE
10% 75%
ADVANCE
TRANSFER
60% 80%
SEIZE DEPART
RELEASE
Modelo GPSS
GENERATE 120,60 TRANSFER .20,,FINAL QUEUE FILA TRANSFER .25,,GALLET SEIZE MBEBIDAS DEPART FILA ADVANCE 90,30 RELEASE MBEBIDAS TERMINATE GALLET TRANSFER .40,,SOLOGALL SEIZE MBEBIDAS ADVANCE 90,30 RELEASE MBEBIDA SOLOGALL SEIZE MGALLETAS ADVANCE 90,30 RELEASE MGALLETAS DEPART FILA FINAL TERMINATE GENERATE 4*3600 TERMINATE 1 START 1 TIEMPO ENTRE LLEGADAS EN SEGUNDOS. PORCENTAJE QUE NO COMPRA FILA DE LOS QUE COMPRAN PORCENTAJE QUE ADQUIEREN GALLETAS SOLICITAN ACCESO A LAS BEBIDAS 75% SALEN DE LA FILA DE CLIENTES TIEMPO DE SERVICIO LIBERAN LA MAQUINA PORCENTAJE QUE COMPRAN SOLO GALLETAS (10% DE 25%) SOLICITAN ACCESO A LAS BEBIDAS TIEMPO DE SERVICIO LIBERAN LA MAQUINA SOLOBO SOLICITAN ACCESO A LAS BOTANAS TIEMPO DE SERVICIO LIBERAN LA MAQUINA DE BOTANAS SALEN DE LA FILA DE CLIENTES FINAL TIEMPO DE SIMULACION
Bloque: Test
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. La instruccin Test opera de dos modos:
a) Cuando las transacciones se detienen hasta que la relacin lgica se cumple, (BLOQUEO) y b) Cuando las transacciones se dirigen a un bloque alterno cuando la relacin lgica no se cumple.
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.
SNA DEFINICION
SNAs
Nj Nmero total de transacciones que entran en el bloque j WJ Nmero de transacciones esperando en el bloque j Qj Contenido actual de la fila j (alternativamente podemos utilizar Q$nombre_cola) QAj Contenido promedio de la fila j QMj Contenido mximo de la fila j QCj Nmero total de entradas en la fila j QZj Nmero total de transacciones que no hicieron la fila j QTj Tpo prom. de las transacciones en la fila j QXj Tpo prom. de las transacciones en la fila j excluyendo las que no hicieron fila. Sj Contenido actual del storage j (alternativamente podemos utilizar S$nombre_almacen) Rj Nmero de unidades restantes en el storage j SRj Porcentaje actual de empleo del storage j SAj Contenido promedio del storage j SMj Contenido mximo del storage j SCj Nmero total de entradas en el storage j STj Tpo promedio en el storage j C1 Tpo del reloj relativo controlado desde el ltimo bloque Mark AC1 Tpo de reloj absoluto (desde el inicio de la simulacin) RNj Generador de nros. aleatorios uniforme j Xj... Es la transaccin j etc,
Ejemplo 3: Restaurant
Simule la operacin del establecimiento por 8 horas y determine el tamao de los componentes de acuerdo a los resultados. Tome en cuenta que de las 13:00 a las 15:00 llegan exactamente tres personas ms por unidad de tiempo y que el comedor abre a la 11:00. Los clientes llegan a partir de las 11:00 de manera independiente con un tiempo entre llegadas distribuido con probabilidad uniforme entre 60 y 30 segundos. El tiempo de cobro en la caja es aleatorio e uniformemente distribuido entre 90 y 50 segundos. Suponga que la comida se sirve slo en la parte inicial de la barra, tomando un tiempo de 40 20 segundos. Despus slo se recorre la barra hasta llegar a la caja para realizar su pago. Suponga que las personas permanecen comiendo durante 18 5 min y despus se retiran. Se desea una cola menor a 5 personas detrs del punto inicial de la barra en espera de atencin (zona de servicio comida). Con base en los resultados de su programa diga cuantos lugares (asientos) debe tener el comedor (considere que un comensal puede sentarse en cualquier mesa siempre que exista un lugar libre en ella) y diga el tamao de la barra que necesita (para cuantas personas).
Caja
Area de Mesas
Barra
Servicio comida
Entrada
GENERATE
60,30 AC1,7200,OTRO
a
SEIZE
b
CAJA
ADVANCE
TEST
18,5
C
VAN
QUEUE
OTRO COLA
TEST
G AC1,14400,FIN
ADVANCE
90,50
LEAVE
ENTER
BARRA
CAJA
TERMINATE
DEPART
COLA
,VAN
TRANSFER
QUEUE
COLAMESA MESAS
C
ENTER
ADVANCE
14,20
DEPART
COLAMESA
LEAVE
BARRA
b a
GENERATE
15,7.5,7200
TEST
GE
AC1,7200,SALIR
TEST
LE
AC1,14400,SALIR
SALIR TERMINATE
TRANSFER
,VAN
GENERATE 30,15 TRANSFER .52,ESPUNO,ESPDOS ESPUNO TEST L Q$ESPA,5,AYUDB NOAYB QUEUE ESPA SEIZE ESPECIA DEPART ESPA ADVANCE 20,10 RELEASE ESPECIA TERMINATE 1 ESPDOS TEST L Q$ESPB,5,AYUDA NOAYA QUEUE ESPB SEIZE ESPECIB DEPART ESPB ADVANCE 20,10 RELEASE ESPECIB TERMINATE 1 AYUDA TEST E Q$ESPA,0,NOAYA QUEUE ESPA SEIZE ESPECIA DEPART ESPA ADVANCE 30,5 RELEASE ESPECIA TERMINATE 1 AYUDB TEST E Q$ESPB,0,NOAYB QUEUE ESPB SEIZE ESPECIB DEPART ESPB ADVANCE 30,5 RELEASE ESPECIB TERMINATE 1 START 100
SE GENERAN LAS QUEJAS (MIN) SE DISTRIBUYEN LOS CASOS 48% PARA UN ESP. SI LA FILA ES DE 5 LA SIG. SE TURNA AL OTR. ESP. SE FORMAN PARA VER EL ESP. A. SOLICITAN ATENCION DEL ESP. A SALEN DE LA FILA LOS ATIENDE EN 20 10 MIN. SE DESOCUPA EL ESPECIALISTA A SI LA FILA ES DE 5 LA SIG. SE TURNA AL OTR. ESP. SE FORMAN PARA VER AL ESP. B SOLICITAN ATENCION DEL ESP. B SALEN DE LA FILA LOS ATIENDE EN 20 10 MIN. SE DESOCUPA EL ESPECIALISTA B SI EL ESP. NO TIENE QUEJAS ESPERANDO SE FORMAN EN SU FILA SOLICITAN SU ATENCION SE DESFORMAN TIEMPO POR QUEJA (AYUDA) SE DESOCUPA EL ESPECIALISTA A SI EL ESP. NO TIENE QUEJAS ESPERANDO PASAN POR SU FILA SOLICITAN SU ATENCION SALEN DE SU FILA TIEMPO DE ATENCION POR QUEJA (AYUDA) SE DESOCUPA EL ESPECIALISTA B SE SIMULAN 100 QUEJAS ATENDIDAS.
Modelo GPSS
Bloque : Gate
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 (recurso especificado en A no esta en uso) U (recurso especificado en A esta en uso) SF (storage especificado en A esta lleno) SNF (storage especificado en A esta no lleno) SNE (storage especificado en A esta no vacio) SE (storage especificado en A esta vacio). El operando A se emplea para colocar el nombre de la entidad que se inspecciona y en el B se coloca la etiqueta del bloque alterno en caso de no cumplirse la 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.
GENERATE 30,15 TRANSFER .52,ESPUNO,ESPDOS ESPUNO TEST L Q$ESPA,5,AYUDB NOAYB QUEUE ESPA SEIZE ESPECIA DEPART ESPA ADVANCE 20,10 RELEASE ESPECIA TERMINATE 1 ESPDOS TEST L Q$ESPB,5,AYUDA NOAYA QUEUE ESPB SEIZE ESPECIB DEPART ESPB ADVANCE 20,10 RELEASE ESPECIB TERMINATE 1 AYUDA GATE NU ESPECIA,NOAYA QUEUE ESPA SEIZE ESPECIA DEPART ESPA ADVANCE 30,5 RELEASE ESPECIA TERMINATE 1 AYUDB GATE NU ESPECB,NOAYB QUEUE ESPB SEIZE ESPECIB DEPART ESPB ADVANCE 30,5 RELEASE ESPECIB TERMINATE 1 START 100
SE GENERAN LAS QUEJAS (MIN) SE DISTRIBUYEN LOS CASOS 48% PARA UN ESP. SI LA FILA ES DE 5 LA SIG. SE TURNA AL OTR. ESP. SE FORMAN PARA VER EL ESP. A. SOLICITAN ATENCION DEL ESP. A SALEN DE LA FILA LOS ATIENDE EN 20 10 MIN. SE DESOCUPA EL ESPECIALISTA A SI LA FILA ES DE 5 LA SIG. SE TURNA AL OTR. ESP. SE FORMAN PARA VER AL ESP. B SOLICITAN ATENCION DEL ESP. B SALEN DE LA FILA LOS ATIENDE EN 20 10 MIN. SE DESOCUPA EL ESPECIALISTA B SI EL ESP. NO TIENE QUEJAS ESPERANDO SE FORMAN EN SU FILA SOLICITAN SU ATENCION SE DESFORMAN TIEMPO POR QUEJA (AYUDA) SE DESOCUPA EL ESPECIALISTA A SI EL ESP. NO TIENE QUEJAS ESPERANDO PASAN POR SU FILA SOLICITAN SU ATENCION SALEN DE SU FILA TIEMPO DE ATENCION POR QUEJA (AYUDA) SE DESOCUPA EL ESPECIALISTA B SE SIMULAN 100 QUEJAS ATENDIDAS.
Modelo GPSS
CONTRES EXTRAS
NORMAL
EXTRA
DOSEX DEXTRA
STORAGE 3 STORAGE 1 GENERATE 5,2 EN MINUTOS QUEUE FILA TEST L QT$FILA,15,OTRO ENTER CONTRES ADVANCE 10,8 LEAVE CONTRES DEPART FILA TERMINATE OTRO GATE UN UNOMAS,DOSEX TRANSFER BOTH,NORMAL,EXTRA SEIZE UNOMAS ADVANCE 10,8 RELEASE UNOMAS DEPART FILA TERMINATE TRANSFER BOTH,NORMAL,DEXTRA ENTER EXTRAS ADVANCE 10,8 LEAVE EXTRAS DEPART FILA TERMINATE GENERATE 8*60 TERMINATE 1 START 1
Modelo GPSS
Function
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.
Funcin Continua ( C )
Output FUNCTION
1.1,10.1/20.5,98.7/33.3,889.2
V$Input,C3
Xpdis
FUNCTION RN200,C24
Funcin Discreta ( D )
DIista
Ran1
FUNCTION
FUNCTION
X$A2,D5
RN1,D5
1.1,6.9/2.1,7/6.33,9.4/7,10/9.9,12.01
0,0/.2,7.2/.4,6.667/.8,9.92/1.0,10
Funcin Lista ( L )
Lista
Cantidad
1,10/2,15/3,25/4,50
FUNCTION
FUNCTION
Q$Barbero,L5
P$tipo,L4
1,PAR1/2,PAR2/3,PAR3/4,PAR4/5,PAR5
1,S$Stor1/3,S$Stor2/5,S$Stor3/9,S$Stor5/10,S$Stor6
Ejemplo 6 :
HORNOS STORAGE 2 Unidad de recursos multiple de tamao 2 PINTORS STORAGE 2 Se declaran 2 pintores iguales PINUNO FUNCTION RN1,D4 TIEMPO DE PINTURA PARA EL PINTOR 1 .1,70/.5,50/.8,60/1.0,65 PINTOS FUNCTION RN2,BN TIEMPO DE PINTURA PARA LOS PINTORES 2 Y 3 EXPON FUNCTION RN3, BE FUNCION EXPONENCIAL GENERATE FN$EXPON*30,,540,150 GENERACION DE LLEGADAS POISS. AUTOS (MIN) * * EMPIEZAN LAS LLEGADAS A LAS 9 HRS Y ES UN TOTAL DE 150 AUTOS. **** QUEUE FILAAP SE FORMA UN AUTO PARA PINTURA TRANSFER BOTH,DIRPINU,DIRPIND SE LOCALIZA EL PINTOR DESOCUPADO DIRPINU SEIZE PINTORU SE OCUPA AL PINTOR UNO DEPART FILAAP ADVANCE FN$PINUNO TIEMPO DE PINTADO RELEASE PINTORU TERMINA DE PINTAR Y SE DESOCUPA QUEUE FILAHOR FORMA EL AUTO PARA ENTRAR AL HORNO ENTER HORNOS SE SOLICITA ACCESO AL HORNO DEPART FILAHOR ADVANCE 30,5 SE HORNEA LEAVE HORNOS SE LIBERA EL HORNO QUEUE FILAINS SE FORMA PARA INSPECCION SEIZE INSPECC PASA AL PUESTO DE INSPECCION DEPART FILAINS LIBERA LA FILA DE INSP. ADVANCE 7,2 LO INSPECCIONAN RELEASE INSPECC LIBERA EL PUESTO DE INSP. TRANSFER .01,,REPIN SE MANDA A REPINTADO QUEUE FILAFIN FILA DE AUTOS TERMINADOS TERMINATE SE TERMINA UN AUTO
Modelo GPSS
DIRPIND
REPIN
ENTER PINTORS DEPART FILAAP ADVANCE FN$PINTOS*10+60 LEAVE PINTORS QUEUE FILAHOR ENTER HORNOS DEPART FILAHOR ADVANCE 30,5 LEAVE HORNOS QUEUE FILAINS SEIZE INSPECC DEPART FILAINS ADVANCE 7,2 RELEASE INSPECC TRANSFER .01,,REPIN QUEUE FILAFIN TERMINATE PRIORITY 1 QUEUE FILAAP TRANSFER BOTH,DIRPINU,DIRPIND TERMINATE 0 GENERATE 1080 TERMINATE 1 START 1
SE OCUPA UNO DE LOS DOS PINTORES SEMEJANTES SE LIBERA UN LUGAR DE LA FILA POR PINTAR TIEMPO DE PINTURA SE LIBERA UN PINTOR SE FORMA UN AUTO EN LA FILA PARA HORNEADO SOL. ACC AL HORNO SE REDUCEN LOS AUTOS POR PINTAR SE HORNEA EL AUTO LIBERA EL HORNO PASA A INSPECCION
SPLIT
Bloque : 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. Nota : Para los operandos subsecuentes vase el manual de referencia
correspondiente a la versin que posea ya que estn fuera del nivel de este curso.
Bloque: Assemble
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.
Bloque: Assign
ASSIGN
Esta instruccin de bloque reemplaza, aumenta o disminuye 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 aumentar o disminuir 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
Bloque : Savevalue
SAVEVALUE
Este bloque define una locacin de registro, y permite actualizar, adicionar o sustraer el valor de una variable de almacenamiento. Su sintaxis es : SAVEVALUE A,B
Donde A. Nombre o nmero del SAVEVALUE. Puede ser seguido por un signo ms (+) o un signo menos (-) para indicar adicin o sustraccin del valor existente. El operando puede ser un nombre, un entero positivo o un SNA. Obligatorio. B. El valor a ser almacenado adicionado o sustrado. El operando puede ser un nombre, un entero o un SNA. Obligatorio. Ejemplo: SAVEVALUE CAJA_FINAL,CAJA Cuando una transaccin ingresa a este bloque el valor de la variable de almacenamiento CAJA es grabado en la variable CAJA_FINAL
Ejemplo de EQU
Precio EQU 19.5
Esta sentencia define el nombre PRECIO y le asigna el valor de 19.5. Cualquier referencia futura del nombre valuado usar el valor de 19.5.
Ejemplos de INITIAL
INITIAL X$InvInicial,25
Esta sentencia asigna el valor inicial de 25 a la variable global InvInicial del tipo Savevalue.
INITIAL Resultados
Esta sentencia prepara una entidad Matrix previamente definida y denominada Resultados para usar en una simulacin a partir de una matriz sin datos.
Bloque TABULATE
TABULATE
Permite organizar una coleccin de datos dentro de una entidad TABLE. TABULATE A,B
El operando A es el nombre o nmero de la entidad tabla. Es obligatorio. El operando B es el factor de ponderacin para los datos a tabular. Es opcional.
Ej:
TABULATE
Ventas
Cuando una transaccin ingresa a este bloque se ubica la entidad tabla denominada Ventas, especificada en una sentencia de control y tabula los datos segn esta sentencia.
Ejemplo de TABLE
Ventas Table X$ventas,10,10,5
Define una entidad tabla que tabula los valores de la variable global tipo savevalue denominada ventas en una tabla como la siguiente:
ventas 10 20 30 40 50
1*************** Modelo utilizando parametrizacion *************** 2 TIPOS FUNCTION RN5,D5 0.25,1/0.40,2/0.65,3/0.90,4/1.0,5 3 TPO_TIPO FUNCTION P$TIPO,L5 1,10/2,15/3,30/4,45/5,60 4 COLA4 TABLE Q4,2,2,5 5***************************************************************** 10 GENERATE 10,5 12 ASSIGN TIPO,FN$TIPOS 13 TEST LE Q3,2,SALIR 14 QUEUE P$TIPO 16 SEIZE P$TIPO 18 DEPART P$TIPO 20 ADVANCE FN$TPO_TIPO 22 RELEASE P$TIPO 24 TABULATE COLA4 25 TERMINATE 1 26 SALIR TERMINATE
GPSS World Simulation Report - MOD_PARAM.4.1 Friday, April 29, 2005 21:00:48 START TIME END TIME 0.000 1138.502
LABEL LOC 1 2 3 4 5 6 7 8 9 10 11 BLOCK TYPE GENERATE ASSIGN TEST QUEUE SEIZE DEPART ADVANCE RELEASE TABULATE TERMINATE TERMINATE
SALIR
FACILITY 1 2 3 4 5
ENTRIES 28 13 27 26 9
UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY 0.237 9.646 1 114 0 0 0 0 0.171 15.000 1 0 0 0 0 0 0.711 30.000 1 0 0 0 0 0 0.988 43.269 1 96 0 0 0 10 0.438 55.470 1 112 0 0 0 1
QUEUE 1 2 3 4 5
MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME 1 0 28 23 0.014 0.549 1 0 13 11 0.014 1.206 3 0 27 6 0.529 22.326 11 11 36 2 3.233 102.239 1 1 10 6 0.060 6.831
TABLE COLA4
MEAN 3.170
RETRY 0
FREQUENCY 32 51 10 5 2
Ejemplo de Matriz
Produccion Matrix ,3,2
Define una entidad matriz de nombre Produccin, de 3 filas y 2 columnas.
Maq1: 1 Maq2: 2
ProdA: 1
ProdB: 2
ProdC: 3
Los elementos de una matriz se registran, incrementan o sustraen mediante un bloque MSavevalue.
MSAVEVALUE
Bloque MSAVEVALUE
Este bloque permite actualizar un elemento de una entidad matriz. MSAVEVALUE A,B,C,D
El operando A es el nombre o nmero de la entidad matriz. Puede opcionalmente ir acompaado de un signo + o -. Es requerido. El operando B es el nmero de fila. Requerido. El operando C es el nmero de columna. Requerido. El operando D es el valor a ser almacenado, adicionado o sustrado. Requerido
Ejemplo de MSAVEVALUE
Msavevalue Ventas+,parte_7,cliente_4,6.25
Cuando una transaccin ingresa a este bloque el elemento de la matriz denominada Ventas, ubicado en la fila parte_7 y columna cliente_4 es incrementada en 6.25.
Bloque LOGIC
LOGIC
Este bloque cambia el estado de una entidad switch lgico (semforo). LOGIC O A
El operando O es el operador lgico que puede ser S (set), R (reset) o I (invertir). El operando A es el nombre o nmero de la entidad switch lgico.
Bloque MARK
Este bloque estampa el tiempo de reloj absoluto dentro de la transaccin activa o dentro de un parmetro. MARK A
MARK
El operando A es el nmero o nombre del parmetro que recibir el valor del tiempo del reloj del sistema. El tiempo colocado por un bloque Mark puede ser recuperado por M1, el cual retorna el tiempo de trnsito como la diferencia entre el tiempo de reloj absoluto y el tiempo registrado por el bloque Mark.
Ej. Mark P2
Cuando una transaccin ingresa a este bloque en el parmetro denominado 2 de la transaccin se estampa el tiempo de reloj del sistema AC1.
Ej. Mark
Cuando una transaccin ingresa a este bloque se le estampa el tiempo de reloj absoluto del sistema AC1.
y todo lo dems