Ottimizzazione della produzione: Search & Stop
Usiamo il modello della fabbrica di orologi a muro creato in un esercizio precedente e applichiamo un approccio di ottimizzazione "Search & Stop" basato sul campionamento Monte Carlo per individuare i processi colli di bottiglia critici.
Il processo produttivo è riassunto nella tabella qui sotto e le informazioni sono state salvate in una lista di dizionari chiamata processes, con un dizionario per ciascun processo. Le chiavi di ogni dizionario corrispondono alle intestazioni delle colonne della tabella.

Il metodo plot_results() per generare i grafici in questo esercizio è stato precaricato ed è mostrato di seguito.
def plot_results():
df_disc = pd.DataFrame({cNam[0]: process_line_space, cNam[1]: time_record})
fig = sns.lineplot(data=df_disc, x=cNam[0], y=cNam[1], marker='o')
plt.grid()
fig.set(xlim=(0, len(processes)))
fig.set(ylim=(0, 180))
fig.set(xticks=process_line_space)
plt.plot()
Il ciclo di campionamento Monte Carlo produrrà una serie di possibili traiettorie di processo e si fermerà quando sarà soddisfatta la condizione desiderata, come mostrato in figura.

Questo esercizio fa parte del corso
Simulazione a eventi discreti in Python
Istruzioni dell'esercizio
- Imposta un ciclo per eseguire le traiettorie di simulazione mentre
run_iè uguale a zero oppuretotal_duration[run_i]è superiore a 85 ore (cioè, condizione di stop:total_duration[run_i]minore o uguale a 85 ore). - Esegui il motore Monte Carlo memorizzato nella funzione
run_monte_carlo().
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
def run_monte_carlo():
run_i = 0
# While-loop with the stop condition
____
run_i += 1
env = simpy.Environment()
env.process(manufractoring_process(env))
env.run()
plot_results()
plt.show()
# Call the run_monte_carlo function
____