LoslegenKostenlos loslegen

Fertigungsoptimierung: Search & Stop

Verwenden wir das Wanduhr-Fabrikmodell aus einer früheren Übung und setzen einen „Search & Stop“-Optimierungsansatz auf Basis von Monte-Carlo-Sampling ein, um die kritischen Engpassprozesse zu identifizieren.

Der Fertigungsprozess ist in der folgenden Tabelle zusammengefasst. Die Informationen wurden in einer Liste von Dictionaries namens processes gespeichert, mit einem Dictionary pro Prozess. Die Schlüssel dieser Dictionaries entsprechen den Spaltenüberschriften der Tabelle.

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

Die Methode plot_results() zum Erzeugen der Diagramme in dieser Übung wurde vorab geladen und ist unten dargestellt.

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

Die Monte-Carlo-Sampling-Schleife erzeugt eine Reihe möglicher Prozesstrajektorien und stoppt, sobald die gewünschte Bedingung erfüllt ist, wie in der Abbildung gezeigt. Monte Carlo trajectories for different process scenario.

Diese Übung ist Teil des Kurses

Diskrete-Ereignis-Simulation mit Python

Kurs anzeigen

Anleitung zur Übung

  • Richte eine Schleife ein, die Simulationstrajektorien ausführt, solange run_i gleich 0 ist oder total_duration[run_i] größer als 85 Stunden ist (d. h. Stoppbedingung: total_duration[run_i] ist kleiner oder gleich 85 Stunden).
  • Starte die Monte-Carlo-Engine, die in der Funktion run_monte_carlo() enthalten ist.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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
____
Code bearbeiten und ausführen