Báo Cáo Đặc Tả Giải Pháp (Jun-15)

1. Tiền xử lý theo HUB

Phân nhóm đơn hàng mới theo HUB quản lý (Linh Xuân, Long Sơn, Hải Phòng, Cửa Lò) trước khi chạy thuật toán tối ưu.

2. Thuật toán ghép cặp

Tự động kết hợp đơn Nhập (trả vỏ) và Xuất (đóng hàng) nhằm tái sử dụng vỏ container rỗng tại kho khách hàng, loại bỏ lượt chạy rỗng về cảng.

2.1 Mục tiêu & Sơ đồ

Rút ngắn cự ly không tải bằng cách điều hướng đầu kéo chạy thẳng từ kho hàng Nhập sang kho hàng Xuất.

graph TD Port1[HUB lấy cont Nhập] -->|1. Chuyến Nhập| WhImport[Kho trả hàng Nhập] WhImport -->|2. Vận chuyển rỗng| WhExport[Kho đóng hàng Xuất] WhExport -->|3. Chuyến Xuất| Port2[HUB hạ cont Xuất] style Port1 fill:#f8fafc,stroke:#cbd5e1,stroke-width:1px,color:#0f172a style Port2 fill:#f8fafc,stroke:#cbd5e1,stroke-width:1px,color:#0f172a style WhImport fill:#f1f5f9,stroke:#0891b2,stroke-width:2px,color:#0f172a style WhExport fill:#f1f5f9,stroke:#059669,stroke-width:2px,color:#0f172a

2.2 Ràng buộc

2.3 Đầu vào & Đầu ra

📥 Dữ liệu đầu vào (Input)

  • Danh sách đơn Nhập/Xuất của HUB quản lý (bao gồm thời gian giao nhận hàng yêu cầu).
  • Khung thời gian hoạt động của kho/HUB.
  • Thời gian chờ và thời gian làm hàng của các kho.
  • Thông tin phân hạng ưu tiên khách hàng (Nhóm 1 -> Nhóm 5).

📤 Dữ liệu đầu ra (Output)

  • Danh sách chuyến kết hợp thành công (Nhập → Xuất).
  • Danh sách chuyến đơn.
  • Danh sách chuyến đơn xoay vòng (tổ hợp chuyến đơn đáp ứng KPI vòng quay, ví dụ: 3 cont/xe/ngày).

2.4 Trình tự thuật toán ghép cặp

1
Ghép cặp tạo nhóm (Nhóm 1 -> Nhóm 5)
PyVRP quét khớp Time Windows và kích thước để ghép tạo ra các cặp kết hợp thuộc các Nhóm 1, 2, 3, 4, 5.
2
Ghép theo khoảng cách địa lý
Các đơn không được ghép cặp ở bước trước sẽ tiến hành ghép cặp tối ưu theo khoảng cách địa lý gần nhau nhất.
3
Kết hợp qua đêm (KHQĐ)
Nếu vẫn còn đơn hàng dư, tiến hành ghép cặp qua đêm (lệch ngày D -> D+1) chạy xuyên đêm không về HUB.
4
Tạo tổ hợp chuyến đơn xoay vòng
Các chuyến đơn không thể ghép cặp được gom cụm lại để ghép chuyến đơn xoay vòng đáp ứng chỉ tiêu vòng quay. Việc ghép và chạy đơn ưu tiên tối đa lợi nhuận, thời gian chờ và làm hàng của từng khách hàng.
5
Chuyến đơn lẻ
Xuất danh sách các chuyến đơn lẻ cuối cùng còn sót lại chưa được gom cụm hay kết hợp.

3. Thuật toán điều phối

Phân bổ xe nhà GLS (Đầu kéo, Moóc, Tài xế) và xe ngoài (Vendor) cho các chuyến kết hợp và chuyến đơn lẻ.

3.1 Ràng buộc

⚖️ Công bằng tài xế (Driver Fairness)

Khống chế độ lệch số chuyến tích lũy tháng của các tài xế xe nhà trong cùng một HUB (10% theo cấu hình cho từng HUB) để đảm bảo thu nhập đồng đều.

3.2 Đầu vào & Đầu ra

📥 Dữ liệu đầu vào (Input)

  • Danh sách chuyến kết hợp, chuyến đơn và chuyến đơn xoay vòng được sinh ra từ Thuật toán 1.
  • Danh sách đội xe nhà GLS khả dụng (Đầu kéo, Moóc).
  • Danh sách tài xế xe nhà (số chuyến tích lũy tháng hiện tại của mỗi tài xế).
  • Thông tin hiệu quả cho từng khách hàng (cho chuyến đơn).

📤 Dữ liệu đầu ra (Output)

  • Danh sách phân bổ xe/tài xế xe nhà cho từng chuyến đi.
  • Danh sách chuyến kết hợp/đơn cho Vendor.

3.3 Trình tự thuật toán điều phối

Quy trình xếp chuyến và lập lịch cho xe nhà GLS và xe ngoài Vendor theo phân tầng tối ưu:

1
Xếp chuyến kết hợp Nhóm 1, 2, 3
Gán cứng toàn bộ các chuyến kết hợp thuộc Nhóm 1, 2, 3 cho xe nhà GLS thực hiện (luôn ưu tiên xe nhà).
2
Xếp chuyến kết hợp Nhóm 4
Chỉ xếp cho xe nhà khi vẫn còn xe nhà khả dụng nhưng đã phân bổ hết chuyến Nhóm 1, 2, 3. Các chuyến Nhóm 4 còn lại được đẩy cho xe ngoài (Vendor). Riêng với HUB Hải Phòng (HPH), các chuyến Nhóm 4 luôn được phân bổ cho xe ngoài.
3
Xếp chuyến đơn kết hợp địa lý
Ưu tiên gán cho xe nhà thực hiện khi vẫn còn xe trống để ghép cự ly gần tối ưu.
4
Xếp chuyến đơn quay vòng
Ưu tiên gán cho xe nhà thực hiện khi vẫn còn xe trống để nâng cao vòng quay xe nhà trong ca trực.
5
Xếp chuyến đơn lẻ & chuyến kết hợp Nhóm 5
Xếp chuyến đơn và chuyến kết hợp Nhóm 5 cho xe ngoài (Vendor); chỉ gán cho xe nhà khi không có xe ngoài khả dụng.
6
Chia đều số chuyến của xe cho các tài xế
Đối với đầu xe chạy nhiều ca, CP-SAT chia đều số chuyến thực tế đã gán cho đầu xe đó giữa các tài xế.

4. Khó khăn