practica simulacion vb

7
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

Upload: fatima-rosario-reyes-tercero

Post on 02-Aug-2015

212 views

Category:

Documents


2 download

DESCRIPTION

Practicas de Simulacion en Visual Studio

TRANSCRIPT

Page 1: Practica Simulacion Vb

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

Page 2: Practica Simulacion Vb

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.

Page 3: Practica Simulacion Vb

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

Page 4: Practica Simulacion Vb

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.

Page 5: Practica Simulacion Vb

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

Page 6: Practica Simulacion Vb

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.).

Page 7: Practica Simulacion Vb