1 Relatório da Atividade

2 Instrunções da atividade

2.1 1) Sobre

Ferramenta de Cálculo de Métricas de Teoria das Filas

Este projeto implementa uma calculadora de métricas M/M/1 e M/M/c (Erlang‑C), com duas formas de uso: 1) Entradas diretas: informar λ e μ e obter as métricas. 2) A partir de CSV do JMeter: estimar λ e μ automaticamente e calcular as métricas.

Como executar: Abra o link local no navegador, escolha o modelo e: - informe λ e μ diretamente, ou - envie um CSV do Simple Data Writer do JMeter (com colunas timeStamp e elapsed).

Como estimamos λ e μ a partir do JMeter - λ (taxa de chegada) = N / duração (s), onde: - N é o número de linhas do CSV (amostras), - duração (s) = (max(timeStamp)min(timeStamp)) / 1000 - μ (taxa de serviço) ≈ 1 / média(elapsed_s), onde elapsed_s = elapsed_ms / 1000

Observação: quando o sistema está no limite (muito carregado), μ estimado por 1/avg_elapsed tende a ser conservador. Em cargas leves, usar o Throughput do Summary Report também é aceitável como estimativa de μ.

Métricas retornadas:

M/M/1 - ρ = λ/μ - L = ρ / (1 − ρ) - Lq = ρ² / (1 − ρ) - W = 1 / (μ − λ) - Wq = λ / (μ(μ − λ)) - P0 = 1 − ρ

M/M/c (Erlang‑C):

  • ρ = (λ / μ) / c
  • P0 (prob. de sistema vazio), Pw (prob. de esperar)
  • Lq, Wq, W, L

Estrutura:

  • fila.py — biblioteca com mm1, mmc, calc_from_jmeter_csv. (Original)
  • app.py — UI Streamlit. (Original)
  • *.Rmd — Relatório R Markdown com funções R adaptadas (Este arquivo)

2.2 2) Tabela Interativa

2.2.1 2.1 Tabela de Métricas (DT)

Esta aba apresenta 50 cenários simulados de check-in aéreo para demonstrar a Teoria das Filas. Utilize os campos de busca acima das colunas (Linha Aérea, Horário) e o seletor para ajustar a visualização de 5 a 100 registros.

2.2.2 2.2 Explicação dos Resultados

Esta seção apresenta a análise e interpretação dos resultados, com foco na variação das métricas nos diferentes cenários de check-in aéreo (Passageiros = Clientes; Atendentes = Servidores).

A análise das 50 linhas dinâmicas revela:

  • Alta Utilização (\(\rho\)): Cenários onde \(\rho\) se aproxima de 1 (ou seja, \(\lambda\) está perto de \(c \cdot \mu\)) resultam em tempos de espera (\(W_q\)) e filas (\(L_q\)) muito maiores. Exemplo: Um cenário AZUL de Pico com \(\lambda=5.5\), \(\mu=1.5\) e \(c=4\) teria \(\rho \approx 0.9167\), gerando longas filas.
  • Linhas Aéreas e Serviços: Geralmente, horários de Pico e Linhas Aéreas com alta demanda (como LATAM/GOL) tendem a apresentar maior \(\rho\) e \(P_w\) (Probabilidade de Espera), impactando a experiência do passageiro.
  • Decisão de Infraestrutura: Modelos com \(P_0\) (Probabilidade de Sistema Vazio) alto indicam um sistema subutilizado, podendo sugerir que a linha aérea tem mais atendentes (\(c\)) do que o necessário para a demanda (\(\lambda\)) daquele horário.

2.3 3) Pesquisar por Dataset

2.3.1 3.1 Integração de Dados CSV

Esta aba demonstra o código R necessário para integrar um dataset CSV local de testes de performance (como o JMeter) ao relatório, simulando a funcionalidade do app.py.

ATENÇÃO: O RPubs ou o relatório HTML gerado não podem aceitar upload de arquivos dinamicamente no navegador. Para analisar um CSV real, você deve executar o R Markdown localmente no RStudio, substituindo a linha do read.csv() pelo caminho do seu arquivo.

2.3.1.1 3.1.1 Código para Estimativa de Parâmetros

A lógica de cálculo de \(\lambda\) e \(\mu\) do JMeter, conforme detalhado na aba “Sobre”, é implementada na função abaixo:

# Funções de estimativa de Lambda e Mu a partir de CSV (JMeter)
calc_from_jmeter_csv_r <- function(file_path, c_servidores = 2) {
  # 1. Carregar o CSV do JMeter
  # SUBSTITUA 'caminho/para/seu/arquivo.csv' pelo caminho real do arquivo
  df <- read.csv(file_path) 
  
  # 2. Renomear colunas para consistência (JMeter usa 'timeStamp' e 'elapsed')
  ts_col <- 'timeStamp'
  elapsed_col <- 'elapsed'

  # 3. Cálculo de Duração Total do Teste (em segundos)
  min_ts <- min(df[[ts_col]])
  max_ts <- max(df[[ts_col]])
  duration_s <- (max_ts - min_ts) / 1000 
  
  # 4. Cálculo da Taxa de Chegada (λ)
  N <- nrow(df) # Número de amostras (passageiros virtuais)
  lambda_estimado <- N / duration_s 
  
  # 5. Cálculo da Taxa de Serviço (μ)
  avg_elapsed_ms <- mean(df[[elapsed_col]])
  mu_estimado <- 1 / (avg_elapsed_ms / 1000)
  
  # 6. Cálculo das Métricas (M/M/c)
  res_final <- mmc(lambda = lambda_estimado, mu = mu_estimado, c = c_servidores)
  
  return(list(
    lambda = lambda_estimado,
    mu = mu_estimado,
    metricas = res_final
  ))
}

# --- EXEMPLO DE USO LOCAL ---
# Para rodar, remova o 'eval=FALSE' no chunk e use:
# resultados <- calc_from_jmeter_csv_r(file_path = "Caminho/para/seu/arquivo.csv", c_servidores = 3)
# print(resultados$metricas)

Observação: A função mmc utilizada acima está definida na seção de setup inicial deste relatório.

2.4 1.1 Metrica1

2.4.1 Equação 1: Métricas M/M/1 (Um Guichê de Check-in)

Métrica Equação (LaTeX) Significado
Utilização (ρ) \[ \rho = \frac{\lambda}{\mu} \] Proporção de tempo que o atendente de check-in está ocupado.
Prob. Sistema Vazio (P0) \[ P_0 = 1 - \rho \] Probabilidade de haver zero passageiros no sistema (o guichê estar livre).
Passageiros no Sistema (L) \[ L = \frac{\rho}{1 - \rho} \] Número médio de passageiros no sistema (fila + check-in).
Passageiros na Fila (Lq) \[ L_q = \frac{\rho^2}{1 - \rho} \] Número médio de passageiros esperando na fila.
Tempo no Sistema (W) \[ W = \frac{1}{\mu - \lambda} \] Tempo médio que um passageiro gasta no sistema (espera + check-in).
Tempo na Fila (Wq) \[ W_q = \frac{\lambda}{\mu(\mu - \lambda)} \] Tempo médio que um passageiro espera na fila.

2.5 Metricas2

2.5.1 Equação 2: Métricas M/M/c (Múltiplos Guichês de Check-in)

Métrica Equação (LaTeX) Significado
Utilização (ρ) \[ \rho = \frac{\lambda}{c \mu} \] Intensidade de tráfego média por atendente de check-in.
Prob. de Espera (Pw) \[ P_w = \frac{\frac{(\lambda / \mu)^c}{c!} \cdot P_0}{1 - \rho} \] Probabilidade de um passageiro ter que esperar na fila (todos os \(c\) atendentes ocupados).
Passageiros na Fila (Lq) \[ L_q = \frac{P_w \cdot \rho}{1 - \rho} \] Número médio de passageiros esperando na fila.
Tempo na Fila (Wq) \[ W_q = \frac{L_q}{\lambda} \] Tempo médio que um passageiro espera na fila.
Tempo no Sistema (W) \[ W = W_q + \frac{1}{\mu} \] Tempo total médio que um passageiro gasta no sistema.
Passageiros no Sistema (L) \[ L = \lambda W \] Número médio de passageiros no sistema (Lei de Little).

2.6 Metricas3

2.6.1 Equação 3: Estimativa de Parâmetros (JMeter)

Estas são as equações usadas para estimar os parâmetros \(\lambda\) e \(\mu\) a partir dos dados brutos de um CSV do JMeter (contexto de testes de performance de sistemas de aviação/passagens).

Métrica Equação (LaTeX) Significado
Taxa de Chegada (\(\lambda\)) \[ \lambda = \frac{N}{Duração_{(s)}} \] Número total de requisições de passageiros virtuais (\(N\)) dividido pela duração total do teste em segundos.
Taxa de Serviço (\(\mu\)) \[ \mu \approx \frac{1}{\text{Média}(\text{elapsed}_s)} \] O inverso do tempo médio de processamento de uma requisição de check-in em segundos.
Duração (\(Duração_{(s)}\)) \[ \frac{\max(timeStamp) - \min(timeStamp)}{1000} \] Diferença entre o último e o primeiro timestamp do teste, convertida para segundos.

2.7 Bibliografia

2.7.1 📚Referências Bibliográficas

  1. HILLIER, Frederick S.; LIEBERMAN, Gerald J. Introdução à Pesquisa Operacional. 9. ed. Porto Alegre: McGraw-Hill, 2010.
  2. GROSS, Donald; HARRIS, Carl M. Fundamentals of Queueing Theory. 4. ed. New York: John Wiley & Sons, 2008.
  3. PRADO, Darci. Teoria das Filas e da Simulação. 1. ed. Nova Lima: Falconi Editora, 2017.
  4. RODRIGUES, Pablo Einstein. Uma Breve Introdução à Teoria das Filas. Monografia de Pós-Graduação, Instituto Federal de Educação, Ciência e Tecnologia de Goiás (IFG), 2022.
  5. TORRES, Oswaldo Fadigas. Elementos da Teoria das Filas. Revista de Administração de Empresas, v. 4, n. 11, p. 1-18, 1964.