SimPy पैकेज परिचय

Python में Discrete Event Simulation

Dr Diogo Costa

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

SimPy क्या है?

SimPy पैकेज लोगो: Python के लिए डिस्क्रीट-इवेंट सिमुलेशन

  • स्टैंडर्ड Python पर आधारित प्रोसेस-आधारित डिस्क्रीट-इवेंट सिमुलेशन फ्रेमवर्क

  • प्रक्रियाएँ और इवेंट परिभाषित करने के लिए generator functions का उपयोग करता है (Toolbox पूर्वापेक्षा कोर्स में कवर)

  • स्केलेबल:

    • मॉडल में कई जेनरेटर हो सकते हैं
    • हर जेनरेटर में कई प्रोसेस शामिल हो सकते हैं
    • प्रोसेस क्रमिक या पैरेलल चल सकते हैं
Python में Discrete Event Simulation

सामान्य फ़ंक्शन बनाम जेनरेटर फ़ंक्शन

सामान्य फ़ंक्शन

def mygenerator():
    return 10
  • return एक मान लौटाता है और फ़ंक्शन का निष्पादन समाप्त करता है

फ़ंक्शन चलाना:

10

जेनरेटर फ़ंक्शन

def mygenerator():
    yield 20
    yield 12
  • yield एक मान लौटाता है और आंतरिक अवस्थाएँ रखते हुए निष्पादन रोकता है।

जेनरेटर चलाना:

20
12
Python में Discrete Event Simulation

मुख्य SimPy मेथड्स का सार

1) SimPy एनवायरनमेंट बनाएँ

env = simpy.Environment()

2) जेनरेटर फ़ंक्शन को SimPy एनवायरनमेंट में जोड़ें

env.process()

3) मॉडल चलाएँ

env.run()

4) सिमुलेशन में समय को आगे बढ़ाएँ

env.timeout()

5) मौजूदा सिमुलेशन समय पाएँ

env.now
Python में Discrete Event Simulation

ट्रैफिक लाइट्स: SimPy मॉडल बनाना

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!")
Python में Discrete Event Simulation

ट्रैफिक लाइट्स: SimPy मॉडल बनाना

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)
Python में Discrete Event Simulation

ट्रैफिक लाइट्स: मॉडल आउटपुट

कंसोल मॉडल आउटपुट:

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

अभ्यास करते हैं!

Python में Discrete Event Simulation

Preparing Video For Download...