Deterministische events 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 "proces" worden door elkaar gebruikt.

Wat is determinisme van een event (of proces)?

  • Mogelijkheid om een proces nauwkeurig te voorspellen
  • Zo’n proces heet "deterministisch"

Waarom zijn deterministische processen belangrijk?

  • Natuur en menselijk handelen zijn complex
  • Veel onderling afhankelijke processen en middelen
  • Sommige processen herhalen steeds hetzelfde
  • Effect op systeemuoutput is nauwkeurig te voorspellen
Discrete Event Simulation in Python

Voorbeelden van deterministische processen of events

Natuurlijke wereld

  • Hoogte van oceaangetijden
  • Valversnelling (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 °C)

Mensgedreven of mensgeïnitieerd

  • Stroom uit een kraan
  • Snelheid van een flessenvulmachine
  • Tijd die een koffiemachine nodig heeft
  • Warmteafgifte van een oven op 230 °C
  • Geprogrammeerde wasprogramma’s
  • Werking van een magnetron
Discrete Event Simulation in Python

Deterministische events weergeven in discrete-eventmodellen

Deterministische processen

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

Houd rekening met de 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 weergeven met SimPy

Een SimPy-implementatie van deterministische events:

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

while True:

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

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

Discrete Event Simulation in Python

Laten we oefenen!

Discrete Event Simulation in Python

Preparing Video For Download...