miércoles, 22 de febrero de 2017

UNIDAD II: NÚMEROS PSEUDO ALEATORIOS

2.1 LOS NÚMEROS PSEUDO ALEATORIOS 

Para poder realizar una simulación que incluya variabilidad dentro de sus eventos, 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 esta construyendo.
Unas de las primeras tareas que es necesario llevar a cabo consiste en determinar si los números que utilizaremos para "correr" o ejecutar la simulación son realmente aleatorios o no; por desgracia, precisar lo anterior con absoluta certidumbre 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.

A pesar de lo anterior, podemos asegurar con altos niveles de confiabilidad que el conjunto de números que utilizaremos 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. Casi todas las aplicaciones comerciales tienen varios generadores de números pseudo aleatorios que pueden generar un conjunto muy de números sin mostrar correlación entre ellos.


2.2 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 de 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 aleatorias, tanto continúas 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 parámetros de arranque.
De acuerdo con L´Ecuyer una secuencia ri con periodo de vida n=2*31=2,147,483,648 es relativamente pequeña; de hecho, incluso una secuencia de ri que contenga un ciclo de vida n=2*64 se considera pequeña.
A continuación se mostrara la razón de por qué se requiere una secuencia de números ri suficientemente grande.
Suponga que queremos simular el tiempo de atención a clientes en un banco que tiene 5 cajeros en paralelo, cada uno de los cuales atiende aproximadamente 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 minutos para toda i=1, 2,3,…,n. simulamos el tiempo de atención de manera aislada, es decir, sin considerar el tiempo transcurrido desde la llegada de éstos, serán necesarios 5x50=250 números ri para simular un día; si deseáramos simular 5 días se necesitarían 2150x5=1250ri para simular el tiempo transcurrido desde la llegada al banco de los 250 clientes por día y 250x5=1250ri para simular el correspondiente al total de clientes atendidos durante 5 días. Por lo tanto se requerirían 2,500 números pseudo aleatorios ri para simular la operación del banco durante 5 días.
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. Retomando el ejemplo del banco, simular 5 días otra vez significa que necesitamos otros 2,500 números pseudo aleatorios den el intervalo (0,1). Se requerirían 5,000 ri para realizar la simulación del sistema con dos réplicas.
Una vez generado el conjunto ri mediante un algoritmo determinístico, es necesario someterlo a pruebas para verificar su los números son realmente independientes y uniformes; si las supera, podrá utilizarse en el simulación; de lo contrario, simplemente deberemos desecharlo.
Un conjunto de ri debe seguir una distribución uniforme continua, la cual está definida por:


Lo difícil es diseñar un algoritmo que genere un conjunto de ri con periodo de vida suficientemente grande (N) y que supere las pruebas de uniformidad e independencia; lo cual implica evitar:
·         Que los números de conjunto ri no estén uniformemente distribuidos, es decir, que haya demasiados ri en un subintervalo y en otro muy pocos o ninguno.
·         Que los números ri generados 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 del ½.
·         Que la varianza del conjunto sea muy alta o muy baja, es decir, que se localice por arriba o por debajo del 1/12.


2.2.1 Algoritmos de Cuadrados medios

Este algoritmo requiere un número entero detonador (llamado semilla) con D dígitos, el cual es elevado al cuadrado para seleccionar del resultado los D dígitos del centro; el primer número ri se determina simplemente anteponiendo el "0." a esos dígitos. Este método se repite hasta obtener n números ri

  • 1.    Seleccionar una semilla (X0) con D dígitos (D>3).
  • 2.    Sea X0 = resultado de elevar X0 al cuadrado; sea X1 = los D dígitos del centro, y sea ri = 0.D dígitos del centro.
  • 3.    Sea Yi = resultado de elevar Xi al cuadrado; sea Xi+1 = los D dígitos del centro, y sea ri = 0.D dígitos del centro para toda i = 1, 2, 3, ... , n.
  • 4.    Repetir el paso 3 hasta obtener los n números ri deseados.
  • 5.    Nota: Si no es posible obtener los D dígitos del centro del número Yi, agregue ceros a la izquierda del número Yi.  



Ejemplo:
Generar los primeros 5 números ri a partir de las semillas X0 = 5015 y X1 = 5 734; observe que ambas semillas tienen D = 4 dígitos.
Solución:

Y0=(5735)2=32890225
Y1=(8902)2=79245604
Y2=(2456)2=06031936
Y3=(0319)2=101 761
Y4=(0176)2= 030976
X1 = 8 902
X2 = 2 456
X3 = 0319
X4 = 0176
X5 = 3 097
r1 = 0.8902
r2 = 0.2456
r3 = 0.0319
r4 = 0.0176
r5 = 0.3097


El algoritmo de cuadrados medios generalmente es incapaz de generar una secuencia de ri con periodo de vida n grande. Además, en ocasiones sólo es capaz de generar un número, por ejemplo, si X0 = 1000, entonces X1 = 0000; ri = 0.000 y se dice que el algoritmo se degenera  con la semilla de X0 = 1 000.


2.2.2 Algoritmos de Productos Medios


La mecánica de generar números pseudo aleatorios de este algoritmo no congruencial se define de la siguiente manera:
  • Se requiere de dos números semillas, ambas con D dígitos
  • Las semillas se multiplican y del producto se seleccionan los D dígitos del centro aquí se forma el primer número pseudo aleatorio ri=0
  • Se elimina una semilla y la otra se multiplica por el primer número de D dígitos, para luego seleccionar del producto los D dígitos que conformaran el segundo número ri.
  • Se elimina la segunda semilla y se multiplican el primer número de D dígitos por el segundo número de D dígitos; de este producto se obtiene el tercer número ri.

Siempre se ira eliminando el número más antiguo, y el procedimiento se repetirá hasta generar los n números pseudo aleatorios.

Nota: si no es posible obtener los D dígitos del centro agregue números a la izquierda del mismo.



Ejemplo
Generar los primeros 5 números ri a partir de las semillas X0 = 5015 y X1= 5734; observe que ambas semillas son de D= 4 dígitos.
Solución:
Y0= (5015) (5734) = 28 756 010   X2=7560   r1= 0.7560
Y1= (5734) (7560) = 43 349 040   X3= 3490  r2=0.3490
Y2= (7560) (3490) = 26 384 400   X4= 3844   r3=0.3844
Y3= (3490) (3844) = 13 415 560   X5= 4155   r4= 0.4155
Y4= (3844) (4155) = 15 971 820   X6= 9718   r5=0.9718


2.2.3 Algoritmo del multiplicador constante

Este algoritmo no congruencia es similar al algoritmo de productos medios. Los pasos necesarios para generar un número pseudoaleaotoria con este algoritmo son:
1.       Seleccionar una semilla (X₀) con D dígitos (D>3)
2.       Seleccionar una constante (a ) con D dígitos (D>3)
3.       Sea y₀=a*X₀; sea X₁= los D dígitos del centro y sea ri=0. D dígitos del centro
4.       Sea yi=a*Xi; sea Xi+1= los D dígitos del centro, y sea ri+1=0. D dígitos del centro para toda i= 1, 2, 3, …, n

5.       Repetir el paso 4 hasta obtener  los n números ri deseados.

2.2.4 Algoritmo lineal


Este algoritmo congruencial fue propuesto por D. H. Lehmer en 1951. Según Law y Kelton, este algoritmo ha sido el más usado. El algoritmo congruencial lineal genera una secuencia de números enteros por medio de la siguiente ecuación recursiva:
Xᵢ₊₁=(aXᵢ+c)mod(m)           i=0,1,2,3,…,n
Donde X0= Semilla
A= Constante multiplicativa
C= Constante aditiva
M= Modulo



2.2.5 Algoritmo congruencial 

multiplicativo


El algoritmo congruencial multiplicativo surge del algoritmo congruencial lineal cuando C=0. Entonces la ecuación recursiva es:
Xᵢ₊₁=(aXᵢ)mod(m)        i=0,1,2, 3,…,n
De acuerdo con Banks, Carson, Nelson y Nicol las condiciones que deben cumplir los parámetros para que el algoritmo congruencial multiplicativo alcance su máximo periodo son:
M=2ᵍ
A=3+8k   o a=5+8k
K=0,1,2,3…
X0 debe ser un número impar
G debe sr entero

2.2.6 Algoritmo congruencial aditivo


En este algoritmo requiere una secuencia previa de n números enteros X1, X2, X3, X4,…, Xn para generar una nueva secuencia de números enteros que empiezan en Xn+1, Xn+2, Xn+3, Xn+4,…, Xn+n.
Su ecuación recursiva es:
Xᵢ= (Xᵢ₋₁+Xᵢn)mod(m)      i=n+1, n+2, n+3,…,N



2.2.7 Algoritmos congruenciales no 

lineales


Se analizan dos algoritmos congruenciales no lineales:
·         Algoritmo congruencial dramático: Este algoritmo tiene la siguiente ecuación recursiva
Xi+1=(aX²ᵢ+bXᵢ+c)mod(m)        i=0,1,2,3,…,N
En este caso os números rᵢ, pueden ser generados por: rᵢ=Xᵢ/(m-1)
M=2ᵍ
A debe ser un numero par
C debe ser número impar
G debe ser numero entero
(b-1) mod=4

·         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:
X²ᵢ)mod(m)   i=0,1,2,3,…,n




Link de ejercios: https://drive.google.com/open?id=0B9XIpzwZmrNRWjNrLU1WZUxNa28



BIBLIOGRAFIA:
García. E., García. H., Cárdenas. L. (2006), Simulacoón y análisis de sistemas con Promodel, México, PEARSON Educación.

No hay comentarios:

Publicar un comentario