Python में Discrete Event Simulation
Dr Diogo Costa
Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

स्टैंडर्ड Python पर आधारित प्रोसेस-आधारित डिस्क्रीट-इवेंट सिमुलेशन फ्रेमवर्क
प्रक्रियाएँ और इवेंट परिभाषित करने के लिए generator functions का उपयोग करता है (Toolbox पूर्वापेक्षा कोर्स में कवर)
स्केलेबल:
सामान्य फ़ंक्शन
def mygenerator():
return 10
return एक मान लौटाता है और फ़ंक्शन का निष्पादन समाप्त करता हैफ़ंक्शन चलाना:
10
जेनरेटर फ़ंक्शन
def mygenerator():
yield 20
yield 12
yield एक मान लौटाता है और आंतरिक अवस्थाएँ रखते हुए निष्पादन रोकता है।जेनरेटर चलाना:
20
12
1) SimPy एनवायरनमेंट बनाएँ
env = simpy.Environment()
2) जेनरेटर फ़ंक्शन को SimPy एनवायरनमेंट में जोड़ें
env.process()
3) मॉडल चलाएँ
env.run()
4) सिमुलेशन में समय को आगे बढ़ाएँ
env.timeout()
5) मौजूदा सिमुलेशन समय पाएँ
env.now
1) SimPy पैकेज इम्पोर्ट करें
import simpy
2) प्रक्रियाओं वाला एक जेनरेटर फ़ंक्शन बनाएँ
def traffic_light(env, name, timestep):
while True:
yield env.timeout(timestep)
print(f"Time {env.now:02d} sec | Traffic light at {name} | Red light!")
yield env.timeout(timestep)
print(f"Time {env.now:02d} sec | Traffic light at {name} | Yellow Light!")
yield env.timeout(timestep)
print(f"Time {env.now:02d} sec | Traffic light at {name} | Green Light!")
3) SimPy बिल्डिंग एनवायरनमेंट बनाएँ
env = simpy.Environment()
4) जेनरेटर को SimPy एनवायरनमेंट में जोड़ें
env.process(traffic_light(env, "Leslie St.", 15))
env.process(traffic_light(env, "Arlington Av.", 30))
5) मॉडल चलाएँ
env.run(until=90)
कंसोल मॉडल आउटपुट:
Time 15 sec | Traffic light at Leslie St. | Red light!
Time 30 sec | Traffic light at Arlington Av. | Red light!
Time 30 sec | Traffic light at Leslie St. | Yellow Light!
Time 45 sec | Traffic light at Leslie St. | Green Light!
Time 60 sec | Traffic light at Arlington Av. | Yellow Light!
Time 60 sec | Traffic light at Leslie St. | Red light!
Time 75 sec | Traffic light at Leslie St. | Yellow Light!
Python में Discrete Event Simulation