शुरू करेंमुफ़्त में शुरू करें

SimPy के साथ डिस्क्रीट-इवेंट मॉडल के लिए Monte Carlo सैंपलिंग

अब आइए इसी Monte-Carlo सैंपलिंग विश्लेषण को मॉडल के SimPy संस्करण का उपयोग करके बनाएँ. SimPy मॉडल में manufacturing_process नाम का एक जेनरेटर है, जो अलग-अलग प्रक्रियाओं का सिमुलेशन करता है, और run_monte_carlo नाम का एक फंक्शन है जो मॉडल को कई बार चलाता है और जानकारी को time_record नाम की NumPy array में सहेजता है.

परिणामों को प्लॉट करने वाला कोड पिछले अभ्यास में उपयोग किए गए कोड जैसा ही है, लेकिन उसे plot_results() नाम के फंक्शन में स्थानांतरित कर दिया गया है, जो नीचे दिया गया है.

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 सैंपलिंग लूप संभावित प्रोसेस ट्रैजेक्टरीज़ की एक श्रृंखला उत्पन्न करेगा, जैसा कि चित्र में दिखाया गया है. Monte Carlo trajectories for different process scenario.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Python में Discrete Event Simulation

पाठ्यक्रम देखें

अभ्यास निर्देश

  • process_duration को क्लॉक-इन करें और yield करें.
  • वर्तमान समय को time_record में सहेजें.
  • n_trajectories सैंपल्स के लिए डमी वैरिएबल t के साथ एक for-लूप चलाएँ.
  • SimPy environment बनाएँ, प्रक्रियाएँ जोड़ें और मॉडल चलाएँ.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

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)
कोड संपादित करें और चलाएँ