UNIVERSIDAD CARLOS III DE MADRID Ingeniería Informática Investigación Operativa Práctica 6: Simulación Guión práctico: Generación de Números Aleatorios y Simulación Monte Carlo Curso 08/09 Objetivo: Aprender a utilizar herramientas de simulacion en Excel para resolver problemas con incertidumbre. La mayoria de las decisiones que tomamos en nuestra vida involucran incertidumbre. Tomar en cuenta la probabilidad de los posibles escenarios es fundamental si deseamos maximizar un bene…cio o minimizar una pérdida en cualquiera de nuestras actividades cotidianas. A gran escala, muchas compañias utilizan simulación Monte Carlo para mejorar sus ganacias u optimizar sus procesos. Por ejemplo, General Motors, Procter and Gamble y Elly Lilly usan simulación para estimar el retorno promedio y el riesgo de lanzar un nuevo producto al mercado, así como para determinar la capacidad óptima de las plantas que utilizan para fabricar sus diferentes productos. Excel es una poderosa herramienta de simulación y análisis que permite resolver una gran cantidad de problemas, incluyendo aquellos que involucran incertidumbre. En esta práctica aprenderemos a utilizar algunas de las funciones de Excel para el tratamiento de este tipo de problemas. Para realizar la práctica haremos uso del …chero practica6.xls que se puede descargar de la página web de la asignatura o desde aula global. Parte 1: ¿Cómo generar números aleatorios en excel? En esta sección de la práctica vamos a aprender a generar números aleatorios que se distribuyen uniformemente entre 0 y 1, es decir, la probabilidad de obtener cualquier número entre 0 y 1 será la misma en cada momento Excel genera esta tipo de números a través del comando ALEATORIO(). Para aprender a utilizar esta función utilizaremos la hoja de trabajo "simula1". El objetivo es generar 100 números aleatorios y determinar la fracción de esos números que estan entre 0 y 0.25, 0.25 y 50, 0.50 y 0.75 y, …nalmente, entre 0.75 y 1.0. 1 Figura 1 Para ello se deberá generar un escenario similar al de la …gura 1. En esta hoja rellenamos el conjunto de celdas C3:C102 con la formula ALEATORIO(). En la columna F aparecen las etiquetas correspondientes a los intervalos de interés, del lado derecho, para la celda F5, por ejemplo, emplearemos la función CONTAR.SI(C3:C102;"<=0.25), lo que nos proporciona la cantidad de elementos entre 0 y 0.25; repetimos esta misma operación para las celdas F6 a F8 teniendo en cuenta en descontar los elementos ya contabilizados en el primer intervalo. Parte 2: ¿Cómo simular valores de una variable aleatoria discreta? Supongamos que la demanda de cierto tipo de producto esta dada por una variable aleatoria discreta de acuerdo a la siguiente tabla: Tabla1 Demanda 10000 20000 40000 60000 Probabilidad 0,10 0,35 0,30 0,25 2 La cuestión es como simular en excel la demanda de este producto las veces que sea necesario para corroborar que sigue dicha dsitribución de probabilidades. En la primera parte de esta práctica aprendimos a generar números aleatorios con la propiedad de que su probabilidad se distribuye uniformemente entre el 0 y el 1, por lo tanto, si aprovechamos esta propiedad y asociamos cada posible valor de probabilidad con una demanda, entonces la respuesta llega de manera natural. Así por ejemplo, en la siguiente tabla se especi…ca que la demanda de 10000 unidades de producto ocurrira el 10 % de las veces y así para cada valor de demanda indicado en la tabla 1. Tabla2 Demanda 10,000 20,000 40,000 60,000 Número aleatorio x<0.1 0.1 x < 0;45 0;45 x < 0;75 0;75 x Para dar comienzo a esta simulación es necesario abrir la hoja "simula2", en este ejercicio se deberá generar un escenario parecido al que se muestra en la …gura 2. Tal y como en simula1, generamos 100 numeros aleatorios en el conjunto de celdas C3:C102, posteriormente, al lado izquierdo de esta columna, generaremos otra columna con la demanda correspondiente acorde al valor del número aleatorio generado. Así por ejemplo, números aleatorios mayores o iguales que 0 y menores que 0.1, tendrán asociada una demanda de 10,000. Para asociar la demanda correspondiente a cada número utilizaremos la función de excel BUSCARV(), por lo tanto generaremos 100 ensayos o repeticiones de la demanda del producto copiando de la celda B3 al rango de celdas B4:B102 la fórmula BUSCARV(C3;lookup;2). Finalmente, en el rango de celdas G9:G11 utilizaremos de nuevo la función CONTAR.SI() para determinar la cantidad de elementos (números aleatorios) que caen en la categoría de interés y a los que se asignará el valor discreto de la variable demanda. Parte 3: ¿Cómo simular valores de una variable aleatoria que se distribuye como una normal? La distribución normal es una de las más importantes distribuciones de probabilidad por sus aplicaciones prácticas. Excel permite simular valores de una distribución normal con media y desviación estandar ; a través de la función DISTR.NORM.INV(ALEATORIO();mean;sigma). En este ejercicio se hará uso de la hoja "simula3". Supongamos que deseamos simular 200 ensayos de una variable aleatoria normal con media 40,000 y desviación estandar de 10,000, para ello generamos 200 números aleatorios, por ejemplo en el rango de celdas C3:C200. Recuerda que estos numeros siguen una istribución uniforme en el intervalo [0,1] y que son generados a través de la función ALEATORIO(). Ahora copiamos de la celda B3 al rango de celdas B4:B200 la fórmula 3 Figura2 4 Figura3 DISTR.NORM.INV(C3;mean;sigma), con este procedimiento generamos una columna de valores (200 ensayos) de una variale aleatoria normal con las características deseadas. La función de excel genera un número aleatorio con distribción normal, tal que la probabilidad de obtener dicho valor corresponda al valor de nuestro número aleatorio uniforme, en otras palabras, si tenemos un número aleatorio uniforme, digamos 0.8466, este número representa el percentil 85 de una variable aleatoria normal con media 40,000 y desviación estandar 10,000. El escenario que debe obtenerse es similar al de la …gura 3. Parte 4: Optimización bajo incertidumbre Supon que eres el encargado de producción en una compañia que se dedica a producir tarjetas para el dia de San Valentín. Debido a la crisis el dueño de la empresa desea producir las tarjetas tomando en cuenta la incertidumbre en el mercado de ventas, de tal forma que sus ganancias no se vean afectadas por este factor. Para ello te proporciona la siguiente tabla (tabla 3) con información de la demanda del producto. 5 Tabla 3 Demanda 10000 20000 40000 60000 Probabilidad 0,10 0,35 0,30 0,25 Con dicha información el dueño te encarga la tarea de averiguar la cantidad de tarjetas que deben ser producidas para el próximo San valentín. En otras palabras, ¿Cuántas tarjetas hay que producir para que la ganancia esperada sea máxima?. Para resolver el problema lo primero que se debe tener en cuenta es que, de acuerdo a la tabla 3, la demanda se comporta como una variable aleatoria discreta, el resto será utilizar adecuadamente Excel y utilizar lo aprendido hasta ahora para encontrar la respuesta. Como datos adicionales se sabe que el precio de venta de cada tarjeta es de 4 euros y el costo por producir cada una de ellas es de 1.50 euros. Además, se sabe que el costo por cada tarjeta que no se venda es de 0.20 euros, a este costo le llamaremos costo por inventario. La idea básica para resolver este problema es simular el escenario para cada valor de demanda (10,000, 20,000, 40,000 y 60,000) un determinado número de veces. De esta manera podremos determinar el escenario de producción que nos permita obtener en el máximo valor promedio de ganancia. Este ejercicio de simulación se llevará a cabo en la hoja "simula 4". Vamos a generar una hoja de cálculo similar a la de la …gura 4, para ello colocamos las etiquetas correspondientes a las variables del problema en el rango de celdas B1:B11 y los valores correspondientes en el rango C1:C11. En el rango de celdas G3:G6 aparece el límite inferior del valor de probabilidad para cada valor de la demanda. El precio de venta y los parámetros de costo pueden ser introducidos en el rango de celdas C4:C6. Ahora introducimos un valor de producción de 40,000 en la celda C1 como primer ensayo. Posteriormente en la celda C2 generamos un número aleatorio uniforme con ayuda de la función ALEATORIO() y simulamos, en la celda C3, el valor de la demanda correspondiente a través de la fórmula BUSCARV(C2;lookup;2). Note que el número de unidades vendidas es la mínima cantidad entre la cantidad de tarjetas producidas y la demanda. Así, los ingresos por venta están calculads en la celda C8 con la fórmula MIN(producción, demanda), donde producción y demanda son los nombres asignados a las celdas C1 y C3, respectivamente. Por otro lado, si se producen más tarjetas de las que se demandan, el número de unidades sobrantes ( inventario) será la diferencia entre producción menos demanda. La expresión unidad_disp_cost*SI(produccion>demanda;produccióndemanda;0) se utilizará para calcular el costo total por tarjetas sobrantes, dicha expresión se introduce en la celda C10. Finalmente, en la celda C11, 6 Figura 4 el bene…cio total o ganancia es calculado con la fórmula ingresos_totalescosto_total-costo_inventario. Hasta ahora, con lo que hemos aprendido, necesitariamos oprimir F9 muchas veces (digamos 100 para este ejercicio) para cada escenario de producción y calcular la ganancia esperada, sin embargo, utilizaremos una tabla de análisis como la mostrada en la …gura 5 para ahorrarnos todo ese trabajo. Para generar la tabla de análisis, en el rango de celdas A16:A115 introducimos los números de 1 a 100, correspondientes a nuestros 100 ensayos o experimentos. Luego, en el rango de celdas B15:E15 introducimos los posibles escenarios de producción. Lo que deseamos es calcular la ganacia neta promedio para cada ensayo y para cada escenario de producción, para ello copiamos el contenido de la celda C11 en la celda A15. A continuación seleccionamos el rango de celdas (tabla) A15:E114 y pinchamos el comando Datos para seleccionar tabla del menú de opciones correspondiente. Aparecerá una tabla de 2 7 Figura 5 8 Figura 6 entradas como en la …gura 6, en ella seleccionamos cualquier celda en blanco (digamos I14) como celda de entrada (columna) y la celda C1 como celda de entrada (…la). Una vez hecho esto, pinchamos OK y automáticamente Excel genera las 100 simulaciones para cada escenario de producción. Ahora introducimos en la celda B13 la fórmula PROMEDIO(B16:B116) y la copiamos sobre el rango de celdas C13:E13, con esta operación se han calculado las ganancias promedio para cada escenario de producción. Si repetimos el mismo mecanismo, pero ahora utilizando la fórmula DESVEST(), obtendremos la desviación estandar correspondiente a la ganancia obtenida en la simulación. Si pinchamos F9, se calculan de manera automática 100 iteraciones (o las iteraciones que nosotros …jemos) para cada nivel de producción. Observa que producir 40,000 tarjetas es la mejor decisión que podría tomarse, pues nos reporta ganancia esperada, así que ya sabes que responder al jefe. Con los valores de la media y de la desviación estandar obtenidos en las simulaciones, es posible calcular intervalos de con…anza para la ganancia promedio. Por ejemplo, un intervalo de con…anza al 95 % para la ganancia promedio, para 9 un determinado número de simulaciones, puede ser calculado con la siguiente expresión: p D:S media= 1;96 NS D.S = Desviación estandar NS = Número de simulaciones Cuestionario 1. Supon que su jefe es algo despistado en probabilidades y desea saber con exactitud la ganancia para la proxima temporada de San valentín. ¿Qué le responderían ustedes?. (Generar la respuesta en simula 4) 2. Un pequeño supermercado está tratando de determinar cuántas copias de una revista de computación deben ser pedidas al distribuidor cada semana. Se tiene conocimiento que la demanda de la revista esta governada por la variable aleatoria discreta de acuerdo a la siguiente tabla: Demanda Probabilidad 15 0.1 20 0.20 25 0.30 30 0.25 35 0.15 Como información adicional se tiene que el supermercado paga 1 euro por cada copia de la revista y lo venden a un precio de 1.95 euros. Además, ellos pueden retornar cada revista que nos se vende a un precio de 0.50 euros. ¿Cuántas copias de la revista deben ser adquiridas para maximizar la ganancia promedio?. Nota: Esta práctica esta basada en el libro Microsoft Excel Data Analysis and Busines Modeling by Wayne L. Winston. 10