1
SIMULACIÓN
Números pseudoaleatorios
Se utilizan para poder realizar una simulación que incluya
variabilidad dentro de sus eventos, es por ello que es preciso generar una serie de números que sean aleatorios por sí mismos, y que su aleatoriedad se extrapole al modelo de simulación que se está construyendo.
Una de las primeras tareas por realizar consiste en
determinar si los números que utilizaremos para “correr” o ejecutar la simulación son realmente aleatorios o no;
Lo anterior resulta muy complicado, ya que para ello tendríamos que
generar un número infinito de valores que nos permitiera comprobar la inexistencia de correlaciones entre ellos.
Eso sería muy costoso y tardado, volviendo impráctico el uso de la
A pesar de lo anterior, podemos asegurar con altos
niveles de confiabilidad que el conjunto de números que utilizamos en una simulación se comportan de manera muy similar a un conjunto de números totalmente aleatorios, por ello es que se les denomina números pseudo aleatorios.
Generación de números pseudo aleatorios
Para realizar una simulación se requieren números aleatorios en el
intervalo (0,1), a los cuales se hará referencia como ri, es decir, una secuencia ri = {r1 , r2, r3, …, rn} que contiene n números, todos ellos diferentes; n recibe el nombre del periodo o ciclo de vida del generador que creó la secuencia ri.
Los ri constituyen la parte medular de la simulación de procesos
estocásticos, y generalmente se usan para generar el comportamiento de variables aleatorios, tanto continuas como discretas.
Debido a que no es posible generar números realmente aleatorios,
consideramos los ri como números pseudo aleatorios, generados por medio de algoritmos determinísticos que requieren de parámetros de arranque.
Para simular el comportamiento de una o más
variables aleatorias es necesario contar con un conjunto suficientemente grande de ri que permita, que la secuencia tenga al menos un periodo de vida de n=231 = 2141483648 (la cual resulta
relativamente pequeña).
Actualmente contamos con generadores y
procesadores capaces de construir una secuencia de ri con periodos de vida de n = 2200.
¿Para qué nos interesa construir una secuencia de números ri suficientemente grande?
Ejemplo:
Suponga un centro de atención a clientes en un
banco con 5 cajeros en paralelo, cada uno de los cuales atiende a 50 clientes diarios.
Para simular el tiempo de atención se requiere un generador de variable aleatoria en función de ri, por ejemplo, Ti= 5 + 2ri , expresado en minutos para toda i = 1, 2, 3, …, n.
Sin considerar el tiempo transcurrido desde la llegada de los clientes, serán necesarios 5 × 50 = 250 número ri para simular un día.
Si deseamos simular 5 días se necesitarían 250 × 5 = 1250 ri.
Para simular el correspondiente total de clientes atendidos durante 5 días considerando la ecuación de Ti se tiene que se requieren al menos 2500 números pseudo aleatorios ri para simular la operación del banco durante 5 días.
¿Y si lo que se desea es simular la operación del banco durante un año? ¿Cuántos números pseudo aleatorios es necesario generar? Además, los resultados no pueden basarse en una sola simulación
del sistema, por el contrario, es necesario realizar varias réplicas de la misma, corriendo cada una de ellas con números pseudo aleatorios diferentes.
Existen diferentes algoritmos determinísticos que
permiten obtener números pseudo aleatorios, mismos que deben ser sometidos a una variedad de pruebas para verificar si los números que conforman el conjunto son realmente independientes y uniformes.
El conjunto ri debe seguir una distribución uniforme
continua, la cual está definida por:
𝑓 𝑟 = 1, 0 ≤ 𝑟 ≤ 1
0, 𝑒𝑛 𝑐𝑢𝑎𝑙𝑞𝑢𝑖𝑒𝑟 𝑜𝑡𝑟𝑜 𝑣𝑎𝑙𝑜𝑟
Problemas que debemos evitar al generar números pseudo aleatorios
Que los números del conjunto ri no estén
uniformemente distribuidos, i.e., que haya demasiados ri en un subintervalo y en otro muy pocos o ninguno.
Que los números ri sean discretos en lugar de
continuos.
Que la media del conjunto sea muy alta o muy baja,
es decir, que esté por arriba o por debajo de 1/2.
Que la varianza del conjunto sea muy alta o muy
baja, es decir, que se localice por arriba o por debajo de 1/12.
Algoritmos determinísticos para generar r
i No congruenciales:
Cuadrados medios Productos medios
Multiplicador constante
Congruenciales:
Algoritmos congruenciales lineales:
Congruencial lineal
Multiplicativo
Aditivo
Algoritmos congruenciales no lineales.
Blum
Blum y Shub
Congruencial cuadrático
Algoritmo de cuadrados medios
No congruencial propuesto por Von Newmann y
Metropolis.
Requiere como entradas:
Una semila X0con D dígitos.
Un número que indica la cantidad de números pseudo aleatorios a
generar n.
Un número D que indica la cantidad de dígitos a utilizar.
Descripción:
Eleva al cuadrado la semilla para seleccionar los D dígitos del centro,
el primer número rise determina simplemente anteponiendo el “0.” a los dígitos seleccionados.
Para obtener el siguiente rise sigue el mismo procedimiento solo que
Algoritmo de cuadrados medios
Algoritmo de productos medios
Algoritmo no congruencial.
La diferencia entre este algoritmo y el de cuadrados medios
radica en que este algoritmo requiere dos semillas, ambas con D dígitos, y que en lugar de elevarlas al cuadrado, las semillas se multiplican y del producto se seleccionan los D dígitos del centro, los cuales formarán el primer número pseudo aleatorio ri = 0.D dígitos.
Después se elimina una semilla, y la otra se multiplica por
el primer número de D dígitos seleccionado, y así continua el algoritmo sustituyendo el número más antiguo que se utiliza en el producto para generar el siguiente número pseudo aleatorio.
Algoritmo de multiplicador constante
Algoritmo no congruencial, similar al algoritmo de
productos medios.
Utiliza una constante y una semilla para generar los
números pseudo aleatorios.
Algoritmo lineal
Algoritmo congruencial propuesto por D.H. Lehmer en 1951.
Genera una secuencia de números enteros por medio de la ecuación
recursiva:
𝑋𝑖+1 = 𝑎𝑋𝑖 + 𝑐 𝑚𝑜𝑑 𝑚 𝑖 = 0,1,2, … , 𝑛
X0 es la semilla, a es la constante multiplicativa, c es una constante
aditiva y m es el módulo; X0 >0, a>0, c > 0 y m>0 deben ser números enteros.
La ecuación anterior genera una secuencia de números enteros S =
{0,1,2,3,…,m-1}, y para obtener números pseudo aleatorios en el intervalo (0,1) se requiere la siguiente ecuación:
𝑟𝑖 = 𝑋𝑖
𝑚 − 1 𝑖 = 1,2,3, … , 𝑛
Algoritmo congruencial multiplicativo
Surge del congruencial lineal cuando c=0. La ecuación recursiva es:
𝑋𝑖+1 = 𝑎𝑋𝑖 𝑚𝑜𝑑 𝑚 𝑖 = 0,1,2,3, … , 𝑛
Todos los parámetros de entrada deben ser enteros y
mayores que cero.
Para transformar los números Xi en el intervalo (0,1) se usa
la ecuación:
𝑟𝑖 = 𝑋𝑖 𝑚 − 1
Para que este algoritmo alcance su máximo periodo deben
cumplirse las siguientes condiciones:
Algoritmo congruencial aditivo
Este algoritmo requiere una secuencia previa de n
números X1, X2, X3, …, Xn para generar una nueva secuencia de números enteros que empiezan en Xn+1, Xn+2, …
Su ecuación recursiva es:
𝑋𝑖 = 𝑋𝑖−1 + 𝑋𝑖−𝑛 𝑚𝑜𝑑 𝑚 𝑖 = 𝑛 + 1, 𝑛 + 2, … , 𝑁
Los números ri pueden ser generados mediante la
ecuación:
𝑟𝑖 = 𝑋𝑖 𝑚 − 1
Algoritmos congruenciales no lineales
Algoritmo congruencial cuadrático Tiene la siguiente ecuación recursiva:
𝑋𝑖+1 = 𝑎𝑋𝑖2 + 𝑏𝑋𝑖 + 𝑐 𝑚𝑜𝑑 𝑚 𝑖 = 0,1,2,3, … , 𝑁
En este caso los números ri pueden ser generados con la ecuación:
𝑟𝑖 = 𝑋𝑖 𝑚 − 1
Las condiciones que deben cumplir los parámetros m, a, b y c para
alcanzar un periodo máximo de N=m son:
Algoritmo de Blum, Blum y Shub
Si en el algoritmo congruencial cuadrático a=1, b=0
y c=0, entonces se construye una nueva ecuación recursiva:
𝑋𝑖+1 = 𝑋𝑖2 𝑚𝑜𝑑 𝑚 𝑖 = 0,1,2,3, … , 𝑛
La ecuación anterior fue propuesta por Blum, Blum y
Shub como un nuevo método para generar números que no tienen un comportamiento predecible.
Propiedades de los números pseudo aleatorios entre 0 y 1
¿De qué manera se puede garantizar que los
números que generamos empleando algunos de los algoritmos antes mencionados u otros son realmente aleatorios entre 0 y 1?
¿Cuáles son las características que los identifican?
¿Cuáles son sus parámetros?
Conocer las propiedades que deben tener estos números aleatorios garantiza una buena simulación.
Media
Debido a que los números deben tener la misma
probabilidad de presentarse, es preciso que su comportamiento muestre una distribución de probabilidad uniforme continua, con límite inferior cero y límite superior uno.
La función de densidad de una distribución uniforme
es la siguiente:
𝑓 𝑥 = 1
𝑏 − 𝑎 𝑎 ≤ 𝑥 ≤ 𝑏; 𝑒𝑛 𝑒𝑠𝑡𝑒 𝑐𝑎𝑠𝑜, 𝑎 = 0 𝑦 𝑏 = 1
Para obtener la media de la distribución multiplicamos la
función de densidad por x, y la integramos en todo el rango de la misma distribución usando la siguiente ecuación:
𝐸 𝑥 =
𝑎 𝑏
1
𝑏 − 1 𝑥 =
𝑥2
𝑏 − 𝑎 𝑎
𝑏
Sustituyendo los valores de a y b
𝐸 𝑥 = 1
2
Por tanto, la media de los números aleatorios entre 0 y 1 es
µ = 0.5.
Varianza
Partiendo de la misma distribución uniforme continua obtenemos la
varianza de la distribución por medio de la ecuación:
𝑉 𝑥 = 𝜎2 = 𝐸 𝑥2 − 𝜇2
𝐸 𝑥2 = 𝑎
𝑏 1
𝑏 − 1 𝑥
2 = 𝑥
3
3(𝑏 − 𝑎) 𝑎 𝑏
Sustituyendo tenemos que:
𝐸 𝑥2 = 1 3 Por tanto,
𝑉 𝑥 = 1
Dados los resultados anteriores podemos decir que
los números aleatorios entre 0 y 1 deben tener:
𝜇 = 1
2 y 𝜎
2 = 1
12
Independencia
Es una propiedad muy importante, e implica que los
números aleatorios no deben tener correlación entre sí, es decir, deben ser independientes, de manera que puedan dispensarse uniformemente dentro de todo el espectro de valores posibles.
Es posible realizar una serie de pruebas para
comprobar que no existe correlación entre los números aleatorios, e incluso para garantizar que no exista un sesgo o tendencia entre los dígitos de cada uno de ellos.
Pruebas estadísticas para los números pseudo aleatorios
Ya se vio que existen diversos algoritmos para generar
números ri, sin embargo, dicho conjunto debe ser sometido a una serie de pruebas para validar si los números que lo integran son aptos para usarse en un estudio de simulación.
Existen algunas pruebas estadísticas básicas que se
emplean generalmente para determina si un conjunto de números pseudo aleatorios entre cero y uno cumplen con las propiedades básicas de independencia y uniformidad. Su objetivo es validar que el conjunto ri realmente está conformado por números aleatorios.
Prueba de medias (1)
Una de las propiedades que deben cumplir los números del
conjunto ri es que el valor esperado sea igual a 0.5.
La prueba que busca determinar lo anterior es llamada
prueba de medias, en la cual se plantean las siguientes hipótesis:
𝐻0: 𝜇ri = 0.5 𝐻1 ∶ 𝜇ri ≠ 0.5
La prueba de medias consiste en determinar el promedio de
los n números que contiene el conjunto ri, mediante la ecuación siguiente:
___𝑟 = 1
𝑛 𝑖=1
𝑛 r
i
Prueba de medias (2)
Posteriormente se calculan los límites de aceptación
inferior y superior con las ecuaciones siguientes:
Bibliografía
Eduardo García Duna et al. (2006). Simulación y
análisis de sistemas con ProModel, Capítulo 2.