Hoe de Simulation Engine werkt
De Simulatie-Engine Begrijpen
ProcessMind gebruikt een discrete event simulation (DES) engine om processen te modelleren. Inzicht in deze werking helpt je simulaties beter in te richten en resultaten goed te interpreteren.
Wat is Discrete Event Simulation?
Bij discrete event simulation verandert de systeemstatus alleen op specifieke events — de klok springt van event naar event, daartussen gebeurt er niets. Dit past goed bij business processen omdat:
- Activiteiten een duidelijke begin- en eindtijd hebben
- Resources op specifieke momenten worden toegekend of vrijgegeven
- Cases op bepaalde momenten binnenkomen en afronden
Waarom Discrete Events?
In tegenstelling tot een continue simulatie (voor fysica of vloeistofdynamica), hoeft een business proces niet elke seconde gemodelleerd te worden. Een leningaanvraag verandert niet langzaam van ‘ingediend’ naar ‘goedgekeurd’ — de status wijzigt bij een specifiek event.
De Kern Event Loop
De simulatie-engine werkt volgens een eenvoudige maar krachtige loop:
1. Initialiseren: Startvoorwaarden instellen
2. Volgend Event: Pak het eerstvolgende event uit de prioriteitsqueue
3. Tijd Vooruitzetten: Zet de klok van de simulatie naar het event-moment
4. Verwerk Event: Handel het event af (start activiteit, voltooi activiteit, etc.)
5. Plan Nieuwe Events: Voeg nieuwe events toe op basis van wat er gebeurt
6. Herhaal: Ga door tot de eindtijd of het maximum aantal events is bereikt (2.000.000)
7. Output: Genereer het volledige event log
Type Events
De simulatie maakt en verwerkt verschillende event types:
| Event Type | Wat gebeurt er |
|---|---|
| Case Arrival | Nieuwe case komt het proces binnen via een start event |
| Activity Start | Een case begint een activiteit uit te voeren (resources toegekend) |
| Activity Complete | Een case rondt een activiteit af (resources vrijgegeven) |
| Gateway Evaluation | Beslispunt bepaalt welke route wordt genomen |
| Case Complete | Een case bereikt een end event |
Case Generatie en Binnenkomst
Cases komen de simulatie binnen via Start Events in je BPMN-model. Het aankomstpatroon wordt bepaald door de case generation distribution.
Standaard Binnenkomstpatroon
Standaard komen cases binnen volgens een Poisson distribution met gemiddeld 1 case per uur. Dit zorgt voor realistische, willekeurige afstanden tussen cases zoals gebruikelijk in veel bedrijfsprocessen.
Binnenkomst Aanpassen
Je kunt verschillende binnenkomstpatronen instellen met de distributions uit de Distributions documentatie.
Case Flow Door Het Proces
Sequence Flows
Als een case een element voltooit, volgt hij direct de uitgaande sequence flow. Is er maar één pad, dan wordt dit automatisch gekozen.
Gateway Gedrag
Gateways bepalen hoe cases splitsen en samenkomen:
| Gateway Type | Gedrag |
|---|---|
| XOR (Exclusive) | Er wordt exact één pad gekozen d.m.v. kansgewogen random selectie. Probabilities zijn relatieve gewichten en worden automatisch genormaliseerd. |
| AND (Parallel) | Alle uitgaande paden worden tegelijkertijd gevolgd. De case splitst in parallelle tokens. |
| OR (Inclusive) | Willekeurige selectie van paden, met minimaal één gegarandeerd pad. |
| Event-Based | Willekeurige keuze tussen beschikbare events. |
Probabilities Instellen
Bij XOR gateways wijs je probabilities (kansen) toe per uitgaande flow. Dit zijn relatieve gewichten:
- Zet je flows op 70, 20 en 10, dan worden ze 70%, 20%, 10%
- Zet je flows op 7, 2 en 1, dan krijg je hetzelfde resultaat
- Alle flows moeten een probability krijgen; niet-toegewezen flows krijgen het restant
Activiteit Uitvoering
Wanneer een case een taak (activiteit) bereikt, volgt de engine deze volgorde:
1. Controleer Resource Beschikbaarheid
Heeft de benodigde resource nog voldoende capaciteit beschikbaar?
2. Zet In Wachtlijst Indien Nodig
Als resources niet beschikbaar zijn, komt de case in de wachtrij. ProcessMind werkt met FIFO (First In, First Out) — cases worden verwerkt op volgorde van binnenkomst.
3. Resources Toewijzen
Zodra beschikbaar, worden de benodigde resource units aan deze case toegekend.
4. Bepaal Verwerkingstijd
De engine haalt een waarde uit de ingestelde processing time distribution. Dit bepaalt hoe lang de activiteit zal duren.
5. Plan Completion Event
Een completion event wordt toegevoegd aan de event queue op current_time + processing_time.
6. Resources Vrijgeven
Bij het completion event gaan resources weer terug naar de pool voor andere cases.
Minimale Verwerkingstijd
Om unieke timestamps en realistisch gedrag te waarborgen, hebben alle activiteiten een minimale duur van 1 seconde. Ook met een nul-waardedistributie duurt een activiteit altijd minstens zo lang.
Skip Chance
Activiteiten kunnen ingesteld worden met een skip chance (0-100%). Als een activiteit wordt overgeslagen:
- De case gaat direct door naar het volgende element
- Er worden geen resources gebruikt
- Er verstrijkt geen tijd (behalve minimaal 1 seconde)
- De activiteit verschijnt in het log met minimale duur
Hiermee modelleer je praktijkgevallen waarin stappen soms overgeslagen worden.
Tijd Management
De Simulatieklok
De simulatie werkt met een virtuele klok die stapsgewijs springt van event naar event. Staat het volgende event om 10:35 en is het nu 10:30, dan springt de klok direct naar 10:35.
Tijdseenheden
Alle tijden worden intern omgerekend naar consistente eenheden. Je kunt tijden instellen in:
- Seconden
- Minuten
- Uren
- Dagen
- Weken
- Maanden
Periodiciteit en Tijdslots
Parameters kunnen variëren op basis van de simulatieperiode. Bijvoorbeeld:
- Andere aankomstrates voor werkdagen vs. weekend
- Verschillende verwerkingstijden in ochtend- en middagshifts
- Extra resourcecapaciteit tijdens piekuren
Zie de Periodicity documentatie voor configuratie-opties.
Resource Management
Resource Pools
Elke resource heeft een vaste capacity; het aantal cases dat deze tegelijk kan afhandelen.
Wachtrij Management
Als de vraag groter is dan de capaciteit wachten cases in een queue. ProcessMind gebruikt FIFO (First In, First Out) zodat cases in volgorde van binnenkomst worden verwerkt.
Event Log Generatie
Tijdens de simulatie wordt elke activiteit vastgelegd in het event log:
| Veld | Beschrijving |
|---|---|
| Case ID | Unieke identificatie van elke case (op volgorde gegenereerd) |
| Activity | Naam van het BPMN-element |
| Start Timestamp | Starttijd van de activiteit |
| Complete Timestamp | Eindtijd van de activiteit |
| Resource | Welke resource de activiteit uitvoerde |
| Attributes | Eventuele case-attributen op dat moment |
Dit log volgt standaard event log-formaten en kan worden geanalyseerd met alle ProcessMind tools.
Simulatie Limieten
| Limiet | Waarde | Doel |
|---|---|---|
| Max Events | 2.000.000 | Voorkomt dat simulaties uit de hand lopen |
| Min Duration | 1 seconde | Zorgt voor unieke timestamps |
Begin Klein, Schaal Daarna Op
Begin bij een nieuwe simulatie met een korte looptijd (enkele dagen of weken) om je configuratie te controleren. Zodra je zeker weet dat het model goed werkt, kun je langere perioden gebruiken.