Introdução a simulações de eventos discretos

Simulação de Eventos Discretos em Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Modelos de eventos discretos vs. modelos contínuos

Modelos contínuos

  • Roda em passos de tempo fixos

  • Tempo é uma variável fictícia

    • Tempo não é atualizado dentro do loop
  • Uso de for-loops de tempo

    for t in range(time_range):
    

Modelos de eventos discretos

  • Roda em passos de tempo variáveis

    • Executa/agenda eventos discretos com durações diferentes ao longo do tempo
  • Tempo é uma variável de estado

    • Tempo é atualizado dentro do while-loop
    • Tempo não é fictício
  • Frequentemente usa while-loops

    while (time < 365):
    time += process_duration
    
Simulação de Eventos Discretos em Python

Componentes de modelos de eventos discretos

  • Variáveis de estado
  • Relógio
  • Lista de eventos (ou de processos)
  • Condição(ões) de término
Simulação de Eventos Discretos em Python

Componentes do modelo

Exemplo: modelo de empresa de táxi

while (time < 10):

    # Process 1
    time_duration_1 = manage_requests()
    time += time_duration_1

    # Process 2
    time_duration_2 = dispatch_taxi()
    time += time_duration_2

Condição de término

while (time < 10)
  • Condição(ões) que encerram a simulação
Simulação de Eventos Discretos em Python

Componentes do modelo

Exemplo: modelo de empresa de táxi

while (time < 10):

    # Process 1
    time_duration_1 = manage_requests()
    time += time_duration_1

    # Process 2
    time_duration_2 = dispatch_taxi()
    time += time_duration_2

Relógio

time += time_duration_1
time += time_duration_2
  • time acompanha o tempo atual da simulação
  • O relógio salta para o início do próximo evento conforme a simulação avança
  • O tempo “salta” porque eventos são instantâneos
Simulação de Eventos Discretos em Python

Componentes do modelo

Exemplo: modelo de empresa de táxi

while (time < 10):

    # Process 1
    time_duration_1 = manage_requests()
    time += time_duration_1

    # Process 2
    time_duration_2 = dispatch_taxi()
    time += time_duration_2

Variável de estado

time
  • Reduzir o tempo entre chamar o táxi e o desembarque

  • Variáveis que caracterizam saídas e eficiência do sistema

Simulação de Eventos Discretos em Python

Vamos praticar!

Simulação de Eventos Discretos em Python

Preparing Video For Download...