Zacznij terazZacznij za darmo

Optymalizacja produkcji: podejście „Szukaj i zatrzymaj"

Skorzystaj z modelu fabryki zegarów ściennych utworzonego w poprzednim ćwiczeniu i zastosuj strategię optymalizacji „Szukaj i zatrzymaj" opartą na próbkowaniu Monte Carlo, aby zidentyfikować krytyczne wąskie gardła procesu.

Proces produkcyjny przedstawiono w poniższej tabeli. Dane zostały zapisane na liście słowników o nazwie processes, gdzie każdy słownik odpowiada jednemu procesowi. Klucze słownika odpowiadają nagłówkom kolumn tabeli.

Tabela z nazwami procesów oraz ich statystykami czasu trwania: wartością średnią i odchyleniem standardowym.

Metoda plot_results() służąca do generowania wykresów w tym ćwiczeniu została wstępnie załadowana i jest przedstawiona poniżej.

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

Pętla próbkowania Monte Carlo wygeneruje serię możliwych trajektorii procesu i zatrzyma się, gdy zostanie spełniony żądany warunek – tak jak pokazano na rysunku. Trajektorie Monte Carlo dla różnych scenariuszy procesów.

To ćwiczenie jest częścią kursu

Symulacja zdarzeń dyskretnych w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Ustaw pętlę, która będzie uruchamiać trajektorie symulacji tak długo, jak run_i jest równe zero lub total_duration[run_i] jest większe niż 85 godzin (tj. warunek zatrzymania: total_duration[run_i] równe lub mniejsze niż 85 godzin).
  • Uruchom silnik Monte Carlo zapisany w funkcji run_monte_carlo().

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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
____
Edytuj i uruchom kod