Bài tập shadow price và slack (phần 1)
Bạn đang lập kế hoạch các loại cupcake mà một tiệm bánh nên làm. Tiệm có thể làm:
- cupcake cỡ thường: lợi nhuận = $5
- cupcake jumbo lớn gấp đôi cỡ thường: lợi nhuận = $10
Có 2 ràng buộc về giờ dùng lò (30) và giờ công nhân (65). Kịch bản này đã được mô hình hóa bằng PuLP và đã tìm được lời giải. Trạng thái mô hình, giá trị biến quyết định, giá trị hàm mục tiêu (tức lợi nhuận), shadow price và slack của các ràng buộc đã được in ra trong shell.
Mẫu mã là bản sao của đoạn code đó. Bạn sẽ điều chỉnh các ràng buộc để xem lời giải tối ưu thay đổi như thế nào.
Bài tập này là một phần của khóa học
Phân tích Chuỗi Cung Ứng với Python
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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))