Gevoeligheidsanalyse van schaduwprijzen

Supply Chain Analytics in Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

Schaduwprijs definiëren

Modelleerproblemen:

  • Input voor restricties zijn vaak schattingen
  • Leiden wijzigingen in input tot een andere oplossing?

Schaduwprijzen:

  • De verandering in de optimale waarde van de doelfunctie per eenheid toename van de rechterkant van een restrictie, als al het andere gelijk blijft.
Supply Chain Analytics in Python

Context - Glasbedrijf - Resourceplanning:

Resource Prod. A Prod. B Prod. C
Productie-uren 6 5 8
WH-capaciteit ft² 10.5 20 10
Winst $US $500 $450 $600

Restricties:

  • Productiecapaciteit uren ≤ 60
  • Magazijncapaciteit ≤ 150 ft²
  • Maximale productie van A ≤ 8
Supply Chain Analytics in Python

Codevoorbeeld

# Initialize Class, Define Vars., and Objective
model = LpProblem("Max Glass Co. Profits", 
                   LpMaximize)
A = LpVariable('A', lowBound=0)
B = LpVariable('B', lowBound=0)
C = LpVariable('C', lowBound=0)
model += 500 * A + 450 * B + 600 * C

# Constraint 1
model += 6 * A + 5 * B + 8 * C <= 60

# Constraint 2
model += 10.5 * A + 20 * B + 10 * C <= 150
# Constraint 3
model += A  <= 8

# Solve Model
model.solve()
print("Model Status: 
        {}".format(LpStatus[model.status]))
print("Objective = ", value(model.objective))
for v in model.variables():
    print(v.name, "=", v.varValue)
Supply Chain Analytics in Python

Voorbeeldoplossing

Oplossing:

Producten Prod. A Prod. B Prod. C
Productie-cases 6.667 4 0

Doelwaarde is $5133.33

Supply Chain Analytics in Python

Restricties herzien

Beslissingsvariabele:

  • A t/m C = aantal cases van respectievelijk product A t/m C

Restricties:

  • 6A + 5B + 8C ≤ 60 (beperkte productiecapaciteit)
  • 10A + 20B + 10C ≤ 150 (beperkte magazijncapaciteit)
  • A ≤ 8 (maximale productie van A)
Supply Chain Analytics in Python

Schaduwprijs printen

Python-code:

o = [{'name':name, 'shadow price':c.pi} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
Supply Chain Analytics in Python

Uitleg schaduwprijzen

Output:

  name  shadow price
   _C1     78.148148
   _C2      2.962963
   _C3     -0.000000

Onthoud de restricties:

  1. beperkte productiecapaciteit
  2. beperkte magazijncapaciteit
  3. maximale productie van A
Supply Chain Analytics in Python

Restrictie-slack

slack:

  • De hoeveelheid onbenutte resource.

Python:

o = [{'name':name, 'shadow price':c.pi, 'slack': c.slack} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
Supply Chain Analytics in Python

Uitleg restrictie-slack

Output:

  name  shadow price     slack
   _C1     78.148148 -0.000000
   _C2      2.962963 -0.000000
   _C3     -0.000000  1.333333

Meer over binding

  • slack = 0 → bindend
  • Een bindende restrictie wijzigen wijzigt de oplossing

Onthoud de restricties:

  1. beperkte productiecapaciteit
  2. beperkte magazijncapaciteit
  3. maximale productie van A
Supply Chain Analytics in Python

Samenvatting

  • Hoe te berekenen:
    • shadow prices
    • restrictie-slack
  • Bindende restricties identificeren
    • slack = 0 → bindend
    • slack > 0 → niet-bindend
Supply Chain Analytics in Python

Laten we oefenen!

Supply Chain Analytics in Python

Preparing Video For Download...