El Método de Montecarlo es un
método probabilístico, en contraposición de los métodos determinísticos ya que incorpora múltiples
simulaciones de resultados con la variabilidad de elementos individuales para
producir una distribución de resultados potenciales. Para cada simulación, la
herramienta de simulación Montecarlo escoge al azar un valor para cada evento
de riesgo dentro de su rango de valores posibles, pero de acuerdo con la
probabilidad de ocurrencia de cada uno de éstos. Luego se combinan los valores
escogidos al azar para generar un solo resultado para una simulación. Este
proceso se repite un cierto número de veces (típicamente más de 1,000
iteraciones), y se produce un rango de resultados potenciales igualmente
probables.
La
invención del método de Monte Carlo se asigna a Stanislaw Ulam y a
John von Neumann. Ulam ha explicado cómo se le
ocurrió la idea mientras jugaba un solitario durante una enfermedad en 1946.
Advirtió que resulta mucho más simple tener una idea del resultado general del
solitario haciendo pruebas múltiples con las cartas y contando las proporciones
de los resultados que computar todas las posibilidades de combinación
formalmente. Se le
ocurrió que esta misma observación debía aplicarse a su trabajo de Los Álamos
sobre difusión de neutrones, para la cual
resulta prácticamente imposible solucionar las ecuaciones íntegro-diferenciales
que gobiernan la dispersión, la absorción y la fisión. “La idea consistía en
probar con experimentos mentales las miles de posibilidades, y en cada etapa,
determinar por casualidad, por un número aleatorio distribuido según las
probabilidades, qué sucedería y totalizar todas las posibilidades y tener una
idea de la conducta del proceso físico”.
Stalislaw Ulan, Richard Feynman y Jonh von Newman en los Alamos |
Durante una de las visitas
de von Neumann a Los Álamos en 1946, Ulam le mencionó el
método. Después de cierto escepticismo inicial, von Neumann se entusiasmó con
la idea y pronto comenzó a desarrollar sus posibilidades en un procedimiento
sistemático. Ulam
expresó que Monte Carlo “comenzó a tener forma concreta y empezó a
desarrollarse con todas sus fallas de teoría rudimentaria después de que se lo
propuse a Johnny”.
A principios de 1947 Von
Neumann envió una carta a Richtmyer a Los Álamos en la que
expuso de modo influyente tal vez el primer informe por escrito del método de
Monte Carlo. Su carta fue encuadernada junto con la respuesta de Richtmyer como un informe de Los
Álamos y distribuida entre los miembros del laboratorio. Von
Neumann sugería aplicar el método para rastrear la generación isótropa de
neutrones desde una composición variable de material activo a lo largo del
radio de una esfera. Sostenía que el
problema era adecuado para el ENIAC y estimaba que llevaría 5 horas calcular la
acción de 100 neutrones a través de un curso de 100 colisiones cada uno.
http://en.wikipedia.org/wiki/Manhattan_Project |
¿Quién
usa la simulación Monte Carlo?
Muchas empresas utilizan la
simulación de Monte Carlo como una herramienta importante para la toma de
decisiones. He aquí algunos ejemplos .
General
Motors, Procter and Gamble y Eli Lilly usan la simulación para estimar tanto la rentabilidad media y el grado de
riesgo de nuevos productos. En GM , esta
información es utilizada por el CEO Rick Waggoner para determinar los
productos que llegan al mercado .
GM utiliza la simulación
para actividades tales como la previsión de los ingresos netos de la
corporación , la predicción
de los costes de estructura
y los
costos de compra , la determinación
de su susceptibilidad a diferentes tipos de riesgo (por ejemplo, cambios
en las tasas de interés y las fluctuaciones
del tipo de cambio).
Lilly utiliza la simulación
para determinar
la capacidad óptima de la
planta que debe ser construida para cada fármaco.
Firmas de Wall Street
utilizan la simulación de precios derivados financieros complejos y determinar
el valor en riesgo (VAR) de sus carteras de inversión.
Los cuatro pasos del método de Monte Carlo :Dependiendo del número de
factores implicados, las simulaciones pueden ser muy complejas. Pero en un
nivel básico, todas las simulaciones de Monte Carlo tienen cuatro sencillos
pasos.
1 Identificar
la función de transferencia:
Para hacer una simulación
de Monte Carlo, se necesita un modelo cuantitativo de la actividad empresarial,
plan o proceso que desea explorar. La expresión matemática de su proceso se
llama la “función de transferencia." Esta puede ser una función de ingeniería
o fórmula de negocio, o puede basarse en un modelo creado a partir de un
experimento diseñado (DOE) o a partir de análisis de regresión.
Cualquier sistema físico puede ser representado como un conjunto de entradas y salidas. Ante una excitación en la entrada existirá una reacción de la salida. |
2 Definir los parámetros de entrada:
Para cada factor en la
ecuación de transferencia, determinar cómo se distribuyen los datos. Algunas
entradas pueden seguir una distribución normal, mientras que otros siguen una
distribución triangular o uniforme. A continuación, deberá determinar la distribución
de los parámetros para cada entrada. Por ejemplo, tendremos que especificar la
media y la desviación estándar para las entradas que siguen una distribución normal.
3.
Crear datos aleatorios:
Para hacer la simulación válida, es necesario crear
un conjunto muy grande de datos aleatorios
para cada entrada, del orden de 100 000 datos. Estos puntos de
datos aleatorios simulan los valores que se vería a lo largo de
un largo período de tiempo para cada entrada.
4.
Simular y analizar el proceso de salida:
Con la simulación de datos
en su lugar, utilizaremos la ecuación de transferencia para calcular los resultados
simulados. La ejecución de una gran cantidad de datos de entrada
simuladas a través del modelo nos dará una indicación fiable
de lo que será el proceso de salida con el tiempo, dada la
variación esperada en las entradas.
Un generador
de números aleatorios es un dispositivo
informático o físico diseñado para producir secuencias de números sin un orden aparente. Los algoritmos para la
generación de valores uniformemente distribuidos están presentes en todas las
calculadoras y lenguajes de programación, y suelen estar basados en
congruencias numéricas del tipo:
x_{n+1}
\equiv (ax_n+c)\pmod m
El éxito de este tipo de
generadores de valores de una variable aleatoria depende de la elección de los
cuatro parámetros que intervienen inicialmente en la expresión anterior:
El valor inicial o semilla:
x_0
La constante
multiplicativa: a
La constante aditiva: c
El número m respecto al
cual se calculan los restos
Estos cuatro valores deben
ser números enteros no negativos y que cumplan la siguiente condición: x_0 , a
, c < m.
La mayor parte de los generadores de números aleatorios son, en realidad, pseudoaleatorios; se calcula (o introduce
internamente) un valor x0, que llamaremos semilla, y, a partir de él, se van
generando x1, x2, x3, ... Siempre que se parta de la misma semilla, se obtendrá
la misma secuencia de valores.
EL
MÉTODO MERSENNE TWISTER O MT19937 Y MT19937-64: Este es un algoritmo
propuesto en 1997 por Makoto Matsumoto y Takuji Nishimura. Este generador de números
pseudoaleatorios se ensambla muy bien a
cualquier aplicación creada en lenguaje de programación C, y tiene dos
versiones: una conocida como mt19937 que se emplea en aplicaciones informáticas
que trabajan con 32 bits, y otra versión conocida como mt19937−64 que se emplea
en aplicaciones que funcionan con 64 bits.
El algoritmo para operar no
utiliza multiplicaciones ni divisiones, sino operaciones aritméticas muy
sencillas (sumas y restas), que rápidamente son calculadas por cualquier equipo
de cómputo moderno. Para lograr sus resultados el Mersenne Twister emplea 4.357 números
iniciales (números−semilla), que son organizados dentro de una matriz lineal
con un finito campo binario para dar arranque al algoritmo, generando así
números pseudoaleatorios debidamente equidistribuidos.
CRYPTOGENRANDOM: Excel utiliza un algoritmo
especialmente diseñado para el sistema operativo Windows conocido como «CryptGenRandom», el cual está presente no
sólo en esta función de Excel sino también en el funcionamiento de otras
utilidades y accesorios del sistema operativo Windows. Se sabe que el CryptGenRandom en verdad emplea un
algoritmo muy sencillo para funcionar, pero la verdadera incertidumbre sobre
los resultados pseudoaleatorios que generará se basa en
que en cada ocasión emplea como números−semilla la medición de ciertos inputs
introducidos por el usuario desde el teclado o desde el mouse, es decir, se
trata de un Physical RNG que toma sus valores
iniciales de la medición de un fenómeno físico muy fluctuante basado en la
conducta del usuario.
BULL MOUNTAIN: es el nombre en
clave de la nueva tecnología de generación de números aleatorios de Intel. ¿Por qué es tan
importante? Los números aleatorios son necesarios para el cifrado eficaz y
generadores de números aleatorios débiles son el talón de Aquiles de la
seguridad de los datos.
El cifrado es un elemento
crucial de la seguridad informática y de red. Los datos se cifran para evitar
que se accede o vistos por usuarios no autorizados. El tráfico entre un PC y un
sitio web se codifica para garantizar la información sensible como contraseñas
o información de tarjetas de crédito no son interceptados en tránsito.
El error fatal de cifrado
es que se basa en el azar para generar las claves de cifrado fuertes, pero las
computadoras no son al azar. Los unos y ceros que rebotan alrededor del PC y de Internet son
fundamentalmente predecibles.
Conclusiónes: la actual potencia de cómputo
permite que incluso los algoritmos más complejos empleados en los randomizer funcionen a velocidades
inimaginables dentro de un PC, pero sin que los resultados pseudoaleatorios generados se vuelvan
predecibles. Basta tener en cuenta que un PC con un procesador Multi-Core que funcione a 3 GHz puede
procesar cerca de diez mil millones de operaciones de punto flotante por
segundo (10 Gigaflops), y si el algoritmo de un
modesto randomizer está diseñado para tener
un Loop o periodo que se reinicia
y se repite después de que han aparecido 1020 resultados pseudoaleatorios, entonces se necesita que
ese PC esté funcionando 24 horas al día durante 317 años continuos para poder
completar el Loop repetitivo y volver a
reiniciarlo.
Excel, al tener implementada la
función CryptGenRandom, parece ser la mejor
opción disponible para estructurar y ejecutar simulaciones de Monte Carlo. Es
una opción barata y altamente fiable plagada de funciones estadísticas,
matemáticas y de ingeniería.
La
parte mas compleja, y la que requieren profundos conocimientos específicos, es
el describir bien las funciones de transferencia que definen con la mayor
precisión posible a nuestro modelo. El resto es relativamente simple y
accesible.