Introduzione alle simulazioni a eventi discreti

Simulazione a eventi discreti in Python

Diogo Costa (PhD, MSc)

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

Modelli a eventi discreti vs. modelli continui

Modelli continui

  • Girano a passi di tempo fissi

  • Il tempo è una variabile fittizia

    • Il tempo non viene aggiornato nel loop
  • Uso di for-loop sul tempo

    for t range(time_range):
    

Modelli a eventi discreti

  • Girano a passi di tempo variabili

    • Eseguono/Pianificano eventi discreti con durate diverse nel tempo
  • Il tempo è una variabile di stato

    • Il tempo è aggiornato dentro il while-loop
    • Il tempo non è fittizio
  • Usano spesso while-loop

    while (time < 365):
    time += process_duration
    
Simulazione a eventi discreti in Python

Componenti dei modelli a eventi discreti

  • Variabili di stato
  • Orologio
  • Lista degli eventi (o dei processi)
  • Condizione/i di termine
Simulazione a eventi discreti in Python

Componenti del modello

Esempio: modello di taxi

while (time < 10):

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

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

Condizione di termine

while (time < 10)
  • Condizione/i che termina/no la simulazione
Simulazione a eventi discreti in Python

Componenti del modello

Esempio: modello di taxi

while (time < 10):

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

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

Orologio

time += time_duration_1
time += time_duration_2
  • time tiene traccia del tempo corrente della simulazione
  • L’orologio salta all’inizio del prossimo evento man mano che avanza
  • Il tempo "salta" perché gli eventi sono istantanei
Simulazione a eventi discreti in Python

Componenti del modello

Esempio: modello di taxi

while (time < 10):

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

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

Variabile di stato

time
  • Ridurre il tempo tra la chiamata e il drop-off

  • Variabili che descrivono output ed efficienza del sistema

Simulazione a eventi discreti in Python

¡Vamos a practicar!

Simulazione a eventi discreti in Python

Preparing Video For Download...