Pengambilan sampel Monte Carlo untuk model peristiwa-diskret dengan SimPy
Sekarang mari kita bangun analisis pengambilan sampel Monte Carlo yang sama menggunakan versi model dengan SimPy. Model SimPy memiliki sebuah generator bernama manufacturing_process yang mensimulasikan berbagai proses, dan sebuah fungsi bernama run_monte_carlo yang menjalankan model berkali-kali, menyimpan informasi ke dalam array NumPy bernama time_record.
Kode yang memvisualisasikan hasil serupa dengan yang digunakan pada latihan sebelumnya, tetapi telah dipindahkan ke fungsi bernama plot_results() yang ditunjukkan di bawah ini.
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()
Loop 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
- Catat waktu dan lakukan yield pada
process_duration. - Simpan waktu saat ini ke dalam
time_record. - Jalankan for-loop untuk
n_trajectoriessampel dengan variabel dummyt. - Buat environment SimPy, tambahkan proses, dan jalankan model.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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)