เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Shadow price และ slack แบบฝึกหัดที่ 1

สมมติว่ากำลังวางแผนการผลิตคัพเค้กให้กับเบเกอรี โดยเบเกอรีสามารถเลือกผลิตได้ 2 แบบ:

  • คัพเค้กขนาดปกติ: กำไร = $5
  • คัพเค้กขนาดจัมโบ้ (ใหญ่กว่าปกติ 2 เท่า): กำไร = $10

โมเดลนี้มีข้อจำกัด 2 ข้อ ได้แก่ ชั่วโมงการใช้เตาอบ (30) และชั่วโมงแรงงาน (65) สถานการณ์นี้ถูกสร้างโมเดลด้วย PuLP ไว้แล้ว และได้ผลลัพธ์ที่ดีที่สุดแล้ว โดย shell จะแสดงสถานะของโมเดล ค่าตัวแปรตัดสินใจ ค่าวัตถุประสงค์ (กำไร) รวมถึง shadow price และ slack ของข้อจำกัดต่าง ๆ

โค้ดตัวอย่างคือสำเนาของโค้ดดังกล่าว ให้ปรับข้อจำกัดเพื่อดูว่าผลลัพธ์ที่ดีที่สุดเปลี่ยนแปลงอย่างไร

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Supply Chain Analytics ด้วย Python

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Define Constraints, Solve, Print Status, Variables, Objective
model = LpProblem("Maximize Bakery Profits", LpMaximize)
R = LpVariable('Regular_production', lowBound=0, cat='Continuous')
J = LpVariable('Jumbo_production', lowBound=0, cat='Continuous')
model += 5 * R + 10 * J, "Profit"

# Adjust the constraint
model += 0.5 * R + 1 * J <= ____
model += 1 * R + 2.5 * J <= 65

# Solve Model, Print Status, Variables, Objective, Shadow and Slack
model.solve()
print("Model Status: {}".format(LpStatus[model.status]))
for v in model.variables():
    print(v.name, "=", v.varValue)
print("Objective = $", value(model.objective))
o = [{'name':name, 'shadow price':c.pi, 'slack': c.slack} 
     for name, c in model.constraints.items()]
print(pd.DataFrame(o))
แก้ไขและรันโค้ด