Analisis sensitivitas shadow price

Analitik Rantai Pasok dengan Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

Definisikan shadow price

Isu dalam pemodelan:

  • Input untuk kendala model sering berupa estimasi
  • Apakah perubahan input mengubah solusi?

Shadow Price:

  • Perubahan nilai optimal fungsi objektif per kenaikan satu unit pada sisi kanan suatu kendala, dengan asumsi yang lain tetap.
Analitik Rantai Pasok dengan Python

Konteks - Perusahaan Kaca - Perencanaan Sumber Daya:

Sumber Daya Prod. A Prod. B Prod. C
Jam produksi 6 5 8
Kapasitas gudang ft² 10.5 20 10
Laba $AS $500 $450 $600

Kendala:

  • Jam Kapasitas Produksi ≤ 60
  • Kapasitas Gudang ≤ 150 ft²
  • Maks Produksi A ≤ 8
Analitik Rantai Pasok dengan Python

Contoh kode

# 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)
Analitik Rantai Pasok dengan Python

Contoh solusi

Solusi:

Produk Prod. A Prod. B Prod. C
Kasus produksi 6.667 4 0

Nilai objektif = $5133.33

Analitik Rantai Pasok dengan Python

Tinjau kendala

Variabel Keputusan:

  • A sampai C = Jumlah kasus produk A–C masing-masing

Kendala:

  • 6A + 5B + 8C ≤ 60 (kapasitas produksi terbatas)
  • 10A + 20B + 10C ≤ 150 (kapasitas gudang terbatas)
  • A ≤ 8 (maks produksi A)
Analitik Rantai Pasok dengan Python

Cetak shadow price

Kode Python:

o = [{'name':name, 'shadow price':c.pi} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
Analitik Rantai Pasok dengan Python

Penjelasan shadow price

Keluaran:

  name  shadow price
   _C1     78.148148
   _C2      2.962963
   _C3     -0.000000

Ingat Kendala:

  1. kapasitas produksi terbatas
  2. kapasitas gudang terbatas
  3. maks produksi A
Analitik Rantai Pasok dengan Python

Slack kendala

slack:

  • Jumlah sumber daya yang tidak terpakai.

Python:

o = [{'name':name, 'shadow price':c.pi, 'slack': c.slack} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
Analitik Rantai Pasok dengan Python

Penjelasan slack kendala

Keluaran:

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

Tentang Binding

  • Jika slack = 0, maka binding
  • Mengubah kendala binding akan mengubah solusi

Ingat Kendala:

  1. kapasitas produksi terbatas
  2. kapasitas gudang terbatas
  3. maks produksi A
Analitik Rantai Pasok dengan Python

Ringkasan

  • Cara menghitung:
    • shadow prices
    • slack kendala
  • Identifikasi Kendala Binding
    • jika slack = 0, maka binding
    • jika slack > 0, maka tidak binding
Analitik Rantai Pasok dengan Python

Ayo berlatih!

Analitik Rantai Pasok dengan Python

Preparing Video For Download...