Simulazione a eventi discreti in Python
Diogo Costa (PhD, MSc)
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific
Ottimizzazione del sistema
Processi guidati da persone
Individuare i processi con maggior impatto sull’output
Campionamento Monte Carlo
Funzioni obiettivo
Espressione matematica che descrive il target di output
Assegna un punteggio agli scenari di simulazione
Esempio
Totale: 100%
Search & Stop: esegui diverse configurazioni del modello e fermati quando la condizione desiderata è soddisfatta
while total_duration < 24:
model_to_run()
Punteggia & Classifica: valuta i risultati in base a pesi
for i in range(num_runs):
out_1, out_2 = model_to_run(i)
scores(i) = 0.3 * out_1 + 0.7 * out_2
Esempio
scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
scenario_num += 1
env = simpy.Environment()
env.process(manufractoring_proc(env))
env.run()
plot_results()

Esempio: manifattura
Con vari task sequenziali (processi), come una linea auto.
def objective_function_calc():
score_objfunc = np.ones(num_scenarios)
for s in range(num_scenarios):
for p in range(len(processes)):
score_objfunc[s] +=
processes[p]["duration_hours"]
* processes[p]["score_weight"]
Punteggio
"ROSSO": Punteggio basso; "BLU": Punteggio alto

Classifica
Ordina le simulazioni per punteggio

Cerca & ferma

La linea "blu" ha soddisfatto il criterio di "stop"
Dettaglio della "migliore" simulazione:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)"Processo 1" è critico per raggiungere l’obiettivo
Punteggio
Obiettivo: punteggio minimo = durata minima

Classifica
"Processo 1" è critico per raggiungere l’obiettivo

Simulazione a eventi discreti in Python