Mulai sekarangMulai gratis

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.

Tabel dengan nama proses dan statistik durasinya, yaitu mean dan standard deviation.

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

Latihan ini merupakan bagian dari kursus

Simulasi Peristiwa Diskret dengan Python

Lihat Kursus

Instruksi latihan

  • Siapkan perulangan utama for Monte Carlo sampling untuk n_trajectories sampel dengan variabel semu t.
  • Gunakan distribusi Gaussian dari paket random untuk 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()
Edit dan Jalankan Kode