Niet-deterministische events en processen

Discrete Event Simulation in Python

Diogo Costa (PhD, MSc)

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

Event-niet-determinisme

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

Wat is (proces)niet-determinisme?

  • Onvermogen om een proces precies te voorspellen
  • Zo’n proces heet "niet-deterministisch"

Waarom zijn deterministische processen belangrijk?

  • Natuur- en mensgedreven activiteiten zijn vaak niet-deterministisch
  • Elke keer verlopen ze anders
  • Duur is niet exact te bepalen
  • Kan veel invloed hebben op de systeemoutput
Discrete Event Simulation in Python

Voorbeelden van niet-deterministische processen of events

Natuur

  • Moment van een vulkaanuitbarsting
  • Exacte moment dat het gaat regenen
  • Tijd en plaats van een blikseminslag
  • Tijd en plaats waarop een tornado ontstaat

Mensgedreven of -geïnitieerde processen

  • Moment dat een machine stukgaat
  • Moment dat iemand naar het toilet moet
  • Moment dat een baby begint te huilen
  • Of een lijnvlucht vertraging heeft
Discrete Event Simulation in Python

Niet-deterministische events representeren in discrete-eventmodellen

Niet-deterministische processen

  • Leveren niet-herhaalbare impact op het systeem
  • Exacte duur onbekend

Statistiek

  • Beschrijft variatie in procesduur
  • Het random-pakket helpt hierbij

  • Voorbeeld: random.randint(start, end)

import random

# Non-deterministic processes
process_1 = [5, 15]

while time < simulation_time:

   # Update simulation time: process_1
   time += random.randint(
               process_1[0], 
               process_1[1])

Discrete Event Simulation in Python

Niet-deterministische events modelleren met SimPy

  • Geen specifieke methoden om niet-deterministische processen te modelleren

  • Variatie in eventduur berekenen zoals bij niet-SimPy-modellen

  • Geef de juiste statistiek door aan .timeout()

import random

# Non-deterministic processes
process_1 = [5, 15]

while True:

  # Update simulation time: process_1
  env.timeout(random.randint(
         process_1[0], 
         process_1[1]))
Discrete Event Simulation in Python

Laten we oefenen!

Discrete Event Simulation in Python

Preparing Video For Download...