Pengambilan sampel Monte Carlo untuk model peristiwa-diskret
Bayangkan sebuah pabrik yang memproduksi jam dinding. Popularitas jam tersebut meningkat, dan kini permintaan lebih tinggi daripada kapasitas produksi. Pabrik telah beroperasi pada kapasitas penuh selama berbulan-bulan, dan Anda ingin memahami perilaku serta titik kemacetannya dengan lebih baik agar keputusan manajerial dapat dibuat dengan lebih tepat serta merencanakan investasi dan ekspansi di masa depan.
Sebuah model peristiwa-diskret untuk proses pabrik telah dikembangkan, dan sekarang Anda ingin menjalankan analisis pengambilan sampel Monte Carlo untuk mengeksplorasi skenario. Proses manufaktur dirangkum dalam tabel di bawah ini, dan informasinya telah disimpan dalam sebuah list berisi dictionary bernama processes, dengan satu dictionary per proses. Kunci pada dictionary tersebut sesuai dengan judul kolom pada tabel. Paket-paket berikut telah diimpor untuk Anda: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd, dan time.

Perulangan pengambilan sampel Monte Carlo akan menghasilkan serangkaian kemungkinan lintasan proses, seperti ditunjukkan pada gambar.

Latihan ini merupakan bagian dari kursus
Simulasi Peristiwa Diskret dengan Python
Instruksi latihan
- Siapkan perulangan utama for Monte Carlo sampling untuk
n_trajectoriessampel dengan variabel semut. - Gunakan distribusi Gaussian dari paket
randomuntuk mengestimasi durasi proses secara pseudo-acak.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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()