INTRODUCCION A LA SIMULACION.

Juan Antonio del Valle F.

La simulación, en general, pretende tratar algo real cuando realmente trabaja con una imitación. En Ingeniería de Sistemas esa imitación es un modelo computacional de la realidad simulada. Un simulador de vuelo sobre una PC es un modelo computacional de algunos aspectos del vuelo muestra sobre la pantalla los controles y aquello que el "piloto" supuestamente puede observar desde su "cabina".

¿Porqué usar modelos?

El volar en un simulador es más seguro y más barato que hacerlo sobre un avión real. Precisamente por esta razón los modelos son usados en el comercio, la industria y la milicia; es muy costoso, peligroso y a menudo imposible, hacer experimentos sobre los sistemas reales. Dado que los modelos son fieles descripciones de la realidad, experimentando con ellos se tienen ahorros de dinero y tiempo.

¿Cuándo usar simulación?

Los sistemas cambian con el tiempo tal como sucede con una estación de gasolina donde coches vienen y van (es un sistema dinámico) e implica aleatoriedad (nadie puede conjeturar la hora exacta en que debe llegar a la estación el siguiente automóvil), siendo un buen ejemplo típico para hacer simulación. Modelar sistemas dinámicos complejos teóricamente necesita muchas simplificaciones y los modelos resultantes pueden no ser válidos por lo tanto. La simulación no requiere de muchas simplificaciones a los supuestos, haciéndolo solamente se crea una herramienta llana, ausente de aleatoriedad.

¿Cómo simular?

Suponga que estamos interesados en la operación de una gasolinera. Podemos describir gráficamente el comportamiento de este sistema trazando en una gráfica el número de carros en la estación, el estado del sistema. Cada vez que un automóvil llega, la gráfica se aumenta en una unidad, mientras que cuando sale un automóvil, hace caer a la gráfica en una unidad. Esta gráfica, llamada camino de la muestra, podría ser obtenida por observación de una estación verdadera, pero podría también ser artificialmente construida. Tal construcción artificial y el análisis del camino muestral resultante (o más caminos muestrales, en casos más complejos) es parte de la simulación.

Tipos de simulación:

Para eventos discretos. Para el ejemplo de la Gasolinera, el camino de la muestra consistiría solamente de líneas verticales y horizontales, como llegadas y salidas de automóvil ocurridas en distintos puntos del tiempo, es lo qué referimos como eventos. Entre dos tiempos consecutivos nada sucede, la gráfica es horizontal. Cuando el número de eventos es finito, llamamos a la simulación de eventos discretos.

Para eventos Continuos. En algunos sistemas el estado cambia todo el tiempo, no como con el caso de algunos eventos discretos. Por ejemplo, el nivel del agua en un depósito con entradas y salidas dadas puede cambiar todo el tiempo. En tales casos una simulación continua es más apropiada, aunque la simulación de eventos discretos puede servir como aproximación.

¿Cómo se hace la simulación?

Las simulaciones se pueden realizar manualmente. Más a menudo, sin embargo, el modelo del sistema se puede escribir en código de computadora o como un proceso de captura que servirá de entrada a un software simulador. Corriendo el apropiado programa suministra los caminos muestrales y sus análisis.

Tipos de Software para la simulación.

Simulación puede ser realizada de varias formas: sobre una hoja de cálculo, ejecutando un programa de computadora escrito en algún lenguaje general, tal como C++, ejecutando un programa de computadora escrito en algún lenguaje especial para la simulación, ejecutando simuladores especialmente construidos con entradas de información apropiada. Ahora consideramos a cada uno por separado.

La Simulación con hojas de cálculo es la forma más simple: Las hojas de cálculo no siempre se pueden utilizar generalmente para la simulación, generalmente se usa con un dispositivo suplementario implicado, add-in.

Simulación escrita en lenguajes generales: Este es el método más flexible y también, según algunos autores, es el elegido más a menudo. Este es también probablemente el mejor método si la simulación es justamente un componente de un sistema más grande o cuando exista una considerable cantidad de procesamiento de los datos implicados. El problema aquí no es escribir sólo un poco del código sino pensar que la simulación  puede ser un proyecto muy largo. Sin embargo, con una buena librería de simulación y un programa básico, la inversión de tiempo necesaria puede ser reducida al mínimo.

Simulación escrita en lenguajes especiales para simulación: existen lenguajes especiales para simulación. Su desventaja es que, sí el problema no cae exactamente en la categoría, para la que esos lenguajes fueron diseñados, es muy difícil si no imposible, escribir un adecuado programa.

Simuladores de propósito especial son los más inflexibles programas: trabajan solo en un campo específico y regularmente no pueden tratar con todas las tareas, solo aquellas para las que fueron destinados.

Glosario Básico para la simulación.

Los siguientes términos son útiles para construir un software de simulación:

Estado: variable caracterizando al sistema; como el nivel de almacenamiento en un inventario o número de  trabajos esperando un proceso.

Evento: una ocurrencia en un punto del  tiempo que puede cambiar el estado del  sistema; como el arribo de un cliente o iniciar trabajos sobre un trabajo.

Entidad: objeto que pasa por el sistema; un carro en una intersección u ordenes en un fabrica. A menudo un evento (ej. arribo) está asociado con una entidad(ej. cliente).

Cola: no es solo una fila física de gente, puede también ser una lista de tareas, bienes terminados esperando transportación o algún lugar donde las entidades están esperando para que algo pase por alguna razón.

Producir es causar un arribo de  una nueva entidad al sistema en algún tiempo futuro.

Programar es asignar un nuevo evento futuro a una entidad existente.

Variable Aleatoria es una cantidad que es incierta tal como el tiempo de interarribos entre dos llegadas de vuelo o el número de partes defectuosas en un embarque.

Variación aleatoria es una variable aleatoria artificialmente generada.

Distribución de probabilidad es la ley que gobierna los hechos probabilisticos de una variable aleatoria.

Ejemplo de Construcción de un Modelo de Simulación.

Se propone una estación de gasolina con una sola bomba con un servicio manual. Suponer que los arribos de  carros como también su tiempo de servicio son aleatorios.

Al principio identifiquemos los parámetros siguientes:

Estado: número de carros que esperan servicio y número de carros servidos al momento.

Eventos: arribo de carros, inicio del servicio, fin del servicio

Entidades: carros

Cola: la fila de carros enfrente de la bomba.

Variables aleatorias: tiempos entre llegadas, tiempos del servicio

Distribuciones: asumiremos distribuciones exponenciales para ambos tiempo entre llegadas y tiempo de servicio.

Después, especifique qué hacer en cada evento. Para el ejemplo esto puede plantearse así:

En el evento de llegada de la entidad:

Crear la siguiente llegada.

Si el servidor está libre, enviar la entidad al inicio del servicio.

Si no está libre formar la cola.

En el evento de inicio del servicio:

El servidor se ocupa.

Programar fin de servicio para esa entidad.

En el evento de fin de servicio:

El servidor se desocupa.

Si alguna entidad espera en la cola: remover la primera entidad de la cola: enviarla al inicio del servicio.

Todavía se requiere inicializar el proceso. Por ejemplo, crear el primer arribo.

Finalmente es necesario trasladar todas las operaciones identificadas a código de lenguaje de computadora. Esto es fácil con una librería apropiada que tenga subrutinas para crear, programar, tiempo de  eventos, manipulaciones de colas, generación de variación aleatoria y colecciones estadística.

¿Cómo sería en este caso el proceso de simular?. El programa graba el número de  carros en el sistema antes y después de cada cambio de estado además del tiempo de ese evento.

¿Qué es Simulación Social?

Los científicos sociales siempre han construido modelos de fenómenos sociales. Simulación es un método importante para la modelación de los procesos sociales y económicos. En particular, proporciona un " forma moderada " entre la riqueza del discurso teorizante y riguroso pero restrictivos modelos matemáticos. Existen diferentes tipos de simulación computacional y sus aplicaciones a problemas científicos sociales.

Un fuerte hardware y un mejorado software han hecho construir complejas simulaciones de manera fácil. Los métodos de simulación computacional pueden ser efectivos para el desarrollo de teorías como también para la predicción. Por ejemplo, modelos macroeconómicos han sido usados para simular cambios futuros en la economía; también las simulaciones han sido usadas en psicología para estudiar mecanismos cognoscitivos.

La simulación permite al científico social experimentar con ‘sociedades artificiales’ y explorar las implicaciones de las teorías en formas que por otros caminos no son posibles.

¿Qué es la Simulación basada en el Web?

La simulación basada en el Web rápidamente emergió como un área de interés significativa tanto para investigadores de simulación como para practicantes de la simulación. Este interés en Simulación basada en el Web es un efecto natural de la proliferación de la World-Wide Web y sus tecnologías relacionadas, por ejemplo HTML, HTTP, CGI, etc. la agitada popularidad de, y seguridad sobre, simulación computacional como una herramienta para resolver problemas y soportar decisiones.

La apariencia red-amigable del lenguaje programación Java, y de las tecnologías de objetos distribuidos como la Architecture Común Object Request Broker (CORBA) y el Object Linking y Embedding / Component Object Model (OLE/COM) particularmente, han tenido efectos agudos sobre el estado de la practica de la simulación.

Actualmente, los investigadores en el campo de la simulación basada en el Web están interesados en tratar con tópicos tales como metodologías para desarrollo de modelos web-based, desarrollo de modelos colaborativos sobre Internet, modelación y simulación basada en Java, modelación distribuida y simulación usando tecnologías Web y nuevas aplicaciones.

Software de Simulación Comercial.

La basta cantidad de software de simulación disponible puede ser abrumador para los nuevos usuarios. La siguiente es solo una muestra aleatoria del software en el mercado actual:

ACSL, APROS, ARTIFEX, Arena, AutoMod, C++SIM, CSIM, Call$im, FluidFlow, GPSS, Gepasi, JavSim, MJX, MedModel, Multiverse, NETWORK, OPNET Modeler, POSES++, Simulat8, Powersim, QUEST, REAL, SHIFT, SIMPLE++, SIMSCRIPT, SLAM, SMPL, SimBank, SimPlusPlus, TIERRA, Witness, y javasim.

La cuestión a preguntarse es: ¿cuales son los aspectos importantes a observar en un paquete? La respuesta depende de las aplicaciones especificas. Sin embargo algunos criterios generales son: facilidades de entrada, procesos que permitan alguna programación, capacidad de optimización, facilidades de salida, ambiente incluyendo entrenamiento y servicios de soporte, estadísticas Input-output capacidad de análisis de datos, y ciertamente el factor costo.

¿Qué es Dinámica de Sistemas?

"Dinámica de Sistemas" es el estudio riguroso de problemas en el comportamiento de sistemas usando los principios de retroalimentación, dinámica y simulación. En más palabras Dinámica de Sistemas se caracteriza por:

La búsqueda de soluciones útiles a problemas reales, especialmente en sistemas sociales (negocios, educación, gobierno,...) y en el medio ambiente.

Usa modelos computacionales de simulación para entender y mejorar tales sistemas.

Basa los modelos de simulación sobre modelos mentales, conocimiento cualitativo e información numérica.

Usa los métodos y discernimientos de la ingeniería de control y la retroalimentación y otras disciplinas científicas para estimar y mejorar la calidad de los modelos.

Busca formas mejoradas para trasladar resultados científicos en mejoras implementadas realizadas.

 

Bibliografía Básica:

Coss Raúl. Simulación. Un Enfoque Práctico. LIMUSA, 1997, México.

Comentarios al E-mail del profesor

jadvf@servidor.unam.mx