Hoe de simulatie-engine werkt
De simulatie-engine begrijpen
ProcessMind gebruikt een discrete event simulation (DES)-engine om processen te modelleren. Als je begrijpt hoe deze engine werkt, kun je simulaties beter configureren en resultaten nauwkeuriger interpreteren.
Wat is discrete event simulation?
Bij discrete event simulation verandert de systeemstatus alleen bij specifieke events. De klok springt van event naar event en tussen twee events gebeurt er niets. Deze aanpak past goed bij bedrijfsprocessen, omdat:
- Activiteiten duidelijke begin- en eindtijden hebben
- Bronnen op specifieke momenten worden toegewezen en vrijgegeven
- Cases op vastgelegde momenten binnenkomen en worden afgerond
Waarom discrete events?
In tegenstelling tot continue simulatie, die wordt gebruikt voor natuurkunde of vloeistofdynamica, hoeven bedrijfsprocessen niet van moment tot moment te worden gemodelleerd. Een leningaanvraag gaat niet geleidelijk van “ingediend” naar “goedgekeurd”. De status verandert bij specifieke events.
De centrale eventlus
De simulatie-engine doorloopt een eenvoudige lus:
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 Typen events
De simulatie genereert en verwerkt verschillende typen events:
| Type event | Wat gebeurt er |
|---|---|
| Aankomst van case | Een nieuwe case komt binnen via een startevent |
| Start van activiteit | Een case begint een activiteit uit te voeren, bronnen worden toegewezen |
| Voltooiing van activiteit | Een case rondt een activiteit af, bronnen worden vrijgegeven |
| Evaluatie van Gateway | Een beslispunt bepaalt welk pad of welke paden worden gevolgd |
| Voltooiing van case | Een case bereikt een eindevent |
Genereren en aankomen van cases
Cases komen de simulatie binnen via Start Events in je BPMN-model. Het aankomstpatroon wordt bepaald door de case generation distribution.
Standaard aankomstpatroon
Standaard komen cases binnen volgens een Poisson-verdeling, met een frequentie van 1 case per uur. Zo ontstaan realistische, willekeurige tussenpozen die kenmerkend zijn voor veel bedrijfsprocessen.
Aankomsten aanpassen
Je kunt verschillende aankomstpatronen configureren met de verdelingen uit de documentatie over verdelingen.
Caseflow door het proces
Sequence Flows
Wanneer een case een element afrondt, volgt die meteen de uitgaande Sequence Flow. Als er maar één uitgaand pad is, volgt de case dat automatisch.
Gedrag van Gateways
Gateways bepalen hoe cases vertakken en weer samenkomen:
| Type Gateway | Gedrag |
|---|---|
| XOR (Exclusive) | Precies één uitgaand pad wordt gekozen via een willekeurige selectie op basis van kansen. De kansen worden behandeld als relatieve gewichten en automatisch genormaliseerd. |
| AND (Parallel) | Alle uitgaande paden worden tegelijk gevolgd. De case wordt opgesplitst in parallelle tokens. |
| OR (Inclusive) | Paden worden willekeurig geselecteerd, waarbij gegarandeerd minstens één pad wordt gevolgd. |
| Event-Based | Willekeurige selectie uit de beschikbare events. |
Kansen instellen
Bij XOR-gateways wijs je aan elke uitgaande flow een kans toe. Dit zijn relatieve gewichten:
- Als je flows instelt op 70, 20 en 10, worden ze genormaliseerd naar 70%, 20% en 10%
- Als je flows instelt op 7, 2 en 1, krijg je hetzelfde resultaat
- Niet-toegewezen flows gebruiken het resterende percentage
Activiteiten uitvoeren
Wanneer een case een Task bereikt, doorloopt de engine deze stappen:
1. Beschikbaarheid van bronnen controleren
Is er capaciteit beschikbaar bij de vereiste bron?
2. Zo nodig in de wachtrij plaatsen
Als er geen bronnen beschikbaar zijn, komt de case in de wachtrij. ProcessMind gebruikt standaard de volgorde FIFO (First In, First Out): cases worden verwerkt in de volgorde waarin ze zijn binnengekomen.
3. Bronnen toewijzen
Zodra ze beschikbaar zijn, worden de benodigde eenheden van de bron gereserveerd voor deze case.
4. Verwerkingstijd bepalen
De engine haalt een waarde op uit de geconfigureerde verdeling voor de verwerkingstijd. Daarmee wordt bepaald hoelang de activiteit duurt.
5. Voltooiingsevent plannen
Er wordt een voltooiingsevent aan de eventwachtrij toegevoegd op current_time + processing_time.
6. Bronnen vrijgeven
Wanneer het voltooiingsevent optreedt, worden de bronnen teruggegeven aan de pool voor andere cases.
Minimale verwerkingstijd
Om unieke timestamps en realistisch gedrag te garanderen, hebben alle activiteiten een minimale duur van 1 seconde. Zelfs bij een verdeling met een duur van nul duurt een activiteit minimaal zo lang.
Overslaankans
Je kunt activiteiten configureren met een kans op overslaan van 0 tot 100%. Als een activiteit wordt overgeslagen:
- Gaat de case meteen door naar het volgende element
- Worden er geen bronnen gebruikt
- Verstrijkt er geen tijd, behalve de minimale 1 seconde
- Verschijnt de activiteit met een minimale duur in het log
Zo modelleer je praktijksituaties waarin stappen soms worden overgeslagen.
Tijd verwerken
De simulatieklok
De simulatie houdt een virtuele klok bij die van event naar event vooruitgaat. Staat het volgende event gepland om 10:35 en is het nu 10:30, dan springt de klok rechtstreeks naar 10:35.
Tijdseenheden
Alle tijden worden intern omgerekend naar consistente eenheden. Je kunt duren opgeven in:
- Seconden
- Minuten
- Uren
- Dagen
Aankomstfrequenties stel je afzonderlijk in per uur, dag, week, maand of jaar.
Periodiciteit en tijdvakken
Parameters kunnen variëren op basis van de simulatietijd. Bijvoorbeeld:
- Verschillende aankomstfrequenties op werkdagen en in het weekend
- Verschillende verwerkingstijden tijdens ochtend- en middagdiensten
- Een andere broncapaciteit tijdens piekuren
Bekijk de documentatie over periodiciteit voor informatie over de configuratie.
Bronnen beheren
Bronpools
Elke bron heeft een vastgelegde capaciteit: het aantal cases dat de bron tegelijk kan verwerken.
Wachtrijen beheren
Als de vraag groter is dan de capaciteit, wachten cases in een wachtrij. ProcessMind gebruikt standaard de volgorde FIFO (First In, First Out), zodat cases worden verwerkt in volgorde van binnenkomst.
Event log genereren
Tijdens de simulatie wordt elke uitvoering van een activiteit vastgelegd in het uitvoerlog:
| Veld | Beschrijving |
|---|---|
| Case-ID | Unieke identificatie voor elke case, opeenvolgend gegenereerd |
| Activiteit | Naam van het BPMN-element |
| Starttimestamp | Wanneer de activiteit begon |
| Voltooiingstimestamp | Wanneer de activiteit eindigde |
| Bron | Welke bron de activiteit uitvoerde |
| Attributen | Alle case-attributen op dat moment |
Dit log volgt standaardindelingen voor event logs en kan met alle ProcessMind-tools worden geanalyseerd.
Simulatielimieten
| Limiet | Waarde | Doel |
|---|---|---|
| Maximaal aantal events | 5.000.000 | Voorkomt simulaties die blijven doorlopen |
| Minimale duur | 1 seconde | Zorgt voor unieke timestamps |
Begin klein en schaal daarna op
Begin bij een nieuwe simulatie met een korte periode, bijvoorbeeld een paar dagen of weken, om je configuratie te controleren. Als je zeker weet dat het model goed werkt, kun je opschalen naar langere perioden.