miércoles, 8 de marzo de 2017

Metodología de un Estudio de Simulación.


Metodología de un Estudio de Simulación.
En el desarrollo de una simulación se pueden distinguir las siguientes etapas (Banks et al., 1996):
· Formulación del problema: En este paso debe quedar perfectamente establecido el objeto de la simulación. El cliente y el desarrollador deben acordar lo más detalladamente posible los siguientes factores:
Los resultados que se esperan del simulador, el plan de experimentación, el tiempo disponible, las variables de interés, el tipo de perturbaciones a estudiar, el tratamiento estadístico de los resultados, la complejidad de la interfaz del simulador, etc. Se debe establecer si el simulador será operado por el usuario o si el usuario sólo recibirá los resultados. Finalmente, se debe establecer si el usuario solicita un trabajo de simulación o un trabajo de optimización.
· Definición del sistema: El sistema a simular debe estar perfectamente definido. El cliente y el desarrollador deben acordar dónde estará la frontera del sistema a estudiar y las interacciones con el medioambiente que serán consideradas.
· Formulación del modelo: Esta etapa es un arte y será discutida más adelante. La misma comienza con el desarrollo de un modelo simple que captura los aspectos relevantes del sistema real. Los aspectos relevantes del sistema real dependen de la formulación del problema; para un ingeniero de seguridad los aspectos relevantes de un automóvil son diferentes de los aspectos considerados por un ingeniero mecánico para el mismo sistema. Este modelo simple se irá enriqueciendo como resultado de varias iteraciones.
· Colección de datos: La naturaleza y cantidad de datos necesarios están determinadas por la formulación del problema y del modelo. Los datos pueden ser provistos por registros históricos, experimentos de laboratorios o mediciones realizadas en el sistema real. Los mismos deberán ser procesados adecuadamente para darles el formato exigido por el modelo.
· Implementación del modelo en la computadora: El modelo es implementado utilizando algún lenguaje de computación. Existen lenguajes específicos de simulación que facilitan esta tarea; también, existen programas que ya cuentan con modelos implementados para casos especiales.
· Verificación: En esta etapa se comprueba que no se hayan cometidos errores durante la implementación del modelo. Para ello, se utilizan las herramientas de debugging (Depuración) provistas por el entorno de programación.
· Validación: En esta etapa se comprueba la exactitud del modelo desarrollado. Esto se lleva a cabo comparando las predicciones del modelo con: mediciones realizadas en el sistema real, datos históricos o datos de sistemas similares. Como resultado de esta etapa puede surgir la necesidad de modificar el modelo o recolectar datos adicionales.
· Diseño de experimentos: En esta etapa se decide las características de los experimentos a realizar: el tiempo de arranque, el tiempo de simulación y el número de simulaciones. No se debe incluir aquí la elaboración del conjunto de alternativas a probar para seleccionar la mejor, la elaboración de esta lista y su manejo es tarea de la optimización y no de la simulación. Debe quedar claro cuando se formula el problema si lo que el cliente desea es un estudio de simulación o de optimización.
Experimentación: En esta etapa se realizan las simulaciones de acuerdo el diseño previo. Los resultados obtenidos son debidamente recolectados y procesados.
· Interpretación: Se analiza la sensibilidad del modelo con respecto a los parámetros que tienen asociados la mayor incertidumbre. Si es necesario, se deberán recolectar datos adicionales para refinar la estimación de los parámetros críticos.
· Implementación: Conviene acompañar al cliente en la etapa de implementación para evitar el mal manejo del simulador o el mal empleo de los resultados del mismo.
· Documentación: Incluye la elaboración de la documentación técnica y manuales de uso. La documentación técnica debe contar con una descripción detallada del modelo y de los datos; también, se debe incluir la evolución histórica de las distintas etapas del desarrollo. Esta documentación será de utilidad para el posterior perfeccionamiento del simulador.
Bibliografía: Teoría de Modelos y Simulación, Enrique Eduardo Tarifa

domingo, 5 de marzo de 2017

2.2.7 Algoritmos congruenciales no lineales

Algoritmos congruenciales no lineales 

Dentro de los algoritmos congruenciales no lineales se tiene el algoritmo congruencial cuadrático y el de Blum, Blum, y Shub. Algoritmo congruencial cuadrático Este algoritmo tiene la ecuación recursiva:

 ( )mod( ) 2 Xi+1 = a Xi + bXi + c m Con i = 0, 1, 2, 3,...,n 

En este caso, los números ir pueden ser generados por la ecuación −1 = m X r i i De acuerdo con L’Ecuyer, las condiciones que deben cumplir los parámetros m , a , b y c para alcanzar un período máximo de N = m son: m debe ser múltiplo de g 2 , donde g debe ser entero, a debe ser un número par, m debe ser un número impar, y (b −1)mod 4 = 1. De esta manera se logra un período de vida máximo N = m . 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: ( )mod( ) 2 Xi+1 = X
Resultado de imagen para algoritmos congruenciales no lineales

2.2.6 Algoritmo congruencial aditvo

Algoritmo congruencial aditivo 

Este algoritmo requiere una secuencia previa de n números aleatorios X X X X X n , , , ,... 1 2 3 4 para generar una secuencia de números enteros que empiezan en , , , ,... X n+1 X n+2 X n+3 X n+4 Su ecuación recursiva es: 

( )mod( ) Xi = Xi−1 + Xi−2 m Con i = n +1,n + 2,n + 3,..., N −1 = m X r i i 

Resultado de imagen para algoritmo congruencial aditivo

2.2.5 Algoritmo congruencial multiplicativo

Algoritmo congruencial multiplicativo 

El algoritmo congruencial multiplicativo surge del algoritmo lineal cuando c = 0 . Entonces la ecuación recursiva es: 

( )mod( ) Xi+1 = a Xi m Con i = 0, 1, 2, 3,...,n 

En comparación con el algoritmo congruencial lineal, la ventaja del algoritmo multiplicativo es que implica una operación menos a realizar. Los parámetros de arranque de este algoritmo son X0 , a y m , los cuales deben ser enteros y mayores que cero. Para transformar los números Xi en el intervalo (0, 1) se usa la ecuación: −1 = m X r i i Con 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 período son: 

m debe ser múltiplo de g 2 , donde g debe ser entero, a = 3 + 8k , donde k = 0, 1, 2, 3,... , X0 debe ser un número impar. Bajo estas condiciones se logra un período de vida máximo: 2 / 4 2 − = = g N k . 
Resultado de imagen para algoritmo congruencial multiplicativo

2.2.4 Algoritmo lineal

Algoritmo Lineal 
Este algoritmo congruencial fue propuesto por D. H. Lehmer en 1955. Según Law y Kelton, este algoritmo ha sido el más utilizado. El algoritmo congruencial lineal genera una secuencia de números enteros por medio de la siguiente ecuación recursiva: 

( )mod( ) Xi+1 = a Xi + c m Con i = 1, 2, 3,...,n 

Donde 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 operación “mod m ” significa multiplicar Xi por a , sumar c y dividir el resultado entre m para obtener el residuo Xi+1 . Es importante señalar que la ecuación recursiva del algoritmo congruencial lineal genera una secuencia de números enteros y que para obtener números pseudo aleatorios en el intervalo (0, 1) se requiere de la siguiente ecuación: 

−1 = m X r i i 

Con i = 1,2,3,...,n 

Para que el algoritmo sea capaz de lograr el máximo período de vida n , es preciso que los parámetros X0 , a , y m cumplan con ciertas condiciones. Banks, Carson, Nelson y Nicol sugieren lo siguiente: m debe ser múltiplo de g 2 , donde g debe ser entero, a = 1+ 4k , donde k debe ser entero y c debe ser relativamente primo a m . Bajo estas condiciones se obtiene un período de vida máximo: g N = m = 2

2.2.3 Algoritmo de multiplicador constante

Algoritmo de multiplicador constante

Este algoritmo no congruencial es similar al algoritmo de productos medios. 
Los siguientes son los pasos necesarios para generar números pseudo aleatorios con el algoritmo de multiplicador constante. 

1. Selecciona una semilla ( ) X0 con D dígitos (D > 3). 

2. Seleccionar una constante (a) con D dígitos (D > 3). 

3. Sea Y0 = a * X0 ; sea X1 = los D dígitos del centro y sea r1 = 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 ir deseados.
Resultado de imagen para algoritmo de multiplicador constante