IniziaInizia gratis

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.

Table with process names and their duration statistics, namely mean and standard deviation.

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. Monte Carlo trajectories for different process scenario.

Questo esercizio fa parte del corso

Simulazione a eventi discreti in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Imposta un ciclo per eseguire le traiettorie di simulazione mentre run_i è uguale a zero oppure total_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
____
Modifica ed esegui il codice