Einführung in ereignisdiskrete Simulationen

Diskrete-Ereignis-Simulation mit Python

Diogo Costa (PhD, MSc)

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

Ereignisdiskrete vs. kontinuierliche Modelle

Kontinuierliche Modelle

  • Laufen in festen Zeitschritten

  • Zeit ist eine Dummy-Variable

    • Zeit wird in der Schleife nicht aktualisiert
  • Verwendung von Zeit-for-Schleifen

    for t in range(time_range):
    

Ereignisdiskrete Modelle

  • Laufen in variablen Zeitschritten

    • Diskrete Ereignisse mit unterschiedlicher Dauer über die Zeit ausführen/planen
  • Zeit ist eine Zustandsvariable

    • Zeit wird in der while-Schleife aktualisiert
    • Zeit ist keine Dummy-Variable
  • Nutzt oft while-Schleifen

    while (time < 365):
    time += process_duration
    
Diskrete-Ereignis-Simulation mit Python

Komponenten ereignisdiskreter Modelle

  • Zustandsvariablen
  • Uhr
  • Ereignisliste (oder Prozessliste)
  • Endbedingung(en)
Diskrete-Ereignis-Simulation mit Python

Modellkomponenten

Beispiel: Taxiunternehmen-Modell

while (time < 10):

    # Prozess 1
    time_duration_1 = manage_requests()
    time += time_duration_1

    # Prozess 2
    time_duration_2 = dispatch_taxi()
    time += time_duration_2

Endbedingung

while (time < 10)
  • Bedingung(en), die die Simulation beenden
Diskrete-Ereignis-Simulation mit Python

Modellkomponenten

Beispiel: Taxiunternehmen-Modell

while (time < 10):

    # Prozess 1
    time_duration_1 = manage_requests()
    time += time_duration_1

    # Prozess 2
    time_duration_2 = dispatch_taxi()
    time += time_duration_2

Uhr

time += time_duration_1
time += time_duration_2
  • time verfolgt die aktuelle Simulationszeit
  • Die Uhr springt zum Startzeitpunkt des nächsten Ereignisses
  • Zeit „springt“, da Ereignisse instantan sind
Diskrete-Ereignis-Simulation mit Python

Modellkomponenten

Beispiel: Taxiunternehmen-Modell

while (time < 10):

    # Prozess 1
    time_duration_1 = manage_requests()
    time += time_duration_1

    # Prozess 2
    time_duration_2 = dispatch_taxi()
    time += time_duration_2

Zustandsvariable

time
  • Zeit zwischen Anruf und Absetzen verkürzen

  • Variablen, die Ausgaben und Effizienz des Systems beschreiben

Diskrete-Ereignis-Simulation mit Python

Lass uns üben!

Diskrete-Ereignis-Simulation mit Python

Preparing Video For Download...