開始使用免費開始

製造最佳化:搜尋與停止

讓我們使用先前練習建立的掛鐘工廠模型,並部署基於 Monte Carlo 取樣的「搜尋與停止」最佳化方法,來找出關鍵瓶頸製程。

下表彙整了製造流程,相關資訊已儲存在名為 processes 的字典清單中,每個製程對應一個字典。該字典的鍵與表格欄位名稱相對應。

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

本練習用來產生圖表的 plot_results() 方法已預先載入,如下所示。

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

Monte Carlo 取樣迴圈會產生一系列可能的製程軌跡,並在達到目標條件時停止,如下圖所示。 Monte Carlo trajectories for different process scenario.

本練習屬於課程

Python 的離散事件模擬

檢視課程

練習說明

  • 設定一個迴圈,當 run_i 等於 0,或 total_duration[run_i] 大於 85 小時時,持續執行模擬軌跡(也就是說,停止條件為 total_duration[run_i] 小於或等於 85 小時)。
  • 執行封裝在 run_monte_carlo() 函式中的 Monte Carlo 引擎。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

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
____
編輯並執行程式碼