Introducere în simulările cu evenimente discrete

Simulare de evenimente discrete în Python

Diogo Costa (PhD, MSc)

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

Modele cu evenimente discrete vs. modele continue

Modele continue

  • Rulează la pași de timp ficiși

  • Timpul este o variabilă auxiliară

    • Timpul nu se actualizează în interiorul buclei
  • Folosesc bucle for pentru timp

    for t in range(time_range):
    

Modele cu evenimente discrete

  • Rulează la pași de timp variabili

    • Planifică evenimente discrete cu durate diferite
  • Timpul este o variabilă de stare

    • Timpul se actualizează în interiorul buclei while
    • Timpul nu este o variabilă auxiliară
  • Folosesc adesea bucle while

    while (time < 365):
    time += process_duration
    
Simulare de evenimente discrete în Python

Componente ale modelelor cu evenimente discrete

  • Variabile de stare
  • Ceas
  • Listă de evenimente (sau procese)
  • Condiție/Condiții de terminare
Simulare de evenimente discrete în Python

Componente ale modelului

Exemplu: model companie de taxi

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

Condiție de terminare

while (time < 10)
  • Condiție/Condiții care opresc simularea
Simulare de evenimente discrete în Python

Componente ale modelului

Exemplu: model companie de taxi

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

Ceas

time += time_duration_1
time += time_duration_2
  • time urmărește timpul curent de simulare
  • Ceasul sare la momentul de start al următorului eveniment
  • Timpul sare deoarece evenimentele sunt instantanee
Simulare de evenimente discrete în Python

Componente ale modelului

Exemplu: model companie de taxi

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

Variabilă de stare

time
  • Reducerea timpului dintre apelul clientului și finalizarea cursei

  • Variabile care caracterizează ieșirile și eficiența sistemului

Simulare de evenimente discrete în Python

Să exersăm!

Simulare de evenimente discrete în Python

Preparing Video For Download...