Sin título de diapositiva - LIDeCC

Download Report

Transcript Sin título de diapositiva - LIDeCC

Simulación
Dr. Ignacio Ponzoni
Clase V: Números Pseudo-Aleatorios
y Variables Aleatorias
Departamento de Ciencias e Ingeniería de la Computación
Universidad Nacional del Sur
Año 2006
Aleatoriedad en Modelos de Simulación
• El uso del concepto de aleatoriedad es empleado en
Simulación para modelar dos tipos de situaciones:
 Fenómenos que se aprecian “realmente” como
aleatorios.
• Por ejemplo: el resultado de tirar un dado o girar la
rueda de una ruleta, etc.

Situaciones que se asumen como aleatoria por falta
de mayor información, a fin de simplificar la lógica
del modelo de simulación.
• En estos casos, la variable podría ser calculada
determinísticamente, pero modelarla como tal implica un
costo que no se justifica en función de la calidad de los
resultados de la simulación.
Simulación
2
Prof. Dr. Ignacio Ponzoni
Secuencias de Números Aleatorios
Uniformemente Distribuidos
• Propiedades de los números aleatorios:

Una secuencia R1, R2, ..., de números aleatorios debe
satisfacer dos propiedades fundamentales:
• Uniformidad: los números de la secuencia siguen
una distribución continua uniforme con valores
comprendidos entre 0 y 1.
• Independencia: cada valor Ri de la secuencia es
independiente de los restantes valores Rj de la
secuencia.
Simulación
3
Prof. Dr. Ignacio Ponzoni
Números Pseudo-Aleatorios
• Se denominan números pseudo-aleatorios a los números
“aleatorios” generados utilizando una computadora.
• La aleatoriedad o azar es simulada mediante técnicas
computacionales que intentan generar secuencias de
números entre 0 y 1 que respeten las propiedades de los
verdaderos números aleatorios.
Simulación
4
Prof. Dr. Ignacio Ponzoni
¿Problemas con la Generación
de Números Pseudo-Aleatorios?
• Los números
distribuidos.
generados
pueden
no
estar
uniformemente
• Los números generados pueden estar discretamente valuados en vez
de continuamente valuados.
• La media de los números generados puede ser muy alta o muy baja.
• La varianza de los números generados puede ser muy alta o muy
baja.
• Puede haber dependencias:

Autocorrelación entre números.

Números sucesivamente altos o bajos en posiciones adyacentes
de la secuencia.
Simulación
5
Prof. Dr. Ignacio Ponzoni
Características deseables en una subrutina
para generación de números aleatorios
• Confiabilidad, la secuencia debe cumplir en forma muy
cercana las propiedades de los números aleatorios.
• Eficiencia, bajos run-times para generar secuencias aleatorias.
• Portabilidad, es necesario poder contar con un generador de
números aleatorios cuya confiabilidad no dependa de la
arquitectura de la máquina o del sistema operativo utilizado.
• Ciclos largos, la secuencia de números aleatorios debe ser lo
más extensa posible antes de empezar a repetir valores.
• Replicabilidad, para muchos experimentos es necesario poder
efectuar corridas con la misma secuencia aleatoria. Uso de
semillas.
Simulación
6
Prof. Dr. Ignacio Ponzoni
Técnicas para Generación
de Números Aleatorios
• Método Congruencial Lineal

Este método genera una secuencia de m números siguiendo la
siguiente relación recursiva:
Ni+1= (a * Ni+ c) mod m
con i = 0, 1, 2..., n
• Si c  0 se denomina método congruencial mixto.
• Si c = 0 se denomina método congruencial multiplicativo.
• Los Ni pertenecen al intervalo (0,m-1).


La selección de a, c y m afectan drásticamente a la longitud del
ciclo y las propiedades estadísticas.
Es posible combinar varios generadores congruenciales lineales.
Simulación
7
Prof. Dr. Ignacio Ponzoni
Generadores Congruenciales
• Supongamos que a = 3, c = 1, m = 5 y N0 = 4.
• El generador sería: Ni+1= (3*Ni+1) mod 5
• Luego, la secuencia obtenida por el generador es:
i
0
1
2
3
4
5
Simulación
Ni
4
3
0
1
4
3
Hay un ciclo tal que Ni = Ni+4 .
3Ni+1
13
10
1
4
13
10
El número aleatorio entre 0 y 1
se obtiene dividiendo Ni por m.
8
Prof. Dr. Ignacio Ponzoni
Generadores Congruenciales
Multiplicativos
• Siempre que c = 0, el generador posee la siguiente forma:
Ni+1 = (3*Ni ) mod m i=0, 1, …, n
• Para asegurar la máxima longitud periódica de la secuencia,
m y N0 deben ser primos entre sí.
• La forma más sencilla de asegurar esto para cualquier semilla
N0 es utilizar un número primo para m.
• Para arquitecturas con aritmética de 32-bits el generador más
empleado posee:
a = 16.807 y
Simulación
m = 231-1 = 3.147.483.647
9
Prof. Dr. Ignacio Ponzoni
Mejoras de los Generadores
• Generadores Multiplicativos Recursivos

Este método genera cada valor de la secuencia como una
combinación lineal de los valores que le preceden:
Ni-1 =(a1Ni+a2Ni-1+…+atNi-t-1)mod m

Un generador de este tipo que ha demostrado
poseer muy buenas propiedades estadísticas es:
Ni-1 = (107.374.182*Ni+104.104.480*Ni-4 ) mod (231-1)
Simulación
10
Prof. Dr. Ignacio Ponzoni
Mejoras de los Generadores
• Shuffling
Este enfoque emplea un generador composicional y mezcla la
salida. Este enfoque resulta apropiado en generadores para
aritmética de 16-bits los cuales poseen un período de secuencia
inherentemente corto.
Considere dos generadores congruenciales multiplicativos, g1 y g2.
Luego:
1º)Complete un vector V con los primeros k valores obtenidos con
g1, es decir, V = (V1 , V2 , …, Vk ).
2º) Use g2 para generar un valor entero i entre 1 y k.
3º) Seleccione el i-ésimo valor de V como el valor aleatorio.
4º) Genere un valor aleatorio con g1 y sustituya Vi por ese valor.
5º) Si es necesario generar otro número aleatorio, vuelva a 2º).
Simulación
11
Prof. Dr. Ignacio Ponzoni
Test para Números Aleatorios
• Existen varios test tendientes a establecer si una
secuencia de números pseudo-aleatorios respeta las
propiedades de los números aleatorios:
–Tests de Frecuencia
–Tests de Corridas
–Tests de Autocorrelación
–Tests de Gap
–Tests de Poker
Simulación
12
Prof. Dr. Ignacio Ponzoni
Test para Números Aleatorios
• Algunos de estos test se aplican a la secuencia de
números aleatorios reales {Ui } y otros a la secuencia
de números aleatorios enteros {Ni }.
• Dado que muchas veces los {Ni } no están disponibles
cuando los test se deben hacer para números enteros,
se construye una secuencia auxiliar {Yi } formada por
números enteros entre (0,d-1).
• En estos casos, cada Yi se computa como la parte
entera de d*Ui .
Simulación
13
Prof. Dr. Ignacio Ponzoni
Tests de Frecuencia
• Este test evalua la uniformidad de la distribución de los
valores en la secuencia.
• Generalmente se utiliza los test de Kolmogorov-Smirnov
o el Test Chi-Cuadrado para comparar la frecuencia con
que aparece cada valor en la secuencia respecto de la
frecuencia esperada para dicho valor.
• El test puede ser realizarse tanto sobre los {Ui} como
para los {Yi}.
• Si el test es superado, entonces podemos afirmar, con
cierto grado de certeza, que los valores siguen una
distribución uniforme.
Simulación
14
Prof. Dr. Ignacio Ponzoni
Tests de Corridas
• Corridas descendentes y ascendentes

Este test determina la existencia o no de
subsecuencias crecientes o decrecientes
dentro de la secuencia aleatoria.

Si dichas secuencias existen, entonces la
propiedad de independencia de los valores
no se verifica para el generador de
números aleatorios.
Simulación
15
Prof. Dr. Ignacio Ponzoni
Tests de Corridas
• Corridas por debajo y arriba de la media

Este test determina la existencia o no de
subsecuencias de números por debajo o por
encima de la media.

Nuevamente, si dichas secuencias existen,
entonces la propiedad de independencia de
los valores no se verifica para el generador
de números aleatorios.
Simulación
16
Prof. Dr. Ignacio Ponzoni
Tests de Autocorrelación
• Este test analiza la independencia entre los
números de la secuencia tratando de detectar la
existencia de alguna correlación entre los valores
generados.
• Estos tests requieren el cómputo de correlaciones
entre los valores comprendidos cada m posiciones
de la secuencia comenzando desde una posición i.
• Estas técnicas a veces pueden llegar a determinar
una correlación cuando en realidad no existe.
Simulación
17
Prof. Dr. Ignacio Ponzoni
Test de Gap
• Este test analiza el intervalo o “gap” entre la
repetición de un dígito y su próxima aparición
buscando detectar un patrón general que
invalide la propiedad de independencia.
• Para aplicar a números aleatorios entre 0 y 1,
{Ui}, se efectúa una discretización por clases.
0 = [0,0.1), 1 = [1,0.2), ...
Simulación
18
Prof. Dr. Ignacio Ponzoni
Test de Poker
• Este tipo de test también busca verificar la
propiedad de independencia analizando cómo se
repiten los dígitos a lo largo de los números que
forman la secuencia pseudo-aleatoria.
• Por ejemplo, en la siguiente secuencia todos los
números repiten dos dígitos:
0.255 0.577 0.331 0.414 0.828 0.909 0.001 …
Con lo cual se concluye que no hay independencia
entre los números de la secuencia .
Simulación
19
Prof. Dr. Ignacio Ponzoni
Generación de Variables Aleatorias
Distribuciones Uniformes
• Los generaradores congruenciales obtienen secuencias de
números aleatorios distribuidos uniformemente entre 0 y 1.
• La cuestión es cómo generar valores aleatorios que sigan
otras distribuciones.
• Si se necesita generar valores de una distribución uniforme
con un intervalo (a,b) diferente a (0,1), una técnica sencilla
consiste en obtener un valor aleatorio r entre 0 y 1, y luego
calcular el valor aleatorio como a+ (b-a)* r
Simulación
20
Prof. Dr. Ignacio Ponzoni
Generación de Variables Aleatorias
Distribuciones No Uniformes
• Cuando el valor aleatorio a generar no sigue una
distribución uniforme, es necesario emplear otras técnicas.
• Dentro de las técnicas más empleadas están:
– El método de la transformación inversa.
– Métodos especiales:
» El método de aceptación y rechazo
» El enfoque de convolución
» Transformación directa entre normal y lognormal
» otros...
Simulación
21
Prof. Dr. Ignacio Ponzoni
Técnica de la Transformada Inversa
• Este método explota las propiedades de las funciones de
acumulación de probabilidades de las distribuciones.
• Dado que las funciones acumulativas son incrementales,
en general estas poseen inversa. Es decir, dado un valor
aleatorio r entre 0 y 1 existe un único valor x tal que
F(x) = r.
• Luego, dado una valor r entre 0 y 1, el valor aleatorio x
se puede obtener como:
x = F-1(r)
Simulación
22
Prof. Dr. Ignacio Ponzoni
Método de la Transformación Inversa
Interpretación Gráfica en Curvas de Acumulación
Simulación
23
Prof. Dr. Ignacio Ponzoni
Método de la Transformación Inversa
Interpretación Gráfica en Áreas
Simulación
24
Prof. Dr. Ignacio Ponzoni
Método de la Transformación Inversa
Funciones de Búsqueda en Excel
Simulación
25
Prof. Dr. Ignacio Ponzoni
Método de la Transformación Inversa
Distribución Exponencial
x
F ( x )   e dt  1  e
t
x
0
r  1  e
 x
( 1  r )  e x
 ln( 1  r )  x
ln( 1  r )
x  

Simulación
26
Prof. Dr. Ignacio Ponzoni
Método de Aceptación-Rechazo
• Este método es aplicable a cualquier variable
aleatoria con distribución continua que posea
una función de densidad de probabilidad con
rango bien definido, pero cuya función de
distribución de probabilidad acumulativa no
pueda ser expresada mediante integración
directa.
Simulación
27
Prof. Dr. Ignacio Ponzoni
Método de Aceptación-Rechazo
• Considere una variable aleatoria X, cuya función de densidad
de probabilidad f(x) es tal que:
0  f(x)  M para a  x  b
y f(x) = 0 para cualquier otro caso
M
.
f(x)
.
(rj ,sj ) rechazado
pues sj > f(rj )
(rk ,sk ) aceptado
pues sk  f(rk )
0 a
b
x
y sean R y S son dos variables aleatorias con distribución
uniforme continua tales que los ri (a,b) y los si (0,M).
Simulación
28
Prof. Dr. Ignacio Ponzoni
Método de Aceptación-Rechazo
Desde un punto de vista práctico, la generación de un valor
aleatorio siguiendo este método se implementa como sigue:
1º) Se calcula una constante c tal que c*f(x)  1 para a  x  b
2º) Se obtienen dos valores aleatorios u1 y u2 uniformemente
distribuidos entre (0,1).
3º) Se calcula x = a +u1*(b-a)
4º) Si u2  c*f(x), se acepta el par (u1 ,u2 ) y se retorna x como
valor aleatorio, en caso contrario el par es rechazado y se
vuelve al paso 2º).
Simulación
29
Prof. Dr. Ignacio Ponzoni
Recomendaciones
• Lectura recomendada para los temas vistos en clase:

Capítulo 11 del libro Computer Simulation in
Management Science de Michael Pidd.

Capítulos 7 y 8 del libro Discrete-Event System
Simulation de Banks, Carson, Nelson y Nicol
• Ejercitación propuesta:

Trabajo Práctico 3: Nociones Básicas de Probabilidad
y Generación de Números Aleatorios.
Simulación
30
Prof. Dr. Ignacio Ponzoni