Simulacin I - PowerPoint PPT Presentation

1 / 13
About This Presentation
Title:

Simulacin I

Description:

Permite el estudio detallado de sistemas complejos, sobre los que resulta ... { return((int)(((double) rand()/RAND_MAX) 0.5)); Generando distribuciones uniformes ... – PowerPoint PPT presentation

Number of Views:67
Avg rating:3.0/5.0
Slides: 14
Provided by: FelipeC2
Category:
Tags: dbl | simulacin

less

Transcript and Presenter's Notes

Title: Simulacin I


1
Simulación (I)
  • Clase 25
  • Introducción a la Programación

2
Resumen del último capítulo
  • Aprendimos sobre TDAs
  • Para que sirven
  • Cómo se usan
  • Cómo se implementan
  • Constructores, Selectores

3
Para qué sirven las simulaciones computacionales?
  • Permite el estudio detallado de sistemas
    complejos, sobre los que resulta costoso, difícil
    o peligroso llevar a cabo estudios reales.
  • Ejemplos
  • Colas en un peaje, banco o supermercado
  • Explosiones atómicas
  • Contagio de una enfermedad
  • Terremotos
  • Tacos en una ciudad

4
Características de un modelo de simulación
  • Es una simplificación de la realidad (abstracción
    o modelo de la realidad)
  • Intenta que las variables estudiadas en el modelo
    se comporten de forma similar a la realidad
  • el mapa no es el terreno
  • Normalmente tienen parámetros, es decir variables
    que representan características del entorno y que
    pueden cambiarse en forma simple. Ejemplos
  • Número de autos
  • Tiempo de atención del cajero
  • Número de cajas
  • Normalmente los parámetros representan
    distribuciones de probabilidad o datos recogidos
    del mundo real.

5
Cada modelo requiere de un sustento teórico
  • El sustento depende del problema
  • Teorías típicamente utilizadas
  • Teoría de colas
  • Dinámica (física)
  • Elementos finitos
  • Teoría de autómatas

6
Para simular es necesario poder producir números
aleatorios
  • Cualquiera que considere generar números
    aleatóreos por métodos puramente aritméticos
    está, por supuesto, en un estado de pecado -John
    Von Neumann
  • Cómo se pueden generar números aleatorios con un
    computador?
  • En la realidad no son aleatorios, si no
    seudo-aleatorios
  • Parecen aleatorios, pero en realidad no lo son
  • Existen varios formulas, pero la más usada es la
    congruencia lineal
  • s se llama la semilla.
  • Cuál puede ser una buena semilla?

7
Cómo implementar números aleatorios en C
  • Semilla
  • include ltstdlib.hgt
  • include lttime.hgt
  • / Inicializa generador de numeros aleatorios /
  • void randomize()
  • time_t tim / Variable para almacenar la
    hora actual /
  • time(?tim) / Obtiene la hora actual /
  • srand(tim) / Establece semilla de acuerdo a
    hora /
  • Generación de 0 o 1 de forma aleatoria
  • int random01()
  • return((int)(((double) rand()/RAND_MAX)0.5))

8
Generando distribuciones uniformes
  • Con números flotantes entre A y B
  • double randomABd(double A, double B)
  • return((double) rand()/RAND_MAX(B-A)A)
  • Con números enteros?

9
Simulación de cajas de un supermercado
  • Un supermercado recibe una cantidad regular de
    clientes diariamente, los cuales traen consigo
    una lista de los productos que van a comprar. Los
    clientes buscan sus productos en los estantes y
    pasan de inmediato a la caja que más les convenga
    (en la que deban esperar menos en la fila). Una
    vez que han pagado se retiran del local.
  • Para determinar cuál es la caja más conveniente,
    los clientes miran las compras que llevan los
    clientes en la cola, y eligen aquella caja con
    menos productos delante de ellos (como es
    natural).

10
Características del modelo
  • Los clientes llegan al supermercado según una
    tasa regular todos los días, y siguiendo un
    comportamiento de compras también regular.
  • Un cliente se demora un tiempo constante en
    ubicar cada uno de los productos que comprará.
  • Las cajeras pasan por el lector de barras los
    productos a un ritmo constante, es decir, una
    determinada cantidad de productos por minuto.
  • Una vez que un cliente elige una caja en la que
    hará fila, no se moverá a otra.
  • Se considera despreciable el tiempo que le toma
    al cliente pagar por sus compras y recibir su
    vuelto.
  • La unidad de tiempo discreto que se empleará en
    la simulación es equivalente a un minuto,
    descartando las tareas que puedan llevarse a cabo
    en fracciones restantes. Por ejemplo, si a una
    cajera le toma 10 segundos pasar los artículos de
    un cliente, el resto de ese minuto lo
    desperdiciará y no lo empleará atendiendo a otro
    cliente.

11
Diagramas del modelo
12
Archivo de entrada
  • Archivo de entrada, que considera 25 clientes.
  • 25
  • 10 01
  • 10 05
  • 10 05
  • 10 05
  • 10 05
  • 10 05
  • 10 05
  • 10 07
  • .
  • .
  • .
  • 10 22
  • 10 22
  • 10 22
  • 10 22
  • 10 22
  • 10 22

13
Especificación del algoritmo
  • 1. Clientes CrearCola()
  • 2. Cajas CrearCajas()
  • 3. HoraActual CrearHora(HORA_INICIO,
    MIN_INICIO)
  • 4. Inicializar TotalTics en 0, EsperaTotal en 0,
    EsperaMax en 0
  • 5. Crear cada uno de los elementos del arreglo de
    estadísticas EstCajas
  • 6. Clientes LeeClientes(Clientes)
  • 7. Iterar mientras QuedanClientes(Clientes,
    Cajas) retorne TRUE
  • 7.1. Iterar mientras exista algún cliente que
    haya terminado de comprar
  • 7.1.1. Acumular estadísticas de la caja a la
    que pasará el cliente
  • 7.1.2. Pasar al cliente a la mejor caja
    disponible
  • 7.1.3. Sacar al cliente de la cola de clientes
  • 7.2. Atender(Cajas)
  • 7.3. Tic()
  • 8. MostrarEstadisticas()
Write a Comment
User Comments (0)
About PowerShow.com