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

  • Avanzano a passi temporali fissi

  • Il tempo è una variabile fittizia

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

    for t in range(time_range):
    

Modelli a eventi discreti

  • Avanzano a passi temporali 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 per una compagnia di 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

Condizione di termine

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

Componenti del modello

Esempio: modello per una compagnia di 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

Orologio

time += time_duration_1
time += time_duration_2
  • time traccia il tempo corrente della simulazione
  • L’orologio salta all’inizio del prossimo evento durante l’esecuzione
  • Il tempo "salta" perché gli eventi sono istantanei
Simulazione a eventi discreti in Python

Componenti del modello

Esempio: modello per una compagnia di 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

Variabile di stato

time
  • Riduci il tempo tra la chiamata e il rilascio del cliente

  • Variabili che descrivono output ed efficienza del sistema

Simulazione a eventi discreti in Python

Passiamo alla pratica !

Simulazione a eventi discreti in Python

Preparing Video For Download...