Anda di halaman 1dari 10

75.

26 Simulacin
Funciones, vairables, parmetros y savevalues

FUNCIONES y VARIABLES
PARAMETROS y SAVEVALUES
Utilizando el lenguaje GPSS
VARIABLES
Cuando es necesario realizar un clculo se define una variable
(expresin aritmtica que devuelve un valor).
Es decir, en GPSS, una variable devuelve un valor cada vez que se la
invoca. A diferencia de otros lenguajes, no es posible asignar valor a una
variable, ya que esta define una expresin aritmtica, la cual se evala cada
vez que una transaccin hace referencia a la variable as definida.
SINTAXIS DEL BLOQUE VARIABLE
La sintaxis de este bloque es la siguiente:
nombr VARIABLE operandos y operadores
numer VARIABLE operandos y operadores
nombr : es el nombre de la variable
numer : es el nmero de la variable (Slo en main frames)
operadores: # para multiplicar (* en main frames)
/ para dividir
@ para obtener el resto de la divisin
+ para sumar
- para restar
^ para colocar el exponente (slo para PC)
operandos: cualquier atributo numrico estandar (SNA).
El bloque VARIABLE (lo mismo que el bloque FUNCTION que veremos
despus), puede definirse en cualquier parte del modelo (similar a los bloques
TABLE, QTABLE, STORAGE que son definiciones que el GPSS toma antes
de comenzar la simulacin).
En las VARIABLE se truncan los decimales de los clculos intermedios
y del resultado final. Si en lugar de definir una VARIABLE se define una
FVARIABLE, los clculos intermedios se realizan con decimales; el resultado
final se trunca.
Series de nmeros al azar (RN11, RN2, RN3, ..., RN7,
RN8,RN92,...,RN1000,...):

RN1 lo utiliza internamente el GPSS para generar su propio azar (para no sufrir la mutua interferencia
es aconsejable no utilizar la RN1 en las propias definiciones).
2
En main frame se puede definir slo hasta la octava serie de nmeros al azar (RN8)
1

pgina 1/10

75.26 Simulacin
Funciones, variables, parmetros y savevalues

Existen series independientes de nmeros al azar que el sistema ofrece


al usuario. Basta con hacer referencia a RN3, por ejemplo, y el GPSS entrega
un nmero al azar x de la tercera serie de nmeros al azar: 0 x 999.
Fcilmente es posible aumentar el rango de definicin mediante el uso
de una variable:
AZAR VARIABLE 1000#RN3+RN3
En este caso V$AZAR entregar nmeros x al azar tal que:
0 x 999999
Teniendo definida la variable AZAR (se la invoca con V$AZAR) es
posible simular la generacin de nmeros al azar dentro de cualquier rango,
con una distribucin aproximadamente uniforme dentro del mismo.
Para simular una ruleta (nmeros al azar entre 0 y 36):
RULA VARIABLE V$AZAR@37

(obtiene el resto de la divisin por

37)
Para simular un dado (nmeros al azar entre 1 y 6):
DADO VARIABLE 1+V$AZAR@6
Para generar un nmero al azar entre 11 y 18:
NUME VARIABLE 11+V$AZAR@8
Recordar que el azar de computadora es pseudoazar, ya que el mtodo
de obtencin es algortmico (conociendo el algoritmo se puede predecir la serie
completa). Si se quiere cambiar la semilla de generacin de las series RN1
a RN8 se debe utilizar el bloque RMULT. No es posible cambiar la semilla
de generacin de las serie RN9 en adelante.

FUNCIONES
Muchos de los datos que se manejan en los sistemas reales son
empricos. No se tiene una expresin analtica. Se tienen las coordenadas X,Y
producto de las mediciones con los cuales se define una funcin (FUNCTION).
La funcin devuelve un valor cada vez que se la invoca. Basndose en
el valor que tiene la variable independiente; la funcin obtiene un valor como
resultado de la interpolacin correspondiente que entrega a la transaccin que
invoc a la funcin. Dicho valor se trunca, excepto cuando se utiliza en un
GENERATE o en un ADVANCE como segundo operando (operando B). En
este caso el truncamiento se realiza luego de haber multiplicado el valor de la
funcin por el operando A del bloque.
SINTAXIS DEL BLOQUE FUNCTION
La sintaxis de este bloque es la siguiente:

pgina 2/10

75.26 Simulacin
Funciones, vairables, parmetros y savevalues

nombr FUNCTION A,B


numer FUNCTION A,B
nombr:
numer:
A
:
B
:

es el nombre de la funcin
es el nmero de la funcin (Slo en main frames)
es la variable independiente: cualquier SNA.
es el tipo de funcin y el nmero de puntos.

Se escribe el bloque FUNCTION y luego los pares de X,Y definidos por B. Los
pares de valores se separan mediante una barra (/). X se separa de Y por una
coma (,).
Como ejemplo, se define la funcin VEHIC, discreta, de 4 puntos:
VEHIC FUNCTION RN6,D4
Devuelve el tipo de vehculo, suponiendo
que:
.2,1/.5,2/.9,3/1,4
vehic tipo 1=20%; vehic tipo 2=30%;
vehic tipo 3=40%; vehic tipo 4=10%
Si la variable independiente de una funcin es cualquiera de las
series de nmeros al azar (RN1 a RNn3), cada vez que se invoca a la funcin
el GPSS genera un nmero al azar x, tal que 0 x < 1, con una precisin de
partes por milln que ingresa como valor de interpolacin en la funcin.
Con la probabilidad acumulada de una distribucin (tal como la
usada en el ejemplo de la pgina anterior para generar el tipo de vehculo) y
utilizando como variable independiente a cualquiera de las series de nmeros
al azar provistos por el lenguaje, es posible generar cualquier tipo de
distribucin.
Teniendo la distribucin para valor medio igual a uno, se puede
hacer que la duracin de una tarea o los tiempos entre arribos de
transacciones tengan esa distribucin. Basta con poner dicha funcin
como operando B del ADVANCE o del GENERATE respectivo. El valor
medio de la tarea o de tiempo entre arribos se coloca como operando A
(recordar que el sistema multiplicar el valor de la funcin por este valor A; al
estar definida la funcin para valor medio igual a uno y al multiplicarse todos los
valores por A, el valor medio de dichos valores ser A, salvo el problema del
truncamiento que afecta los resultados).
TIPOS DE FUNCION
C: Continua. Al momento de la evaluacin se realiza una interpolacin lineal
entre los puntos definidos que estn a uno y otro lado del valor x
de la variable independiente. Si x est entre x i y xi+1 se interpola
linealmente entre yi e yi+1.
D: Discreta. Al momento de la evaluacin si x est entre x i y xi+1 devuelve el
valor yi+1 (toma "el valor de la derecha").
E: Discreta de atributos numricos. Igual que en el tipo D devuelve tambin
el valor yi+1 para x entre xi y xi+1; con la diferencia que las
ordenadas que se definen en este tipo de funcin son atributos
3

Recordar que en main frame n vale 8 como mximo. En PC prcticamente no tiene lmite.
pgina 3/10

75.26 Simulacin
Funciones, variables, parmetros y savevalues

numricos estandar. No son un valor sino que son una referencia


a un SNA que tiene un valor.

Ejemplos
Para simular una ruleta (nmeros al azar entre 0 y 36):
RULA FUNCTION RN2,C2
0,0/1,37

(RN2 nunca alcanza el valor 1, por


lo que nunca puede salir el 37)

Para simular un dado (nmeros al azar entre 1 y 6):


DADO FUNCTION RN2,C2 Mnimo valor es 1; Mximo valor es 6.999...
0,1/1,7
Recordar que trunca los decimales
Ambas funciones son continuas. El sistema interpola linealmente entre
los dos puntos definidos, entregando un valor entero (trunca los decimales).
Un hecho comn es tener arribos de transacciones en forma
totalmente al azar ("random"). El arribo puede ocurrir en cualquier momento;
la probabilidad de arribo aumenta con el tiempo. Es decir la probabilidad p de
un arribo se define:
p = valor medio x t
Se demuestra que la distribucin es exponencial:
f(t)=valor medio . e -valor medio.t

pgina 4/10

75.26 Simulacin
Funciones, vairables, parmetros y savevalues

La probabilidad acumulada y=F(t) se obtiene integrando la funcin f(t)


entre 0 y t.
y=1-e-valor medio.t
-valor medio . t = ln(1-y)
Para valor medio igual a uno:
t = -ln(1-y)
Se puede definir la funcin POISS basndose en lo anterior:
POISS FUNCTION RN4,C24
0.0,0.0/0.1,0.104/0.2,0.222/0.3,0.355/0.4,0.509/0.5,0.69
0.6,0.915/0.7,1.2/0.75,1.38/0.8,1.6/0.84,1.83/0.88,2.12
0.9,2.3/0.92,2.52/0.94,2.81/0.95,2.99/0.96,3.2/0.97,3.5
0.98,3.9/0.99,4.6/0.995,5.3/0.998,6.2/0.999,7.0/0.9997,8.0
Si se quiere generar arribos de personas con un valor medio igual a 60 y
distribucin exponencial, basta con representar este arribo con el bloque:
GENERATE 60,FN$POISS
Si se quiere bifurcar

en un
en un
en un
en un

20%
30%
40%
10%

al rtulo CAJA
al rtulo BAR
al rtulo INF
al rtulo CHAU

se define la funcin UNO, con la probabilidad acumulada:


UNO FUNCTION RN2,D4
.2,CAJA/.5,BAR/.9,INF/1,CHAU
y se representa la bifurcacin a las cuatro opciones propuestas:
TRANSFER ,FN$UNO
En un sistema en dnde se comienza a simular partir de las 8 de la
maana, si se quiere simular que:
hasta las 10 de la maana bifurca el 50% al rtulo BAR
entre las 10 y las 12 hrs bifurca el 70% al rtulo BAR
a partir de las 12 horas bifurca el 100% al rtulo BAR
BIF FUNCTION AC1,D3

se supone que la unidad de tiempo

es
7200,500/14400,700/28800,1000

el segundo; AC1 es el reloj (cero al


comenzar la simulacin;
vuelve a cero con CLEAR).

Para representar la bifurcacin propuesta, se debe colocar:


TRANSFER FN$BIF,,BAR (en PC)
TRANSFER .FN$BIF,,BAR (en "main frame")

pgina 5/10

75.26 Simulacin
Funciones, variables, parmetros y savevalues

Parmetros y Savevalues
Los atributos de las entidades de un sistema pueden variar a lo largo de
una simulacin. Por ejemplo, la cantidad de cajas habilitadas en un lugar de
atencin al pblico la cola que elige cada persona a la salida de un
supermercado.
En GPSS existen casilleros de memoria donde se pueden almacenar
estos valores. Existen dos tipos bien diferenciados:
- Pertenecientes a las transacciones (parmetros): cada transaccin
tiene sus casilleros de memoria que le son propios (Al nacer la
transaccin se inicializan en cero; al morir son destruidos, liberndose la
memoria utilizada). Son como "bolsillos" de la transaccin; cada
transaccin tiene acceso a sus propios parmetros. En "main frame" la
cantidad de parmetros que tiene una transaccin es fija y es igual a 12
(aunque se puede modificar utilizando el sexto operando del
GENERATE). En PC arma una lista con el nombre/nmero de cada
parmetro utilizado.
- Comunes al sistema (Savevalues): Es como un vector con casilleros de
carcter pblico a los que todas las transacciones tienen acceso. Son
como carteles con valores numricos que todas las transacciones tienen
a su alcance. Se inicializan en cero antes de comenzar la simulacin
(salvo indicacin en contrario en el bloque INITIAL).
Parmetros, asignacin de valores:
Mediante el bloque ASSIGN se modifica el valor de los parmetros.
SINTAXIS DEL BLOQUE ASSIGN
La sintaxis de este bloque es la siguiente:
ASSIGN
ASSIGN
ASSIGN

A,B
A+,B
A-,B

A: es el nmero del parmetro a asignar; sumar; restar


B: valor a asignar; sumar; restar del parmetro A.
NOTA: En PC, el operando A puede ser un nombre.

Ejemplos
ASSIGN
ASSIGN
ASSIGN
ASSIGN

1,10
significa P1=10
2+,5
significa P2=P2+5
3-,2
significa P3=P3-2
SUEL+,100 significa P$SUEL=P$SUEL+100 (en PC)

pgina 6/10

75.26 Simulacin
Funciones, vairables, parmetros y savevalues

Mediante el bloque SELECT es posible asignar a un parmetro el nmero de


recurso seleccionado:
SELECT NU A,B,C,,,F (selecciona la Facility no usada)
SELECT MIN A,B,C,,E (selecciona el recurso de valor mnimo)
A: Es el nmero de parmetro que recibe lo seleccionado
B: Nmero de recurso desde se comienza la seleccin
C: Nmero de recurso donde finaliza la seleccin
E: Qu es lo que se est seleccionando?
F: Rtulo al que bifurca si no pudo seleccionar ninguno
NOTA: NU, significa "not used". Slo se aplica para FACILITIES.
MIN, significa mnimo y siempre existe un mnimo.
Por tanto, NU no lleva operando E (se sabe que es FACILITY); MIN no
lleva operando F (siempre existe un mnimo por lo que no tiene sentido el rtulo
alternativo) .

Ejemplos
SELECT NU 1,11,18,,,OCUP
Intenta seleccionar entre las Facilities 11 a 18 la Facility no utilizada; en caso
de estar todas en uso, bifurca al rtulo OCUP.
Si la seleccin fue exitosa el parmetro 1 recibe el nmero de FACILITY
seleccionado. La seleccin comienza en la Facility 11 y finaliza al encontrar una
Facility que no est en uso al llegar a la Facility 18.
SELECT MIN 1,11,18,,Q
Selecciona la cola mnima entre las colas 11 a 18. En caso de igualdad se
queda con el nmero de cola menor (similar al ejemplo anterior). El parmetro
1 recibe un nmero de cola, para este caso un nmero entre 11 y 18 inclusive.
Direccionamiento indirecto:
Mediante el uso de parmetros es posible hacer referencia a un recurso cuyo
nmero es el nmero de parmetro.
Si se quiere simular que al salir de un supermercado donde hay ocho cajas
habilitadas (representadas por las FACILITIES 11 a 18) el cliente busca si hay
alguna caja desocupada y se ubica en ella, o en caso de estar todas ocupadas
selecciona la de cola mnima para hacer lo propio:

SELECT NU 1,11,18,,,OCUP
TRANSFER ,CAJA
OCUP
SELECT MIN 1,11,18,,Q
CAJA
QUEUE
*1
SEIZE
*1
DEPART
*1
ADVANCE 60,30

Es interesante observar que


este nico conjunto de
bloques representa
ocho caminos distintos,
los que simultneamente se

pgina 7/10

75.26 Simulacin
Funciones, variables, parmetros y savevalues

RELEASE

*1

representan aqu

El direccionamiento indirecto permite tambin seleccionar una funcin o


variable cuyo nmero es el valor de un parmetro, tal como puede verse en el
siguiente ejemplo:

COBRANZAS DE SERVICIOS
A un banco destinado a la cobranza de servicios, arriban personas
cada 15 5 seg, las cuales pertenecen a cuatro tipos distintos de clientes,
segn la tabla siguiente:
Tipo probabilidad
------ ---------------01
40%
02
25%
03
15%
04
20%
------ ----------------

Tiempo en pagar el servicio


------------------------------------90 30 seg.
60 30 seg.
45 15 seg.
120 60 seg.
-------------------------------------

Para efectuar el pago hay seis cajas con una cola por caja. El cliente
selecciona la caja desocupada o la que tiene menor cola, demorando un tiempo
que es funcin del tipo de cliente. Terminada la operacin los clientes se retiran
del banco.
Simular durante el horario bancario de 10 a 15 hs.
Modelo en GPSS:
10 UNO
EQU
20 DOZ
EQU
30 TRES
EQU
40 CUATRO
EQU
50 UNO
FUNCTION
cliente
.40,1/.65,2/.80,3/1,4
60 AZAR
VARIABLE
70 UNO
VARIABLE
80 DOZ
VARIABLE
90 TRES
VARIABLE
100 CUATRO VARIABLE
110
GENERATE
120
ASSIGN
130
SELECT NU
desocupado
140
TRANSFER
150 OCUP
SELECT MIN
160 PAG
QUEUE
cola
170
SEIZE
elegido
180
DEPART

1
2
3
4
RN3,D4

;equivalencia entre
;los nmeros en
;castellano y su
;valor numrico
;prob. acum. tipo

RN4#1000+RN4
60+V$AZAR@61
30+V$AZAR@61
30+V$AZAR@31
60+V$AZAR@121
15,5
1,FN1
2,1,6,,,OCUP

;0<=azar<=999999
;90 30
;60 30
;45 15
;120 60
;llegada de clientes
;P1=tipo de cliente
;P2=cajero

,PAG
2,1,6,,Q
*2

;P2=cola mnima
;se ubican en la

*2

;toman al cajero

*2

;dejan la cola

pgina 8/10

75.26 Simulacin
Funciones, vairables, parmetros y savevalues

190
variable
200
210
220
230

ADVANCE

V*1

;c/tipo usa su

RELEASE
TERMINATE
GENERATE
TERMINATE

*2

;liberan al cajero
;se van del sistema
;reloj
;es un minutero

60
1

Resultados obtenidos:
START_TIME
0
LINE
110
120
130
140
150
160
170
180
190
200
210
220
230
FACILITY
1
2
3
4
5
6
QUEUE
1
2
3
4
5
6

LOC
1
2
3
4
OCUP
PAG
7
8
9
10
11
12
13
ENTRIES
205
215
210
199
183
176
MAX
2
2
1
1
1
1

END_TIME
18000

BLOCKS
13

BLOCK_TYPE
GENERATE
ASSIGN
SELECT
TRANSFER
SELECT
QUEUE
SEIZE
DEPART
ADVANCE
RELEASE
TERMINATE
GENERATE
TERMINATE
UTIL.
0.989
0.973
0.940
0.893
0.859
0.832

FACILITIES
6

STORAGES
0

ENTRY_COUNT
1190
1190
1190
651
539
1190
1188
1188
1188
1183
1183
300
300

AVE._TIME AVAILABLE
86.85
1
81.50
1
80.59
1
80.82
1
84.52
1
85.16
1

FREE_MEMORY
308768

CURRENT_COUNT
0
0
0
0
0
2
0
0
5
0
0
0
0

RETRY
0
0
0
0
0
0
0
0
0
0
0
0
0

OWNER PEND INTER RETRY DELAY


1488
0
0
0
1
1485
0
0
0
1
1483
0
0
0
0
1484
0
0
0
0
1481
0
0
0
0
0
0
0
0
0

CONT. ENTRIES ENTRIES(0) AVE.CONT. AVE.TIME


1
206
23
0.70
61.26
1
216
56
0.51
42.45
0
210
109
0.26
22.28
0
199
148
0.15
13.79
0
183
157
0.08
8.25
0
176
161
0.04
4.15

AVE.(-0) RETRY
68.96
0
57.31
0
46.32
0
53.82
0
58.04
0
48.67
0

Otro modelo en GPSS (representa al mismo sistema de otra


manera):
10 MEDIA
FUNCTION
1,90/2,60/3,45/4,120
20 DESVIO
FUNCTION
1,30/2,30/3,15/4,60
30 DESVIO
VARIABLE
ADVANCE
50 UNO
FUNCTION
tipo
.40,1/.65,2/.80,3/1,4
110
GENERATE
clientes
120
ASSIGN
130
SELECT NU
140
TRANSFER
150 OCUP
SELECT MIN
160 PAG
QUEUE
cola
170
SEIZE
180
DEPART
190
ADVANCE
200
RELEASE

P1,D4

;valor medio pago

P1,D4

;desvo mximo pago

FN$DESVIO

;operando B del

RN5,D4

;probab. acumulada

15,5

;llegada de

1,FN$UNO
2,1,6,,,OCUP
,PAG
2,1,6,,Q
*2

;P2=camino elegido
;P2=cola minima
;se ubica en la

*2
;toman al cajero
*2
;dejan la cola
FN$MEDIA,V$DESVIO;tiempo f(tipo)
*2
;liberan al cajero

pgina 9/10

75.26 Simulacin
Funciones, variables, parmetros y savevalues

210
220
230

TERMINATE
GENERATE
TERMINATE

;se van del sistema


;reloj
;es un minutero

60
1

Resultados obtenidos:
START_TIME
0
LINE
110
120
130
140
150
160
170
180
190
200
210
220
230
FACILITY
1
2
3
4
5
6
QUEUE
1
2
3
4
5
6

LOC
1
2
3
4
OCUP
PAG
7
8
9
10
11
12
13
ENTRIES
224
204
208
194
187
170
MAX
2
1
1
1
1
1

END_TIME
18000

BLOCKS
13

BLOCK_TYPE
GENERATE
ASSIGN
SELECT
TRANSFER
SELECT
QUEUE
SEIZE
DEPART
ADVANCE
RELEASE
TERMINATE
GENERATE
TERMINATE
UTIL.
0.980
0.953
0.920
0.878
0.839
0.756

FACILITIES
6

STORAGES
0

ENTRY_COUNT
1188
1188
1188
788
400
1188
1187
1187
1187
1181
1181
300
300

AVE._TIME AVAILABLE
78.83
1
84.09
1
79.69
1
81.53
1
80.83
1
80.05
1

FREE_MEMORY
317360

CURRENT_COUNT
0
0
0
0
0
1
0
0
6
0
0
0
0

RETRY
0
0
0
0
0
0
0
0
0
0
0
0
0

OWNER PEND INTER RETRY DELAY


1478
0
0
0
1
1487
0
0
0
0
1479
0
0
0
0
1485
0
0
0
0
1488
0
0
0
0
1480
0
0
0
0

CONT. ENTRIES ENTRIES(0) AVE.CONT. AVE.TIME


1
225
49
0.52
41.60
0
204
91
0.34
29.85
0
208
144
0.17
14.32
0
194
164
0.07
6.63
0
187
174
0.03
2.72
0
170
168
0.00
0.32

pgina 10/10

AVE.(-0) RETRY
53.18
0
53.88
0
46.53
0
42.87
0
39.15
0
27.50
0

Anda mungkin juga menyukai