Vous êtes sur la page 1sur 14

TÉCNICAS DE

SIMULACIÓN
TDS115
T.E.

TDS-115 1
Formulación del
problema

Producción y
análisis de Diseño del
resultados Modelo

El proceso
de la
Simulación

Modelaje de la
Simulación
aleatoriedad

Programación
del Modelo

TDS-115 2
Modelaje de la aleatoriedad: Generadores de Números
Pseudoaleatorios
 Consideraremos la generación de números “aleatorios”
distribuidos uniformemente, inicialmente en el intervalo
[0, 1)
 Y luego en cualquier intervalo [a, b).

 Luego se verá la forma de producir números que sigan


cierta distribución de probabilidades.

 Usaremos estos métodos para introducir el concepto de


aleatoriedad en nuestros modelos de simulación.

 ¿Piense en que variables podrían considerarse aleatorias en


los modelos estudiados? TDS-115 3
¿Puede pensar en algunos métodos de generar números que
sean aleatorios?

Que tal los siguientes:


• El tiempo transcurrido entre emisiones de partículas
durante un decaimiento radioactivo.
• El ruido térmico de un diodo semiconductor o de un
resistor.
• La dirección del desplazamiento del mouse.
• La siguiente tecla que presionará en el teclado de su
computadora, o de su cel.
• Sacar papelitos numerados de una caja.
• Obtener una bola de una urna.
TDS-115 4
Nosotros usamos un método alternativo y es crear un
algoritmo de computadora para que realice algunos cálculos
de forma que parezca aleatorio, de allí el nombre Pseudo
aleatorio.
En estos métodos, generalmente se da un valor inicial
(“Semilla” o “Seed”) a partir del cual se comienza la
generación. Lo que hace suponer que cada vez que se de el
mismo valor inicial, se producirá la misma secuencia de
números aleatorios.
Esto puede ser de utilidad en procesos de depuración de
programas. Pero podría no ser de utilidad en procesos
repetitivos de generación de variaciones aleatorias.
Los números generados deben pasar algunas pruebas
estadísticas para que cumplan su propósito aleatorio.
TDS-115 5
En general los métodos de generación de números aleatorios
deben ser:
• Uniformemente distribuidos en el intervalo de
generación.
• Estadísticamente independientes unos de otros.
• Reproducibles.
• No repetitivos para una longitud deseada.
Históricamente el primer método para crear números de este
tipo fue propuesto por Von Neuman, y le llamó el “cuadrado
medio”. Su idea fue, elevar al cuadrado el número aleatorio
previo y extraer del resultado los dígitos centrales. Por
ejemplo, si el número anterior fue: 5772156649, lo eleva al
cuadrado: 33317792380594909291 y toma los dígitos
centrales:7923805949. TDS-115 6
Este método es lento y estadísticamente inapropiado. Luego
se encontraron otros algoritmos. Nosotros veremos algunos:
El método Congruencial, El generador Tausworthe, los
generadores retrasados de Fibonacci y el Mersenne Twister.

El método Congruencial (Visto en MEP115).


Usa el generador: 𝑥𝑖+1 = 𝑎𝑥𝑖 +c mod (m)

Donde 𝑥𝑖 , a, c y m son número no negativos.


Practique el uso de este generador con los siguientes valores
de 𝑥𝑖 , a, c y m : 𝑥0 = 0, a=c=7 y m=10.
Resulta claro que no es un muy buen generador debido a que
se comienza a repetir la serie muy pronto. Pruebe ahora con:
a=6, c=5 y m=11 use 𝑥0 = 0 y luego 𝑥0 = 4.
TDS-115 7
El número de valores sucesivos generados luego de los
cuales la secuencia generada comienza a repetirse se conoce
como “período”. Si el generador tiene un período igual a
“m”, se dice que el generador tiene período completo. La
teoría del número confirma que el período depende del valor
dado a “m”. Las siguientes condiciones en a, c y m
garantizan un período completo:
1. m y c no tienen divisor común.
2. a=1 mod(r) si r es un factor primo de m. Es decir, que si r
es un número primo (divisible solo por si mismo y 1)
que divide a m entonces él divide a (a-1).
3. a=1 mod(4) si m es un múltiplo de 4.

TDS-115 8
Recordando un poco lo visto en MEP115:

TDS-115 9
Evaluaciones sistemáticas para valores de a, c y m. Han
conducido a que los siguientes valores son bastante buenos
para un generador usando este método: a= 314,159,269;
c=453,806,245 y 𝑚 = 232 para máquinas de 32 bits.

Vale la pena enfatizar que el valor inicial no tiene


importancia para este tipo de generador.

La implementación de un generador involucra,


multiplicación, suma y división. La división se puede evadir
estableciendo que m sea igual al tamaño de la “la palabra”
definida en el computador. Así si el resultado de la operación
𝑎𝑥𝑖 +c es menor que el tamaño de “la palabra” entonces el
resultado de 𝑎𝑥𝑖 +c mod (m) será el mismo valor.
TDS-115 10
Pero si el resultado de la operación 𝑎𝑥𝑖 +c es mayor que el
tamaño de “la palabra”, aquí cuando se realice la operación
se dará un “overflow”. Este overflow, no causará que la
ejecución del programa se aborte, sino simplemente que
haya una perdida de dígitos significativos. Y los dígitos
restantes en el registro será el residuo de la división entera
(𝑎𝑥𝑖 +c) / (m). Esto es así porque los dígitos que se pierden
representan múltiplos del valor de m.

Para demostrar esto consideremos un calculador decimal


hipotético cuyo registro solo puede acomodar 2 dígitos.
Obviamente el número más grande que el registro puede
almacenar es 99. Hagamos que m=100. Y demos valores de:
a=8, x=2, y c=10. Pruebe el generador. ¿¿¿Y, si x=20 ???
TDS-115 11
MÉTODO CONGRUENCIAL GENERAL.
El método anterior se puede ver como un caso particular
del siguiente generador:
𝑥𝑖+1 = 𝑓 𝑥𝑖 , 𝑥𝑖−1 , … 𝑚𝑜𝑑(𝑚)
Donde f es una función de los números Pseudo aleatorios
previamente generados.
Un caso especial del método anterior es el generado
Congruencial cuadrático, que tiene la forma:
𝑥𝑖+1 = 𝑎1 𝑥𝑖2 + 𝑎2 𝑥𝑖−1 + 𝑐 𝑚𝑜𝑑 (𝑚)
El caso especial de 𝑎1 =𝑎2 =1, c=0 y 𝑚 siendo una potencia
de 2 se ha encontrado estar relacionado con el método del
cuadrado medio de Von Neuman.
Otro caso especial es el método aditivo que tiene la forma:
𝑓 𝑥𝑖 , 𝑥𝑖−1 , … , 𝑥𝑖−𝑘 =𝑎1 𝑥𝑖 + 𝑎2 𝑥𝑖−1 +… +𝑎𝑘 𝑥𝑖−𝑘
TDS-115 12
GENERADORES COMPUESTOS
Se combinan 2 generadores congruenciales por separado.
Un caso es el del que usa el segundo generador para entre
mezclar la salida del primer generador. En particular, el primer
generador se usa para llenar un vector de tamaño n con sus
primeros k números aleatorios generados, entonces el segundo
generador se usa para generar un número entero aleatorio
uniformemente distribuido entre los número 1,2, .. k.
El número aleatorio almacenado en la posición r-ésima se
retorna como el primer aleatorio del generador compuesto. El
primer generador reemplaza entonces el número en la posición
r-ésima con un nuevo número aleatorio. El siguiente número
del generador compuesto será el generado por el segundo
generador en el vector actualizado, y así sucesivamente.
TDS-115 13
Fin de la Clase 1 Tema 3
Continua Clase 2 Tema 3:
El generador Tausworthe y los
generadores retrasados de
Fibonacci y posiblemente el
Mersenne Twister
….
¡Que tengan felices vacaciones!
TDS-115 14