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

यह अभ्यास पाठ्यक्रम का हिस्सा है
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)