PuLP मॉडल सॉल्व करें

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

Aaren Stubberfield

Supply Chain Analytics Mgr.

PuLP के लिए कॉमन मॉडलिंग प्रक्रिया

  1. मॉडल इनिशियलाइज़ करें
  2. डिसीज़न वैरिएबल्स परिभाषित करें
  3. ऑब्जेक्टिव फंक्शन परिभाषित करें
  4. कंस्ट्रेंट्स परिभाषित करें
  5. मॉडल सॉल्व करें
    • solve() मेथड कॉल करें
    • सॉल्यूशन का स्टेटस जाँचें
    • ऑप्टिमाइज़्ड डिसीज़न वैरिएबल्स प्रिंट करें
    • ऑप्टिमाइज़्ड ऑब्जेक्टिव फंक्शन प्रिंट करें
Python में सप्लाई चेन एनालिटिक्स

मॉडल सॉल्व करें - solve मेथड

.solve(solver=None)
  • solver = वैकल्पिक: उपयोग करने वाला विशिष्ट सॉल्वर, डिफॉल्ट सॉल्वर पर डिफॉल्ट रहता है.
Python में सप्लाई चेन एनालिटिक्स
# Initialize, Define Decision Vars., Objective Function, and Constraints
from pulp import *
import pandas as pd
model = LpProblem("Minimize Transportation Costs", LpMinimize)
cust = ['A','B','C']
warehouse = ['W1','W2']
demand = {'A': 1500, 'B': 900, 'C': 800}
costs = {('W1','A'): 232, ('W1','B'): 255, ('W1','C'): 264, 
         ('W2','A'): 255, ('W2','B'): 233, ('W2','C'): 250}
ship = LpVariable.dicts("s_", [(w,c) for w in warehouse for c in cust], 
                         lowBound=0, cat='Integer')
model += lpSum([costs[(w, c)] * ship[(w, c)] for w in warehouse for c in cust])
for c in cust: model += lpSum([ship[(w, c)] for w in warehouse]) == demand[c]

# Solve Model
model.solve()
Python में सप्लाई चेन एनालिटिक्स

मॉडल सॉल्व करें - सॉल्यूशन का स्टेटस

LpStatus[model.status]
  • Not Solved: समस्या सॉल्व करने से पहले का स्टेटस.
  • Optimal: ऑप्टिमल सॉल्यूशन मिल गया.
  • Infeasible: कोई फीज़िबल सॉल्यूशन नहीं है (जैसे constraints x ≤ 1 और x ≥ 2 हों).
  • Unbounded: ऑब्जेक्टिव फंक्शन बाउंडेड नहीं है, मैक्सिमाइज़/मिनिमाइज़ करने पर वैल्यू अनंत की ओर जाएगी (जैसे केवल constraint x ≥ 3 हो).
  • Undefined: ऑप्टिमल सॉल्यूशन मौजूद हो सकता है पर मिला नहीं.
1 Keen, Ben Alex. "Linear Programming with Python and PuLP 2 Part 2." _Ben Alex Keen_, 1 Apr. 2016, benalexkeen.com/linear-programming-with-python-and-pulp-part-2/._{{5}}
Python में सप्लाई चेन एनालिटिक्स
# Initialize, Define Decision Vars., Objective Function, and Constraints
from pulp import *
import pandas as pd
model = LpProblem("Minimize Transportation Costs", LpMinimize)
cust = ['A','B','C']
warehouse = ['W1','W2']
demand = {'A': 1500, 'B': 900, 'C': 800}
costs = {('W1','A'): 232, ('W1','B'): 255, ('W1','C'): 264,
         ('W2','A'): 255, ('W2','B'): 233, ('W2','C'): 250}
ship = LpVariable.dicts("s_", [(w,c) for w in warehouse for c in cust], lowBound=0, cat='Integer')
model += lpSum([costs[(w, c)] * ship[(w, c)] for w in warehouse for c in cust])
for c in cust: model += lpSum([ship[(w, c)] for w in warehouse]) == demand[c]
# Solve Model
model.solve()
print("Status:", LpStatus[model.status])
Status: Optimal
Python में सप्लाई चेन एनालिटिक्स

स्टैंडर्ड आउटपुट पर वैरिएबल्स प्रिंट करें:

for v in model.variables():
    print(v.name, "=", v.varValue)

Pandas डेटा स्ट्रक्चर:

o = [{A:ship[(w,'A')].varValue, B:ship[(w,'B')].varValue, C:ship[(w,'C')].varValue}
     for w in warehouse]
print(pd.DataFrame(o, index=warehouse))
  • मॉडल वैरिएबल्स पर लूप करें
  • वैल्यूज़ को pandas DataFrame में स्टोर करें
Python में सप्लाई चेन एनालिटिक्स
# Solve Model
model.solve()
print(LpStatus[model.status])
o = [{A:ship[(w,'A')].varValue, B:ship[(w,'B')].varValue, C:ship[(w,'C')].varValue}
     for w in warehouse]
print(pd.DataFrame(o, index=warehouse))

  आउटपुट:

Status: Optimal
|       |A      |B      |C      |
|:------|:------|:------|:------|
|W1     |1500.0 |0.0    |0.0    |
|W2     |0.0    |900.0  |800.0  |
Python में सप्लाई चेन एनालिटिक्स

मॉडल सॉल्व करें - ऑप्टिमाइज़्ड ऑब्जेक्टिव फंक्शन

ऑप्टिमाइज़्ड ऑब्जेक्टिव फंक्शन का मान प्रिंट करें:

print("Objective = ", value(model.objective))
Python में सप्लाई चेन एनालिटिक्स
# Solve Model
model.solve()
print(LpStatus[model.status])
output = []
for w in warehouse: t = [ship[(w,c)].varValue for c in cust] output.append(t)
opd = pd.DataFrame.from_records(output, index=warehouse, columns=cust)
print(opd)
print("Objective = ", value(model.objective))
Status: Optimal
|       |A      |B      |C      |
|:------|:------|:------|:------|
|W1     |1500.0 |0.0    |0.0    |
|W2     |0.0    |900.0  |800.0  |
Objective = 757700.0
Python में सप्लाई चेन एनालिटिक्स

सारांश

मॉडल सॉल्व करें

  • solve() मेथड कॉल करें
  • सॉल्यूशन का स्टेटस जाँचें
  • डिसीज़न वैरिएबल्स के मान प्रिंट करें
  • ऑब्जेक्टिव फंक्शन का मान प्रिंट करें
Python में सप्लाई चेन एनालिटिक्स

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

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

Preparing Video For Download...