Hoe de Simulatie-engine werkt
De Simulatie-Engine Begrijpen
ProcessMind gebruikt een discrete gebeurtenis 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 Simulatie?
Bij discrete gebeurtenis simulation verandert de systeemstatus alleen op specifieke gebeurtenissen, de klok springt van gebeurtenis naar gebeurtenis, daartussen gebeurt er niets. Dit past goed bij bedrijfsprocessen omdat:
- Activiteiten een duidelijke begin- en eindtijd hebben
- Bronnen 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 bedrijfsproces niet elke seconde gemodelleerd te worden. Een leningaanvraag verandert niet langzaam van ‘ingediend’ naar ‘goedgekeurd’, de status wijzigt bij een specifiek gebeurtenis.
De Kern Event Loop
De simulatie-engine werkt volgens een eenvoudige maar krachtige loop:
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 (2,000,000)
7. Output: Generate the complete event log Type Events
De simulatie maakt en verwerkt verschillende gebeurtenis types:
| Event-type | Wat gebeurt er |
|---|---|
| Case Arrival | Nieuwe case komt het proces binnen via een start gebeurtenis |
| Activiteit Start | Een case begint een activiteit uit te voeren (bronnen toegekend) |
| Activiteit Complete | Een case rondt een activiteit af (bronnen vrijgegeven) |
| Gateway Evaluation | Beslispunt bepaalt welke route wordt genomen |
| Case Complete | Een case bereikt een end gebeurtenis |
Case Generatie en Binnenkomst
Cases komen de simulatie binnen via Start-gebeurtenissen in je BPMN-model. Het aankomstpatroon wordt bepaald door de case generation distribution.
Standaard Binnenkomstpatroon
Standaard komen cases binnen volgens een Poisson-verdeling 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 Verdelingen 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. Kansen 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 zorgt voor pad. |
| Event-Based | Willekeurige keuze tussen beschikbare gebeurtenissen. |
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 bron nog voldoende capaciteit beschikbaar?
2. Zet In Wachtlijst Indien Nodig
Als bronnen 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. Bronnen Toewijzen
Zodra beschikbaar, worden de benodigde bron units aan deze case toegekend.
4. Bepaal Verwerkingstijd
De engine haalt een waarde uit de ingestelde verwerkingstijd distribution. Dit bepaalt hoe lang de activiteit zal duren.
5. Plan Completion Event
Een completion gebeurtenis wordt toegevoegd aan de gebeurtenis queue op current_time + processing_time.
6. Bronnen Vrijgeven
Bij het completion gebeurtenis gaan bronnen weer terug naar de pool voor andere cases.
Minimale Verwerkingstijd
Om unieke tijdstempels 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-kans
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 bronnen 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.
Tijdmanagement
De Simulatieklok
De simulatie werkt met een virtuele klok die stapsgewijs springt van gebeurtenis naar gebeurtenis. Staat het volgende gebeurtenis 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 broncapaciteit tijdens piekuren
Zie de Periodiciteit documentatie voor configuratie-opties.
Resourcemanagement
Resource Pools
Elke bron heeft een vaste capacity; het aantal cases dat deze tegelijk kan afhandelen.
Wachtrijmanagement
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 | Omschrijving |
|---|---|
| Case-ID | Unieke identificatie van elke case (op volgorde gegenereerd) |
| Activiteit | Naam van het BPMN-element |
| Starttijdstamp | Starttijd van de activiteit |
| Complete Timestamp | Eindtijd van de activiteit |
| Resource | Welke bron de activiteit uitvoerde |
| Attributen | 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 tijdstempels |
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.