ÎncepețiÎncepe gratuit

Optimizarea producției: Căutare și oprire

Să folosim modelul fabricii de ceasuri de perete creat într-un exercițiu anterior și să aplicăm o strategie de optimizare „Căutare și oprire" bazată pe eșantionare Monte Carlo, pentru a identifica procesele care reprezintă blocaje critice.

Procesul de producție este rezumat în tabelul de mai jos, iar informațiile au fost stocate într-o listă de dicționare numită processes, cu câte un dicționar per proces. Cheile acestui dicționar corespund antetelor coloanelor din tabel.

Tabel cu numele proceselor și statisticile duratei acestora, respectiv media și deviația standard.

Metoda plot_results() pentru generarea graficelor din acest exercițiu a fost preîncărcată și este prezentată mai jos.

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() 

Bucla de eșantionare Monte Carlo va genera o serie de traiectorii posibile ale procesului și se va opri când condiția dorită a fost îndeplinită, după cum se arată în figură. Traiectorii Monte Carlo pentru diferite scenarii de proces.

Acest exercițiu face parte din cursul

Simulare de evenimente discrete în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Definește o buclă care să ruleze traiectorii de simulare cât timp run_i este egal cu zero sau total_duration[run_i] este mai mare de 85 de ore (adică condiția de oprire: total_duration[run_i] mai mic sau egal cu 85 de ore).
  • Rulează motorul Monte Carlo stocat în funcția run_monte_carlo().

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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
____
Editează și rulează codul