Eventi e processi deterministici

Simulazione a eventi discreti in Python

Diogo Costa (PhD, MSc)

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

Determinismo di eventi (o processi)

NOTA: I termini "evento" e "processo" sono usati in modo intercambiabile.

Cos’è il determinismo di un evento (o processo)?

  • Capacità di prevedere il processo con precisione
  • Il processo è detto "deterministico"

Perché i processi deterministici sono importanti?

  • Attività naturali e umane sono complesse
  • Molti processi e risorse interdipendenti
  • Alcuni processi si ripetono sempre allo stesso modo
  • L’impatto sull’output del sistema è prevedibile con precisione
Simulazione a eventi discreti in Python

Esempi di processi o eventi deterministici

Mondo naturale

  • Altezza delle maree
  • Accelerazione di gravità (9,81 m/s^2)
  • Moto dei pianeti nel sistema solare
  • Velocità del suono nell’aria (331,29 m/s)
  • Velocità della luce (300.000 km/s)
  • Congelamento dell’acqua (a 0 °C)

Guidati o avviati dall’uomo

  • Flusso da un rubinetto
  • Velocità di una riempitrice di bottiglie
  • Tempo che una macchina del caffè impiega per fare un caffè
  • Calore erogato da un forno a 230 °C
  • Cicli programmati di una lavatrice
  • Funzionamento di un forno a microonde
Simulazione a eventi discreti in Python

Rappresentare eventi deterministici nei modelli a eventi discreti

Processi deterministici

  • Impatto prevedibile su sistemi dinamici
  • Durata nota
  • Si ripetono allo stesso modo

La durata va conteggiata nel tempo di simulazione

# Deterministic processes (time in hours)
duration_process_1 = 10
duration_process_2 = 5

while sim_time < total_sim_time:
# Update simulation time: Process 1 sim_time += duration_process_1
# Update simulation time: Process 2 sim_time += duration_process_2
Simulazione a eventi discreti in Python

Rappresentare eventi deterministici con SimPy

Una implementazione SimPy di eventi deterministici:

  • Il metodo .timeout() registra la durata del processo
    • Ignora le unità di tempo
    • Tratta il tempo come numeri
    • Le unità di tempo devono essere coerenti in tutto il modello
# Deterministic processes
duration_process_1 = 10
duration_process_2 = 5

while True:

   # Update simulation time: Process 1
   env.timeout(duration_process_1)

   # Update simulation time: Process 2
   env.timeout(duration_process_2)

Simulazione a eventi discreti in Python

Passiamo alla pratica !

Simulazione a eventi discreti in Python

Preparing Video For Download...