Come funziona il motore di simulazione
Come Funziona il Motore di Simulazione
ProcessMind utilizza un engine di discrete event simulation (DES) per modellare i processi. Capire come funziona ti aiuta a configurare le simulazioni in modo efficace e a interpretare meglio i risultati.
Cos’è la Discrete Event Simulation?
Nella discrete event simulation, lo stato del sistema cambia solo in corrispondenza di specifici eventi—l’orologio avanza da un evento all’altro e tra un evento e l’altro non accade nulla. Questo approccio è ideale per il business perché:
- Le attività hanno tempi di inizio e fine precisi
- Le risorse sono assegnate e rilasciate in momenti definiti
- I case arrivano e terminano in punti stabiliti
Perché Discrete Event?
A differenza delle simulazioni continue (utilizzate in fisica o fluidodinamica), nei processi business non serve modellare ogni istante. Una richiesta prestito non passa gradualmente da “submitted” a “approved”: cambia stato solo in corrispondenza di eventi specifici.
Ciclo Principale degli Eventi
Il motore di simulazione segue un ciclo semplice ma potente:
1. Inizializza: Imposta le condizioni iniziali
2. Ottieni Prossimo Evento: Trova l'evento pianificato più vicino dalla coda prioritaria
3. Avanza Tempo: Sposta l'orologio della simulazione al tempo di quell'evento
4. Gestisci Evento: Esegui l'evento (avvia attività, completa attività, ecc.)
5. Pianifica Nuovi Eventi: Inserisci nuovi eventi in base a quanto accaduto
6. Ripeti: Continua fino all'end time o al raggiungimento del max events (2.000.000)
7. Output: Genera l'event log completo
Tipi di Eventi
La simulazione genera e gestisce diversi tipi di eventi:
| Tipo Evento | Descrizione |
|---|---|
| Case Arrival | Un nuovo case entra nel processo tramite uno start event |
| Activity Start | Un case avvia una attività (risorse allocate) |
| Activity Complete | Un case termina una attività (risorse rilasciate) |
| Gateway Evaluation | Un punto decisionale sceglie quali percorsi seguire |
| Case Complete | Un case raggiunge un end event |
Generazione e Arrivo dei Case
I case entrano nella simulazione tramite gli Start Event nel tuo modello BPMN. Il pattern di arrivo è gestito dalla distribuzione di generazione case.
Pattern di Arrivo Predefinito
Per default i case arrivano secondo una Poisson distribution con tasso di 1 case all’ora. Questo genera tempi di arrivo realistici e variabili, comuni nei processi business.
Personalizza gli Arrivi
Puoi configurare diversi pattern di arrivo usando le distribuzioni descritte nella documentazione Distributions .
Flusso del Case nel Processo
Sequence Flow
Quando un case completa un elemento, segue subito il sequence flow in uscita. Se il percorso è unico, viene seguito in automatico.
Comportamento dei Gateway
I gateway controllano come i case si diramano e si uniscono:
| Tipo Gateway | Comportamento |
|---|---|
| XOR (Exclusive) | Seleziona uno e solo uno tra i percorsi in uscita tramite scelta casuale ponderata. Le probabilità sono viste come pesi relativi e normalizzate automaticamente. |
| AND (Parallel) | Tutti i percorsi sono seguiti nello stesso momento. Il case si divide in token paralleli. |
| OR (Inclusive) | Selezione casuale dei percorsi, con almeno uno sempre incluso. |
| Event-Based | Scelta casuale tra gli eventi disponibili. |
Impostare le Probabilità
Per gli XOR gateway, assegni una probabilità a ogni flow. Questi sono pesi relativi:
- Se imposti i flow su 70, 20 e 10, corrispondono a 70%, 20%, 10%
- Se imposti su 7, 2 e 1 ottieni lo stesso risultato
- Tutti i flow devono avere una probabilità; i non assegnati usano la percentuale rimasta
Esecuzione Attività
Quando un case raggiunge una task (activity), l’engine segue questa sequenza:
1. Verifica Disponibilità Risorse
La risorsa richiesta ha capacità disponibile?
2. Accoda se Necessario
Se le risorse non sono disponibili, il case entra in coda di attesa. ProcessMind usa una logica FIFO (First In, First Out): i case vengono gestiti nell’ordine di arrivo.
3. Assegna Risorse
Quando disponibili, le risorse necessarie vengono riservate per questo case.
4. Campiona Tempo di Esecuzione
L’engine estrae un valore dalla distribuzione configurata del tempo di processamento. Questo determina la durata dell’attività.
5. Pianifica Completion Event
Un completion event viene aggiunto alla coda eventi a current_time + processing_time.
6. Rilascia Risorse
Quando viene eseguito il completion event, le risorse vengono restituite al pool per altri case.
Durata Minima delle Attività
Per garantire timestamp unici e comportamento realistico, tutte le attività hanno durata minima di 1 secondo. Anche con distribuzione a durata zero, l’attività impiega almeno questo tempo.
Probabilità di Salto
Le attività possono essere configurate con una skip chance (0-100%). Quando un’attività viene saltata:
- Il case passa subito all’elemento successivo
- Nessuna risorsa viene usata
- Non passa tempo (tranne il minimo di 1 secondo)
- L’attività appare nel log con durata minima
Questo consente di simulare casi reali in cui alcune fasi vengono saltate.
Gestione del Tempo
Simulation Clock
La simulazione mantiene un orologio virtuale che avanza in modo discreto da un evento al successivo. Se il prossimo evento è alle 10:35 e ora sono le 10:30, l’orologio passa direttamente alle 10:35.
Unità di Tempo
Tutti i tempi sono convertiti in unità coerenti. Puoi indicare le durate in:
- Secondi
- Minuti
- Ore
- Giorni
- Settimane
- Mesi
Periodicità e Fasce Orarie
I parametri possono variare in base al tempo di simulazione. Per esempio:
- Tassi di arrivo diversi tra giorni feriali e weekend
- Tempi di attività diversi tra turni mattina e pomeriggio
- Capacity risorse diversa nelle ore di punta
Consulta la documentazione Periodicity per i dettagli.
Gestione Risorse
Resource Pools
Ogni risorsa ha una capacity specifica: il numero di case che può gestire in contemporanea.
Gestione della Coda
Quando la domanda supera la capacità, i case attendono in coda. ProcessMind usa il criterio FIFO (First In, First Out), garantendo la gestione nell’ordine di arrivo.
Generazione Event Log
Durante la simulazione, tutte le esecuzioni di attività vengono registrate nell’event log di output:
| Campo | Descrizione |
|---|---|
| Case ID | Identificativo univoco per ogni case (generato in sequenza) |
| Activity | Nome dell’elemento BPMN |
| Start Timestamp | Quando l’attività è iniziata |
| Complete Timestamp | Quando l’attività è terminata |
| Resource | Risorsa che ha eseguito l’attività |
| Attributes | Attributi del case in quel momento |
Questo log segue i formati standard di event log ed è analizzabile con tutti gli strumenti ProcessMind.
Limiti Simulazione
| Limite | Valore | Scopo |
|---|---|---|
| Max Events | 2.000.000 | Evita simulazioni troppo lunghe |
| Min Duration | 1 secondo | Garantisce timestamp unici |
Inizia in piccolo, poi scala
Quando configuri una nuova simulazione, inizia con un periodo breve (pochi giorni o settimane) per validare la configurazione. Quando sei sicuro che il modello funziona, passa a periodi più lunghi.