1. SIMULACIÓN DE SISTEMAS DINÁMICOS Jorge Eduardo Ortiz Triviño Profesor Asociado Departamento de Ingeniería de Sistemas e Industrial Universidad Nacional de Colombia jeortizt@unal.edu.co 1.1 SIMULACIÓN DE EVENTOS DISCRETOS Un esquema general para abordar cualquier problema de simulación se puede esquematizar implementando el siguiente conjunto de algoritmos que parten de la idea de eventos discretos. Un evento es un acontecimiento que ocurre en algún instante en el tiempo (de simulación) y que cambia el estado del sistema. La Figura 1—1 representa esa visión. e1 e0 e2 e 3 e4 Tiempo Figura 1—1: Relación entre tiempo y eventos. El primer algoritmo importante es el de inicialización, cuya estructura se muestra en el Algoritmo 1—1. Su propósito es colocar los niveles iniciales de todo el conjunto de variables que participan en la simulación. PROCEDIMIENTO INICIALIZACIÓN Argumentos INICIO T ValoresInicialesTiempoEspacio; X ValoresInicialesEstudioSistema; ValoresInicialesCaracteristicasSistema; ValoresInicialesParametrosSistema; L ValoresInicialesListaEventos; // Se emplea función percentil FIN _ PROCEDIMIENTO _ INICIALIZACIÓN Algoritmo 1—1: Procedimiento de inicialización. 1 Otra función importante dentro del esquema general del simulador lo constituye el manejo del tiempo espacio. En un sentido general es un procedimiento cuya finalidad es manejar el reloj de la simulación. Su estructura lógica se muestra en el Algoritmo 1—2. FUNCION ManejoTiempoEspacio Argumentos INICIO k * k L k min L // Próximo evento T L k * ; // Actualizar el Tiempo Espacio : " Reloj " RETORNAR(k *); FIN _ FUNCION _ ManejoTiempoEspacio Algoritmo 1—2: Función para manejar el tiempo y el espacio del simulador. De forma similar, por cada tipo de evento que presente el sistema a simular, debe incluirse una función que se encargue de actualizar adecuadamente el conjunto de variables de estado y de características del sistema. Esa labor la desarrolla el Algoritmo 1—3. FUNCIÓN EVENTO _ i Argumentos INICIO X ActualizarEstudioSistema; ActualizarCalculoCaracteristicas; L ActualizarListaEventos; // Usar Funciones Percentiles FIN _ FUNCIÓN _ EVENTO _ i Algoritmo 1—3: Estructura general del evento i. La aplicación práctica del teorema fundamental de la simulación, presentado en la sección anterior se lleva a cabo en el Algoritmo 1—4. FUNCIÓN PercentilContinuaGeneral ParámetrosPoblacionales INICIO u Aleatorio(•); x Fx1 u ; RETORNAR( x); FIN _ FUNCIÓN _ PercentilContinuaGeneral Algoritmo 1—4: Implementación de una función percentil. 2 Finalmente se debe ejecutar un procedimiento que muestre los reportes de las estadísticas finales que muestre los resultados de la simulación. Esta tarea la realiza el Algoritmo 1—5. PROCEDIMIENTO GeneradorReporte Argumentos INICIO CalculoFinalDeCaracteristicas; ESCRIBIR ; FIN _ PROCEDIMIENTO _ GeneradorReporte Algoritmo 1—5: Procedimiento de reporte de la simulación. El Algoritmo 1—6 tiene la misión de dirigir el llamado de todas las funciones y procedimientos descritas anteriormente. Esa ejecución debe hacerse de manera ordenada y sistemática y a su debido momento. Esa es la labor de este procedimiento principal, que se describe en el Algoritmo 1—6. FUNCION SimuladorPrincipal Argumentos INICIO CodError 0; Inicializacion Argumentos MIENTRAS NohayaCondicionTerminacion, , CodError 0 HACER INICIO i ManejoTiempoEspacio Argumentos ; SELECCIONAR i DE INICIO CASO 1: Evento _1 Argumentos ; CASO 2 : Evento _ 2 Argumentos ; CASO i : Evento _ i Argumentos ; CASO m : Evento _ m Argumentos ; FIN _ SELECCIONAR FIN _ MIENTRAS GeneradorReporte Argumentos ; FIN _ SimuladorPrincipal Algoritmo 1—6: Estructura general de un simulador para sistemas dinámicos. 3