1.
Introduccin
Toda simulacin de un sistema discreto necesita especificar cmo se producen las variaciones aleatorias
en sus fuentes de aleatoriedad. Esto se establece por medio de la asignacin de una distribucin de
probabilidad a cada fuente de aleatoriedad. Un ejemplo clsico es la simulacin de un sistema de una cola
y un servidor. La llegada de entidades (dinmicas) al sistema ocurre con cierta frecuencia, y es por lo
tanto una fuente de aleatoriedad. Por otra parte, el servidor sirve a las entidades dinmicas durante un
cierto tiempo de servicio, que es la otra fuente de aleatoriedad en este sistema simple. Por lo tanto de lo
enunciado antes surge que en esta simulacin se necesitarn dos distribuciones que especifiquen la
frecuencia de los tiempos aleatorios, el de llegada y el de servicio. La definicin de cual distribucin
utilizar para cada fuente de aleatoriedad est dada por un anlisis estadstico previo de ajuste.
Todo entorno, librera o lenguaje de simulacin debe, por lo tanto, proporcionar medios adecuados para la
generacin de estos valores aleatorios. La base para la generacin de cualquier mtodo para la generacin
de valores de distribuciones aleatorias es un generador de valores IID U(0,1). Es por esta razn que es
esencial que se disponga de un generador de nmeros aleatorios U(0,1) confiable.
Existen por para ciertas distribuciones de probabilidad varios tipos de algoritmos. La eleccin de un
algoritmo en particular depende de varios factores, pero sobre todo se trata de obtener algoritmos que
traten de ser lo ms exactos y eficientes posible.
En este captulo presentaremos en forma conjunta algunas de las muchas distribuciones de probabilidad
utilizadas en la prctica de la simulacin, as tambin como uno de los algoritmos disponibles para su
generacin.
Hacemos la aclaracin pertinente de que las distribuciones se describen en este captulo solo de forma
general, ya que este trabajo no pretende ser un tratado de estadstica, sugirindose al lector interesado la
consulta de fuentes ms completas y generales como [Vardema94] ,[WalpMyer92], etc.
Adems de la descripcin general de las distribuciones continuas y discretas, se hace una descripcin del
mtodo utilizado para generar valores aleatorios de dichas distribuciones. Para la comprensin total de
dichos mtodos es preciso referirse primeramente a ciertos mtodos generales para la generacin de
valores aleatorios, tales como los denominados de la transformada inversa, de la composicin, de la
convolucin, etc. que explicaremos a continuacin.
1.2
Una variable es aleatoria si toma diferentes valores como resultado de un experimento aleatorio. Puede
ser discreta o continua. Si puede tomar slo un nmero limitado de valores, entonces es una variable
aleatoria discreta. En el otro extremo, si puede tomar cualquier valor dentro de un intervalo dado,
entonces se trata de una variable aleatoria continua.
Se puede pensar en una variable aleatoria como un valor o una magnitud que cambia de una presentacin
a otra, sin seguir una secuencia predecible. Los valores de una variable aleatoria son los valores
numricos correspondientes a cada posible resultado de un experimento aleatorio.
Formalmente: sea un experimento E y S el espacio muestral asociado con el experimento; una funcin X
que asigna a cada uno de los elementos de S un nmero real X(s), se llama variable aleatoria.
1.3
1.4
Sea X una variable aleatoria, discreta o continua; definimos a F, la funcin de densidad de distribucin
acumulada de la variable aleatoria X, como F(x) = P(X <= x), y adems:
i) Si X es una variable aleatoria discreta, entonces:
F ( x) p ( x j )
j
F ( x) f (t )dt
0
donde f(t) representa el valor de la fdp de la variable aleatoria X, cuando X = t.
1.5
Mtodos de Generacin
Este mtodo se basa en la funcin inversa de la funcin de distribucin de la variable aleatoria X. Dado
que F(X) est acotada entre 0 y 1, podemos generar valores en U(0; 1) y sobre ellos aplicar F -1(X).
Se utiliza la funcin de distribucin acumulada F(x). Como F(x) est definida entre 0 y 1, entonces se
necesita generar nmeros aleatorios uniformemente distribuidos entre 0 y 1.
Si representamos un nmero aleatorio con R , entonces
R = F(x)
x=F-1(R)
Es por esto que se denomina al mtodo como el de la transformada inversa. Dada una funcin acumulada
de una distribucin, se obtiene el valor de la variable.
Prueba: si F(x) es invertible,
F( x ) P( X x)
F(x)
x
Por ejemplo, tomemos la distribucin exponencial con media en , y cuyas funciones de distribucin y
densidad son las siguientes:
f (x ) .e
; x
0 ; o x < 0
x
F (x ) f (x ).dx .e
0
.dx
F (x ) e
1 x
.dx .e
1 x
1
x
F (x ) . .e
( ) 1 e
R
.x ln(1 R )
1 R
1
x .ln(1 R )
es decir:
1
. ln R
R: nmero aleatorio.
Y el algoritmo para generar valores aleatorios para esta distribucin ser:
4
def exponential(media):
u = random(0,1)
return -log(1-u)/media
El mtodo de la inversa es especialmente til para generar valores de variables aleatorias discretas.
Veamos un ejemplo. supongamos que tenemos una variable aleatoria discreta con espacio de muestreo S
= f1; 2; 3g, y cuya funcin de densidad es la siguiente:
p(1) = 0:2 p(2) = 0:3 p(3) = 0:5
Entonces su funcin de distribucin ser:
F(1) = 0:2 F(2) = 0:2 + 0:3 = 0:5 F(3) = 0:5 + 0:5 = 1
As, en el eje de F(x) podemos identificar tres intervalos: (0; 0:2], (0:2; 0:5] y (0:5; 1]. Para obtener
valores para esta variable, generaremos un valor para U(0; 1), y determinaremos su inversa a partir del
intervalo en el que caiga. Si ste cae en el primer invervalo, el valor de F_1 ser 1, si en el segundo 2, y si
en el tercero 3. As, el algoritmo para generar valores para esta variable
aleatoria ser el siguiente:
def genera_discreta(p1, p2, p3):
u= random(0,1)
if u<=p1:
finv = 1
elseif u<=p1+p2:
finv = 2
else:
finv = 3
return finv
Este tipo de distribuciones suele aparecer en los diagramas de eventos, concretamente cuando un suceso
planifica la ocurrencia de otros sucesos con una determinada probabilidad.
Como ejercicio se plantea realizar una funcin para obtener valores aleatorios segn una distribucin
discreta representada con una lista de cualquier longitud (por ejemplo [0.1, 0.3, 0.4, 0.2] o [0.5, 0.3,0.2],
etc.)
1.5.2 Ejemplos:
1.5.2.1 Mtodo de la transformada inversa discreta:
Suponemos un dado X probable, que nos lleva a la siguiente tabla de probabilidades:
X
1
2
3
4
5
6
P(X)
1/6
1/6
1/6
1/6
1/6
1/6
F(X)
1/6
2/6
3/6
4/6
5/6
1
1/6
1/3
1/2
2/3
5/6
Luego, generar (mediante un generador congruencial) una variable tipo u, son nmeros pseudoaleatorios
generados (0, 1) uniformemente distribuidos en ese intervalo y continuas en el sentido numrico.
Si p = 3 0,001 0,999 p es una distribucin de probabilidad constante.
Ahora se supone; u = 0,4 x = 3. Con la tabla, se busca en F(x) el primer valor mayor que u, en la
columna x est el valor que le corresponde.
u = 0,6 x = 4
u = 0,9 x = 6
Resumiendo:
El primer paso es establecer la funcin de distribucin acumulada.
El segundo paso es formar la tabla correspondiente a fin de establecer los nmeros ndices. Los nmeros
ndices se asignan de manera tal que puedan reflejar la probabilidad de los diversos valores que asume la
variable aleatoria.
El tercer paso es obtener las variables de tipo u y realizar la simulacin.
A continuacin, el diagrama de flujo del mtodo:
6
Buscar Tabla
Leer x[i]
Leer PX[i]
u=GenerarU
tope
i = 1
i = 1, tope
Buscar Tabla
i <= tope
FX[i]=FX[i-1] + PX[i]
FX[i] >= u
X[i]
i = tope
i = i+1
0
10
12
rea = 1
(B * h) / 2 = (2 * h) / 2 = 1 h = 1
y y1
y f x
y 2 y1
x x1
y = (x/2) - 5
x 2 x1
x2
x
5
dx
5 x 25
2
4
Determinar la funcin inversa F-1
F x U F x U 0
F 1 U x
b b 2 4ac
2a
x = 2(5 u )
x
Encontrar el Signo: Uno de los valores de x hallados se corresponde al problema y el otro puede que no
sea as, por lo tanto se debe determinar cual es el x apropiado.
Para u = 0
x = 10
Para u = 1
x = 12
7
u = 0 x = 10
u = 1 x = 12
u = 0 x = 10
u=1x=8
+:
-:
x = 2(5
u)
1.5.2.3 Resumiendo
Mtodo de la transformada inversa:
La tcnica de la transformada inversa puede ser usada para obtener muestras de las
distribuciones exponenciales, uniforme, Weibull y triangular.
El principio bsico es encontrar la funcin inversa de F,
de tal forma que
.
x INT a b a 1u1
PRA
P x
PMAX
Algoritmo:
I
Leer x[i]
Leer PX[i]
Generar u 1,u 2
a = Buscar_A
b = Buscar_B
x = INT[a + (b - a + 1) u 1]
PX[i] = Buscar_PX
PMAX = Buscar_PMAX
PRA = PX[i]/PMAX
u 2 <= PRA
NO
SI
x
F
x a b a u1
4. Calcular PRA
f x
f x
f x
PMAX
1
Consideraciones:
El mtodo de eliminacin para Funciones Discretas puede no ser ptimo porque genera dos u como
mnimo y no todos los x generados se aceptan. Tiene la ventaja respecto a la transformada inversa que no
necesitamos trabajar con tablas ni necesitamos calcular la acumulada.
El mtodo de eliminacin para funciones continuas, tiene la misma desventaja que el de funciones
discretas. Por otro lado, no es necesario hallar la integral ni la inversa.
Para que funcione eficientemente, el algoritmo debe utilizar una funcin g(x) sencilla, y que se ajuste lo
ms posible a la funcin f(x). De ella depender el nmero de iteraciones del algoritmo.
Veamos un ejemplo presentado en [Raj Jain, 1991]. Supongamos que queremos generar una secuencia de
valores para la distribucin beta(2; 4), cuya funcin de densidad es:
f(x) = 20 _ x(1 _ x)3
Esta funcin puede ser recubierta por un rectngulo de altura 2:11, que es el mximo de la funcin. Por lo
tanto, tomando g(x) = U(0; 1) y a = 2:11, obtendremos el siguiente algoritmo:
def beta2_4():
a = 2.11
x = random(0,1)
u = random(0,1)
while (u_a <= (20*x*(1-x)**3)):
x = random(0,1)
u = random(0,1)
return x
10
es la suma
Todos estos mtodos pueden encontrarse debidamente explicados en [LawKelt91] y [Taha88] y otros
tratados de simulacin.
2
1,5
f 1( x )
f 3( x )
1
A1
A2
A3
0,5
0
4
f x A1 f 1 x A2 f 2 x ... An f n x
n
A
i 1
A 1+ A 2+ A 3
fi
A 1+ A 2
A1
f 1(x )
f 2(x )
f 3(x )
4. Generar u1 y u2.
5. Seleccionar fi(x), mediante: inversin de ejes.
Se debe buscar con u1 la funcin de probabilidad a trabajar.
11
Acumuladas
f 3( x )
f 2( x )
f 1( x )
A1
A 1+A 2
A 1+A 2+A 3
2. Distribuciones de Probabilidad
2.1
Distribuciones continuas
En esta parte se describen las algunas distribuciones continuas existentes, y su algoritmo de generacin de
valores aleatorios. El algoritmo que se presenta es el que entendemos ms simple de describir e
implementar, y que adems presenta cierta eficiencia en la generacin. Adems los algoritmos son por lo
general mtodos exactos, no aproximaciones.
12
Generacin
La funcin de distribucin de una variable aleatoria U(a,b) se invierte fcilmente resolviendo u = F(x)
para x, de tal forma de obtener , para 0 u 1,
x F 1 (u) a (b a)u
De esta forma se puede utilizar el mtodo de la transformada inversa para generar X:
1. Generar U U(0,1).
2. Devolver X = a + (b - a) U
Esta distribucin tiene un solo parmetro, , denominado parmetro de escala y que es mayor que cero.
La funcin de densidad se muestra en la figura 6.2.
Generacin
Para obtener el algoritmo de generacin de esta distribucin, seguimos el mtodo de la transformada
inversa, y tratamos de encontrar F-1, y entonces hacemos :
F-1(u) = - ln (1 u)
Por lo tanto, el algoritmo se reduce a :
13
1.
2.
Generar U U(0,1).
Devolver X = - ln (1 u)
Generacin
Como se dijo anteriormente, si X es una distribucin de Erlang con media 1/., se puede escribir que X =
Y1+ Y2++ Ym, donce los Yi son variables aleatorias exponenciales IID con media igual a . Esto conlleva
a utilizar un algoritmo basado en esta convolucin (suma). Sin embargo el algoritmo ms utilizado se
basa en esta propiedad pero tambin en el mtodo de la transformada inversa, aplicado a la generacin de
cada valor exponencial en la convolucin :
m
X Yi
ln U i
i 1
i 1 m
i 1
m
m i 1
14
Generacin
Los valores para esta funcin se generan fcilmente invirtiendo la funcin de densidad mostrada ms
arrriba, para obtener
F 1 (u) ln(1 u)
1/
Generar U U(0,1).
Devolver X = ln ( ln U)1/
15
Generacin
Existen varios mtodos para la generacin de valores de esta distribucin, los cuales pueden consultarse
en [LawKelt91]. Uno de los ms conocidos, y por otra parte un mtodo que no es una aproximacin, es el
denominado mtodo polar, el cual se basa en una propiedad particular de esta distribucin (ver referencia
anterior). Este mtodo se describe a continuacin:
1.
2.
Generar U1 y U2 como valores aleatorios IID con U(0,1), y sea V1 = 2 U1 1 y para i = 1,2 y sea W =
V12 + V22.
Si W > 1, se vuelve al paso anterior, de lo contrario se hace Y (2 ln W ) / W y X1 = V1Y y X2= V2Y .
Luego X1 y X2 son dos valores aleatorios distribuidos IID segn una distribucin N(0,1).
16
Generacin
Para generar valores con esta distribucin se utiliza una propiedad especial de esta distribucin: si Y
N(,2), entonces eY ln(,2). Por lo tanto el algoritmo es como sigue:
1.
2.
Generar Y N(,2).
Devolver X = eY.
Generacin
Un mtodo general para la generacin de valores de esta distribucin con parmetros y mayores que
0, surge de que si Y1 Gama(,1), y Y2 Gama(,1), y Y1 y Y2 son independientes, entonces Y1/( Y1 + Y2)
Beta(,), lo cual lleva al siguiente algoritmo :
1.
2.
Descripcin
Se utiliza de forma similar a la anterior, como una primera aproximacin en ausencia de datos.
Las funciones de densidad de probabilidad y la acumulada se describen abajo :
Generacin
Para generar valores con esta distribucin, debemos notar primero que si tenemos X Triang(0,1,(c-a)/(ba)), luego X = a+(b-a)X Triang(a,b,c), de tal forma que podemos restringir nuestra atencin a las
variableas aleatorias Triang(0,1,c), donde 0<c<1. Esta distribucin se puede invertir fcilmente para
obtener 0 u 1,
cu 0 u c
F 1(u )
1 (1 c)(1 u ) c u 1
Por lo tanto podemos establecer el siguiente algoritmo, basado en la transformada inversa, para generar X
Triang(0,1,c):
1.
2.
Generar U U(0,1).
Si U c, devolver X cU , de otra forma retornar X 1 (1 c)(1 U ) .
2.2
Distribuciones Discretas
18
1 p x 0
p( x)
p x 1
Generacin
El siguiente algoritmo es bastante intuitivo y es equivalente al mtodo de la transformada inversa (si se
intercambian los roles de U y 1 U).
1.
2.
Generar U U(0,1).
Si U p, devolver X = 1, de otra forma retornar X = 0.
1
p( x)
x i, i 1,...,
j i 1
Generacin
El algoritmo ms utilizado para la generacin de valores con esta distribucin surge directamente del
mtodo de la transformada inversa:
1.
2.
Generar U U(0,1).
Devolver X = i + (j i + 1)U
Con este algoritmo no se necesita de ninguna bsqueda. La constante (j i + 1) debera computarse con
anticipacin y guardarse si se van a generar numerosos nmeros.
p( x) p x (1 p) t x x 0,1,..., t
x
Generacin
Para generar un valor aleatorio de una distribucin bin(t,p), utilizamos la propiedad de que esta
distribucin puede ser considerada como la suma de t distribuciones de Bernoulli IID con parmetro p.
Esta relacin nos lleva al siguiente algoritmo :
1.
Generar Y1, Y2,, Yt como valores aleatorios distribuidos segn una distribucin Bernolli(p).
19
2.
Devolver X = Y1 + Y2 + + Yt
Como se observa, el tiempo de ejecucin es proporcional a t, por ello sera necesario buscar una
alternativa en el caso de que t sea muy grande. [LawKelt91] proporciona algunos indicios que como
realizar esto.
s x 1 s
p (1 p) x
p( x)
x
Generacin
El siguiente algoritmo es equivalente al de la transformada inversa, si reemplazamos U por 1 U en el
paso 2 (ver [LawKelt91]):
1.
2.
Generar U U(0,1).
Devolver X = ln U / ln (1 p)
La constante 1-p debera ser computada con anticipacin a la generacin. Si p es muy cercano a 0, el ln(1p) tambin ser muy cercano a 0, de tal forma que debera considerarse el empleo de aritmtica de doble
precisin (tipos double en muchos lenguajes), de forma de evitar errores de redondeo grandes en el
clculo.
la distribucin exponencial
eventos que ocurren en un
para generar el nmero de
demandan de un stock. La
e x
p( x)
x 0,1,...
x!
Generacin
El algoritmo general para la generacin de valores distribuidos segn una distribucin de Poisson() est
basado en la relacin existente entre esta distribucin y la exponencial expo(1/) (ver [LawKelt91]):
1.
3.
2.
Sea a = e-, b = 1, e i = 0.
Generar Ui+1 U(0,1) y reemplcese b por bUi+1. Si b < a, devolver X = i, de otra forma regresar al
punto 3.
Reemplazar i por i + 1, y volver al punto 2.
3.1
Ejemplo
3.2
1.
2.
3.
4.
5.
Un gasto til de tiempo es la planificacin. Se puede hacer una sesin de pre-observacin del sistema
y recoger algunos datos. Disear formas para este propsito. Probablemente, estas formas sufran
modificaciones antes de recoger los datos. Observar circunstancias no usuales y pensar cmo
tratarlas. Cuando es posible, filmar un video del sistema y observarlo despus para extraer los datos.
Tratar de analizar los datos cuando se los recoge, de manera de ver si son suficientes o adecuados
para suministrar las distribuciones necesarias para la simulacin, asimismo si son tiles. No perder
tiempo con datos superfluos.
Tratar de combinar conjunto de datos homogneos. Chequear los datos para homogeneidad en
perodos de tiempos sucesivos y durante el mismo perodo de tiempo en das sucesivos. Por ejemplo,
chequear datos entre las 14 hs. a las 15 hs. y entre las 15 y 16 hs. Hacerlo en varios das. Cuando se
chequea la homogeneidad, un test inicial es ver si las medias de las distribuciones son las mismas. Se
puede usar la prueba t para dos muestras.
Puede ocurrir que la cantidad que interesa no puede observarse completamente. Esto ocurre cuando
el analista est interesado en el tiempo requerido para completar un proceso (por ejemplo, producir
una parte, tratar un paciente, o ver cundo falla un componente) porque el proceso comienza antes o
termina despus del tiempo de observacin.
Para determinar si hay una relacin entre dos variables construir un diagrama de dispersin.
21
6.
Considerar la posibilidad que una secuencia de observaciones que aparenta ser independiente tiene
una autocorrelacin. Puede existir entre perodos de tiempo sucesivos o clientes sucesivos. Por
ejemplo el tiempo de servicio de cliente i puede estar relacionado con el tiempo de servicio del
cliente i+1.
3.3
3.3.1 Histogramas
Una distribucin de frecuencias o histograma es til para identificar la forma de una distribucin.
Un histograma se construye con las siguientes etapas:
1.
2.
3.
4.
5.
Dividir el rango de datos en intervalos (generalmente son de igual amplitud, pero puede tener anchos
distintos si las alturas de las frecuencias son ajustadas)
Particionar el eje horizontal segn los intervalos seleccionados.
Determinar las ocurrencias en los intervalos seleccionados
Particionar el eje vertical de modo que todas las ocurrencias puedan ser graficadas para cada
intervalo.
Graficar las frecuencias sobre el eje vertical.
25
10
12
20
10
15
10
4
2
0
8 10 12 14 16 18 20 22 24
12
18
12
15
18
21
terica. Si es continua una lnea a travs del punto central de cada intervalo de clase resultar en una
forma como la de una funcin de densidad de probabilidad (pdf).
Los histogramas de datos discretos donde hay un gran nmero de puntos, tendrn una celda de cada valor
en el rango de los datos. Sin embargo, si hay pocos puntos se necesita combinar celdas adyacentes para
eliminar la apariencia desigual del histograma. Si el histograma est asociado con datos discretos, se ver
como una funcin de masa de probabilidad.
22
24
Arribos
perodo
0
1
2
3
4
5
6
7
8
9
10
11
por Frecuencia
20
12
10
19
17
10
8
7
5
5
3
3
1
15
10
9 10 11
25
Frecuencia
20
15
10
5
0
0
12
15
18
23
21
24
27
30
33
36
1
42 xj < 45
1
57 xj < 60
.
78 xj < 81
.
144 xj < 147
1
.
1
1 n
xi
n i 1
1.
Media aritmtica:
2.
Variancia:
s2
2
1 n
x i x , tambin definida como
n 1 i1
s2
2
1 n 2
x i nx
n 1 i1
Si los datos estn agrupados en distribuciones de frecuencias, los estadsticos anteriores se pueden
modificar:
24
3.
4.
Variancia:
1 k
fixi
n i1
2
1 k
2
s
f i x i nx
n 1 i1
2
4. Referencias
[Lehmer51]
[Fishman78]
[LawKelt91]
[BanCars84]
[Vardema94]
[WalpMyer92]
[Taha88]
[Taha91]
D. Lehmer, Mathematical Methods in Large Scale Computing Units, Ann. Comp. Lab.
Harvard Univ., Vol. 26, 1951
G. Fishman, Conceptos y mtodos en la simulacin digital de eventos discretos,
Editorial Limusa, Mxico, DF, 1978
A. Law, W. D. Kelton, Simulation Modeling and Analysis, Second Edition, McGrawHill, 1991.
J. Banks, J. Carson, Discrete Event System Simulation, Prentice Hall, Englewood Cliffs,
New Jersey, 1984.
Stephen Vardeman, Statistics for Engineering Problem Solving, PWS Publishing
Company, Boston, 1994
R. Walpole, R. Myers, Probabilidad y Estadstica, Cuarta Edicin, McGraw-Hill, 1992
Andy S. Taha, Simulation Modelling and Simnet, Prentice-Hall International, 1988.
Andy S. Taha, Investigacin de Operaciones, Segunda Edicin, Alfaomega, 1991.
25
26