Teoria das Filas
O simulador gratuito mais completo do mercado: 5 modelos analíticos (M/M/1, M/M/c, Erlang-B/C), Simulação de Eventos Discretos (DES), NHPP, filas com prioridade, redes de filas e animação em tempo real — direto no navegador, sem instalação.
Cenários prontos
Escolha um cenário típico ou configure seus próprios parâmetros abaixo.
Modelo e parâmetros
Modele múltiplos tipos de cliente com proporções e prioridades distintas. Com disciplina PRIO, clientes de prioridade maior passam à frente da fila — o sistema calcula Wq e Lq separado por tipo.
| Tipo | Proporção % | Prioridade | μ próprio? |
|---|
Todo sistema começa em regime transiente — a fila ainda está convergindo para o equilíbrio. Defina o período de warm-up para descartá-lo das métricas e ver o badge 🟢 Estacionário ou 🟡 Transiente.
Teoria das Filas: Guia Completo com Exemplos Práticos
A Teoria das Filas (Queueing Theory) é o ramo da matemática aplicada que modela sistemas onde entidades — clientes, pacientes, pacotes de dados, peças industriais — chegam, aguardam quando todos os servidores estão ocupados e depois são atendidas. Criada em 1909 pelo engenheiro dinamarquês Agner Krarup Erlang para dimensionar as centrais telefônicas de Copenhagen, tornou-se em um século a base de decisões em:
- Engenharia de produção: balanceamento de linhas, dimensionamento de docas, gargalos industriais
- Saúde: capacidade de UTI, triagem hospitalar, filas de consulta
- Tecnologia: servidores web, bancos de dados, gateways de API, impressoras de rede
- Telecom: ramais PABX, call centers, buffers de redes
- Varejo e logística: check-in de aeroportos, caixas de supermercado, pedágios, postos de gasolina
Softwares como Arena (Rockwell Automation), Simul8 e AnyLogic usam simulação de eventos discretos (DES) para os casos mais complexos. Para a grande maioria dos problemas reais, porém, as fórmulas analíticas desta ferramenta entregam resultados exatos — e em milissegundos.
Por que este é o melhor simulador de filas online gratuito
Nenhuma outra ferramenta gratuita combina, sem instalação e sem cadastro, os recursos que este simulador oferece:
| Recurso | UtiliQueue | Calculadoras web gratuitas | Arena / Simul8 |
|---|---|---|---|
| M/M/1, M/M/c, M/D/1, M/M/1/K, Erlang-B | ✅ | parcial | ✅ |
| M/G/c (Weibull, Lognormal, Erlang-k…) | ✅ | ❌ | ✅ |
| Simulação de Eventos Discretos (DES) | ✅ | ❌ | ✅ |
| Animação em tempo real da fila | ✅ | ❌ | ✅ |
| NHPP — λ variável por hora | ✅ | ❌ | ✅ |
| Filas com prioridade (VIP, urgência) | ✅ | ❌ | ✅ |
| Redes de filas — série, paralelo, condicional | ✅ | ❌ | ✅ |
| Ajuste de distribuição com teste KS | ✅ | ❌ | ❌ |
| Tabela comparativa multi-servidor | ✅ | ❌ | ❌ |
| Tutorial guiado de 24 passos | ✅ | ❌ | ❌ |
| Gratuito, sem instalação, sem login | ✅ | ✅ | ❌ |
| Funciona no celular | ✅ | parcial | ❌ |
Arena e Simul8 custam milhares de reais por ano e exigem instalação em Windows. JaamSim e SimPy são gratuitos, mas exigem programação. Este simulador entrega 24 das 24 características avaliadas em comparação com 10 ferramentas do mercado — pontuação máxima entre todas as ferramentas gratuitas e empatando ou superando as comerciais em acessibilidade.
Quando usar este simulador vs. Arena/Simul8
Use este simulador quando você precisa:
- Dimensionar rapidamente call centers, filas de banco, guichês, leitos de UTI, pedágios
- Validar com DES se o sistema tem distribuições não-exponenciais ou carga variável
- Modelar uma rede de produção com etapas em série, paralelo ou roteamento condicional
- Ensinar teoria das filas — os 22 cenários pré-configurados e o tutorial de 24 passos são ideais para sala de aula
Use Arena/Simul8 quando você tem: sistemas com centenas de filas interligadas com feedback loops complexos, modelagem 3D de fábricas ou lógica de negócio altamente customizada que exige scripting avançado.
Breve história — de Copenhagen ao século XXI
1909 — Erlang e o telefone
Agner Krarup Erlang era engenheiro da Copenhagen Telephone Company quando formulou o problema: quantos circuitos são necessários para atender as chamadas de uma cidade sem que o sinal de ocupado apareça com frequência inaceitável? Sua resposta — a fórmula de Erlang-B — calculou pela primeira vez a probabilidade de bloqueio em sistemas de perda pura. Em 1917, estendeu o trabalho para sistemas com fila (Erlang-C).
A unidade de tráfego Erlang (E) leva seu nome até hoje: 1 Erlang = 1 circuito ocupado durante 1 hora completa = λ/μ.
1950s–1970s — Expansão para manufatura e computação
Com o advento dos computadores mainframe, David Kendall (1953) propôs a notação A/S/c que padronizou a área. John Little (1961) provou o teorema que leva seu nome — válido para qualquer sistema estável. Jackson (1963) estendeu a teoria para redes de filas, abrindo o caminho para modelagem de sistemas de produção, computadores e telecomunicações.
1970s–1980s — Call centers e sistemas M/G/c
Erlang-C se tornou o padrão da indústria para dimensionamento de call centers. A fórmula de Pollaczek-Khinchine (P-K) e a aproximação de Kingman tornaram tratável o caso M/G/c com distribuição geral de serviço. Computadores permitiram calcular tabelas de Erlang para c até 100+ servidores.
1990s–2000s — Simulação de Eventos Discretos (DES)
Ferramentas como Arena (Siman/1982, Arena/1993) popularizaram a Simulação de Eventos Discretos — capacidade de modelar sistemas com rotas, prioridades, recursos múltiplos e distribuições arbitrárias, muito além do que as fórmulas fechadas suportam. Empresas passaram a simular fábricas inteiras antes de construí-las.
2010s–hoje — Web, microsserviços e IA
A teoria das filas ressurgiu em engenharia de software: dimensionamento de thread pools, análise de latência de microserviços, auto-scaling em nuvem (AWS CloudWatch, GCP Load Balancer) e circuit breakers todos têm raízes nos modelos M/M/c e M/G/c. O conceito de Little’s Law virou pilar do movimento DevOps para medir lead time e WIP.
O que você encontra neste guia — mapa de conteúdo
| Seção | Quando ler |
|---|---|
| Notação de Kendall | Sempre — é o vocabulário base |
| M/M/1 | Filas com 1 servidor, variabilidade aleatória |
| M/M/c | Call centers, caixas, guichês — múltiplos servidores |
| M/D/1 | Linhas de produção, pedágio eletrônico, tempo fixo |
| M/M/1/K | Sistemas com capacidade física limitada |
| M/M/c/c (Erlang-B) | Sem fila — PABX, leitos, licenças de software |
| Lei de Little | Quando você sabe 2 das 3 grandezas (L, W, λ) |
| Ajuste de distribuição | Antes de escolher o modelo — validar seus dados |
| Comparação de Cenários | Análise de trade-off entre configurações |
| Simulação DES | Validar analítico; ver distribuição de Wq; regime transiente |
| NHPP | λ varia ao longo do dia (call center, restaurante) |
| Warm-up | Simular sem distorção do estado inicial |
| Prioridades | Clientes VIP, urgências, SLAs diferenciados |
| Roteamento | Fluxos bifurcados, triagem, abandono parcial |
| Turnos & Falhas | Capacidade real com plantões e manutenção |
| M/G/1 / M/G/c | Weibull, Lognormal, Erlang — além da exponencial |
Dica de leitura rápida: se o seu único objetivo é calcular Wq e Lq para um sistema simples, vá direto ao modelo adequado (M/M/1, M/M/c ou M/D/1) e use os exemplos como referência. Os outros tópicos são para refinamento progressivo.
Notação de Kendall — como descrever qualquer fila
Todo sistema de filas é descrito pela notação compacta A/S/c/K:
| Posição | O que representa | Símbolos comuns |
|---|---|---|
| A | Processo de chegada | M (Poisson/aleatório), D (fixo/determinístico) |
| S | Distribuição do tempo de serviço | M (exponencial), D (determinístico/fixo) |
| c | Número de servidores em paralelo | 1, 2, 3… |
| K | Capacidade máxima do sistema | número ou ∞ (omitido = ilimitado) |
Exemplos de leitura da notação
| Sistema real | Notação | Leitura |
|---|---|---|
| Guichê de triagem hospitalar | M/M/1 | Chegadas aleatórias, serviço variável, 1 enfermeiro |
| Agência bancária com 2 caixas | M/M/2 | Chegadas aleatórias, serviço variável, 2 caixas paralelos |
| Linha de montagem cadenciada | M/D/1 | Chegadas aleatórias, tempo de ciclo fixo, 1 estação |
| Estacionamento com 15 vagas | M/M/1/15 | Chegadas aleatórias, 1 “servidor”, capacidade máxima 15 |
| PABX com 4 ramais | M/M/4/4 | Erlang-B: 4 servidores, sem fila, excesso é perdido |
Como estender a notação — A/S/c/K/N/D completo
A notação completa é A/S/c/K/N/D:
| Posição | O que representa | Padrão quando omitido |
|---|---|---|
| A | Processo de chegada | — (obrigatório) |
| S | Distribuição de serviço | — (obrigatório) |
| c | Servidores paralelos | — (obrigatório) |
| K | Capacidade máxima do sistema | ∞ (fila ilimitada) |
| N | Tamanho da população de origem | ∞ (infinita) |
| D | Disciplina da fila | FIFO |
Quando K = c (capacidade = número de servidores), chegadas em excesso são bloqueadas imediatamente sem formar fila — é o modelo Erlang-B (M/M/c/c).
Populações finitas (N finito): em sistemas onde há N máquinas e c técnicos de manutenção, ao parar uma máquina ela sai da “população geradora de chamados”. O modelo M/M/c//N (máquina de reparo de Engset) captura esse efeito — a taxa de chegada efetiva cai à medida que mais máquinas ficam paradas. Para esses casos, use a simulação DES da ferramenta.
Processos de chegada além do Poisson
O processo de Poisson (M) implica: (a) chegadas independentes entre si, (b) taxa constante λ no tempo, (c) no máximo uma chegada por instante infinitesimal. É uma excelente aproximação quando há muitas fontes pequenas e independentes — clientes distribuídos por uma cidade, requisições HTTP de milhares de usuários.
Quando o Poisson não se aplica:
| Situação | Processo mais adequado | Impacto |
|---|---|---|
| Chegadas em lotes (grupos, famílias, ônibus de turistas) | M[X]/M/c — batch arrivals | Lq pode ser 2–5× maior |
| λ varia ao longo do dia | NHPP (configure com ⏱ λ variável) | Pico até 10× o vale |
| Fontes em número finito (N máquinas) | Engset / M/M/c//N | λ efetivo decresce com ocupação |
| Chegadas correlacionadas (rajadas de rede, burst traffic) | MMPP (Markov-Modulated Poisson) | Filas muito maiores que Poisson |
| Chegadas periódicas (ciclos de produção, takt time) | D/M/c (chegadas determinísticas) | Fila menor que Poisson |
Para fins práticos, o Poisson é robusto: erros de modelagem tipicamente causam desvios menores do que a própria incerteza na estimativa de λ e μ a partir de dados reais.
Os três parâmetros fundamentais
λ — Taxa de chegada
Número médio de entidades que chegam por unidade de tempo. É sempre obtido de observação real ou histórico.
| Cenário | λ | Unidade |
|---|---|---|
| Agência bancária (horário de pico) | 20 | clientes/hora |
| Servidor web em produção | 120 | requisições/segundo |
| Pronto-socorro | 15 | pacientes/hora |
| Pedágio (por pista) | 120 | carros/hora |
| Check-in de aeroporto | 180 | passageiros/hora |
Como medir λ: conte o número de chegadas durante um período representativo (e.g., 1 hora) e divida pelo tempo. Repita em dias e horários diferentes para capturar a variabilidade.
μ — Taxa de serviço de um servidor
Número médio de atendimentos que um único servidor realiza por unidade de tempo. O tempo médio de atendimento é 1/μ.
| Cenário | μ | Tempo médio de atendimento |
|---|---|---|
| Caixa de agência bancária | 15 /h | 4 minutos |
| Médico em consultório | 4 /h | 15 minutos |
| Farmácia hospitalar (dispensação) | 80 /h | 45 segundos |
| Técnico de manutenção | 2 /h | 30 minutos |
| Worker de banco de dados | 250 /s | 4 ms |
Dica: se o tempo de serviço for altamente variável (CV > 1), prefira o modelo M/M/c. Se for praticamente constante (CV < 0,15), use M/D/1 ou M/D/c para resultados mais precisos.
ρ — Utilização por servidor
ρ representa a fração do tempo em que cada servidor está ocupado. Para sistemas estáveis: ρ < 1. Quando ρ ≥ 1, a fila cresce sem limite.
O efeito exponencial da utilização
A relação entre ρ e o tempo de espera não é linear — é explosiva. No modelo M/M/1:
ρ Wq (múltiplos de 1/μ) 50% 1× 70% 2,3× 80% 4× 90% 9× 95% 19× 99% 99× Passar de 80% para 90% de utilização mais que dobra o tempo de espera.
A zona operacional ideal e o custo da ociosidade
Existe uma tensão fundamental na gestão de capacidade:
- Muita folga (ρ baixo): servidores ociosos, custo fixo elevado, subutilização de investimento
- Pouca folga (ρ alto): filas longas, clientes insatisfeitos, risco de colapso em picos transientes
A zona de operação recomendada depende do custo relativo de espera vs. servidor ocioso:
| Setor | ρ típico operacional | Justificativa |
|---|---|---|
| UTI / emergência hospitalar | 60–70% | O custo de não ter leito disponível é vida humana |
| Servidor web crítico | 60–75% | Picos súbitos são comuns; latência mata conversão |
| Call center premium (SLA rígido) | 70–80% | SLA de 80% atendidos em 20 s |
| Agência bancária | 75–85% | Cliente aguarda até ~5 min sem reclamar |
| Linha de produção | 80–90% | Demanda mais previsível, estoque amortece picos |
| Pedágio / check-in | 85–92% | Picos são conhecidos e planejados |
| Call center de baixo custo | 88–93% | SLA mais flexível, custo por atendente é dominante |
A fórmula para o custo total por unidade de tempo equilibra os dois lados:
onde = custo horário de um servidor (salário + encargos + infra) e = custo horário de um cliente esperando (produtividade perdida, churn, penalidade contratual). O número ótimo de servidores minimiza essa função.
Como estimar ρ antes de ter dados precisos
Se você ainda não mediu λ e μ, use estas heurísticas para estimar rapidamente:
- λ (chegadas): divida o volume total do período pelo tempo do período. Para horário de pico, use apenas os dados de pico.
- μ (serviço): cronometre 20–30 atendimentos em condições normais. Use a média como 1/μ. Calcule o CV — se > 0,5, o M/M/c é mais adequado que o M/D/1.
- ρ preliminar: use λ/(c·μ). Se der > 0,95, o sistema está em risco independentemente do modelo escolhido.
Modelo M/M/1 — o caso fundamental
Quando usar: sistema com um único servidor, chegadas aleatórias e tempo de serviço variável.
Fórmulas
Exemplo: Pronto-socorro (triagem)
15 pacientes chegam por hora a um posto de triagem com 1 enfermeiro. Tempo médio de triagem: 3 minutos (μ = 20/h).
O enfermeiro está ocupado 75% do tempo. Se o fluxo subir para 18/h (ρ = 0,90), Wq salta para 27 minutos. Com 2 enfermeiros (M/M/2), Wq cai para menos de 2 minutos.
Exemplo: Servidor web (thread única)
120 req/s, processamento médio de 6 ms (μ = 167 req/s).
Para latências abaixo de 10 ms totais, é necessário múltiplas threads (M/M/c). Com 2 threads, Wq cai para ~2 ms.
Exemplo: Portaria de condomínio
8 visitantes chegam por hora a uma portaria com 1 porteiro. Cadastro demora em média 5 minutos (μ = 12/h).
Se o porteiro agilizar o cadastro para 3 minutos (μ = 20/h, ρ = 40%), Wq cai para 2 minutos — sem contratar ninguém.
Exemplo: Médico em consultório
3 pacientes chegam por hora. Consulta dura em média 15 min (μ = 4/h).
Com agenda (λ determinístico, D/M/1), o Wq cai para ~22 min. Com sistema de agendamento online que elimina no-shows, λ efetivo cai para ~2,5/h (ρ = 0,625 → Wq ≈ 25 min) e a agenda passa a ser cumprida.
Exemplo: Worker de processamento de imagens (microserviço)
Pipeline de IA recebe 5 imagens/segundo. O modelo de inferência demora em média 150 ms (μ = 6,67/s).
Adicionando uma 2ª GPU (M/M/2, ρ = 0,375), Wq cai para < 5 ms. O custo da GPU se paga em evitar violações do SLA.
Interpretação conjunta das métricas M/M/1
| Métrica | Fórmula | Interpretação operacional |
|---|---|---|
| ρ | λ/μ | Fração do tempo em que o servidor está ocupado |
| P₀ | 1 − ρ | Probabilidade de encontrar o sistema vazio (sem espera) |
| L | ρ/(1−ρ) | Número médio no sistema (fila + atendimento) |
| Lq | ρ²/(1−ρ) | Número médio aguardando (não em atendimento) |
| W | 1/(μ−λ) | Tempo médio total no sistema (espera + serviço) |
| Wq | λ/[μ(μ−λ)] | Tempo médio apenas esperando na fila |
A Lei de Little conecta tudo: L = λW e Lq = λWq. Se você medir qualquer dois, calcula o terceiro.
--- — múltiplos servidores paralelos (Erlang-C)
Quando usar: vários servidores idênticos atendem a mesma fila — call centers, caixas de banco, guichês de aeroporto, bancos de threads.
Fórmula de Erlang-C
onde é o tráfego em Erlangs e .
Exemplo: Agência bancária com 2 caixas
20 clientes/hora, cada caixa atende 15 clientes/hora. Modelo M/M/2.
Erlang-C → P(esperar) ≈ 17,5% → Wq ≈ 22 segundos
Com apenas 1 caixa (ρ = 1,33): sistema instável — fila infinita. O segundo caixa é essencial. O terceiro reduziria Wq para ~5 segundos.
Exemplo: Call center — dimensionamento por SLA
90 ligações/hora, atendimento de 4 minutos (μ = 15/h). SLA: 80% das ligações atendidas em ≤ 20 segundos.
| Atendentes (c) | ρ | P(esperar) | P(Wq ≤ 20s) |
|---|---|---|---|
| 7 | 85,7% | 35,1% | ~52% ❌ |
| 8 | 75,0% | 18,4% | ~81% ✅ |
| 9 | 66,7% | 8,4% | ~95% |
| 10 | 60,0% | 3,6% | ~99% |
Com 8 atendentes o SLA é atingido por margem mínima. Na prática, recomenda-se 9 para absorver ausências e picos.
Exemplo: Check-in de aeroporto
180 passageiros/hora, atendimento de 2 minutos (μ = 30/h), 8 guichês.
Se um guichê fechar (c=7, ρ = 85,7%), Wq sobe para ~5,6 min — passageiros podem perder voos em dias de pico.
Exemplo: Banco de dados — dimensionamento do pool de workers
200 queries/s, execução média 4 ms (μ = 250/s). Pool de 4 workers.
Com ρ = 20%, o sistema está muito folgado. Wq < 0,1 ms. Com 2 workers (ρ = 40%), ainda excelente. O pool de 4 garante headroom para picos de até 480 queries/s sem degradação.
Exemplo: Posto de gasolina
20 carros/hora chegam, abastecimento médio de 4 minutos (μ = 15/h), 3 bombas.
P(esperar) ≈ 2,4%. Wq ≈ 13 segundos. Sistema bem dimensionado. Com 2 bombas (ρ = 0,667), Wq já subiria para ~1,5 min.
Exemplo: Equipe de manutenção
3 chamados por hora chegam a uma equipe de 2 técnicos. Cada reparo dura 30 min em média (μ = 2/h).
P(esperar) ≈ 34,5%. Wq ≈ 34 minutos de espera antes do técnico chegar. O custo de máquina parada durante esse tempo justifica a análise de adicionar um 3º técnico (que reduziria Wq para ~5 min).
Exemplo: Atendimento de suporte de TI (help desk)
12 tickets chegam por hora. Resolução média: 20 min (μ = 3/h). Equipe de 5 analistas.
Erlang-C: C(5, 4) ≈ 34,7% → Wq ≈ 6,9 min. Com 6 analistas (ρ = 0,667): Wq ≈ 1,9 min. O 6º analista custa menos que o impacto de 5 min adicionais de espera para 12 tickets/hora.
Exemplo: Farmácia de hospital público (dispensação de medicamentos)
60 receitas chegam por hora, 4 farmacêuticos, cada um atende 20 receitas/h.
C(4, 3) ≈ 17,3% → Wq ≈ 52 segundos — aceitável para uma farmácia hospitalar. No pico de entrega de alta (λ = 90/h): ρ = 1,125 → instável → necessário 5º farmacêutico ou triagem de urgência.
Exemplo: Impressora de rede compartilhada (servidor de impressão)
8 usuários enviam trabalhos a uma fila de impressão. Em média, 3 trabalhos/min chegam, impressão leva 15 s (μ = 4/min), 1 impressora.
Com 2 impressoras (M/M/2, ρ = 0,375): Wq ≈ 4 s. Para uma equipe que imprime relatórios críticos, a segunda impressora elimina frustração.
Dimensionamento ótimo com tabela comparativa
A tabela de servidores exibida abaixo do resultado M/M/c mostra automaticamente c−1, c, c+1, c+2:
| c | ρ | C(c,a) | Wq | L | Custo/hora |
|---|---|---|---|---|---|
| 3 | 1,00 | instável | ∞ | ∞ | 3 × |
| 4 | 0,75 | 17,3% | 52 s | 0,87 | 4 × |
| 5 | 0,60 | 5,5% | 14 s | 0,23 | 5 × |
| 6 | 0,50 | 1,5% | 3,6 s | 0,06 | 6 × |
A decisão entre c=4 e c=5 exige comparar o custo de 1 farmacêutico adicional com o custo de 38 s extras de espera para 60 receitas/hora.
--- — serviço de tempo fixo (Pollaczek-Khinchine)
Quando usar: o tempo de atendimento é constante — linha de produção cadenciada, impressora de rede, farmácia com protocolo padronizado, pedágio eletrônico.
Fórmula P-K para variância zero
Conclusão chave: com tempo fixo, a fila é exatamente metade do caso M/M/1 equivalente.
Exemplo: Farmácia hospitalar
40 pedidos/hora chegam. Dispensação padronizada em 45 segundos fixos (μ = 80/h).
Com tempo variável (M/M/1, mesma média): Wq ≈ 45 segundos. Padronizar o processo de dispensação cortou o tempo de espera à metade.
Exemplo: Caixa de supermercado (tempo padronizado)
15 clientes/hora, tempo fixo de 3 min por cliente (μ = 20/h).
Treinar caixas para atingir um tempo padronizado de atendimento reduz a espera percebida pela metade — sem contratar ninguém.
Exemplo: Pedágio com pagamento eletrônico
120 carros/hora por pista. Passagem leva sempre 20 segundos (μ = 180/h).
Se o sistema caísse para cobrança manual (tempo variável, mesma média), Wq dobraria para ~40 s. Em horários de pico com λ = 160 carros/h (ρ = 0,889), o M/D/1 dá Wq ≈ 2,5 min; o M/M/1 daria ~10 min.
Exemplo: Linha de montagem cadenciada
25 peças/hora chegam a uma estação com tempo de ciclo fixo de 2 minutos (μ = 30/h).
A estação está operando a 83% de capacidade. Se a demanda subir para 28 peças/h (ρ = 0,933), Wq do M/D/1 já vai para 14 min — gargalo crítico.
Por que o M/D/1 tem exatamente metade da fila do M/M/1?
A fórmula P-K geral é:
Para M/M/1: → termo extra = ρ² → soma fica 2ρ² → Lq = ρ²/(1−ρ).
Para M/D/1: → só o primeiro termo → Lq = ρ²/[2(1−ρ)].
A variabilidade zero do serviço elimina metade da fila. Isso explica por que protocolos padronizados (scripts de atendimento, automação, takt time industrial) reduzem filas sem aumentar a velocidade média de serviço.
Como verificar se o serviço é “suficientemente fixo” para usar M/D/1
Meça o CV do tempo de serviço a partir de uma amostra:
| CV medido | Erro ao usar M/D/1 em vez do modelo correto |
|---|---|
| CV < 0,15 | < 2% — M/D/1 é preciso |
| 0,15 ≤ CV < 0,4 | 5–20% — M/D/1 subestima levemente a fila |
| 0,4 ≤ CV < 0,7 | 20–50% — use Erlang-k ou M/G/1 |
| CV ≥ 0,7 | > 50% — use M/M/1 ou M/G/1 com Lognormal |
--- — capacidade máxima finita
Quando usar: o sistema tem um limite físico — vagas de estacionamento, assentos de sala de espera, buffer de chamadas, quantidade de pedidos em processamento.
Fórmulas
Exemplo: Estacionamento com 15 vagas
10 carros/hora chegam. Permanência média: 2 horas (μ = 0,5/h). Capacidade: 15 vagas.
P(K=15) ≈ 0,1% — praticamente não há bloqueio. Se a demanda triplicar (λ = 30), bloqueio sobe drasticamente e carros ficam esperando na rua.
Exemplo: Buffer de chamadas (M/M/1/5)
50 chamadas/hora chegam a 1 atendente com μ = 20/h. Fila máxima: 5 posições.
Quase metade das chamadas é bloqueada. Para bloqueo < 5%: aumentar K para ~20 ou adicionar 2 atendentes (M/M/2, ρ = 1,25 — ainda instável!) ou 3 atendentes (M/M/3, ρ = 0,833 — estável, Wq ≈ 2 min).
Exemplo: Sistema de pedidos online com limite de concurrent orders
Plataforma de e-commerce aceita no máximo K = 100 pedidos simultâneos em processamento. λ = 80 pedidos/min, μ = 1 pedido/min (processamento de pagamento + estoque). 1 “worker” lógico.
Apesar de ρ >> 1, o sistema é estável com capacidade finita. P(bloqueio) = P_K ≈ 1% — pedidos raramente são rejeitados. Wq é alto (dezenas de minutos), mas o sistema não colapsa. Aumentar para 5 workers paralelos (M/M/5/100): Wq cai para < 2 min e P(bloqueio) ≈ 0%.
Dimensionamento de K versus c
Para sistemas M/M/1/K, há dois alavancas independentes: aumentar K (mais espaço de espera) ou aumentar c (mais servidores):
| Ação | Efeito em P(bloqueio) | Efeito em Wq |
|---|---|---|
| Aumentar K | ↓ Bloqueio | ↑ Wq (mais gente espera) |
| Aumentar c | ↓ Bloqueio | ↓↓ Wq (atende mais rápido) |
Moral: aumentar K sem aumentar c reduz perdas mas aumenta a espera dos que entram. Em aplicações onde o custo de espera é alto (saúde, tempo real), c é a alavanca certa.
Exemplo: UPA — sala de espera com capacidade limitada
20 cadeiras na sala de espera. 10 pacientes chegam por hora, 1 médico com μ = 3/h. K = 21 (20 cadeiras + 1 em atendimento).
Quase 1 em 3 pacientes encontra a sala cheia e vai para outra unidade. Com 2 médicos (M/M/2/21, ρ = 1,67, sistema estável): P(bloqueio) ≈ 2,5%. O segundo médico é decisivo.
--- (sem fila, perda pura)
Quando usar: chegadas em excesso são perdidas, não esperadas — ramais PABX, leitos hospitalares por especialidade, mesas de restaurante, licenças de software concurrent users.
Fórmula de Erlang-B
Exemplo: Ramais PABX
Escritório com 4 ramais. 30 chamadas/hora, duração média 5 min (μ = 12/h). a = 2,5 Erlangs.
| Ramais (c) | Bloqueio |
|---|---|
| 3 | 22,1% |
| 4 | 9,4% |
| 5 | 3,5% |
| 6 | 1,1% |
| 7 | 0,3% |
Com 4 ramais, 1 em cada 10 chamadas cai no “ocupado”. Para ≤ 2% de bloqueio (padrão comercial): 5 ramais.
Exemplo: Leitos de UTI
10 leitos. 2 internações/dia chegam. Permanência média 5 dias (μ = 0,2/dia). a = 10 Erlangs.
| Leitos | Bloqueio |
|---|---|
| 10 | 34,2% |
| 14 | 10,2% |
| 18 | 2,5% |
| 22 | 0,5% |
Com 10 leitos, 1 em 3 pacientes críticos não encontra vaga. Para bloqueio < 5%: 18 leitos. Este cálculo é a base do planejamento de capacidade hospitalar pelo Ministério da Saúde.
Exemplo: Mesas de restaurante no horário de pico
20 mesas. 40 grupos chegam/hora no pico. Refeição média: 45 min (μ = 1,33 grupos/hora/mesa). a ≈ 30 Erlangs.
B(20, 30) ≈ 54% dos grupos não encontram mesa.
Para ≤ 10% de bloqueio: ~28 mesas. Alternativa prática: sistema de reservas reduz a chegada aleatória (Poisson → determinístico), cortando drasticamente o excesso.
Exemplo: Licenças concurrent de software
Empresa tem 4 licenças floating de um ERP. 10 usuários tentam acessar/hora, cada sessão dura 20 min (μ = 3/h). a = 10/3 ≈ 3,33 Erlangs.
B(4, 3,33) ≈ 23% dos acessos bloqueados. Com 6 licenças: bloqueio cai para ~5%. Com 8: ~0,6%.
Como a fórmula de Erlang-B é calculada iterativamente
A recursão de Jagerman é numericamente estável para c grande:
Isso evita o overflow de para valores grandes de e — relevante em dimensionamento de redes com dezenas de circuitos.
Regra prática de Erlang-B para planejamento rápido
Para bloqueio ≤ 2% (padrão comercial telecom):
| Tráfego (Erlangs) | Circuitos necessários | Margem sobre a |
|---|---|---|
| 1 | 4 | 4× |
| 5 | 10 | 2× |
| 10 | 16 | 1,6× |
| 50 | 62 | 1,24× |
| 100 | 115 | 1,15× |
Efeito de economia de escala: ao dobrar o tráfego, o número de circuitos necessários cresce menos que o dobro — sistemas maiores são mais eficientes em termos de utilização por circuito.
Erlang-B vs Erlang-C — quando usar cada um
| Critério | Erlang-B (M/M/c/c) | Erlang-C (M/M/c) |
|---|---|---|
| Chegadas em excesso | São perdidas | Aguardam em fila |
| Exemplos | PABX, leitos, licenças, mesas | Call center, guichês, caixas |
| Métrica de interesse | Probabilidade de bloqueio | Tempo de espera (Wq) |
| SLA típico | Bloqueio ≤ 2% | Wq ≤ T segundos com P ≥ 80% |
| Consequência do excesso | Cliente desiste/vai embora | Cliente espera (pode abandonar depois) |
--- — a ligação universal
Válida para qualquer sistema estável, independente do modelo ou distribuição:
Exemplo prático: Em uma linha de montagem, há em média 8 peças no sistema. O tempo de ciclo total (do início ao fim) é 12 minutos. Taxa de saída = L/W = 8/12 = 0,667 peças/min = 40 peças/hora.
A Lei de Little permite medir qualquer grandeza (L, W ou λ) a partir das outras duas — sem depender de modelo matemático.
Aplicações práticas da Lei de Little
1. Medir throughput real de uma fábrica
Há 40 ordens em andamento (L = 40). O lead time médio é 5 dias (W = 5). Portanto λ = L/W = 8 ordens concluídas por dia — mesmo sem medir λ diretamente.
2. Estimar WIP necessário para atingir um throughput
Uma linha deve processar 200 peças/dia (λ = 200). O tempo de ciclo (W) é 4 horas = 0,5 dia. Logo o WIP médio deve ser L = 200 × 0,5 = 100 peças em processo simultâneo.
3. Medir o lead time de uma pipeline de software (DevOps)
Há 15 cards ativos no Kanban (L = 15). A equipe fecha 3 cards por dia (λ = 3). Lead time médio = L/λ = 5 dias — métrica central do DORA e do Fluxo.
4. Dimensionamento de inventário em trânsito
Empresa exporta 500 contêineres/mês. Tempo médio de trânsito: 18 dias = 0,6 mês. Inventário médio em trânsito = 500 × 0,6 = 300 contêineres imobilizados.
5. Filas hospitalares — relação entre espera e ocupação
UTI com 10 leitos (c = 10). Taxa de internação: 2/dia. Permanência média: 4 dias. L = 2 × 4 = 8 leitos ocupados em média → ρ = 80%.
Teorema de Jackson — redes de filas
Para redes de filas com servidores M/M/c e roteamento probabilístico (Jackson networks), o teorema de Jackson afirma que cada nó se comporta como uma fila M/M/c independente em regime estacionário, com λ efetivo calculado pela equação de equilíbrio de fluxo:
onde é a taxa de chegada externa ao nó j e é a fração de entidades que vão do nó i ao nó j.
Isso permite calcular Wq, Lq e ρ de cada etapa independentemente usando as fórmulas M/M/c — e somar os Wq para obter o tempo total em uma rede em série. A ferramenta de rede de filas desta calculadora usa exatamente este princípio.
Antes de escolher o modelo, determine se suas chegadas e tempos de serviço seguem Poisson/Exponencial. A seção “Ajuste de distribuição” analisa automaticamente sua amostra:
Coeficiente de Variação (CV = σ/média)
| CV medido | Distribuição sugerida | Modelo indicado |
|---|---|---|
| CV < 0,15 | Quase constante | M/D/1 ou M/D/c |
| 0,15 ≤ CV < 0,65 | Erlang-k (k ≈ 1/CV²) | M/Ek/c (use simulação) |
| 0,65 ≤ CV < 1,35 | Exponencial (Markoviana) | M/M/c |
| CV ≥ 1,35 | Hiper-exponencial | Simulação DES recomendada |
Teste de Kolmogorov-Smirnov
Para CV ≈ 1, o KS testa formalmente se os dados são compatíveis com exponencial a 95% de confiança — exibindo D observado vs. D crítico.
Como usar
- Colete tempos entre chegadas sucessivas (ou tempos de serviço)
- Cole os valores no campo (vírgula, ponto-e-vírgula ou quebra de linha)
- Clique “Analisar” — a ferramenta retorna CV, histograma, sugestão e KS
- Clique “Aplicar λ/μ” para preencher o parâmetro e recalcular
Comparação de Cenários — Process Analyzer com IC 95%
O Process Analyzer (seção “Comparação de Cenários”) permite avaliar múltiplas configurações do sistema em paralelo — o equivalente ao Process Analyzer do Arena e ao Scenario Manager do Simul8.
O que é um cenário?
Um cenário é uma variação dos parâmetros atuais com overrides específicos: você define a configuração base (formulário principal) e cada cenário aplica alterações pontuais — ex: aumentar λ em 20%, adicionar 1 servidor, melhorar μ em 10%.
Campos configuráveis por cenário:
| Parâmetro | Significado |
|---|---|
| λ | Taxa de chegada do cenário (substitui a global) |
| μ | Taxa de serviço do cenário |
| c | Número de servidores do cenário |
| modelo | Herdado da configuração base |
Replicações e Intervalo de Confiança
Cada cenário é rodado vezes (replicações), cada uma com entidades. As estatísticas de saída (, , ) variam entre réplicas por causa da aleatoriedade. O IC 95% é calculado via t-Student com df = R − 1:
onde é o desvio padrão amostral entre réplicas.
Parâmetros recomendados:
- Réplicas R: 10–20 para exploração inicial; 30–50 para decisões de investimento
- Entidades N: 300–500 para IC estreito; aumentar se o CV for alto (>25%)
Quando usar
- Dimensionamento de capacidade: comparar c=2 vs c=3 com os ICs — se os ICs não se sobrepõem, a diferença é estatisticamente significativa
- Análise de sensibilidade: quanto o Wq piora se λ crescer 20%? E se μ cair 10%?
- Planejamento de pico: simular o cenário “Pico de demanda” com λ×1.3 e verificar se ρ < 1
- Business case: exportar o CSV e comparar custo de servidores vs. redução de Wq
Interpretação da tabela
- Fundo vermelho: ρ ≥ 1 — sistema instável, fila cresce indefinidamente
- Fundo amarelo: ρ ≥ 0.9 — risco de saturação em picos transientes
- IC estreito (CV < 10%): estimativa confiável — poucas réplicas são suficientes
- IC largo (CV > 25%): aumente o número de réplicas ou de entidades
Dica: Use o analítico (fórmulas fechadas) para triagem rápida e o simulador (replicações) para validar e obter ICs reais — especialmente quando ρ > 0.8, onde as fórmulas M/M/c superestimam a estabilidade.
Simulação de Eventos Discretos (DES)
O botão 🎲 Simular abre uma simulação DES completa — o mesmo princípio do Arena e Simul8, executado no navegador.
Como funciona
- Chegadas homogêneas: intervalo entre chegadas = −ln(U)/λ (transformada inversa da exponencial)
- Chegadas não-homogêneas (NHPP): método de Lewis-Shedler (thinning) — gera candidatos com λ_max e aceita cada um com probabilidade λ(t)/λ_max, respeitando o perfil de chegada por período
- Serviço exponencial: amostra por transformada inversa
- Erlang-k: soma de k amostras exponenciais de taxa k·μ
- Weibull, Lognormal, Normal, Triangular, Uniforme: amostras por transformada inversa ou aceitação-rejeição
- Alocação: servidor mais cedo disponível; se todos ocupados → fila virtual
- Bloqueio: M/M/1/K rejeita quando cheio; M/M/c/c rejeita quando todos os servidores ocupados
O que os resultados mostram
| Saída | Significado |
|---|---|
| Simulação vs Analítico | Valida as fórmulas para os parâmetros dados |
| Histograma de Wq | Distribuição completa da espera (percentis reais) |
| Fila × tempo | Evolução dinâmica — identifica rajadas e períodos de folga |
| Taxa de bloqueio simulada | Proporção real de entidades rejeitadas |
Para análises críticas, use N = 500 entidades. Concordância dentro de ±10% com o analítico confirma que os parâmetros estão corretos.
Taxas de chegada variáveis no tempo (NHPP)
Em muitos sistemas reais, λ não é constante ao longo do dia — call centers têm pico na manhã, restaurantes no almoço, servidores web pico em horário comercial. A ferramenta implementa um Processo de Poisson Não-Homogêneo (NHPP) via o botão ⏱ λ variável no tempo no painel de parâmetros.
Como configurar o perfil de chegada
- Clique em ⏱ λ variável no tempo abaixo do campo λ
- No modal, defina períodos com rótulo, duração e taxa λ — os períodos são cíclicos (ex.: 24h se repetem a cada dia)
- O mini gráfico de barras atualiza em tempo real (largura ∝ duração do período)
- Clique ✓ Aplicar perfil — o badge
λ̄ = X.XX/haparece ao lado do botão confirmando a ativação
Cálculo analítico vs simulação NHPP
| Modo | O que usa | Quando usar |
|---|---|---|
| Fórmulas (analítico) | λ médio ponderado λ̄ = Σ(λᵢ·dᵢ)/Σ(dᵢ) | Estimativa rápida de dimensionamento |
| 🎲 Simular | NHPP via Lewis-Shedler thinning | Análise precisa do impacto do perfil horário |
O λ médio ponderado é exato para dimensionamento em regime estacionário. A simulação NHPP revela o impacto dinâmico: nos períodos de pico, a fila cresce; nos vales, esvazia. A diferença entre o Wq máximo de pico e o Wq médio pode ser 3–10× dependendo do perfil.
Exemplo: call center com perfil diário
Perfil: 08h–10h (λ=80/h), 10h–12h (λ=50/h), 12h–14h (λ=30/h), 14h–18h (λ=60/h), restante (λ=10/h). μ=15/h, c=6 atendentes.
- λ médio ponderado ≈ 46/h → ρ ≈ 51% → Wq analítico ≈ 12 s (parece confortável)
- Simulação NHPP no pico 08h–10h: ρ ≈ 89% → Wq de pico ≈ 3,5 min
A análise com λ constante subestima dramaticamente o impacto do pico. Com NHPP + simulação, descobre-se que são necessários 7 atendentes para manter Wq < 30 s durante o pico matutino.
Método de Lewis-Shedler (thinning)
O algoritmo gera um processo de Poisson homogêneo com taxa λ_max = max(λ₁, λ₂, …, λₙ) e, para cada evento candidato no instante t, aceita-o com probabilidade λ(t)/λ_max:
O resultado é um processo não-homogêneo exato. O tempo t é avaliado módulo o período total do ciclo, tornando o perfil cíclico e compatível com simulações de múltiplos dias.
Período de Warm-up — Regime Transiente vs. Estacionário
Todo sistema de filas real passa por uma fase inicial chamada regime transiente: logo após a abertura (ou reinicialização), a fila começa vazia e o comportamento ainda não reflete o padrão de longo prazo. À medida que o sistema opera, as estatísticas convergem para o regime estacionário — o equilíbrio estatístico descrito pelas fórmulas de M/M/1, M/M/c etc.
Por que isso importa?
Se você mede Lq, Wq e ρ incluindo o período de aquecimento, os valores aparecem artificialmente melhores do que a realidade operacional. Um caixa de supermercado medido nos primeiros 10 minutos após a abertura terá fila quase zero — mas esse dado não representa o meio do dia.
Como a ferramenta trata o warm-up
Nos Parâmetros de Simulação, acima do botão Calcular, você define:
| Campo | O que representa |
|---|---|
| Duração total | Janela de tempo da operação (ex.: 480 min = turno de 8h) |
| Warm-up | Período inicial descartado das estatísticas (ex.: 60 min) |
A ferramenta exibe automaticamente: “KPIs calculados sobre X min (pós warm-up)”.
Curva de convergência Lq(t)
O gráfico “Lq ao longo do tempo” mostra a evolução teórica do comprimento médio da fila usando a aproximação:
onde α = μ · c · (1 − ρ) é a taxa de convergência do sistema. Quanto maior α (servidores rápidos, utilização baixa), mais rápida a estabilização.
A área amarela representa o período de warm-up. A linha tracejada horizontal marca Lq∞ (valor estacionário).
Badge de regime
| Badge | Significado |
|---|---|
| 🟢 Estacionário | O warm-up definido é suficiente para cobrir 95% da convergência |
| 🟡 Transiente | O warm-up é curto — as estatísticas ainda carregam influência do estado inicial |
A fronteira é o tempo t₉₅ = −ln(0,05) / α, que representa o instante em que o sistema já atingiu 95% do valor estacionário de Lq.
Regra prática
Para sistemas com ρ > 0,8, o tempo de estabilização pode ser longo. Uma heurística comum em simulações industriais é usar 10–20% da duração total como warm-up — ou até a primeira vez em que a fila esvazia completamente após a abertura.
Filas com Prioridade — Disciplina PRIO e Tipos de Entidade
O que é disciplina de fila?
Em sistemas reais, nem todo cliente espera a mesma coisa na mesma fila. A disciplina de fila define a ordem de atendimento:
| Disciplina | Sigla | Comportamento |
|---|---|---|
| Primeiro a chegar, primeiro a ser atendido | FIFO | Ordem de chegada — todos os tipos têm o mesmo Wq |
| Prioridade (não-preemptiva) | PRIO | Clientes de maior prioridade ficam à frente; quem está em atendimento não é interrompido |
| Último a chegar, primeiro a ser atendido | LIFO | Útil para modelar pilhas (stacks) — ex.: inventário em armazém |
Múltiplos tipos de entidade
Quando o sistema atende clientes de diferentes tipos (Regular, VIP, Urgente), cada tipo possui:
- Proporção (%) — fração do fluxo total de chegadas:
- Prioridade — nível 1 a 5 (maior = atendido primeiro no modo PRIO)
- μ próprio (opcional) — taxa de serviço específica para o tipo (ex.: VIP com atendimento mais rápido)
Fórmula de Kleinrock (M/M/1, PRIO não-preemptiva)
Para uma fila M/M/1 com classes de prioridade ordenadas de maior para menor, defina:
O tempo médio de espera na fila para a classe é:
onde é o tempo residual de serviço ponderado.
O número médio na fila por tipo segue pela Lei de Little: .
Para M/M/c (c > 1): a ferramenta escala o resultado acima pelo ratio — uma aproximação conservadora. Para precisão máxima, use a simulação (🎲 Simular).
Condição de estabilidade com prioridades
O sistema é estável se .
Atenção: para as classes mais baixas o denominador pode se aproximar de zero, fazendo antes mesmo do sistema global ficar instável — é o fenômeno de starvation (inanição).
Exemplo
Banco com λ = 30 clientes/hora, μ = 15/hora, 2 servidores (M/M/2):
| Tipo | Proporção | λₖ | Prioridade | Wq estimado |
|---|---|---|---|---|
| Regular | 70% | 21/h | 1 — padrão | ~4,2 min |
| VIP | 20% | 6/h | 2 — alto | ~1,8 min |
| Urgente | 10% | 3/h | 3 — crítico | ~0,9 min |
O VIP espera ~57% menos que o Regular; o Urgente ~78% menos.
Quando usar PRIO vs. FIFO
- FIFO: quando todos os clientes têm o mesmo valor e justiça é prioritária
- PRIO: call centers com SLA diferenciado, urgências hospitalares, sistemas de TI com tickets críticos, logística com entregas prioritárias
- LIFO: modelagem de estoques LIFO, buffers de rede com descarte de pacotes mais antigos
Roteamento Condicional — Como as Entidades Escolhem o Próximo Estágio
Em uma rede de filas real, nem toda entidade percorre todos os estágios. Um paciente pode ser liberado após a triagem sem passar pela consulta; 30% dos pedidos podem ir para o depósito A e 70% para o B. Isso é roteamento condicional.
Três tipos de roteamento
| Tipo | Símbolo | Quando usar |
|---|---|---|
| Serial | → 100% | Todas as entidades passam para o próximo estágio — fluxo obrigatório |
| Probabilístico | → p% | Cada entidade tem probabilidade fixa p de entrar no estágio — independente de atributos |
| Regra (atributo) | → se attr op val | A decisão depende de um atributo da entidade (prioridade, classe, etc.) |
Probabilístico — divisão de fluxo
Se o roteamento entre estágio e estágio tem fração , o λ efetivo do estágio é:
onde .
Exemplos: triagem hospitalar onde 40% são liberados sem consulta; call center onde 60% são resolvidos no nível 1 e 40% escalam para especialista; e-commerce com depósitos paralelos.
Regra (atributo)
A entidade carrega um atributo (prioridade, peso, classe) e, ao sair de um estágio, a condição é avaliada: se verdadeira, entra no próximo estágio; caso contrário, sai do sistema ou vai para rota alternativa.
Para o cálculo analítico, usa-se uma fração estimada — a proporção de entidades que satisfaz a condição. O modelo trata como probabilístico com .
Exemplo numérico: banco com 100 clientes/hora, 20% VIP (prioridade ≥ 2). O caixa VIP recebe /hora; o regular, /hora.
Quando usar cada tipo
- Serial: fluxo obrigatório, todas as entidades percorrem todas as etapas (linha de produção sequencial, pipeline de microserviços)
- Probabilístico: fluxo aleatório sem distinção por tipo — abandono espontâneo, round-robin, amostragem aleatória para QA
- Regra: fluxo diferenciado por tipo de entidade — triagem médica (urgente/não-urgente), SLA diferenciado (VIP/standard), filas de suporte por nível de complexidade
Atenção: Com roteamento probabilístico, o λ total do sistema se reduz. Verifique a condição de estabilidade de cada estágio separadamente — o gargalo pode mudar com o roteamento.
Recursos com Turnos, Breaks e Falhas (Downtime)
Em sistemas reais, servidores não ficam disponíveis 24 h por dia com capacidade constante. Uma linha de produção opera em três turnos com equipes diferentes; um call center tem menos atendentes à noite; uma máquina para periodicamente para manutenção. Ignorar isso superestima a capacidade real e subestima o tempo de espera.
Turnos de trabalho
Um turno define um intervalo de tempo (início–fim, em minutos desde meia-noite ou desde o início da simulação) e quantos servidores estão ativos nesse período. A tabela de turnos é cíclica — ao fim do último turno o ciclo reinicia automaticamente.
| Conceito | Significado |
|---|---|
| Início / Fim | Limite do turno em minutos dentro de um ciclo diário (0 = meia-noite) |
| Servidores ativos | Número de servidores disponíveis durante o turno |
Regra prática: não deixe turnos com gap (horário sem cobertura) a não ser que seja intencional — entidades que chegam nesse período encontram 0 servidores e ficam bloqueadas.
O número efetivo de servidores no instante da simulação é:
onde é a duração total do ciclo de turnos.
Falhas e Manutenção
Falhas são modeladas por dois parâmetros:
| Parâmetro | Significado |
|---|---|
| MTBF (Mean Time Between Failures) | Tempo médio entre falhas — quanto tempo o servidor opera sem parar. Amostrado por distribuição exponencial. |
| MTTR (Mean Time To Repair) | Tempo médio de reparo — quanto tempo o servidor fica indisponível após uma falha. Também exponencial. |
Durante um evento de falha, o servidor afetado fica indisponível por um período MTTR e as entidades que chegariam a ele precisam esperar ou migrar para outro servidor disponível.
Disponibilidade teórica do recurso (sem considerar turnos):
O downtime percentual exibido na interface é . Por exemplo, MTBF = 240 min e MTTR = 30 min resultam em — 11 % do tempo o servidor está em reparo.
Impacto nas métricas
Com turnos e falhas, a utilização efetiva do servidor aumenta mesmo sem mudar ou , porque a capacidade disponível diminui. Um sistema estável em teoria pode se tornar instável na prática se a disponibilidade for baixa:
Para sistemas com turnos, a ferramenta usa Simulação de Eventos Discretos para calcular , e — as fórmulas analíticas M/M/c supõem capacidade constante e não se aplicam diretamente.
Quando usar
- Turnos: linhas de produção, call centers, supermercados com abertura/fechamento, hospitais com plantões
- Falhas: máquinas industriais, equipamentos médicos, servidores de TI, guichês sujeitos a lentidão sistêmica
Distribuições não-exponenciais — M/G/1 e M/G/c
Na prática, nem sempre o tempo de serviço segue uma distribuição exponencial. A ferramenta permite selecionar sete distribuições no campo “Distribuição do tempo de serviço”, todas com resultados analíticos via fórmulas P-K e Kingman:
| Distribuição | Parâmetros | CV típico | Quando usar |
|---|---|---|---|
| Exponencial | μ | 1,00 | Padrão M/M/c — alta variabilidade aleatória |
| Erlang-k | k fases, μ | 1/√k | Serviços com k etapas sequenciais de duração igual |
| Weibull | α (forma), β (escala) | depende de α | Vida útil de equipamentos, tempos de reparo |
| Lognormal | μln, σln | depende de σln | Tarefas cognitivas, atendimentos com cauda longa |
| Normal truncada | μ, σ | baixo (< 1) | Processos bem treinados com pequena variabilidade |
| Triangular | mín, moda, máx | baixo | Estimativas por especialista sem dados históricos |
| Uniforme | a, b | 1/√3 ≈ 0,58 | Serviços com tempo garantidamente entre a e b |
Coeficiente de Variação (CV = σ/média)
O CV é o indicador-chave. A ferramenta exibe o CV = valor ao lado do seletor em tempo real.
- CV < 1: tempos mais previsíveis que o exponencial → fila menor que M/M/c
- CV = 1: equivalente ao exponencial → resultados idênticos ao M/M/c
- CV > 1: tempos mais variáveis → fila maior que M/M/c
Fórmula Pollaczek-Khinchine (M/G/1)
Para 1 servidor e qualquer distribuição com média E[S] = 1/μ e variância Var[S]:
Quando CV = 1 (exponencial), a fórmula P-K reproduz exatamente o M/M/1.
Aproximação de Kingman VCA (M/G/c)
Para c servidores paralelos, a aproximação de Kingman corrige o M/M/c pelo CV:
O fator (1 + CV²)/2 vale exatamente 1 para CV = 1 (exponencial) e reduz para 0,5 quando CV → 0 (tempo constante, equivalente a M/D/c). Esta aproximação tem erro tipicamente < 5% para ρ < 0,90.
Exemplo: call center com tempos de atendimento lognormais
80 chamadas/hora, 4 atendentes, μ = 15/h. Dados históricos mostram CV = 1,8 (cauda longa típica de chamadas técnicas).
| Modelo | Lq | Wq |
|---|---|---|
| M/M/c (CV = 1) | 0,174 | 7,8 s |
| M/G/c com CV = 1,8 (Kingman) | 0,312 | 14,0 s |
A variabilidade real quase dobra o tempo de espera. Com 5 atendentes (ρ = 1,07 → instável com c=4 neste exemplo; cf. valores reais na ferramenta), Wq cai drasticamente.
Exemplo: linha de montagem com Erlang-4
25 peças/hora, 1 estação, cada operação tem 4 etapas iguais em série de ~30 s cada (μ = 30/h, k = 4 → CV = 0,5).
Com a distribuição Erlang-4 a fila é 37,5% menor do que o M/M/1 estimaria. Modelar corretamente a distribuição pode mudar significativamente a decisão sobre adicionar servidores.
Guia rápido: qual modelo usar?
Há fila física possível?
├── NÃO → M/M/c/c (Erlang-B) ramais, leitos, mesas, licenças
└── SIM
├── Há capacidade máxima K?
│ └── SIM → M/M/1/K estacionamento, buffer, sala de espera finita
└── NÃO (fila ilimitada)
├── Distribuição do tempo de serviço
│ ├── Exponencial (CV ≈ 1)
│ │ ├── 1 servidor → M/M/1
│ │ └── c servidores → M/M/c (Erlang-C)
│ ├── Fixo/constante (CV = 0) → M/D/1
│ └── Geral (Erlang, Weibull, Lognormal, Normal, Triangular, Uniforme)
│ ├── 1 servidor → P-K formula (M/G/1)
│ └── c servidores → Kingman VCA (M/G/c)
Como coletar dados para modelagem — passo a passo
A qualidade do modelo depende da qualidade dos dados. Fórmulas perfeitas com parâmetros errados geram resultados inúteis.
Passo 1 — Definir o escopo do sistema
Antes de medir, responda:
- O que é uma entidade? (cliente, pedido, peça, requisição)
- Onde ela entra no sistema? (porta, API endpoint, início da linha)
- Onde ela sai? (atendimento concluído, entrega, resposta enviada)
- Quem são os servidores? (atendentes, máquinas, threads)
Passo 2 — Medir λ (taxa de chegada)
Método direto: registre o horário de cada chegada durante o período de análise. Divida o total pelo tempo.
Ferramentas: planilha com timestamp, log de sistema (grep + awk), vídeo com contador, catracas automáticas.
Cuidados:
- Meça em diferentes dias e horários — λ varia (use o modo NHPP se variar > 2×)
- Identifique sazonalidades (semana vs. fim de semana, mês do ano)
- Descarte períodos atípicos (feriados, promoções, incidentes)
- Amostra mínima recomendada: 30 períodos do mesmo tipo (30 picos de segunda-feira, por exemplo)
Passo 3 — Medir μ (taxa de serviço)
Método direto: cronometre o tempo de início e fim de cada atendimento. μ = 1 / média dos tempos.
Atenção: meça o tempo de serviço puro (não incluindo espera). Em sistemas com log, é departure_time − service_start_time.
Cuidados:
- Amostras mínimas: 30–50 atendimentos para CV estável
- Meça por servidor se houver diferença de velocidade (μ₁ ≠ μ₂)
- Identifique bimodalidades (atendimentos simples vs. complexos) — se CV > 1,5, considere separar em dois tipos ou usar M/G/1 com Lognormal
- Exclua interrupções (pausa do atendente, sistema travado) do tempo de serviço
Passo 4 — Validar com Kolmogorov-Smirnov
Com a amostra coletada, use o botão 🔬 Análise de distribuição para:
- Verificar se os tempos entre chegadas seguem Poisson (KS test)
- Verificar se os tempos de serviço seguem exponencial
- Obter o CV real e a distribuição mais adequada
Interpretação do KS:
- D < D_crítico (p > 0,05): hipótese de exponencial não rejeitada — use M/M/c
- D > D_crítico: a distribuição é diferente da exponencial — use M/G/1/M/G/c com o CV medido
Passo 5 — Calibrar e validar o modelo
Após configurar a ferramenta com os parâmetros medidos:
- Rode a simulação com N = 300 entidades
- Compare o Wq simulado com o Wq medido no sistema real
- Se o erro for < 15%, o modelo está calibrado — use as fórmulas para análise de cenários
- Se o erro for > 15%, revise: (a) λ medido no período certo? (b) há multiservidor não modelado? (c) há prioridades ignoradas?
Referência rápida de tamanho de amostra
| Parâmetro | Mínimo aceitável | Ideal | Por quê |
|---|---|---|---|
| Chegadas (para λ) | 100 chegadas | 500+ | CV de λ decai como 1/√n |
| Tempos de serviço (para μ e CV) | 30 observações | 100+ | Estabilidade do CV e do KS test |
| Períodos de medição (para NHPP) | 5 períodos | 15+ | Média horária estável |
| Réplicas de simulação (para IC 95%) | 10 | 30 | IC proporcional a 1/√R |
Retorno sobre Investimento (ROI) — quando vale adicionar um servidor?
A decisão de aumentar c (mais servidores/atendentes) é essencialmente uma análise de custo-benefício. A ferramenta fornece todos os inputs para esse cálculo.
Modelo de custo total
Defina:
- = custo horário de um servidor (salário + encargos + equipamento)
- = custo horário de uma entidade esperando (produtividade perdida, custo de oportunidade, penalidade por SLA, risco de abandono)
- λ = taxa de chegada (entidades/hora)
O custo total por hora é:
O número ótimo de servidores minimiza C(c). Calcule C(c) para c = c_min até c_max usando os valores de Wq da tabela comparativa.
Exemplo: central de atendimento de seguros
λ = 50 ligações/hora, μ = 6/h, = Rh_e 80/h (cliente esperando = custo de churn + NPS)
| Atendentes | ρ | Wq (min) | Custo servidores/h | Custo espera/h | Total/h |
|---|---|---|---|---|---|
| 9 | 92,6% | 15,2 | R$ 315 | R$ 1.013 | R$ 1.328 |
| 10 | 83,3% | 4,3 | R$ 350 | R$ 287 | R$ 637 |
| 11 | 75,8% | 1,5 | R$ 385 | R$ 100 | R$ 485 |
| 12 | 69,4% | 0,6 | R$ 420 | R$ 40 | R$ 460 |
| 13 | 64,1% | 0,25 | R$ 455 | R$ 17 | R$ 472 |
O ponto ótimo neste exemplo é 12 atendentes (custo mínimo de R 152/h — o 11º atendente se paga em minutos.
Custo de abandono (impatient customers)
Em sistemas reais, clientes que esperam muito abandonam. A taxa de abandono aumenta com Wq. Uma aproximação simples:
onde R é a receita média por atendimento e P(abandono) cresce com Wq. Se o Wq simulado (use a aba de simulação) revelar que 15% dos clientes saem antes de 3 minutos e cada atendimento vale R$ 200:
Esse valor, somado ao custo de espera, justifica facilmente a contratação do atendente adicional.
Payback de automação (redução de μ)
Se a automação reduz o tempo de serviço de 5 min para 3 min (μ sobe de 12/h para 20/h), o impacto no Wq é equivalente a adicionar vários servidores — com custo fixo e sem variabilidade de RH. Compare o investimento em automação com o payback em redução de custo de espera e/ou redução de headcount necessário.
Erros mais comuns — e como evitá-los
Erro 1: Usar λ médio quando há sazonalidade forte
Problema: λ = 60/h no pico e λ = 10/h no vale. A média ponderada de 35/h leva a um dimensionamento que funciona bem no vale mas colapsa no pico.
Solução: configure o perfil NHPP com ⏱ λ variável no tempo e simule para ver o Wq em cada período. Dimensione para o pico que você se dispõe a absorver.
Erro 2: Medir o tempo de espera incluindo o tempo de serviço
Problema: o cronômetro começa na chegada e para na saída → obtém W (tempo total), não Wq (tempo de espera puro).
Solução: registre separadamente arrival_time, service_start_time e departure_time. Wq = service_start − arrival. W = departure − arrival.
Erro 3: Usar M/M/1 quando há múltiplos servidores paralelos
Problema: calcular ρ = λ/(c·μ) e aplicar a fórmula M/M/1 com esse ρ reduzido. Subestima dramaticamente a fila — o M/M/c concentra o efeito da variabilidade de forma diferente.
Solução: use sempre M/M/c com o c correto. Para c = 1 ambos coincidem.
Erro 4: Ignorar o período de warm-up na simulação
Problema: a simulação começa com fila vazia. As primeiras 50–100 entidades têm Wq = 0 artificialmente, puxando a média para baixo.
Solução: ative o warm-up nas configurações de simulação. Regra: warm-up ≥ 5 / (μc − λ) em unidades de tempo.
Erro 5: Confundir bloqueio com abandono
Problema: o M/M/c supõe que clientes esperam indefinidamente. Na realidade, clientes com paciência finita abandonam a fila. Ignorar isso subestima a taxa de perda real.
Solução: use a simulação com NHPP e adicione lógica de abandono (impaciência). Como aproximação, note que o Wq simulado sem abandono é um limite superior — a fila real é menor porque alguns clientes saem.
Erro 6: Usar as fórmulas com ρ ≥ 1 e interpretar os resultados
Problema: quando ρ ≥ 1, as fórmulas retornam resultados negativos ou infinitos. Não há interpretação válida.
Solução: leia o alerta vermelho “sistema instável” e dimensione para ρ < 1 primeiro. Somente depois refine os parâmetros.
Erro 7: Comparar Wq analítico com lead time medido no sistema real
Problema: o lead time medido inclui retrabalho, interrupções, múltiplas filas encadeadas. O Wq analítico é apenas para uma fila isolada.
Solução: use o modo de rede de filas para modelar múltiplos estágios encadeados. Some os Wq de cada etapa para o tempo total de espera.
1. Como converter entre unidades de tempo?
Mantenha λ e μ na mesma unidade. Se λ = 90/hora e quiser trabalhar em minutos: λ = 1,5/min, μ = 15/60 = 0,25/min. Todos os resultados de W e Wq ficam na unidade escolhida. A ferramenta exibe automaticamente em s, min ou h conforme a magnitude.
2. Qual distribuição de serviço escolher?
Use o ajuste automático de distribuição (botão 🔬): cole uma amostra de tempos de serviço e a ferramenta calcula o CV e sugere a distribuição. Referência rápida:
| CV medido | Distribuição sugerida |
|---|---|
| CV ≈ 0 (< 0,15) | Determinístico → use M/D/1 |
| 0,15–0,65 | Erlang-k com k ≈ 1/CV² |
| 0,65–1,35 | Exponencial → M/M/c |
| > 1,35 | Hiper-exponencial ou Lognormal → use distribuição Lognormal na ferramenta |
Para qualquer distribuição escolhida, a ferramenta calcula automaticamente os KPIs analíticos via P-K (c=1) ou Kingman (c>1) e permite simular para validar.
3. O sistema é instável (ρ ≥ 1). O que fazer?
Três opções: (1) Aumentar μ — reduzir o tempo de atendimento; (2) Aumentar c — servidores em paralelo; (3) Reduzir λ — agendamento, triagem ou roteamento. A tabela comparativa de servidores (resultado M/M/c) mostra quantitativamente o impacto de adicionar cada servidor.
4. Qual a diferença entre Erlangs e ρ?
Erlangs (a = λ/μ) é o tráfego total oferecido — pode ser > 1. ρ (= a/c) é a utilização por servidor, entre 0 e 1. O Erlang-B usa a; o Erlang-C usa ambos.
5. Quando usar simulação em vez de fórmulas?
Use simulação quando: (a) quer validar os resultados analíticos; (b) o sistema tem múltiplas etapas encadeadas (rede de filas); (c) há prioridades ou roteamento complexo; (d) λ e μ variam ao longo do dia; (e) quer ver a distribuição completa de Wq (percentis), não apenas a média. Para os modelos cobertos pelas fórmulas, os resultados analíticos e de simulação convergem com N ≥ 300 — o que valida a modelagem.
6. Como o Arena se relaciona com esta ferramenta?
Arena e Simul8 usam DES para casos arbitrariamente complexos. A simulação integrada nesta ferramenta usa o mesmo princípio para os modelos básicos. Para os modelos cobertos por fórmulas fechadas, os resultados analíticos e de simulação convergem com N suficiente — o que valida a modelagem antes de levar para ferramentas mais complexas.
7. Como dimensionar uma equipe de manutenção?
Use M/M/c com λ = taxa de chamados e μ = taxa de atendimento por técnico. A tabela comparativa exibe Wq para c-1, c, c+1, c+2. Compare o custo marginal de um técnico com o custo horário de máquina parada: custo_parada × Wq × λ = custo de máquina parada por hora.
8. Como calcular SLA de tempo de espera para M/M/c?
Para encontrar o menor c que garante 80% dos clientes com Wq ≤ 20 s, use a tabela comparativa e identifique o menor c em que essa probabilidade supera 80%.
9. Quando usar λ variável no tempo (NHPP)?
Use o perfil NHPP sempre que λ variar significativamente ao longo do dia ou da semana — call centers, restaurantes, servidores web, pedágios, prontos-socorros. Regra prática: se o λ do pico for mais de 2× o λ médio, as fórmulas com λ constante subestimam o tempo de espera de pico. Configure o perfil com ⏱ λ variável no tempo e use 🎲 Simular para ver Wq em cada período.
Glossário de Teoria das Filas
| Termo | Símbolo | Definição |
|---|---|---|
| Taxa de chegada | λ | Número médio de chegadas por unidade de tempo. Unidade: entidades/tempo. |
| Taxa de serviço | μ | Número médio de atendimentos que um servidor realiza por unidade de tempo. |
| Número de servidores | c | Servidores paralelos idênticos atendendo a mesma fila. |
| Tráfego oferecido | a | a = λ/μ (em Erlangs). Tráfego que o sistema recebe, independentemente de c. |
| Utilização por servidor | ρ | ρ = λ/(c·μ). Fração do tempo que cada servidor fica ocupado. Estável se ρ < 1. |
| Número médio na fila | Lq | Entidades aguardando atendimento (não incluindo as em serviço). |
| Número médio no sistema | L | Entidades aguardando + em atendimento. L = Lq + λ/μ. |
| Tempo médio na fila | Wq | Tempo médio que uma entidade espera antes de ser atendida. |
| Tempo médio no sistema | W | Tempo médio total (espera + serviço). W = Wq + 1/μ. |
| Lei de Little | L = λW | Válida para qualquer sistema estável, independente do modelo. |
| Erlang (unidade) | E | 1 E = 1 circuito ocupado durante 1 hora. a = λ/μ em Erlangs. |
| Erlang-B | B(c,a) | Probabilidade de bloqueio em sistema M/M/c/c (sem fila). |
| Erlang-C | C(c,a) | Probabilidade de ter que esperar em sistema M/M/c (com fila). |
| Coeficiente de variação | CV | CV = σ/média do tempo de serviço. CV = 1 para exponencial. |
| Regime estacionário | — | Estado de equilíbrio estatístico após warm-up. As fórmulas descrevem este estado. |
| Regime transiente | — | Estado inicial, antes da estabilização. Estatísticas dependem do tempo. |
| Processo de Poisson | M | Chegadas com intervalos exponenciais independentes. A = M na notação de Kendall. |
| NHPP | — | Non-Homogeneous Poisson Process — Poisson com λ variando no tempo. |
| DES | — | Discrete Event Simulation — simulação que avança de evento em evento. |
| FIFO | — | First In, First Out — disciplina padrão de atendimento por ordem de chegada. |
| PRIO | — | Priority — entidades de maior prioridade são atendidas antes. |
| Warm-up | — | Período inicial descartado das estatísticas para evitar distorção do regime transiente. |
| Bloqueio | P_K | Probabilidade de uma entidade ser rejeitada por falta de capacidade. |
| Intervalo de confiança | IC 95% | Intervalo que contém o verdadeiro valor com 95% de probabilidade, calculado via t-Student. |
| MTBF | — | Mean Time Between Failures — tempo médio de operação sem falha. |
| MTTR | — | Mean Time To Repair — tempo médio de reparo após falha. |
| Disponibilidade | A | A = MTBF / (MTBF + MTTR). Fração do tempo em que o recurso está operacional. |
| Starvation | — | Fenômeno em sistemas com prioridade: entidades de baixa prioridade esperam indefinidamente. |
| Kingman VCA | — | Variational-Coefficient Approximation de Kingman para M/G/c. |
| P-K | — | Fórmula de Pollaczek-Khinchine para M/G/1 com distribuição geral de serviço. |
| Teorema de Jackson | — | Em redes de filas Jackson, cada nó M/M/c se comporta como fila independente. |
| Roteamento probabilístico | p | Fração p das entidades segue para o próximo estágio. |
| Abandono | — | Entidade sai da fila antes de ser atendida (impaciência). Não modelado pelas fórmulas padrão. |
| Takt time | — | Tempo disponível / demanda. Define o ritmo máximo de produção. = 1/λ_max. |
| WIP | — | Work In Progress — número de itens em processamento simultâneo. WIP = L pela Lei de Little. |
Buscas relacionadas e intenção de uso
Esta página foi reforçada para atender buscas como teoria das filas, mantendo o foco em uso prático, cálculo rápido e interpretação direta do resultado em teoria-das-filas.
Termos com maior prioridade editorial
- teoria das filas
Como aproveitar melhor a ferramenta
Use teoria-das-filas para validar cenários, comparar resultados e entender rapidamente a lógica do cálculo sem depender de planilhas ou conversões manuais.
Buscas relacionadas e intenção de uso
Esta página foi reforçada para atender buscas como teoria das filas pesquisa operacional, teoria das filas exercicios resolvidos, teoria das filas exercicios resolvidos, mantendo o foco em uso prático, cálculo rápido e interpretação direta do resultado em teoria-das-filas.
Termos com maior prioridade editorial
- teoria das filas pesquisa operacional
- teoria das filas exercicios resolvidos
- teoria das filas exercicios resolvidos
Como aproveitar melhor a ferramenta
Use teoria-das-filas para validar cenários, comparar resultados e entender rapidamente a lógica do cálculo sem depender de planilhas ou conversões manuais.
Essa ferramenta foi útil?
Seu feedback é anônimo e ajuda a melhorar essa e outras ferramentas da Utilibox.
Encontrou algum erro?