SimPy पैकेज: संसाधनों के प्रकार

Python में Discrete Event Simulation

Dr Diogo Costa

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

उपलब्ध संसाधनों के प्रकार

  • SimPy तीन प्रकार के संसाधन देता है:

  • resource

  • container
  • store
Python में Discrete Event Simulation

उपलब्ध संसाधनों के प्रकार

simpy.Resource()

  • प्रक्रियाओं के बीच संसाधन साझा करें
  • उदाहरण: रेस्तरां में टेबल्स

simpy.Container()

  • समरूप पदार्थ को प्रक्रियाओं के बीच साझा करने का संसाधन
  • मात्रा डिस्क्रीट (जैसे apples) या कंटीन्युअस (जैसे water) हो सकती है
  • उदाहरण: पानी का रिज़र्वॉयर

simpy.Store()

  • वस्तुओं की संभावित असीमित मात्रा स्टोर करें
  • उदाहरण: सुपरमार्केट
Python में Discrete Event Simulation

मेथड: simpy.Resource()

संसाधन बनाना

resource_1 = simpy.Resource(env, capacity=8)
  • तब उपयोग करें जब संसाधन क्षमता सीमित हो (जैसे capacity=8)
  • एक साथ संसाधन तक पहुँचने वाली प्रक्रियाओं की संख्या सीमित करने के लिए
  • प्रक्रिया को संसाधन के उपयोग का अधिकार अनुरोध करना होता है
    • यदि सभी संसाधन उपयोग में हैं, तो अनुरोध कतार में लगते हैं
  • जब प्रक्रियाएँ संसाधन छोड़ती हैं, लंबित अनुरोध ट्रिगर हो जाते हैं

संसाधन का अनुरोध करना

# Open resource request
with resource_1.request() as request:

# Make resource request yield request
# Once resource is avaiable yield env.timeout(event_duration)
Python में Discrete Event Simulation

संसाधन: प्राथमिकता और प्रीएम्प्शन

  • पिछले संसाधन का एक वैरिएंट

    resource_1 = simpy.PreemptiveResource(
    env, capacity=1)
    
  • कुछ प्रक्रियाओं को दूसरों पर प्राथमिकता मिल सकती है

  • उदाहरण: रिपेयरमैन

    • प्राथमिकता 1: टूटी मशीनें ठीक करना
    • प्राथमिकता 2 या कम: मशीन मेंटेनेंस
  • उपयोग simpy.Resource() जैसा ही DNT_CURLY_TAG_7

  • उच्चतम प्राथमिकता से संसाधन का अनुरोध

    with resource_1.request(priority=1) as 
    request:
    
    yield request
    yield env.timeout(process_duration)
    
  • कम प्राथमिकता से संसाधन का अनुरोध

    with resource_1.request(priority=2) as 
    request:
    
    yield request
    yield env.timeout(process_duration)
    
Python में Discrete Event Simulation

मेथड: simpy.Container()

  • समरूप, बिना भेद के बल्क के उत्पादन/खपत को मॉडल करने में सहायक

  • कंटीन्युअस (जैसे water) या डिस्क्रीट (जैसे apples) हो सकता है

उदाहरण: गैस स्टेशन में पेट्रोल रिज़र्व्स.

  • कारें रिज़र्व घटाती हैं, रिफिल ट्रक बढ़ाते हैं
  • कंटेनर बनाना
    tank_1 = simpy.Container(
    env, tank_size, init=tank_size)
    
  • कंटेनर/टैंक में जोड़ें और निकालें

    yield tank_1.put(add_quantity)
    yield tank_1.get(remove_quantity)
    
  • टैंक में वर्तमान मात्रा पाएं

    tank_1.level
    
  • कुल टैंक क्षमता पाएं

    tank_1.capacity
    
Python में Discrete Event Simulation

मेथड: simpy.Store()

  • एक स्टोर बनाएँ

    store_1 = simpy.Store(
    env, capacity=2)
    
  • simpy.Container() जैसा, पर अलग-अलग ऑब्जेक्ट्स स्टोर कर सकता है

  • कंटेनरों में स्टोर होने वाली अपेक्षाकृत अमूर्त "amount" के विपरीत

  • स्टोरेज में जोड़ें और निकालें
yield store_1.put("item_1")
yield store_1.get()
  • उपलब्ध आइटम्स की सूची पाएं

    store_1.items
    
  • स्टोर क्षमता पाएं

    store_1.capacity
    
Python में Discrete Event Simulation

SimPy संसाधन बिज़नेस निर्णयों में कैसे मदद करें?

उदाहरण

  • 1 कैशियर वाला सुपरमार्केट
  • मालिक जानना चाहता है कि क्या और कैशियर्स में निवेश करना फायदेमंद है
  • क्या अधिक कैशियर वेटिंग टाइम घटाएँगे?

वर्तमान स्थिति: 1 कैशियर

  • simpy.Resource(env, capacity=1)
...
time: 23.7 min | Customer 30 > Finished

सिम्युलेटेड परिदृश्य: n कैशियर्स

  • simpy.Resource(env, capacity=2)
...
time: 13.2 min | Customer 30 > Finished
  • simpy.Resource(env, capacity=3)
...
time: 8.6 min | Customer 30 > Finished
  • simpy.Resource(env, capacity=4)
...
time: 8.6 min | Customer 30 > Finished
Python में Discrete Event Simulation

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

Python में Discrete Event Simulation

Preparing Video For Download...