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

Hãy hình dung một nhà máy sản xuất đồng hồ treo tường. Đồng hồ ngày càng phổ biến nên nhu cầu hiện cao hơn năng lực sản xuất. Nhà máy đã chạy hết công suất trong nhiều tháng, và bạn muốn hiểu rõ hơn hành vi và các nút thắt cổ chai để có thể đưa ra quyết định quản trị dựa trên dữ liệu và lập kế hoạch đầu tư, mở rộng trong tương lai.

Một mô hình sự kiện rời rạc cho các quy trình của nhà máy đã được xây dựng, và giờ bạn muốn chạy phân tích lấy mẫu Monte Carlo để khám phá các kịch bản. Quy trình sản xuất được tóm tắt trong bảng dưới đây, và thông tin đã được lưu trong một list các dictionary tên processes, mỗi quy trình là một dictionary. Các khóa (key) của dictionary này tương ứng với tiêu đề cột trong bảng. Các gói sau đã được nhập sẵn cho bạn: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd, và time.

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

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ư minh họa trong hình. 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

  • Thiết lập vòng lặp chính Monte Carlo bằng for cho n_trajectories mẫu với biến giả t.
  • Dùng phân phối Gaussian từ gói random để ước lượng ngẫu nhiên giả thời lượng quy trì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.

n_trajectories = 100

# Run a Monte-Carlo for-loop for n_trajectories samples
____

    for p in range(len(processes)):
        proc_p = processes[p]

        # Random gauss method to pseudo-randomly estimate process duration
        process_duration = ____(proc_p["Average_Duration"], proc_p["Standard_Deviation"])
        time_record[p + 1] = time_record[p] + process_duration

    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")  # Step_10
    fig.set(xlim=(0, len(processes) + 1))
    plt.plot()
plt.grid()
plt.show()
Chỉnh sửa và Chạy Mã