Curso 2009/2010

Lenguajes de Simulación

Prácticas de Laboratorio
Jueves, 16:00 - 19:00 (Lab. 1L001)

Una Visión Práctica de la Simulación Orientada a Eventos Discretos

La simulación es una técnica que trata de imitar las propiedades de un determinado sistema real. Esto es, para realizar una buena simulación es imprescindible tener un muy buen conocimiento del sistema que se desea modelar, dado que la simulación plantea una aproximación a dicho sistema. Por tanto, un modelo de simulación representa la estructura de un sistema real y modela su comportamiento dinámico de acuerdo a una caracterización matemática de cada uno de los procesos que pueden identificarse en dicho sistema. La simulación puede ser catalogada de acuerdo a cómo se gestiona el tiempo:

  • Simulación continua, basada en ecuaciones matemáticas, define un intervalo temporal continuo, lo que significa que todo los puntos localizables en el tiempo de simulación son considerados en la misma.
  • La simulación orientada a eventos discretos, que es la que vamos a estudiar en esta asignatura, plantea un número finito de instantes relevantes para la simulación. Esto significa que el reloj de simulación salta entre esos determinados momentos que serán aquellos en los que se produzca un evento relevante para el sistema. Supongamos que estamos modelando una estación de servicio, el tiempo de simulación pararía en el momento n1 en el que llega el automóvil, y la simulación continuaría en el momento n2 en el que llega el siguiente automóvil que precisa de servicio.

La simulación forma parte de la vida cotidiana: se plantea el uso de simulación en la evaluación de alternativas (por ejemplo una cadena de montaje en la que se plantea la posibilidad de añadir un nuevo dispositivo), mejora de las instalaciones (podemos descubrir cuellos de botella en diferentes procesos y de acuerdo a ello actuar para eliminarlos), se utiliza para la gestión de personal, inventarios... y los entornos en los que se utiliza son de naturaleza variada: almacenes, sistemas de producción, hospitales, restaurantes... Un proceso de simulación se caracteriza de forma iterativa por un conjunto de etapas:

  1. Caracterización del problema a representar. Conocer muy bien el sistema que queremos simular nos ayuda a su caracterización y, por consiguiente, a describir las situaciones que queremos analizar mediante el proceso de simulación. Esta etapa es la única que se lleva a cabo fuera del bucle, dado que el problema se caracteriza una única vez.
  2. Definición detallada del modelo de simulación tanto desde las perspectiva estructural como cada uno de los procesos que se dan en el sistema.
  3. Definición de los valores de las variables y parámetros que definen el sistema. Por un lado, las variables se inicializan, al principio de la simulación, a un determinado valor que puede ser modificado durante la misma (de acuerdo a las propiedades del sistema). Por otro lado, el valor de los parámetros se mantiene constante a lo largo de la simulación. Sin embargo, dicho valor puede ser modificado en las diferentes réplicas que se lleven a cabo del proceso con el fin de evaluar las diferentes alternativas que se intenten medir en el sistema.
  4. Ejecución de la simulación.
  5. Recogida y evaluación de los resultados.
  6. Antes de la extracción de conclusiones, se debe utilizar los resultados como mecanismo de validación del modelo utilizado.
  7. Análisis de los resultados y evaluación de la necesidad de una nueva simulación en la que podría requerirse la actualización del modelo y/o la actualización de los valores iniciales de parámetros y variables, así como las funciones que definen la asignación dinámica de valores a éstas últimas. Esta etapa plantea, por tanto, la decisión de si continuar una nueva iteración del bucle de simulación, o por el contrario finalizarla.

Caracterización del problema. Para llevar a cabo un proceso de simulación es necesario conocer en profundidad el sistema que se va a modelar y, a partir de él, definir exactamente la problemática que se desea afrontar , y por tanto las conclusiones que pueden ser extraídas de la misma. Es necesario conocer con exactitud el estado actual del sistema e identificar todas aquellas variables de comportamiento que lo definen, tanto las controlables como las no controlables. Finalmente, es necesaria una definición exhaustiva de los objetivos que se pretenden conseguir con la simulación.

Definición detallada del modelo de simulación. Una vez caracterizado el problema, a partir del sistema que va a ser simulado, es necesario plantear un modelo específico que lo imite lo mejor posible. Se debe considerar que no existe un modelo universal que resuelve todos los problemas, sino que cada problema requiere un planteamiento específico y detallado. Por lo tanto, podemos definir un modelo de simulación como una abstracción del sistema real que se dispone. Dentro de este modelo se pueden plantear simplificaciones que faciliten la consecución de un modelo analíticamente manejable, pero sin perder de vista, que cada una de estas simplificaciones alejan el modelo representado del sistema real. Aún así, las respuestas que obtendremos serán exactas para el modelo de simulación, pero hay que tener especial cuidado ya que éste no es el sistema real, y por lo tanto serán respuestas exactas a la imitación del mismo que define el modelo. Este último hecho es muy importante de cara al análisis final de los resultados obtenidos y de cómo estos se traducen en el sistema real.

En primer lugar, se determina que propiedades del sistema son fijas y cuales variables. El valor de las primeras (parámetros), no puede modificarse a lo largo de la simulación, aunque sí en diferentes réplicas de la misma. Por el contrario, las variables poseen un valor dinámico que se actualiza a lo largo de la simulación de acuerdo a la distribución de probabilidad que define su comportamiento. Estas distribuciones pueden ser establecidas de forma empírica, a partir de los datos extraídos directamente del sistema real, o infiriéndola, a partir de las distribuciones matemáticas típicas o mediante contrastes de hipótesis. Las normas de decisión definen las condiciones bajo las cuales se observa el comportamiento del sistema cuyo tiempo de simulación puede avanzar de forma expandida o comprimida.

Definición de los valores de las variables y parámetros que definen el sistema. Como se planteaba anteriormente, una variable es una propiedad del sistema cuyo valor cambia a lo largo de la simulación. La utilización de una variable en un modelo de simulación requiere la asignación de un valor inicial; en algunos casos, este valor es asignado como una raíz de un número aleatorio, de tal forma que la evolución del valor de la variable se maneja a través de una determinada distribución estadística. Por su parte, el valor de un parámetros es fijo a lo largo de la simulación, aunque puede ser modificado en diferentes réplicas de la misma. Esto facilita la posibilidad de estudiar diferentes alternativas para las propiedades de un determinado elemento que forma parte del sistema simulado.

La determinación de las condiciones iniciales de un experimento son muy importantes a la hora de llevar a cabo una simulación, dado que muchos sistemas pueden requerir de un tiempo previo para alcanzar las condiciones que definen su funcionamiento estacionario. Dependiendo del objetivo de la simulación, se puede plantear un tiempo inicial hasta que el sistema alcanza su funcionamiento normal, o por el contrario, el objetivo de la simulación puede ser analizar ese tiempo previo necesario para alcanzar sus condiciones estacionarias.

Finalmente, justo antes de comenzar la simulación, es necesario definir la duración del experimento. Como se planteaba anteriormente, el objetivo puede ser alcanzar las concisiones que definen el funcionamiento estacionario del sistema. Por otro lado, se puede pretender una simulación durante un periodo temporal fijo, y una vez transcurrido éste analizar si el estado final del sistema es razonable o si los resultados permiten llevar a cabo un contraste de hipótesis sobre las conclusiones extraídas del sistema real.

Ejecución de la simulación. Este paso se delega en la herramienta software elegida para la implementación del modelo de simulación diseñado. El grueso de este curso se centra en el estudio de diferentes mecanismos para el diseño y ejecución de modelos reales de simulación orientada a eventos discretos.

Recogida y evaluación de los resultados. Las conclusiones que se pueden extraer de un experimento de simulación dependen, directamente, del rigor con el que se haya representado el sistema real sobre el modelo de simulación. La evaluación de los resultados puede llevarse a cabo mediante pruebas de inferencia estadística, utilizando datos operativos del propio sistema real o datos operativos de sistemas similares; éste último caso se lleva a cabo, principalmente, en aquellas situaciones en las que el sistema simulado no existe previamente y se está analizando su viabilidad para un propósito determinado.

Validación del modelo. Llegados a este punto, se debe validar que el modelo programado representa el flujo real que define el sistema que se está simulando. Este proceso requiere de la detección de errores de programación (que habrán sido informados al momento de llevar a cabo la simulación) y/o errores en la lógica del modelo, más difíciles de detectar ya que la simulación se lleva a cabo correctamente, pero los resultados obtenidos no son correctos respecto al sistema real. El software de simulación actual facilita estas tareas al permitir la construcción del modelo de forma interactiva. Aún así, y con el fín de observar la gran aportación de este tipo de software, observaremos posteriormente la dificultad de realizar un modelo de simulación sobre otros tipos de desarrollos software no completamente orientados a la simulación. Las conclusiones a extraer, en este paso del proceso de simulación, es si éste es representativo del sistema que estamos modelando y de los objetivos que estamos persiguiendo.

Análisis de los resultados. Finalmente llegamos al punto de decisión de si son necesarias más réplicas del proceso de simulación. Se debe considerar que todas las etapas anteriores (a excepción de la primera) se encuentran dentro de un proceso iterativo en el que la etapa actual representa la etapa de decisión. Si se decide no continuar (dado que los resultados obtenidos satisfacen los propósitos de la simulación) el proceso finalizaría aquí y debería ser documentado de tal manera que facilite el diseño, evolución y mantenimiento del sistema. En el caso contrario, la simulación volvería a ser repetida, al menos, una vez más. En primer lugar se analizan las reglas de decisión del modelo, siempre que la simulación anterior haya arrojado unos resultados pobres. También se deben analizar las condiciones iniciales, tanto en lo que respecta al valor de los parámetros (que pueden ser modificados para la réplica actual) como a los de las variables y sus funciones de distribución. Una consideración importante es la de no modificar el flujo de números aleatorios utilizado en la réplica anterior, dado que esto imposibilitaría su compaación. Además, se puede considerar la realimentación del sistema con los resultados obtenidos en la simulación anterior, siempre que estos resultados hayan sido considerados como representativos del sistema real.

El conjunto de etapas anterior representa un proceso de simulación, cuya utilización plantear unas ventajas importantes cuando es utilizado ante ciertos propósitos:

  • La simulación es una técnica sencilla y flexible.
  • Facilita la comprensión del sistema real sin interrumpir su funcionamiento habitual (en el caso de representar un sistema que existía previamente).
  • Un modelo de simulación es mucho más general que un modelo matemático diseñado para el mismo efecto, y al mismo tiempo ofrece una representación más realista.
  • La simulación permite gestionar el tiempo de forma específica. Se puede plantear de forma que los eventos que se desarrollan muy rápidamente en la realidad se produzcan de forma expandida en el tiempo de simulación o, por el contrario, puede llevarse a cabo una simulación de un espacio temporal grande en un tiempo contraído y representable en un espacio temporal pequeño.
  • Finalmente, la simulación nos permite, ante el modelo representado, plantear preguntas del tipo ¿qué ocurre sí? facilitando la gestión de riesgos y el conocimiento de eventuales situaciones que puedan darse en el sistema real.

Aún así, la simulación no es una técnica universal que pueda ser utilizada de forma generalizada:

  • La definición de un modelo adecuado para la simulación de un sistema puede ser profundamente costosa en tiempo y recursos.
  • La simulación no es una técnica de optimización.
  • Los resultados obtenidos depende, en gran medida, de los datos utilizados como entrada.
  • Finalmente, cada modelo de simulación es único para un determinado sistema, de manera que las conclusiones que se extraiga de él no son extrapolables a otros problemas.

El objetivo de este curso es estudiar el uso de diferentes herramientas computacionales para afrontar el problema de la simulación orientada a eventos discretos. Consideraremos tres tipos diferentes de técnicas:

  • La simulación puede ser programada directamente con un lenguaje de alto nivl como C, BASIC o FORTRAN. En la asignatura veremos un ejemplo sencillo de programación en C con el fin de mostrar la complejidad que supone utilizar una herramienta tan general como un lenguaje de programación para el modelado de una simulación.
  • También evaluaremos el uso de librerías específicas para simulación construidas sobre lenguajes de alto nivel. Esto nos va a permitir instanciar, en el contexto anterior, utilidades básicas para la construcción y ejecución de un modelo de simulación simplificando notablemente el coste de desarrollo. Estudiaremos algunos ejemplos construidos con SimJava con el objetivo de observar las diferencias existentes respecto al contexto anterior y, también, con el siguiente.
  • La parte final de la asignatura se centra en el estudio de una herramienta visual específicamente diseñada para propósitos de simulación: Arena. El objetivo principal es el de familiarizarnos con este tipo de herramientas y dominar sus propiedades básicas para el diseño, implementación y estudio de un caso práctico de simulación que definirá el trabajo final de la asignatura. utilizarlo de cara a la solución de diferentes objetivos sobre un sistema

Los contenidos que se desarrollarán en esta parte de la asignatura pueden ser accedidos a través de los siguientes enlaces:

[·] Programa de las prácticas
[·] Introducción a la simulación por ordenador

[·] Simulación con lenguajes de alto nivel
[·] Ejemplo de simulación en C (código fuente)
[·] Librerías orientadas a la simulación para su uso en lenguajes de alto nivel (SimJava)
[·] Página oficial de SimJava

[·] Introducción a la simulación con Arena
[·] Enunciado de la Práctica