Eventos e processos determinísticos

Simulação de Eventos Discretos em Python

Diogo Costa (PhD, MSc)

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

Determinismo de evento (ou processo)

NOTA: Os termos "evento" e "processo" são usados como sinônimos.

O que é determinismo de evento (ou processo)?

  • Capacidade de prever o processo com precisão
  • Processo é dito "determinístico"

Por que processos determinísticos são importantes?

  • Atividades naturais e humanas são complexas
  • Muitos processos e recursos interdependentes
  • Alguns processos se repetem sempre do mesmo jeito
  • O impacto na saída do sistema pode ser previsto com precisão
Simulação de Eventos Discretos em Python

Exemplos de processos ou eventos determinísticos

Mundo natural

  • Altura das marés
  • Aceleração da gravidade (9,81 m$^2$/s)
  • Movimento dos planetas no sistema solar
  • Velocidade do som no ar (331,29 m/s)
  • Velocidade da luz (300.000 km/s)
  • Congelamento da água (a 0 °C)

Dirigidos ou iniciados por humanos

  • Fluxo de uma torneira
  • Velocidade de uma envasadora de água
  • Tempo que a cafeteira leva para fazer um café
  • Calor liberado por um forno a 230 °C
  • Ciclos programados da máquina de lavar
  • Funcionamento de um micro-ondas
Simulação de Eventos Discretos em Python

Representando eventos determinísticos em modelos de eventos discretos

Processos determinísticos

  • Impacto previsível em sistemas dinâmicos
  • Duração bem conhecida
  • Se repetem do mesmo jeito

A duração do processo precisa entrar no tempo da simulação

# Processos determinísticos (tempo em horas)
duration_process_1 = 10
duration_process_2 = 5

while sim_time < total_sim_time:
# Atualiza o tempo da simulação: Processo 1 sim_time += duration_process_1
# Atualiza o tempo da simulação: Processo 2 sim_time += duration_process_2
Simulação de Eventos Discretos em Python

Representando eventos determinísticos usando SimPy

Uma implementação em SimPy de eventos determinísticos:

  • O método .timeout() registra a duração do processo
    • Ignora unidades de tempo
    • Trata tempo como números
    • Unidades devem ser consistentes no modelo
# Processos determinísticos
duration_process_1 = 10
duration_process_2 = 5

while True:

   # Atualiza o tempo da simulação: Processo 1
   yield env.timeout(duration_process_1)

   # Atualiza o tempo da simulação: Processo 2
   yield env.timeout(duration_process_2)

Simulação de Eventos Discretos em Python

Vamos praticar!

Simulação de Eventos Discretos em Python

Preparing Video For Download...