Deterministische gebeurtenissen en processen

Discrete Event Simulation in Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Determinisme van events (of processen)

LET OP: Termen "event" en "process" worden door elkaar gebruikt.

Wat is determinisme van een event (of proces)?

  • Het proces is exact voorspelbaar
  • Zo’n proces heet "deterministisch"

Waarom zijn deterministische processen belangrijk?

  • Natuurlijke en door mensen gestuurde activiteiten zijn complex
  • Veel onderling afhankelijke processen en resources
  • Sommige processen herhalen zich elke keer hetzelfde
  • Impact op systeemuoutput is precies voorspelbaar
Discrete Event Simulation in Python

Voorbeelden van deterministische processen of events

Natuurlijke wereld

  • Hoogte van zeetijden
  • Versnelling door zwaartekracht (9,81 m$^2$/s)
  • Beweging van planeten in het zonnestelsel
  • Snelheid van geluid in lucht (331,29 m/s)
  • Snelheid van het licht (300.000 km/s)
  • Bevriezen van water (bij 0 graden Celsius)

Mensgestuurd of -geïnitieerd

  • Stroom uit een kraan
  • Snelheid van een flessenafvulmachine
  • Tijd die een koffiemachine nodig heeft
  • Warmte-afgifte van een oven op 230 graden Celsius
  • Geprogrammeerde wasmachinerondes
  • Werking van een magnetron
Discrete Event Simulation in Python

Deterministische events in discrete-eventmodellen weergeven

Deterministische processen

  • Voorspelbare impact op dynamische systemen
  • Bekende duur
  • Herhalen zich op dezelfde manier

Houd rekening met procestijd in de simulatieklok

# Deterministic processes (time in hours)
duration_process_1 = 10
duration_process_2 = 5

while sim_time < total_sim_time:
# Update simulation time: Process 1 sim_time += duration_process_1
# Update simulation time: Process 2 sim_time += duration_process_2
Discrete Event Simulation in Python

Deterministische events met SimPy weergeven

Een SimPy-implementatie van deterministische events:

  • De .timeout()-methode registreert de procestijd
    • Ongevoelig voor tijdseenheden
    • Behandelt tijd als getallen
    • Zorg voor consistente tijdseenheden in het hele model
# Deterministic processes
duration_process_1 = 10
duration_process_2 = 5

while True:

   # Update simulation time: Process 1
   env.timeout(duration_process_1)

   # Update simulation time: Process 2
   env.timeout(duration_process_2)

Discrete Event Simulation in Python

Laten we oefenen!

Discrete Event Simulation in Python

Preparing Video For Download...