การวิเคราะห์ความไวของ shadow price

Supply Chain Analytics ด้วย Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

นิยามของ shadow price

ปัญหาในการสร้างโมเดล:

  • ข้อมูลนำเข้าสำหรับข้อจำกัดของโมเดลมักเป็นค่าประมาณ
  • การเปลี่ยนแปลงข้อมูลนำเข้าจะส่งผลต่อคำตอบหรือไม่?

Shadow Prices:

  • การเปลี่ยนแปลงของค่าเหมาะสมที่สุดของฟังก์ชันวัตถุประสงค์ต่อการเพิ่มขึ้น 1 หน่วยในด้านขวาของข้อจำกัด โดยที่ปัจจัยอื่นคงที่
Supply Chain Analytics ด้วย Python

บริบท - บริษัทแก้ว - การวางแผนทรัพยากร:

ทรัพยากร สินค้า A สินค้า B สินค้า C
ชั่วโมงการผลิต 6 5 8
พื้นที่คลังสินค้า (ตร.ฟุต) 10.5 20 10
กำไร $US $500 $450 $600

ข้อจำกัด:

  • ชั่วโมงการผลิต ≤ 60
  • ความจุคลังสินค้า ≤ 150 ตร.ฟุต
  • การผลิตสินค้า A สูงสุด ≤ 8
Supply Chain Analytics ด้วย Python

ตัวอย่างโค้ด

# 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 ด้วย Python

ตัวอย่างคำตอบ

คำตอบ:

สินค้า สินค้า A สินค้า B สินค้า C
จำนวนเคสที่ผลิต 6.667 4 0

ค่าฟังก์ชันวัตถุประสงค์ = $5133.33

Supply Chain Analytics ด้วย Python

ทบทวนข้อจำกัด

ตัวแปรการตัดสินใจ:

  • A ถึง C = จำนวนเคสของสินค้า A ถึง C ตามลำดับ

ข้อจำกัด:

  • 6A + 5B + 8C ≤ 60 (กำลังการผลิตจำกัด)
  • 10A + 20B + 10C ≤ 150 (ความจุคลังสินค้าจำกัด)
  • A ≤ 8 (การผลิตสินค้า A สูงสุด)
Supply Chain Analytics ด้วย Python

แสดงผล shadow price

โค้ด Python:

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

ความหมายของ shadow price

ผลลัพธ์:

  name  shadow price
   _C1     78.148148
   _C2      2.962963
   _C3     -0.000000

ข้อจำกัดที่เกี่ยวข้อง:

  1. กำลังการผลิตจำกัด
  2. ความจุคลังสินค้าจำกัด
  3. การผลิตสินค้า A สูงสุด
Supply Chain Analytics ด้วย Python

Constraint slack

slack:

  • ปริมาณทรัพยากรที่ไม่ได้ใช้งาน

โค้ด 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 ด้วย Python

ความหมายของ constraint slack

ผลลัพธ์:

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

เพิ่มเติมเกี่ยวกับ Binding

  • slack = 0 หมายความว่า binding
  • การเปลี่ยนข้อจำกัดแบบ binding จะ เปลี่ยน คำตอบ

ข้อจำกัดที่เกี่ยวข้อง:

  1. กำลังการผลิตจำกัด
  2. ความจุคลังสินค้าจำกัด
  3. การผลิตสินค้า A สูงสุด
Supply Chain Analytics ด้วย Python

สรุป

  • วิธีคำนวณ:
    • shadow prices
    • slack ของข้อจำกัด
  • การระบุ Binding Constraints
    • slack = 0 หมายความว่า binding
    • slack > 0 หมายความว่า not-binding
Supply Chain Analytics ด้วย Python

มาฝึกกันเถอะ!

Supply Chain Analytics ด้วย Python

Preparing Video For Download...