Bắt đầu ngayBắt đầu miễn phí

Lấy mẫu Monte Carlo cho mô hình sự kiện rời rạc với SimPy

Giờ hãy xây dựng lại phân tích lấy mẫu Monte Carlo dùng phiên bản mô hình viết bằng SimPy. Mô hình SimPy có một generator tên là manufacturing_process, mô phỏng các quy trình khác nhau, và một hàm run_monte_carlo chạy mô hình nhiều lần, lưu thông tin vào mảng NumPy có tên time_record.

Đoạn mã vẽ kết quả tương tự như bài tập trước, nhưng đã được chuyển vào một hàm tên plot_results() như bên dưới.

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")
    fig.set(xlim=(0, len(processes) + 1))
    plt.plot() 

Vòng lặp lấy mẫu Monte Carlo sẽ tạo ra một loạt quỹ đạo quy trình có thể xảy ra, như trong hình minh họa. Monte Carlo trajectories for different process scenario.

Bài tập này là một phần của khóa học

Mô phỏng Sự kiện Rời rạc bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Ghi nhận thời lượng bằng cách clock-in và yield process_duration.
  • Lưu thời gian hiện tại vào time_record.
  • Chạy vòng lặp for cho n_trajectories mẫu với biến giả t.
  • Tạo môi trường SimPy, thêm các quy trình và chạy mô hình.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

def manufacturing_process(env):
    global time_record
    for p in range(len(processes)):
        proc_p = processes[p]
        process_duration = random.gauss(proc_p["Average_Duration"], proc_p["Standard_Deviation"])

        # Clock-in and yield the process_duration
        yield ____

        # Save the current time in time_record
        time_record[p + 1] = ____

def run_monte_carlo(n_trajectories):

    # Run a for-loop for n_trajectories samples with dummy variable t
    ____

        # Create the SimPy environment, add processes and run the model
        env = ____
        env.____(manufacturing_process(env))
        env.____()
        
        plot_results()
    plt.show()

run_monte_carlo(n_trajectories = 100)
Chỉnh sửa và Chạy Mã