Bài tập kết hợp ràng buộc
Bạn đang xây dựng kế hoạch phân phối cho một mạng lưới kho. Mạng có hai kho (W1 và W2) và mỗi kho có thể gửi ba loại sản phẩm (A, B và C). W1 nhỏ và mỗi tuần có thể gửi hoặc 10 sản phẩm A, hoặc 15 sản phẩm B, hoặc 20 sản phẩm C. Mục tiêu của bạn là tối thiểu hóa tổng chi phí.
Một Pandas DataFrame tên là demand đã được in ra trong bảng điều khiển và chứa nhu cầu theo tháng cho từng sản phẩm. Ngoài ra, mã PuLP để khởi tạo mô hình, định nghĩa biến quyết định, hàm mục tiêu và ràng buộc sao cho tổng lượng giao của mỗi sản phẩm bằng với nhu cầu của nó cũng đã được cung cấp.
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
Hướng dẫn bài tập
- Hoàn thiện mã cho ràng buộc mô hình hóa giới hạn vận chuyển của kho W1 trong 4 tuần.
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.
# Initialize, Define Decision Vars., Objective Function, and Constraints
model = LpProblem("Distribution Planning", LpMinimize)
wh = ['W1','W2']
prod = ['A', 'B', 'C']
X = LpVariable.dicts("ship", [(w, p, c) for c in cust for p in prod for w in wh],
lowBound=0, cat="Integer")
model += lpSum([X[(w, p, c)]*costs.loc[(w, p), c] for c in cust for p in prod for w in wh])
for c in cust:
for p in prod:
model += lpSum([X[(w, p, c)] for w in wh]) == demand.loc[p, c]
# Define Dependent Demand Constraints
model += ((1/10) * lpSum([X[('W1', 'A', c)] for c in cust])
+ ____ * lpSum([X[(____, ____, c)] for c in cust])
+ ____ * lpSum([X[(____, ____, ____)] for c in cust])) <= ____