सिमुलेशन टेस्टिंग समाधान

Python में सप्लाई चेन एनालिटिक्स

Aaren Stubberfield

Supply Chain Analytics Mgr.

सावधानी

  • जो समस्याएँ हल करने में बहुत समय लेती हैं, उन्हें LP या IP के साथ उपयोग नहीं करना चाहिए

चेतावनी चित्र, आदमी फिसलता हुआ

Python में सप्लाई चेन एनालिटिक्स

कुल अवधारणा

सामान्य अवधारणा:

  • आपकी चुनी हुई मुख्य इनपुट्स में रैंडम नॉइज़ जोड़ें
  • मॉडल को बार-बार सॉल्व करें
  • डिस्ट्रीब्यूशन देखें
Python में सप्लाई चेन एनालिटिक्स

क्यों आज़माएँ

क्यों:

  • इनपुट अक्सर अनुमान होते हैं. इनके गलत होने का जोखिम है.
  • पहले की सेंसिटिविटी एनालिसिस एक बार में सिर्फ एक इनपुट बदलती थी.
Python में सप्लाई चेन एनालिटिक्स

संदर्भ

संदर्भ - ग्लास कंपनी - संसाधन योजना:

Resource Prod. A Prod. B Prod. C
Profit $US $500 $450 $600

बाधाएँ:

  • डिमांड, प्रोडक्शन कैपेसिटी, और वेयरहाउस कैपेसिटी की बाधाएँ हैं

जोखिम:

  • प्रॉफिट के अनुमान गलत हो सकते हैं
Python में सप्लाई चेन एनालिटिक्स
# Initialize Class, & Define Variables
model = LpProblem("Max Glass Co. Profits", LpMaximize)
A = LpVariable('A', lowBound=0)
B = LpVariable('B', lowBound=0)
C = LpVariable('C', lowBound=0)

# Define Objective Function
model += 500 * A + 450 * B + 600 * C

# Define Constraints & Solve
model += 6 * A + 5 * B + 8 * C <= 60
model += 10.5 * A + 20 * B + 10 * C <= 150
model += A  <= 8
model.solve()
Python में सप्लाई चेन एनालिटिक्स

कोड उदाहरण - चरण 2

a, b, c = normalvariate(0,25), 
          normalvariate(0,25),
          normalvariate(0,25)
# Define Objective Function
model += (500+a)*A + (450+b)*B + (600+c)*C
# Initialize Class, & Define Variables
model = LpProblem("Max Glass Co. Profits", 
                   LpMaximize)

A = LpVariable('A', lowBound=0)
B = LpVariable('B', lowBound=0)
C = LpVariable('C', lowBound=0)
a, b, c = normalvariate(0,25), 
          normalvariate(0,25), 
          normalvariate(0,25)
# Define Objective Function
model += (500+a)*A + (450+b)*B + (600+c)*C

# Define Constraints & Solve
model += 6 * A + 5 * B + 8 * C <= 60
model += 10.5 * A + 20 * B + 10 * C <= 150
model += A  <= 8
model.solve()
Python में सप्लाई चेन एनालिटिक्स
def run_pulp_model():
    # Initialize Class
    model = LpProblem("Max Glass Co. Profits", LpMaximize)
    A = LpVariable('A', lowBound=0)
    B = LpVariable('B', lowBound=0)
    C = LpVariable('C', lowBound=0)
    a, b, c = normalvariate(0,25), normalvariate(0,25), normalvariate(0,25)

    # Define Objective Function
    model += (500+a)*A + (450+b)*B + (600+c)*C

    # Define Constraints & Solve
    model += 6 * A + 5 * B + 8 * C <= 60
    model += 10.5 * A + 20 * B + 10 * C <= 150
    model += A  <= 8
    model.solve()
    o = {'A':A.varValue, 'B':B.varValue, 'C':C.varValue, 'Obj':value(model.objective)}
    return(o)
Python में सप्लाई चेन एनालिटिक्स

कोड उदाहरण - चरण 4

def run_pulp_model():
    # Initialize Class
    model = LpProblem("Max Glass Co. Profits",
                       LpMaximize)
    A = LpVariable('A', lowBound=0)
    B = LpVariable('B', lowBound=0)
    C = LpVariable('C', lowBound=0)
    a, b, c = normalvariate(0,25), 
              normalvariate(0,25),
              normalvariate(0,25)

    # Define Objective Function
    model += (500+a)*A + (450+b)*B + 
             (600+c)*C
    # Define Constraints & Solve
    model += 6 * A + 5 * B + 8 * C <= 60
    model += 10.5 * A + 20 * B + 10 * C <= 150
    model += A  <= 8
    model.solve()
    o = {'A':A.varValue, 'B':B.varValue, 
         'C':C.varValue, 
         'Obj':value(model.objective)}
    return(o)
for i in range(100):
    output.append(run_pulp_model())
df = pd.DataFrame(output)
Python में सप्लाई चेन एनालिटिक्स

कोड उदाहरण - चरण 5

print(df['A'].value_counts())
print(df['B'].value_counts())
print(df['C'].value_counts())

आउटपुट: (परिणाम अलग हो सकते हैं)

6.666667    73
0.000000    14
8.000000    13
Name: A, dtype: int64
4.000000    73
5.454546    14
2.400000    13
Name: B, dtype: int64
0.000000    86
4.090909    14
Name: C, dtype: int64
Python में सप्लाई चेन एनालिटिक्स

हिस्टोग्राम के रूप में विज़ुअलाइज़ करें

प्रोडक्ट A: प्रोडक्ट A, B, C और ऑब्जेक्टिव का हिस्टोग्राम

प्रोडक्ट B: प्रोडक्ट B का हिस्टोग्राम

प्रोडक्ट C: प्रोडक्ट C का हिस्टोग्राम

ऑब्जेक्टिव वैल्यूज़: ऑब्जेक्टिव वैल्यूज़ का हिस्टोग्राम

Python में सप्लाई चेन एनालिटिक्स

सारांश

  • जिन्हें सुलझाने में बहुत समय लगता है, उन समस्याओं पर इसका उपयोग न करें
  • लाभ

    • देखें कि मॉडल इनपुट बदलने पर ऑप्टिमल परिणाम कैसे बदलते हैं
  • चरण

    1. स्टैंडर्ड PuLP मॉडल कोड से शुरू करें
    2. Python के normalvariate से मुख्य इनपुट्स में नॉइज़ जोड़ें
    3. PuLP मॉडल कोड को ऐसे फंक्शन में रखें जो मॉडल का आउटपुट लौटाए
    4. नए फंक्शन को कॉल करने के लिए लूप बनाएँ और परिणाम DataFrame में स्टोर करें
    5. परिणाम DataFrame को विज़ुअलाइज़ करें
Python में सप्लाई चेन एनालिटिक्स

आज़माइए!

Python में सप्लाई चेन एनालिटिक्स

Preparing Video For Download...