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.

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.

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
Hướng dẫn bài tập
- Thiết lập vòng lặp chính Monte Carlo bằng
forchon_trajectoriesmẫ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()