Como Funciona o Motor de Simulação
Entendendo o Engine de Simulação
A ProcessMind usa um engine de simulação por eventos discretos (DES) para modelar seus processos. Entender como esse motor funciona ajuda a configurar simulações de forma eficiente e interpretar os resultados corretamente.
O que é Simulação por Eventos Discretos?
Na simulação por eventos discretos, o estado do sistema muda só em eventos específicos — o relógio salta de um evento para outro e, entre eles, nada acontece. Isso é ideal para processos de negócio porque:
- As activities têm tempos definidos de início e fim
- Recursos são alocados e liberados em momentos certos
- Cases chegam e terminam em pontos definidos
Por que Eventos Discretos?
Diferente de simulação contínua (como física), processos de negócio não precisam ser modelados minuto a minuto. Um pedido de empréstimo não vai de “enviado” a “aprovado” aos poucos — a mudança acontece em eventos pontuais.
Loop Central de Eventos
O engine de simulação segue um loop simples e eficiente:
1. Initialize: Define condições iniciais
2. Get Next Event: Busca o evento mais próximo na fila de prioridades
3. Advance Time: Avança o relógio para o horário do evento
4. Process Event: Processa o evento (início ou fim de activity, etc.)
5. Schedule New Events: Com base no ocorrido, adiciona novos eventos
6. Repeat: Continua até o fim do tempo ou o máximo (2.000.000)
7. Output: Gera o event log completo
Tipos de Eventos
A simulação gera e processa vários tipos de eventos:
| Tipo de Evento | O que acontece |
|---|---|
| Case Arrival | Um novo case entra no processo pelo start event |
| Activity Start | Um case inicia a execução de uma activity (recursos alocados) |
| Activity Complete | Um case finaliza uma activity (recursos liberados) |
| Gateway Evaluation | Um ponto de decisão define o(s) caminho(s) a seguir |
| Case Complete | Um case chega ao end event |
Geração e Chegada de Cases
Os cases entram na simulação por meio dos Start Events no seu modelo BPMN. O padrão de chegada é definido pela case generation distribution.
Padrão de Chegada Default
Por padrão, os cases chegam seguindo uma Poisson distribution com taxa de 1 case por hora. Isso gera intervalos reais e aleatórios, comuns em processos de negócio.
Personalizando as Chegadas
Você pode configurar padrões de chegada diferentes usando as distribuições explicadas na documentação de Distributions .
Fluxo do Case no Processo
Sequence Flows
Quando um case finaliza um elemento, ele segue automaticamente o sequence flow de saída. Se houver só um caminho, o case segue direto.
Comportamento dos Gateways
Gateways controlam como os cases se ramificam e unem:
| Gateway Type | Comportamento |
|---|---|
| XOR (Exclusive) | Apenas um caminho de saída é escolhido por sorteio ponderado por probabilidade. As probabilidades são tratadas como pesos relativos e normalizadas automaticamente. |
| AND (Parallel) | Todos os caminhos de saída são seguidos ao mesmo tempo. O case se divide em tokens paralelos. |
| OR (Inclusive) | Caminhos são escolhidos aleatoriamente, sendo garantido ao menos um deles. |
| Event-Based | Seleção aleatória entre events disponíveis. |
Definindo Probabilidades
Para gateways XOR, você atribui probabilidades a cada flow de saída — são pesos relativos:
- Se colocar 70, 20 e 10, terá 70%, 20% e 10%
- Usando 7, 2 e 1, o resultado é o mesmo
- Todos os flows devem ter probabilidade; flows sem valor ficam com o restante
Execução da Atividade
Quando um case chega a uma task (atividade), o engine segue esta sequência:
1. Verificar Disponibilidade de Recursos
O recurso necessário tem capacidade disponível?
2. Entrar em Fila, se necessário
Se não houver recursos disponíveis, o case entra na fila de espera. A ProcessMind utiliza FIFO (First In, First Out) — os cases são processados na ordem em que chegaram.
3. Alocar Recursos
Quando disponíveis, as unidades de recurso são reservadas para o case.
4. Amostrar Tempo de Processamento
O engine sorteia um valor da distribuição configurada do tempo de processamento. Isso define quanto tempo a activity vai durar.
5. Agendar Evento de Conclusão
É adicionado um evento de conclusão na fila de eventos em current_time + processing_time.
6. Liberar Recursos
Quando o evento de conclusão acontece, os recursos voltam para o pool e podem ser usados por outros cases.
Duração Mínima de Processamento
Para garantir timestamps únicos e um comportamento realista, toda activity tem duração mínima de 1 segundo. Mesmo com distribuição configurada em zero, a activity terá pelo menos esse tempo.
Skip Chance
As activities podem ser configuradas com uma skip chance (0-100%). Quando uma activity é pulada:
- O case segue direto para o próximo elemento
- Nenhum recurso é consumido
- Nenhum tempo é gasto (exceto o mínimo de 1 segundo)
- A activity aparece no log com a menor duração possível
Isso representa situações reais em que etapas podem ser ignoradas.
Gestão do Tempo
O Relógio da Simulação
A simulação mantém um relógio virtual que avança de evento para evento. Se o próximo evento for às 10:35 e agora for 10:30, o relógio vai direto para 10:35.
Unidades de Tempo
Todos os tempos são convertidos para unidades consistentes internamente. Você pode especificar durações em:
- Segundos
- Minutos
- Horas
- Dias
- Semanas
- Meses
Periodicidade e Faixas de Tempo
Os parâmetros podem mudar ao longo da simulação. Por exemplo:
- Taxas de chegada diferentes em dias úteis e finais de semana
- Tempos de processamento diferentes no turno da manhã e da tarde
- Capacidade de recursos variável no horário de pico
Veja a documentação de Periodicity para saber como configurar.
Gestão de Recursos
Resource Pools
Cada recurso possui uma capacity definida — quantos cases pode atender ao mesmo tempo.
Gestão de Filas
Quando a demanda passa da capacidade, os cases esperam na fila. A ProcessMind utiliza FIFO (First In, First Out) e garante o processamento pela ordem de chegada.
Geração do Event Log
Durante a simulação, cada execução de activity é gravada no event log de saída:
| Field | Description |
|---|---|
| Case ID | Identificador único de cada case (gerado sequencialmente) |
| Activity | Nome do elemento BPMN |
| Start Timestamp | Quando a atividade iniciou |
| Complete Timestamp | Quando a atividade terminou |
| Resource | Qual recurso executou a atividade |
| Attributes | Atributos do case naquele momento |
Esse log segue padrões de event log e pode ser analisado com todas as ferramentas ProcessMind.
Limites de Simulação
| Limite | Valor | Finalidade |
|---|---|---|
| Max Events | 2.000.000 | Evita simulações sem controle |
| Min Duration | 1 segundo | Garante timestamps únicos |
Comece Pequeno e Escale Depois
Ao configurar uma nova simulação, comece com um período curto (alguns dias ou semanas) para validar sua configuração. Depois de garantir que o modelo está correto, aumente o tempo da simulação.