BaşlayınÜcretsiz Başlayın

SimPy ile ayrık olay modelinde Monte Carlo örnekleme

Şimdi aynı Monte Carlo örnekleme analizini modelin bir SimPy sürümünü kullanarak oluşturalım. SimPy modelinde, farklı süreçleri benzeten manufacturing_process adlı bir jeneratör ve modeli birden çok kez çalıştırıp bilgiyi time_record adlı bir NumPy dizisine kaydeden run_monte_carlo adlı bir fonksiyon bulunuyor.

Sonuçları çizen kod, önceki egzersizde kullandığına benzer; ancak aşağıda gösterilen plot_results() adlı bir fonksiyona taşındı.

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() 

Monte Carlo örnekleme döngüsü, şekilde gösterildiği gibi olası süreç yörüngeleri dizisi üretecek. Monte Carlo trajectories for different process scenario.

Bu egzersiz

Python ile Ayrık Olay Benzetimi

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • process_duration için zamanı ilerlet ve yield et.
  • Geçerli zamanı time_record içine kaydet.
  • Sahte değişken t ile n_trajectories örnek için bir for-döngüsü çalıştır.
  • SimPy ortamını oluştur, süreçleri ekle ve modeli çalıştır.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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)
Kodu Düzenle ve Çalıştır