Supply Chain Analytics ด้วย Python
Aaren Stubberfield
Supply Chain Analytics Mgr.
ปัญหาในการสร้างโมเดล:
Shadow Prices:
บริบท - บริษัทแก้ว - การวางแผนทรัพยากร:
| ทรัพยากร | สินค้า A | สินค้า B | สินค้า C |
|---|---|---|---|
| ชั่วโมงการผลิต | 6 | 5 | 8 |
| พื้นที่คลังสินค้า (ตร.ฟุต) | 10.5 | 20 | 10 |
| กำไร $US | $500 | $450 | $600 |
ข้อจำกัด:
# 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)
คำตอบ:
| สินค้า | สินค้า A | สินค้า B | สินค้า C |
|---|---|---|---|
| จำนวนเคสที่ผลิต | 6.667 | 4 | 0 |
ค่าฟังก์ชันวัตถุประสงค์ = $5133.33
ตัวแปรการตัดสินใจ:
ข้อจำกัด:
โค้ด Python:
o = [{'name':name, 'shadow price':c.pi}
for name, c in model.constraints.items()]
print(pd.DataFrame(o))
ผลลัพธ์:
name shadow price
_C1 78.148148
_C2 2.962963
_C3 -0.000000
ข้อจำกัดที่เกี่ยวข้อง:
slack:
โค้ด Python:
o = [{'name':name, 'shadow price':c.pi, 'slack': c.slack}
for name, c in model.constraints.items()]
print(pd.DataFrame(o))
ผลลัพธ์:
name shadow price slack
_C1 78.148148 -0.000000
_C2 2.962963 -0.000000
_C3 -0.000000 1.333333
เพิ่มเติมเกี่ยวกับ Binding
slack = 0 หมายความว่า bindingข้อจำกัดที่เกี่ยวข้อง:
shadow pricesslack ของข้อจำกัดslack = 0 หมายความว่า bindingslack > 0 หมายความว่า not-bindingSupply Chain Analytics ด้วย Python