Está en la página 1de 49

SIMULACION POR

MONTECARLO
SIMULACION DE PROCESOS DISCRETOS

Mg. Ciro Mejia Elias


Contenido

• Conceptos y acepciones

• Flujogramas

• Distribuciones comunes

• Aplicaciones del método


SIMULACIÓN POR MONTE CARLO
La simulación por Monte Carlo es una técnica que combina conceptos estadísticos con la capacidad que
tienen los ordenadores para generar valores aleatorios y automatizar cálculos. Esta técnica tiene sus
orígenes en los años 40 con el trabajo de Stan Ulam y Von Neumann cuando investigaban el movimiento
aleatorio de los neutrones. Por su parte, Monte Carlo muestra la ruleta de su casino como uno de los
aparatos mecánicos más sencillos que permiten obtener números aleatorios.

Este procedimiento se aplica a sistemas de simulación donde existen variables de tipo Estocástica
(probabilidades).
Simulación por Montecarlo
• Una vez identificados dichos inputs o variables aleatorias, se lleva a
cabo un experimento consistente en:
(1) Generar – con ayuda del ordenador - muestras aleatorias (valores
concretos) para dichos inputs.

(2) Analizar el comportamiento del sistema ante los valores


generados. Tras repetir n veces este experimento, dispondremos
de n observaciones sobre el comportamiento del sistema, lo cual
nos será de utilidad para entender el funcionamiento del mismo –
obviamente, nuestro análisis será tanto más preciso cuanto mayor
sea el número n de experimentos que llevemos a cabo.
Acciones para el procedimiento Monte Carlo
➢Generador de números aleatorios.

➢Generador de distribuciones de probabilidad.

➢Reducción de incertidumbre probabilística (elevado


número de repeticiones).
Ejemplo de la simulación de Montecarlo
• Supongamos que queremos contratar a un gestor que realice
operaciones por nosotros en la bolsa de valores. El gestor presume de
haber ganado 50% de rentabilidad durante el último año con una
cuenta de valores de 20.000 dólares. Para confirmar que lo que dice
es verdad, le pedimos su track record auditado. Es decir, el registro de
todas sus operaciones verificado por una auditor (para evitar estafas
y cuentas falsas). El gestor nos facilita toda la documentación y
procedemos a valorar la cuenta de resultados.
• Vamos a suponer que disponemos de 20.000 dólares. Introducimos
las variables correspondientes en nuestro programa informático y
extraemos el siguiente gráfico:
Ejemplo de la simulación de Montecarlo
Ejemplo de la simulación de Montecarlo
• Con los resultados facilitados por el gestor que queremos contratar,
se han realizado 10.000 simulaciones. Además los resultados se han
proyectado cuatro años. Esto es, 10.000 escenarios diferentes para
esos resultados durante cuatro años. En la gran mayoría de
escenarios se genera una rentabilidad positiva, pero existe una
pequeña probabilidad de perder dinero. La simulación de Montecarlo
nos facilita una infinidad de combinaciones para evaluar escenarios
de los que a simple vista no somos conscientes.
FLUJOGRAMA PARA
UNA SIMULACIÓN

El diagrama de flujo o también


diagrama de actividades es una
manera de representar
gráficamente un algoritmo o un
proceso de alguna naturaleza, a
través de una serie de pasos
estructurados y vinculados que
permiten su revisión como un
todo.
SIMBOLOS DE UN FLUJOGRAMA

1. Inicio o fin
Este botón aparece al inicio
y fin de cada diagrama de
INICIO flujo, para indicar el inicio y
fin del proceso.
FIN
SIMBOLOS DE UN FLUJOGRAMA

2. Proceso o actividad
Denota alguna actividad o
proceso, en el triangulo se
ACTIVIDAD escribe lo mencionado.
También se usa para asignar
un valor a alguna variable o
declarar las variables a usar.
SIMBOLOS DE UN FLUJOGRAMA
3. Decisión: Si - entonces
Nos permite evaluar la
propiedad de una variable, y en
función de esta, realizar una
acción determinada.
Generalmente las salidas del
rombo se marcarán con las
opciones SI – NO o V – F.
SIMBOLOS DE UN FLUJOGRAMA

4. Conector de flujo
Se usa para indicar que la salida
de esta parte del diagrama de
flujo servirá como entrada para
otro diagrama de flujo.
Con frecuencia este símbolo se
utiliza cuando no existe suficiente
espacio para dibujar la totalidad
del diagrama de flujo en un papel.
SIMBOLOS DE UN FLUJOGRAMA
5. Entrada de datos
Nos permite recibir valores
por teclado y guardarlos en
variables con los datos
correspondientes a la
actividad a desarrollar por el
simulador.
SIMBOLOS DE UN FLUJOGRAMA
6. Salida de datos
• Nos permite mostrar en
pantalla algún tipo de dato,
o varios. Se usa para
indicar que la salida de una
actividad o resultado por el
programa
SIMBOLOS DE UN FLUJOGRAMA
7. Ciclo WHILE – DO (mientras)

• Permite realizar cierta


acción determinada por la
condición del Mientras
SIMBOLOS DE UN FLUJOGRAMA
8. Ciclo REPEAT - UNTILL(repetir mientras)
• Repite una serie de
acciones hasta que se de
cierta condición. Dicha
acción la determina el
operador =, que hace que
salga del bucle
SIMBOLOS DE UN FLUJOGRAMA
9. Ciclo con contador FOR- TO –DO
• Repite una serie de acciones
un número determinado de
veces, controlada por una
variable de tipo ordinal que se
incrementa o decrementa
automáticamente en cada
iteración.
SIMBOLOS DE UN FLUJOGRAMA
10. Flujo CASE OF (según)
• Nos permite evaluar la
propiedad de una variable, y
después de comparar una a
una las salidas con la
evaluación, realizar la acción
determinada .
SIMBOLOS DE UN FLUJOGRAMA
11. Sub proceso (función)
• Permite añadir Funciones /
SubProcesos al flujograma;
subproceso no devuelven valor, solo
realizan una tarea
específica
Ejemplo flujogramas
• 1. Hacer el diagrama de flujo para sumar dos números leídos por
teclado y escribir el resultado.
Ejemplo flujogramas
• 2. Hacer un diagrama de flujo que permita
leer 2 números diferentes y nos diga cual es
el mayor de los 2 números. Cual seria el
pseudocódigo?
Distribuciones más usadas
• Distribución Uniforme o rectangular

Donde u es un número aleatorio generado.


Distribuciones más usadas
• Distribución Exponencial

1
𝑥 = − ln 𝑟
λ

𝑥 = −𝜇 ln 𝑟

Donde u es un número aleatorio generado.


Distribuciones más usadas
• Distribución Normal:
Para normalizar una VA , tenemos

Para generar la variable x :


𝑥 = 𝜇 + 𝑧. 𝜎
Donde z es un número aleatorio generado, 𝜇 es la media y 𝜎 desviación estándar.
Aplicación del Método
Ebrio Aleatorio
Supongamos que un borracho esta
parado en una esquina, cuando decide
caminar para que se le pase el efecto.
Supongamos que existe una probabilidad
igual que se dirija al norte, sur, este u
oeste al llegar a cada esquina. Si camina
10 calles, cuál es la probabilidad de que
termine su recorrido a dos calles de
donde empezó?.
Aplicación del
Método
Aplicación del Método
Aplicación del Método
Aplicación del Método
Aplicación del Método
Caso: Hallar volumen óptimo de pedido
Usted es gerente de una empresa distribuidora de libros y debe tomar
una decisión respecto al volumen de pedido de un libro para el próximo
trimestre.
Cada libro cuesta $7.5 y se vende por $10.
Si al cabo del trimestre quedan libros sin vender, se pueden devolver a
la editorial los ejemplares sobrantes obteniendo un reembolso de
$2.50 por libro.
El personal de ventas de la empresa estima que la demanda para ese
libro para el próximo trimestre se ajusta a la siguiente distribución de
probabilidad:
Sobre la base de esta información:
1. Defina el volumen de pedido con el objetivo de maximizar el
resultado esperado
• Tenemos una variable aleatoria discreta:
Demanda
r Є[0,1]
Demanda P.
Promedio Probab. Intervalo
(libros) acumulada
100 – 150 125 0.3 0.3 [ 0 , 0.3[
150 - 200 175 0.35 0.65 [ 0.3 ,0.65[
200 – 250 225 0.25 0.9 [ 0.65 , 0.9[
250 - 300 275 0.1 1 [ 0.9 ,1[

• Para generar la VA, usaremos un número


aleatorio r Є[0,1] para luego ubicarlo en el
intervalo en el que se encuentra.
Declaramos DIAGRAMA DE FLUJO DEL PROCESO
las variables
La función utilidad estará dado por :
a usar
U=(10 – 7.5) V – 5(D-V)
Donde:
V= ventas
D=demanda asumida o pedido
Supuesto : para maximizar la utilidad , la expresión “5(D-V)”
Llama al debe ser mínima, por ello asumimos D=V . Es decir que se
subproceso va a vender el total del pedido realizado.
DEM 1. Inicializamos las variables auxiliares a usar con el valor de 0.
2. N es la variable de entrada, el cual indica el número de iteraciones.
3. Inicia un ciclo desde 1 hasta N.
4. Generar DEM: llama al subproceso creado anteriormente y genera
un valor en la variable DEM.
5. Con el valor de DEM se genera un valor en la variable U (U deja de
Condicional ser 0).
para identificar
6. En el condicional, si U > Umax, Umax toma el valor de U. En la
la mayor
utilidad en las N primera iteración Umax =0. Se almacenará en PED el valor de DEM
iteraciones para el Umax.
7. Al finalizar las iteraciones se mostrará el resultado del valor de PED.
SISTEMAS DE COLAS
El sistema de colas o filas, cuenta
en esencia, con tres componentes
básicos:
1) La población fuente y la forma
en que los clientes llegan al
sistema,
2) El sistema de prestación del
servicio
3) La condición de los clientes que
salen del sistema (¿de regreso a la
población fuente o no?).
SISTEMA DE COLA PARA UN SERVIDOR
En la garita aduanera de la frontera de California, los vehículos llegan
distribuidos normalmente con una media de 4 minutos y una
desviación estándar de 0.5 minutos. Para simplificar el problema,
suponga que sólo hay un carril y un agente aduanero que inspecciona
los vehículos a un ritmo de 10 por minuto, con una distribución
exponencial.
a) ¿Cuál es el promedio de la línea de espera?
b) ¿Cuál es número clientes atendidos?
c) ¿Cuánto tiempo pasaron en cola y cuanto en el sistema?.
Representación gráfica del sistema

ENTIDADES ATRIBUTOS ACTIVIDADES


Vehículos Tiempo de arribo Llegar al sistema.
(temporal) Formar cola.
Ser atendido por el agente.
Salir del sistema.
Agente Tiempo de servicio. Atender vehículos.
(permanente) Esperar vehículos.
SISTEMA DE COLA PARA UN SERVIDOR

Instantes en que cambia el sistema:

• Tiempo de llegada de un cliente o arribo→ TLL

• Tiempo de fin de Servicio → TFS

• Para un cliente siempre se cumple TLL < TFS


Diagrama de flujo para un sistema con
un servidor
Donde Datos de
entrada
• N= numero de simulaciones
• TMS= periodo de simulación
• TLL= tiempo de llegada
• TFS= tiempo de fin de
servicios
• RM= reloj maestro
• I= contador del FOR TO DO
Para la llegada de los vehículos Para el tiempo de atención del
servidor

DISTRIBUCIÓN
NORMAL DISTRIBUCIÓN
EXPONENCIAL
Evento Arribo
1. Para el subproceso, guardamos en la variable
RM el valor de TLL.
2. Cuando las Entidades en el sistema (ES) es
igual a 0 (no hay cola) , se guarda el valor de 1
en ES.
3. Luego llamamos al subproceso TS.
4. En TFS se almacenará el valor de RM mas el
de TS, RM indica el tiempo de llegada y va en
incremento en cada iteración.
5. Cuando ES no es 0, la entidad pasa a formar la
cola y se genera TELL ( tiempo entre llegadas)
llamando al subproceso mencionado, y en TLL
se almacena RM+TELL
Evento fin de servicio
1. Para el subproceso, guardamos en la variable
RM el valor de TFS.
2. Cuando es el caso de fin de servicio, el número
de unidades atendidas incrementa en 1.
3. Cuando no hay cola, las entidades en el
sistema es 0 y el TS (tiempo de servicio) se
almacena un número suficientemente grande
cualquiera.
4. Cuando hay cola, y ocurre el fin de servicio
entonces la cola disminuye en 1 unidad. Se
llama al subproceso TS para luego hallar TFS
(tiempo final de servicio).
5. Se retorna la variable TFS.
Programa
principal para
el promedio de
vehículos
atendidos
Caso: Carga de contenedores
A un puerto marítimo llegan trenes con contenedores que son cargados
en barcos para su posterior transporte internacional. Los trenes llegan
cada 15 horas por término medio exponencial y el número de
contenedores que lleva cada tren es variable. De un estudio anterior se
deduce que el 10% de las veces lleva 5 contenedores; el 20% lleva 8, el
50% 12 y el 20% restante lleva 15 contenedores. Cada contenedor
tarda 1 hora en ser cargado en el barco. El barco no sale del puerto
hasta que está completamente lleno ( en cada barco caben 50
contenedores). Cuando un barco zarpa, otro ocupa inmediatamente su
puesto.
Simular la carga de los primeros 15 trenes para averiguar cuantas horas
son necesarias.
Para la cantidad de contenedores
por tren

La cantidad de contenedores por cada tren, sigue una distribución discreta


según la siguiente tabla:

Probabilidad
N contenedores Probabilidad Intervalo
acumulada

5 0.1 0.1 [0 – 0.1[


8 0.2 0.3 [0.1 – 0.3[
12 0.5 0.8 [0.3 – 0.8[
15 0.2 1 [0.8 – 1[
Para la llegada de los trenes Para la cantidad de contenedores
por tren
DISTRIBUCIÓN
EXPONENCIAL DISTRIBUCIÓN
DISCRETA

CONT es el
número de
contenedores
por cada tren
Evento Arribo
de trenes
1. Generamos CONT llamando al subproceso.
2. Para el subproceso, guardamos en la variable
RM el valor de TLL.
3. Cuando las Entidades en el sistema (ES) es
igual a 0 (no hay cola) , se guarda el valor de 1
en ES.
4. Luego llamamos al subproceso TS.
5. En TFS se almacenará el valor de RM mas el
de TS que en este caso es CONT, RM indica el
tiempo de llegada y va en incremento en cada
iteración.
6. Cuando ES no es 0, la entidad pasa a formar la
cola y se genera TELL ( tiempo entre llegadas)
llamando al subproceso mencionado, y en TLL
se almacena RM+TELL
Evento fin de servicio
1. Asignamos el valor de TFS a RM, en la
primera iteración este es 0.
2. Llamamos al subproceso CONT (
contenedores dentro de un tren).
3. Cuando es el evento fin de servicio, quiere
decir que la entidad sale del sistema, por
ello se incrementa en 1 la variable
Tatendidos.
4. Si hay cola; entonces, al ser atendido la
entidad, la cola disminuye en 1.
5. El tiempo de fin de servicio toma el valor
de RM más CONT, ya que cada contenedor
demora 1 h en ser descargado.
6. Si no hay cola, entonces no quedarían
entidades en el sistema, y TFS toma el
valor de CONT.
7. Retorna las variables halladas en este
subproceso.
Programa principal para la
carga de contenedores en
un barco
1. Inicializamos las variables a usar.
2. Ingresamos el número de iteraciones para hacer
la simulación con la menor incertidumbre posible.
3. El condicional para determinar si es un evento de
arribo o fin de servicio, llama a los subprocesos
mencionados, el cual devuelven las variables
involucrados dentro de estos, como por ejemplo
Tatendidos.
4. El ciclo Repetir mientras es para hacer la
simulación del tiempo que demoraría en
descargar 15 trenes. Como solicita el enunciado
del problema.
5. En TD (tiempo de descarga de los 15 trenes) se
almacenará el valor de RM para la descarga de
los mencionados.

También podría gustarte