Upload
fatima-rosario-reyes-tercero
View
219
Download
2
Embed Size (px)
DESCRIPTION
Practicas de Simulacion en Visual Studio
Citation preview
En esta práctica realizaremos dos actividades. La primera es la simulación de un juego de
dados llamado CRAPS. Esta simulación se basa en la aplicación de los conceptos de
probabilidad y distribución de probabilidad. La siguiente actividad es una introducción a la
simulación de Montecarlo. Como se discutió en clase, la simulación de Montecarlo es una
simulación estática que representa el estado del sistema en un punto particular en el tiempo
(Banks et al. 1999). Los métodos de Montecarlo permiten experimentar con un modelo por
medio del muestreo estadístico y se aplican auna amplia gama de problemas que van desde la
optimización de funciones complejas hasta la solución de ecuaciones integrales complicadas.
Simulación de Craps
Craps es un popular juego de dados en el cual un jugador lanza un par de dados hasta que
gane o pierda de acuerdo con las siguientes reglas:
Gana si:
• Obtiene 7 u 11 en el primer lanzamiento
• Obtener 4, 5, 6, 8, 9 o 10 en el primer lanzamiento y repetir lo obtenido en el primer
lanzamiento antes de obtener un 7
Pierde si:
• Obtener 2, 3 o 12 en el primer lanzamiento
• Obtener 7 en un lanzamiento posterior, antes de obtener lo lanzado en la primera
ocasión
A continuación se presenta la función de distribución de probabilidad para el lanzamiento de
los dados.
Sea Z la suma del resultado de ambos dados, usando dos dados sin sesgo tenemos que la
probabilidad de que Z = i se presenta en la tabla siguiente.
i 2 3 4 5 6 7 8 9 10 11 12
P(Z = i) 1/36 2/36 3/36 4/36 5/36 6/36 5/36 4/36 3/36 2/36 1/36
Ahora tenemos que la probabilidad de ganar en el primer lanzamiento es:
�(� = 7) � �(� = 11) =8
36= 0. 2�
Ahora bien, si el jugador obtiene un 5 en el primer lanzamiento, el espacio de posibles estados
estará compuesto todas las formas de sacar 5 y todas las formas de sacar 7, ya que cualquier
otro resultado no me afecta el estado del juego, así tenemos que la probabilidad de ganar,
obteniendo 5 en el primer lanzamiento es:
����. ����� 5 =4
36
# ��� �� !��� ����� 5 = 4
# ��� �� !��� ����� 7 = 6
|#$| = 10
����. %& '�(�� =4
10)
4
36=
16
360
Práctica #1: Introducción a la simulación
Extendiendo el análisis anterior a los demás números, tenemos que:
i 4 5 6 8 9 10
|#*| 9 10 11 11 10 9
Prob. ganar 9/324 16/360 25/396 25/396 16/360 9/324
Así, la probabilidad total de ganar un juego de craps será:
� =8
36�
9
324�
16
360�
25
396�
25
396�
16
360�
9
3241 0.49
Ahora se procede a elaborar un modelo que permita simular un juego de craps, la herramienta
que usaremos será Microsoft Excel. Comencemos por abrir Excel, se recuerda al lector que
debe configurar las opciones de seguridad de su versión de Excel para permitir la ejecución de
macros. Configure la primera hoja de cálculo u Hoja1 para que quede tal cual se muestra en la
figura siguiente.
En esta hoja de cálculo agregue un botón. Aparecerá una venta como la siguiente
Seleccione un nombre para la macro y de click en Nuevo, entrará a la vista de código de Excel.
Será en esta ventana donde ingresaremos el código de la simulación. Para el juego de craps
necesitamos simular el lanzamiento de dos dados, suponiendo que los dos dados no están
sesgados, los lanzamientos seguirán una distribución de probabilidad uniforme donde la
probabilidad de que se obtenga cualquier número del dado será igual a 1/6.
Para simular el juego de craps agregamos el siguiente código AL INTERIOR de la macro, se
supone que el lector tiene un conocimiento básico de Visual Basic:
1 Dim dado1 As Integer
2 Dim dado2 As Integer
3 Dim suma As Integer
4 Dim objetivo As Integer
5 Dim i As Long
6 Dim ganadas As Long
7 Dim perdidas As Long
8
9 If IsNumeric(Sheets(1).Cells(2, 2)) Then
10 corridas = Round(CDbl(Sheets(1).Cells(2, 2)))
11 ganadas = 0
12 perdidas = 0
13 objetivo = 0
14
15 For i = 1 To corridas
0,0
0,1
0,2
0,3
0,4
0,5
1 2 3 4 5 6
FDP Lanzamiento de dados
16
17 dado1 = Int(Rnd() * 5 + 1)
18 dado2 = Int(Rnd() * 5 + 1)
19 suma = dado1 + dado2
20
21 If suma = 7 Or suma = 11 Then
22 ganadas = ganadas + 1
23 ElseIf suma = 2 Or suma = 3 Or suma = 12 Then
24 perdidas = perdidas + 1
25 Else
26 objetivo = suma
27 Do
28 dado1 = Int(Rnd() * 5 + 1)
29 dado2 = Int(Rnd() * 5 + 1)
30 suma = dado1 + dado2
31 If suma = objetivo Then
32 ganadas = ganadas + 1
33 Exit Do
34 ElseIf suma = 7 Then
35 perdidas = perdidas + 1
36 Exit Do
37 End If
38 Loop
39 End If
40 Next i
41
42 Sheets(1).Cells(3, 2) = ganadas
43 Sheets(1).Cells(4, 2) = perdidas
44 Sheets(1).Cells(3, 3) = ganadas / corridas
45 Sheets(1).Cells(4, 3) = perdidas / corridas
46 End If
Las líneas 1 a 7 corresponden a declaración de variables, en las líneas 11 a 13 se hace una
inicialización de las variables, en la línea 15 comienza el ciclo que se ejecutará tantas veces
como corridas haya ingresado el usuario, en las líneas 17 a 19 se simula un lanzamiento de
dados, en las líneas 21 a 24 se determina si se gana o se pierde en el primer lanzamiento, en
caso de que no haya ni victoria ni derrota en el primer lanzamiento, se ejecuta el código a
partir de las líneas 26 a 38; en la línea 26 se determina cual es el lanzamiento que debe
obtener el jugador para ganar, en la línea 27 se entra a un ciclo sin condición de parada el cual
se detendrá cuando haya una victoria o una derrota, nótese que en estas líneas se simulan
lanzamientos repetidos hasta que se obtenga un lanzamiento objetivo o el 7. En las líneas 42 a
45 se presenta la información de la simulación en la hoja de cálculo. Se recomienda al lector
comparar los resultados analíticos con los resultados simulados, además de experimentar con
diferentes números de corridas.
Simulación de Montecarlo
Los métodos de Monte Carlo fueron introducidos en los 40’s por John von Neumann y
Stanislaw Ulam. Estos métodos se basan en un muestreo aleatorio para producir sus
resultados; de ahí que su desarrollo ha estado ligado al de los computadores. El nombre
Monte Carlo fue acuñado por von Neumann en referencia al casino Monte Carlo en Mónaco.
El escenario que usaremos para introducir los métodos de Monte Carlo es el siguiente;
suponga que una empresa ABC está interesada en conocer cuántas utilidades va a obtener si
lanza un nuevo producto al mercado, teniendo en cuenta que hay incertidumbres asociadas al
tamaño de mercado y gastos. Para realizar este análisis utilizaremos simulación de Monte
Carlo para estimar las ganancias.
En primer lugar, tenemos que:
2�(�(�3�� = 4('�&��� 5 6'�&���
donde supondremos que las entradas dependen sólo del número de ventas multiplicadas por
la ganancia unitaria, esta ganancia tiene en cuenta todos los costos en los que se incurre en la
producción, mercadeo, costos de transacción, etc. Así tenemos que 6(7��%�� = 8&(7�� )
2�(�(�3�9(37��3�. Para nuestro ejemplo, supongamos que GananciaUnitaria varía entre
$47 y $53.
La empresa tiene una estructura de mercadeo mediante la cual contacta a potenciales
compradores para ofrecer sus productos, sin embargo, no todos se convertirán en
compradores; es así como tenemos la siguiente ecuación para los ingresos:
4('�&��� = >�(7��7�� ) ?���>� !�� ) 2�(�(�3�9(37��3�
Donde tenemos que Contactos corresponde al número de clientes potenciales que contacta la
empresa y TasaCompra representa cuántos de estos Contactos efectivamente compran el
producto.
Los egresos de la compañía son los siguientes, en primer lugar supongamos, que de acuerdo a
un estudio de mercadeo, se determino que se incurre en un costo por cada contacto que se
hace a un cliente potencial, este costo unitario lo llamaremos CostoContacto; adicionalmente
se tienen unos costos de producción totales llamados CostosProducción, los cuales vamos a
asumir constantes por simplicidad. Así tenemos que los egresos de la empresa son:
2�(�(�3�� = >�(7��7�� ) ?���>� !�� ) 2�(�(�3�9(37��3� 5 >��7�����%H��3ó(
� >�(7��7�� ) >��7�>�(7��7�
Adicionalmente, la empresa supone que su costo unitario de contacto variará entre $0.2 y
$0.8, el número de clientes contactados que pasan a ser compradores oscilará entre 1% y 5%,
y el número de clientes potenciales estará entre 1200 y 1800. Así tenemos que las entradas
para la simulación de Monte Carlo serán Contactos, TasaCompra, CostoContacto y
GananciaUnitaria ya que los demás parámetros se suponen constantes. Para este ejemplo
supondremos que las variables siguen una distribución de probabilidad uniforme
A continuación se describe como implementar el modelo aquí planteado en Excel; abra una
nueva hoja de cálculo y configúrela como se muestra en la figura.
Después introduzca en las celdas A2, B2, C2, D2, E2 y G2 la respectiva fórmula:
Para A2 = $J$2 + ALEATORIO()*($K$2 - $J$2)
Para B2 = $J$2 + ALEATORIO()*($K$3 - $J$3)
Para C2 = $J$2 + ALEATORIO()*($K$4 - $J$4)
Para D2 = $J$2 + ALEATORIO()*($K$5 - $J$5)
Para E2 = 800
Para G2 = A2 * C2 * D2 - (E2 + A2 * B2)
Como se puede apreciar en la figura siguiente, tenemos ya una primera simulación de las
ganancias, ahora es necesario generar más simulaciones, para esto arrastramos cada una de
las fórmulas hasta la fila 1000, tenga en cuenta que para la columna H debe insertar dos filas
con el número 800 antes de poder arrastrarlo, esto para evitar que Excel lo interprete como un
consecutivo. Se recomienda al lector realizar un histograma de los resultados, así como
calcular los estadísticos principales (media, desviación estándar, curtosis, etc.).