Come funziona il motore di simulazione
Comprendere il motore di simulazione
ProcessMind utilizza un motore di simulazione a eventi discreti (DES) per modellare i processi. Comprendere il funzionamento del motore Le permette di configurare le simulazioni in modo più efficace e di interpretare correttamente i risultati.
Che cos’è la simulazione a eventi discreti?
Nella simulazione a eventi discreti, lo stato del sistema cambia solo in corrispondenza di specifici eventi: l’orologio passa da un evento all’altro e, tra un evento e il successivo, non accade nulla. Questo approccio è ideale per i processi aziendali perché:
- Le attività hanno orari di inizio e fine distinti
- Le risorse vengono allocate e rilasciate in momenti specifici
- I casi arrivano e si completano in punti definiti
Perché gli eventi discreti?
A differenza della simulazione continua, utilizzata per la fisica o la dinamica dei fluidi, i processi aziendali non richiedono una modellazione istante per istante. Una richiesta di prestito non passa gradualmente da “inviata” ad “approvata”: cambia stato in corrispondenza di eventi specifici.
Il ciclo principale degli eventi
Il motore di simulazione segue un ciclo semplice:
1. Initialize: Set up starting conditions
2. Get Next Event: Find the earliest scheduled event from the priority queue
3. Advance Time: Move simulation clock to that event's time
4. Process Event: Handle the event (start activity, complete activity, etc.)
5. Schedule New Events: Based on what happened, add new events
6. Repeat: Continue until end time or max events reached (5,000,000)
7. Output: Generate the complete event log Tipi di evento
La simulazione genera ed elabora diversi tipi di evento:
| Tipo di evento | Cosa accade |
|---|---|
| Arrivo del caso | Un nuovo caso entra nel processo attraverso un evento di inizio |
| Inizio dell’attività | Un caso inizia a eseguire un’attività, con allocazione delle risorse |
| Completamento dell’attività | Un caso completa un’attività, con rilascio delle risorse |
| Valutazione del Gateway | Un punto decisionale determina quale percorso o quali percorsi seguire |
| Completamento del caso | Un caso raggiunge un evento di fine |
Generazione e arrivo dei casi
I casi entrano nella simulazione attraverso gli Start Events del modello BPMN. Il modello degli arrivi è controllato dalla distribuzione di generazione dei casi.
Modello di arrivo predefinito
Per impostazione predefinita, i casi arrivano secondo una distribuzione di Poisson, con un tasso di 1 caso all’ora. In questo modo si ottengono intervalli realistici e casuali tra gli arrivi, tipici di molti processi aziendali.
Personalizzazione degli arrivi
Può configurare diversi modelli di arrivo utilizzando le distribuzioni descritte nella documentazione Distribuzioni.
Flusso dei casi nel processo
Sequence Flows
Quando un caso completa un elemento, segue immediatamente il Sequence Flow in uscita. Se esiste un solo percorso in uscita, il caso lo segue automaticamente.
Comportamento dei Gateway
I Gateway controllano il modo in cui i casi si diramano e si ricongiungono:
| Tipo di Gateway | Comportamento |
|---|---|
| XOR (esclusivo) | Viene selezionato esattamente un percorso in uscita mediante una selezione casuale ponderata per probabilità. Le probabilità sono trattate come pesi relativi e normalizzate automaticamente. |
| AND (parallelo) | Tutti i percorsi in uscita vengono seguiti simultaneamente. Il caso si divide in token paralleli. |
| OR (inclusivo) | Selezione casuale dei percorsi, con la garanzia che almeno un percorso venga seguito. |
| basato sugli eventi | Selezione casuale tra gli eventi disponibili. |
Impostazione delle probabilità
Per i Gateway XOR, assegna le probabilità a ogni flusso in uscita. Si tratta di pesi relativi:
- Se imposta i flussi su 70, 20 e 10, questi vengono normalizzati rispettivamente al 70%, 20% e 10%
- Se imposta i flussi su 7, 2 e 1, ottiene lo stesso risultato
- Ai flussi non assegnati viene applicata la percentuale rimanente
Esecuzione delle attività
Quando un caso raggiunge una task, il motore segue questa sequenza:
1. Verifica della disponibilità delle risorse
La risorsa richiesta dispone di capacità disponibile?
2. Accodamento, se necessario
Se le risorse non sono disponibili, il caso entra nella coda di attesa. Per impostazione predefinita, ProcessMind utilizza l’ordine FIFO (First In, First Out): i casi vengono elaborati nell’ordine in cui sono arrivati.
3. Allocazione delle risorse
Quando diventano disponibili, le unità della risorsa richiesta vengono riservate per questo caso.
4. Estrazione del tempo di elaborazione
Il motore estrae un valore dalla distribuzione configurata per il tempo di elaborazione. Questo determina la durata dell’attività.
5. Pianificazione dell’evento di completamento
Un evento di completamento viene aggiunto alla coda degli eventi a current_time + processing_time.
6. Rilascio delle risorse
Quando si verifica l’evento di completamento, le risorse vengono restituite al pool per essere utilizzate da altri casi.
Tempo minimo di elaborazione
Per garantire timestamp univoci e un comportamento realistico, tutte le attività hanno una durata minima di 1 secondo. Anche con una distribuzione di durata pari a zero, le attività richiedono almeno questo tempo.
Probabilità di salto
Le attività possono essere configurate con una probabilità di salto, compresa tra 0 e 100%. Quando un’attività viene saltata:
- Il caso passa immediatamente all’elemento successivo
- Non vengono consumate risorse
- Non trascorre tempo, ad eccezione del secondo minimo
- L’attività compare nel log con una durata minima
Questo consente di modellare scenari reali in cui alcuni passaggi vengono occasionalmente saltati.
Gestione del tempo
L’orologio della simulazione
La simulazione mantiene un orologio virtuale che avanza in modo discreto da un evento all’altro. Se il prossimo evento è alle 10:35 e l’ora corrente è 10:30, l’orologio passa direttamente alle 10:35.
Unità di tempo
Internamente, tutti i tempi vengono convertiti in unità coerenti. Può specificare le durate in:
- Secondi
- Minuti
- Ore
- Giorni
I tassi di arrivo vengono impostati separatamente, per ora, giorno, settimana, mese o anno.
Periodicità e intervalli temporali
I parametri possono variare in base all’orario della simulazione. Ad esempio:
- Tassi di arrivo diversi nei giorni feriali e nel fine settimana
- Tempi di elaborazione diversi nei turni del mattino e del pomeriggio
- Capacità delle risorse diversa nelle ore di punta
Per i dettagli sulla configurazione, consulti la documentazione sulla Periodicità.
Gestione delle risorse
Pool di risorse
Ogni risorsa ha una capacità definita, cioè il numero di casi che può gestire contemporaneamente.
Gestione delle code
Quando la domanda supera la capacità, i casi attendono in coda. Per impostazione predefinita, ProcessMind utilizza l’ordine FIFO (First In, First Out), assicurando che i casi vengano elaborati nell’ordine di arrivo.
Generazione dell’Event Log
Durante l’esecuzione della simulazione, ogni esecuzione di un’attività viene registrata nell’Event Log di output:
| Campo | Descrizione |
|---|---|
| ID caso | Identificativo univoco di ogni caso, generato in sequenza |
| Attività | Nome dell’elemento BPMN |
| Timestamp di inizio | Momento in cui è iniziata l’attività |
| Timestamp di completamento | Momento in cui è terminata l’attività |
| Risorsa | Risorsa che ha eseguito l’attività |
| Attributi | Eventuali attributi del caso in quel momento |
Questo log segue i formati standard degli Event Log e può essere analizzato con tutti gli strumenti di ProcessMind.
Limiti della simulazione
| Limite | Valore | Scopo |
|---|---|---|
| Numero massimo di eventi | 5.000.000 | Impedisce simulazioni senza fine |
| Durata minima | 1 secondo | Garantisce timestamp univoci |
Inizi in piccolo, poi aumenti la scala
Quando configura una nuova simulazione, inizi con un periodo breve, di alcuni giorni o settimane, per convalidare la configurazione. Quando avrà verificato che il modello si comporta correttamente, estenda la simulazione a periodi più lunghi.