Introduktion till diskret-händelsebaserade simuleringar

Diskret händelsesimulering i Python

Diogo Costa (PhD, MSc)

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

Diskret-händelsebaserade modeller vs. kontinuerliga modeller

Kontinuerliga modeller

  • Körs med fasta tidssteg

  • Tid är en dummyvariabel

    • Tid uppdateras inte inuti loopen
  • Använder for-loopar för tid

    for t in range(time_range):
    

Diskret-händelsebaserade modeller

  • Körs med variabla tidssteg

    • Kör/schemalägg diskreta händelser med olika varaktighet
  • Tid är en tillståndsvariabel

    • Tid uppdateras inuti while-loopen
    • Tid är inte en dummyvariabel
  • Använder ofta while-loopar

    while (time < 365):
    time += process_duration
    
Diskret händelsesimulering i Python

Komponenter i diskret-händelsebaserade modeller

  • Tillståndsvariabler
  • Klocka
  • Händelselista (eller processlista)
  • Avslutningsvillkor
Diskret händelsesimulering i Python

Modellkomponenter

Exempel: taxibolagsmodell

while (time < 10):

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

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

Avslutningsvillkor

while (time < 10)
  • Villkor som avslutar simuleringen
Diskret händelsesimulering i Python

Modellkomponenter

Exempel: taxibolagsmodell

while (time < 10):

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

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

Klocka

time += time_duration_1
time += time_duration_2
  • time spårar aktuell simuleringstid
  • Klockan hoppar till nästa händelses starttid allt eftersom simuleringen fortskrider
  • Tiden hoppar eftersom händelserna är momentana
Diskret händelsesimulering i Python

Modellkomponenter

Exempel: taxibolagsmodell

while (time < 10):

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

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

Tillståndsvariabel

time
  • Minska tid mellan kundens beställning och avlämning

  • Variabler som beskriver systemets utdata och effektivitet

Diskret händelsesimulering i Python

Nu kör vi en övning!

Diskret händelsesimulering i Python

Preparing Video For Download...