Gölge fiyat duyarlılık analizi

Python ile Tedarik Zinciri Analitiği

Aaren Stubberfield

Supply Chain Analytics Mgr.

Gölge fiyatı tanımla

Modelleme sorunları:

  • Kısıt girdileri çoğu zaman tahmindir
  • Girdilerdeki değişim çözümümüzü değiştirir mi?

Gölge Fiyatlar:

  • Diğer her şey sabitken, bir kısıtın sağ tarafı bir birim artarsa amaç fonksiyonunun en iyi değerindeki değişim.
Python ile Tedarik Zinciri Analitiği

Bağlam - Cam Şirketi - Kaynak Planlama:

Resource Prod. A Prod. B Prod. C
Production hours 6 5 8
WH Capacity sq. ft. 10.5 20 10
Profit $US $500 $450 $600

Kısıtlar:

  • Üretim kapasitesi saatleri ≤ 60
  • Depo kapasitesi ≤ 150 sq. ft.
  • A için azami üretim ≤ 8
Python ile Tedarik Zinciri Analitiği

Kod örneği

# 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)
Python ile Tedarik Zinciri Analitiği

Örnek çözüm

Çözüm:

Products Prod. A Prod. B Prod. C
Production Cases 6.667 4 0

Amaç değeri $5133.33

Python ile Tedarik Zinciri Analitiği

Kısıtları gözden geçir

Karar Değişkeni:

  • A'dan C'ye = A–C ürünleri için kasa sayısı

Kısıtlar:

  • 6A + 5B + 8C ≤ 60 (sınırlı üretim kapasitesi)
  • 10A + 20B + 10C ≤ 150 (sınırlı depo kapasitesi)
  • A ≤ 8 (A için azami üretim)
Python ile Tedarik Zinciri Analitiği

Gölge fiyatı yazdır

Python Kodu:

o = [{'name':name, 'shadow price':c.pi} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
Python ile Tedarik Zinciri Analitiği

Gölge fiyatların açıklaması

Çıktı:

  name  shadow price
   _C1     78.148148
   _C2      2.962963
   _C3     -0.000000

Kısıtları hatırla:

  1. sınırlı üretim kapasitesi
  2. sınırlı depo kapasitesi
  3. A için azami üretim
Python ile Tedarik Zinciri Analitiği

Kısıt boşluğu (slack)

slack:

  • Kullanılmayan kaynak miktarı.

Python:

o = [{'name':name, 'shadow price':c.pi, 'slack': c.slack} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
Python ile Tedarik Zinciri Analitiği

Kısıt slack'inin açıklaması

Çıktı:

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

Bağlayıcılık hakkında daha fazlası

  • slack = 0 ise binding
  • Binding kısıtı değiştirmek, çözümü değiştirir

Kısıtları hatırla:

  1. sınırlı üretim kapasitesi
  2. sınırlı depo kapasitesi
  3. A için azami üretim
Python ile Tedarik Zinciri Analitiği

Özet

  • Nasıl hesaplanır:
    • shadow prices
    • kısıt slack
  • Bağlayıcı kısıtları belirle
    • slack = 0 ise binding
    • slack > 0 ise not-binding
Python ile Tedarik Zinciri Analitiği

Hadi pratik yapalım!

Python ile Tedarik Zinciri Analitiği

Preparing Video For Download...