simulación dr. ignacio ponzoni

30
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

Upload: hamlet

Post on 13-Jan-2016

30 views

Category:

Documents


0 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Simulación Dr. Ignacio Ponzoni

SimulaciónDr. 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

Page 2: Simulación Dr. Ignacio Ponzoni

Simulación 2 Prof. Dr. Ignacio Ponzoni

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.

Page 3: Simulación Dr. Ignacio Ponzoni

Simulación 3 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.

Page 4: Simulación Dr. Ignacio Ponzoni

Simulación 4 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.

Page 5: Simulación Dr. Ignacio Ponzoni

Simulación 5 Prof. Dr. Ignacio Ponzoni

¿Problemas con la Generación de Números Pseudo-

Aleatorios?• Los números generados pueden no estar uniformemente distribuidos.

• 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.

Varios números por debajo de la media seguidos de varios números por encima de la media.

Page 6: Simulación Dr. Ignacio Ponzoni

Simulación 6 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.

Page 7: Simulación Dr. Ignacio Ponzoni

Simulación 7 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.

Page 8: Simulación Dr. Ignacio Ponzoni

Simulación 8 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 Ni 3Ni+1 0 4 13 1 3 10 2 0 1 3 1 4 4 4 13 5 3 10

Hay un ciclo tal que Ni = Ni+4 .

El número aleatorio entre 0 y 1 se obtiene dividiendo Ni por m.

Page 9: Simulación Dr. Ignacio Ponzoni

Simulación 9 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 m = 231-1 = 3.147.483.647

Page 10: Simulación Dr. Ignacio Ponzoni

Simulación 10 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)

Page 11: Simulación Dr. Ignacio Ponzoni

Simulación 11 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º).

Page 12: Simulación Dr. Ignacio Ponzoni

Simulación 12 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

Page 13: Simulación Dr. Ignacio Ponzoni

Simulación 13 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 .

Page 14: Simulación Dr. Ignacio Ponzoni

Simulación 14 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.

Page 15: Simulación Dr. Ignacio Ponzoni

Simulación 15 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.

Page 16: Simulación Dr. Ignacio Ponzoni

Simulación 16 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.

Page 17: Simulación Dr. Ignacio Ponzoni

Simulación 17 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.

Page 18: Simulación Dr. Ignacio Ponzoni

Simulación 18 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), ...

Page 19: Simulación Dr. Ignacio Ponzoni

Simulación 19 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 .

Page 20: Simulación Dr. Ignacio Ponzoni

Simulación 20 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

Page 21: Simulación Dr. Ignacio Ponzoni

Simulación 21 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...

Page 22: Simulación Dr. Ignacio Ponzoni

Simulación 22 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)

Page 23: Simulación Dr. Ignacio Ponzoni

Simulación 23 Prof. Dr. Ignacio Ponzoni

Método de la Transformación InversaInterpretación Gráfica en Curvas de Acumulación

Page 24: Simulación Dr. Ignacio Ponzoni

Simulación 24 Prof. Dr. Ignacio Ponzoni

Método de la Transformación Inversa

Interpretación Gráfica en Áreas

Page 25: Simulación Dr. Ignacio Ponzoni

Simulación 25 Prof. Dr. Ignacio Ponzoni

Método de la Transformación Inversa

Funciones de Búsqueda en Excel

Page 26: Simulación Dr. Ignacio Ponzoni

Simulación 26 Prof. Dr. Ignacio Ponzoni

Método de la Transformación Inversa

Distribución Exponencial

xx t edte)x(F 10

xer 1

xe)r( 1

x)rln( 1

)rln(

x

1

Page 27: Simulación Dr. Ignacio Ponzoni

Simulación 27 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.

Page 28: Simulación Dr. Ignacio Ponzoni

Simulación 28 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

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).

a b0

M

x

f(x) .

.

(rj ,sj ) rechazadopues sj > f(rj )

(rk ,sk ) aceptadopues sk f(rk )

Page 29: Simulación Dr. Ignacio Ponzoni

Simulación 29 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º).

Page 30: Simulación Dr. Ignacio Ponzoni

Simulación 30 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.