Ví dụ về bài toán lập lịch

Phân tích Chuỗi Cung Ứng với Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

Nhu cầu dự kiến

Ngày trong tuần Cần tài xế
0 = Thứ Hai 11
1 = Thứ Ba 14
2 = Thứ Tư 23
3 = Thứ Năm 21
4 = Thứ Sáu 20
5 = Thứ Bảy 15
6 = Chủ Nhật 8

Câu hỏi:

  • Tổng cộng cần tuyển bao nhiêu tài xế?

Ràng buộc:

  • Mỗi tài xế làm 5 ngày liên tiếp, nghỉ 2 ngày, lặp lại hàng tuần
Phân tích Chuỗi Cung Ứng với Python
Bước Định nghĩa
Biến quyết định X$_{\text{i}}$ = số tài xế làm việc ngày _i_
Mục tiêu minimize z = X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ + X$_{\text{6}}$
Ràng buộc X$_{\text{0}}$ ≥ 11
X$_{\text{1}}$ ≥ 14
X$_{\text{2}}$ ≥ 23
X$_{\text{3}}$ ≥ 21
X$_{\text{4}}$ ≥ 20
X$_{\text{i}}$ ≥ 0 (i = 0, ..., 6)
Phân tích Chuỗi Cung Ứng với Python
Bước Định nghĩa
Biến quyết định X$_{\text{i}}$ = số tài xế làm việc ngày _i_
Mục tiêu minimize z = X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ + X$_{\text{6}}$
Ràng buộc X$_{\text{0}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ + X$_{\text{6}}$ ≥ 11
X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ + X$_{\text{6}}$ ≥ 14
X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{6}}$ ≥ 23
X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ ≥ 21
X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ ≥ 15
X$_{\text{i}}$ ≥ 0 (i = 0, ..., 6)
Phân tích Chuỗi Cung Ứng với Python

Ví dụ mã

# Initialize Class
model = LpProblem("Minimize Staffing", 
                   LpMinimize)
days = list(range(7))

# Define Decision Variables
x = LpVariable.dicts('staff_', days,
                      lowBound=0, cat='Integer')

# Define Objective
model += lpSum([x[i] for i in days])
# Define Constraints
model += x[0] + x[3] + x[4] + x[5] + x[6] >= 11
model += x[0] + x[1] + x[4] + x[5] + x[6] >= 14
model += x[0] + x[1] + x[2] + x[5] + x[6] >= 23
model += x[0] + x[1] + x[2] + x[3] + x[6] >= 21
model += x[0] + x[1] + x[2] + x[3] + x[4] >= 20
model += x[1] + x[2] + x[3] + x[4] + x[5] >= 15
model += x[2] + x[3] + x[4] + x[5] + x[6] >= 8

# Solve Model
model.solve()
Phân tích Chuỗi Cung Ứng với Python

Tóm tắt

  • Biến ban đầu không phù hợp
  • Biến quyết định để đưa một số ràng buộc vào
Phân tích Chuỗi Cung Ứng với Python

Đến giờ luyện tập!

Phân tích Chuỗi Cung Ứng với Python

Preparing Video For Download...