Mulai sekarangMulai gratis

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. Monte Carlo trajectories for different process scenario.

Latihan ini merupakan bagian dari kursus

Simulasi Peristiwa Diskret dengan Python

Lihat Kursus

Instruksi latihan

  • Catat waktu dan lakukan yield pada process_duration.
  • Simpan waktu saat ini ke dalam time_record.
  • Jalankan for-loop untuk n_trajectories sampel dengan variabel dummy t.
  • 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)
Edit dan Jalankan Kode