lenguaje de simulacion y simuladores

Anuncio
LENGUAJE DE SIMULACION Y SIMULADORES
En un principio, los programas de simulación se elaboraban utilizando algún lenguaje de propósito
general, como ASSEMBLER, FORTRAN, ALGOL o PL/I. A partir de la década de 1960 hacen su
aparición los lenguajes específicos para simulación como GPSS, GASP, SIMSCRIPT, SLAM. En la
última década del siglo pasado la aparición de las interfaces gráficas revolucionaron el campo de las
aplicaciones en esta área, y ocasionaron el nacimiento de los simuladores.
En lo práctico, es importante utilizar la aplicación que mejor se adecúe al tipo de sistema a simular, ya
que de la selección del lenguaje o simulador dependerá el tiempo de desarrollo del modelo de
simulación. Las opciones van desde las hojas de cálculo, lenguajes de tipo general (como Visual
Basic, C++ o Fortan), lenguajes específicos de simulación (como GPSS, SLAM, SIMAN, SIMSCRIPT,
GAS y SSED), hasta simuladores específicamente desarrollados para diferentes objetivos (como
SIMPROCESS,
ProModel,
Witness,
Taylor
II
y
Cristal
Ball).
APRENDIZAJE Y USO LENGUAJE DE SIMULACIÓNO SIMULADOR
Los lenguajes de simulación facilitan enormemente el desarrollo y ejecución de simulaciones de
sistemas complejos del mundo real. Los lenguajes de simulación son similares a los lenguajes de
programación de alto nivel pero están especialmente preparad os para determinadas aplicaciones de
la simulación. Así suelen venir acompañados de una metodología de programación apoyada por un
sistema de símbolos propios para la descripción del modelo por ejemplo mediante diagramas de flujo
u otras herramientas que simplifican notablemente la modelización y facilitan la posterior depuración
del modelo.
Características de los lenguajes de simulación:
 Los lenguajes de simulación proporcionan automáticamente las características necesarias para
la programación de un modelo de simulación, lo que redunda en una reducción significativa del
esfuerzo requerido para programar el modelo.
 Proporcionan un marco de trabajo natural para el uso de modelos de simulación. Los bloques
básicos de construcción del lenguaje son mucho más afines a los propósitos de la simulación
que los de un lenguaje de tipo general.
 Los modelos de simulación son mucho más fácilmente modificables.
 Proporcionan muchos de ellos una asignación dinámica de memoria durante la ejecución
Facilitan una mejor detección de los errores.
 Los paquetes de software especialmente diseñados para simulación contienen aplicaciones
diversas que facilitan al simulador las tareas de comunicaciones, la depuración de errores
sintácticos y de otro tipo de errores, la generación de escenarios, la manipulación “on-line” de
los modelos, etc.
 Son muy conocidos y en uso actualmente
 Aprendizaje lleva cierto tiempo
 Simuladores de alto nivel
 Muy fáciles de usar por su interface gráfica
 Restringidos a las áreas de manufactura y comunicaciones
 Flexibilidad restringida puede afectar la validez del modelo
CASOS PRACTICOS DE SIMULACIÓN
Un caso práctico de una simulación podemos decir en esta parte, la simulación del Método de Monte
Carlo.
ALGORITMOS
El algoritmo de Simulación Monte Carlo Crudo o Puro está fundamentado en la generación de
números aleatorios por el método de Transformación Inversa, el cual se basa en las distribuciones
acumuladas de frecuencias:
 Determinar la/s V.A. y sus distribuciones acumuladas(F)
 Generar un número aleatorio uniforme Î (0,1).
 Determinar el valor de la V.A. para el número aleatorio generado de acuerdo a las clases que
tengamos.
 Calcular media, desviación estándar error y realizar el histograma.
 Analizar resultados para distintos tamaños de muestra.
EJEMPLO PRACTICO I
Tenemos la siguiente distribución de probabilidades para una demanda aleatoria y queremos ver qué
sucede con el promedio de la demanda en varias iteraciones:
Utilizando la distribución acumulada (F(x) es la probabilidad que la variable aleatoria tome valores
menores o iguales a x) podemos determinar cuál es el valor obtenido de unidades cuando se genera
un número aleatorio a partir de una distribución continua uniforme. Este método de generación de
variable aleatoria se llama Transformación Inversa.
Generando los valores aleatorios vamos a ver como se obtiene el valor de la demanda para cada día,
interesándonos en este caso como es el orden de aparición de los valores. Se busca el número
aleatorio generado en la tabla de probabilidades acumuladas, una vez encontrado (si no es el valor
exacto, éste debe ser menor que el de la fila seleccionada pero mayor que el de la fila anterior), de
esa fila tomada como solución se toma el valor de las unidades (Cuando trabajamos en Excel
debemos tomar el límite inferior del intervalo para busca en las acumuladas, para poder emplear la
función BUSCARV (), para 42 sería 0, para 43 0,100001 y así sucesivamente). Ejemplo: Supongamos
que el número aleatorio generado sea 0,52, ¿a qué valor de unidades corresponde? Nos fijamos en la
columna de frecuencias acumuladas, ese valor exacto no aparece, el siguiente mayor es 0,70 y
corresponde a 48 unidades. Se puede apreciar mejor en el gráfico, trazando una recta desde el eje de
la frecuencia hasta que intersecta con la línea de la función acumulada, luego se baja a la coordenada
de unidades y se obtiene el valor correspondiente; en este caso 48.
Cuando trabajamos con variables discretas la función acumulada tiene un intervalo o salto para cada
variable (para casos prácticos hay que definir los intervalos y luego con una función de búsqueda
hallar el valor). Para funciones continuas se puede hallar la inversa de la función acumulada. De esta
forma logramos a partir de la distribución de densidad calcular los valores de
La variable aleatoria dada.
En la siguiente tabla, vemos como a medida que aumenta el número de simulaciones, el valor
simulado se acerca al valor original de la media y desviación estándar, además de la disminución del
error típico.
PROBLEMAS CON LINEA DE ESPERA
Simulación de una línea de espera con una fila y un servidor
Un sistema de colas estara definido cuando tengamos la siguiente informacion acerca de este:
 Distribucion de probabilidad de los tiempos de servicio
 Distribucion de probabilidad de los tiempos entre llegadas
 Numero de servidores
 Numero de filas
 Conexiones entre servidores y filas
 Disciplinas y restricciones de los servidores y filas (en caso de que existan)
Para este primer ejemplo se utilizara el modelo de lineas de espera que se muestra en la figura
siguiente. Como se puede apreciar, es un modelo bastante simple donde la disciplina de atención es
FIFO (primero en llegar, primero en salir).
Tanto el tiempo de servicio como el tiempo entre llegadas siguen una distribucion exponencial aunque
con parametros diferentes, para el caso del tiempo entre llegadas tenemos λ=15 y para el tiempo de
servicio tenemos λ=10.
Aplicando el metodo de la transformada inversa a la distribucion exponencial (consultar Dyner etc. al,
2008), tenemos que:
Donde corresponde a una observación de una variable exponecial, _ es un numero aleatorio entre
cero y uno y λ es la media de la distribucion. Para la implementacion del sistema descrito en Excel,
abra una nueva hoja de calculo y configurela como se muestra en la figura.
En la celda B8 escriba la formula =ALEATORIO() y arrastre hasta la celda B23. Repita este
procedimiento para la columna G. En el paso anterior, se definio los numeros aleatorios a partir de los
cuales se generaran las observaciones de variables aleatorias de la simulacion.
Ahora, en la celda C8 escribe la formula =-LN(1-B8)/$B$4, y arrastre hasta la celda C23.
Como se puede apreciar, esta es la formula descrita anteriormente para obtener observaciones de una
variable exponencial. En este caso, se estan generando observaciones para la variable aleatoria de
tiempos entre llegadas.
En la celda D8 escribe la formula =C8, lo anterior significa que como es la primera llegada al sistema,
su tiempo de llegada (en el instante de tiempo en el que llego al sistema), sera igual a su tiempo entre
llegadas. Sin embargo, para la celda D9 la formula correspondiente es =C9+D8, ahora arrastre la
fórmula de D9 hasta D23; esta fórmula significa que despues de que llega el primer cliente, el instante
de tiempo en el que cualquier otro cliente llega al sistema sera el instante de tiempo en el que entro
el penúltimocliente sumado el tiempo entre llegadas del último cliente, es decir, si el penultimo cliente
entro al sistema en el instante t=4, y el tiempo entre llegadas del ultimo cliente es dt=2, entonces este
último cliente entrara realmente al sistema en t=6.
La fórmula correspondiente a la celda E8 es =D8, esto significa que, al ser primer cliente, el instante
en el que llega al sistema sera el mismo instante en el que comienza el servicio; más adelante se
presenta las formulas correspondientes al resto de clientes del sistema en esta columna. Ahora en la
celda F8 escriba la formula =E8-D8 y arrastrela hasta la celda F23, esto corresponde al tiempo de
espera del cliente antes de comenzar a ser atendido, note que D8 nunca sera mayor que E8 ya que el
valor minimo que puede tomar el tiempo de comienzo del servicio es el tiempo de llegada, es decir,
cuando un cliente llega al sistema y no tiene que hacer fila.
En la celda H8 escribe la formula =-LN (1-G7)/$B$5, y arrastre la hasta la celda H23, esta fórmula
indica cuanto tiempo tardara el servidor atendiendo al cliente actual. Ahora en la celda I8 escriba la
formula =E8+H8, esta fórmula indica el instante de tiempo en el que servidor termina de atender al
cliente actual y corresponde a la suma entre el instante que comienza el servicio y la cantidad de
tiempo que este toma.
Retomemos ahora la columna E, nótese que esta solo está definida en su posición E8, esto porque
primero se requería definir otros valores antes de poder determinar el instante en el que empieza
realmente el servicio. En un sistema como el aquí presentado se pueden tener dos casos para el
tiempo de comienzo del servicio, en primer lugar puede que el servidor se encuentre desocupado, en
este caso el tiempo de comienzo del servicio será igual al tiempo de llegada al sistema y no habrá
tiempo de espera. Sin embargo, si el servidor se encuentra ocupado, el tiempo de comienzo del
servicio será igual al máximo entre el instante en que el servidor termine de atender al cliente actual y
el tiempo de llegada al sistema; por si el tiempo de fin del servicio del cliente actual es igual a tfs=12
pero el tiempo de llegada del próximo cliente es tll=14, el tiempo de comienzo del servicio del proximo
cliente será t=14 y el servidor tendra un ocio dt=2; por otro lado, si tfs=13 para el cliente actual y el
proximo cliente tiene un tll=10, el servidor no tendra ocio y el proximo cliente deberá esperar un
intervalo de tiempo dt=3. De lo anterior se concluye que la fórmula para la celda E9 debe ser =MAX
(D9;I8), ahora arrastre esta fórmula hasta la celda E23.
Hasta este punto se tiene una simulacion de un sistema de líneas de espera con una fila y un servidor,
si se desea generar nuevas observaciones presione la tecla F9; como tarea al lector se deja el cálculo
de:
• Tiempo promedio en el sistema
• Tiempo promedio de espera (sin incluir ceros)
• Tiempo promedio de espera (incluyendo ceros)
• Tiempo promedio de servicio
• Tiempo promedio de ocio
Adicionalmente se plantea al lector elaborar, una simulacion en Excel que represente el sistema que
se muestra en la figura siguiente, donde p es la probabilidad de que un cliente se dirija a S1 o a S2.
Tanto el tiempo entre llegadas como los tiempos de servicio, se distribuyen exponencial con los
parámetros que se muestran a continuación.
Tiempo entre llegadas: λ=8
Tiempo de servicio S1: λ=13
Tiempo de servicio S2: λ=18
Probabilidad p: 0.63
EJEMPLO DE UN CASO DE SIMULACION
Please download full document at
www.DOCFOC.com
Thanks
Descargar