PuLP में संवेदनशीलता विश्लेषण

Python में Optimization परिचय

Jasmin Ludolf

Content Developer

Linear programming में Sensitivity analysis

  • Sensitivity analysis में एक पैरामीटर बदलकर आउटपुट/परिणाम पर असर देखते हैं
  • Linear programming: उद्देश्य में कितना बदलाव होगा
  • तीन तरीके:
    1. objective के किसी coefficient को बदलें
    2. किसी constraint के coefficient को बदलें
    3. किसी constraint के constant term को बदलें
  • मूल और बदला हुआ मॉडल solve करें
  • PuLP का उपयोग करें!

संवेदनशीलता दर्शाने के लिए बाएँ हरे सेक्टर वाला गेज इंडिकेटर आइकन

Python में Optimization परिचय

परिभाषाएँ

  • Constraint:
    • बराबरी पर हो: active, binding
    • सख्त असमानता पर हो: non active, non-binding, slack (विशेषण)
  • Slack (संज्ञा):
    • constraint को binding बनाने के लिए बाएँ पक्ष में जोड़नी वाली मात्रा
  • Shadow price:
    • constraint के दाएँ पक्ष के सापेक्ष objective में सीमांत वृद्धि
Python में Optimization परिचय

PuLP में diet समस्या

Food Cost ($/lb) Protein (%) Fat (%)
corn 0.11 10 2.5
soybean 0.28 40 1

 

  • अनुशंसा: कम-से-कम 17% protein, 2% fat, 7 lb food
  • Objective: $0.11C + 0.28S$
  • Protein: $10C+40S \geq 17(C+S)$
  • Fat: $2.5C + S \geq 2(C+S)$
  • Weight: $C + S \geq 7$
from pulp import *

model = LpProblem('diet', LpMinimize)

C = LpVariable('C', lowBound=0)
S = LpVariable('S', lowBound=0)

model += 0.11*C + 0.28*S

model += 10*C + 40*S >= 17 * (C+S), 'Protein' 
model += 2.5*C + S >= 2 * (C+S), 'Fat'
model += C + S >= 7, 'Weight' 

model.solve()
Python में Optimization परिचय

PuLP में slack और shadow price

print(f"Status: {LpStatus[model.status]}\n")
for name, c in model.constraints.items():
    print(f"{name}: slack = {c.slack:.2f}, shadow price = {c.pi:.2f}")
Status: Optimal
Protein: slack = -0.00, shadow price = 0.01

Fat: slack = -1.05, shadow price = 0.00
Weight: slack = -0.00, shadow price = 0.15
Python में Optimization परिचय

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

Python में Optimization परिचय

Preparing Video For Download...