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.
- Xử lý độc lập: Chạy giải thuật song song cho từng HUB giúp tăng tốc độ tính toán.
- Tránh chạy chéo vùng: Xe, moóc và tài xế chỉ phục vụ đơn hàng thuộc HUB quản lý trực tiếp, giảm độ phức tạp tổ hợp.
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
- Khớp kích thước moóc (Trailer): Khớp tự động chiều dài moóc và container.
- Thời gian lái xe an toàn: Không quá 10h/ngày, không lái liên tục quá 4h (nghỉ ít nhất 15 phút).
- Phân bổ theo nhóm & HUB: Nhóm 1, 2, 3 luôn ưu tiên xe nhà. Nhóm 4 luôn đi xe ngoài (Vendor) đối với HUB Hải Phòng (HPH).
⚖️
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
- Dữ liệu thời gian hoặc lộ trình di chuyển từ Goong/Google API khác thực tế của khách hàng dẫn đến kết quả điều phối có thể tối ưu hơn hoặc không chính xác.
- Thời gian lập trình thuật toán (Phase 2) tăng lên 5 ngày do phân tầng phức tạp, làm rút ngắn thời gian dành cho testing và benchmark (Phase 3) xuống còn 3 ngày.
📅 Lộ trình điều chỉnh chi tiết:
-
• Phase 1: Làm rõ yêu cầu nghiệp vụ, thiết kế kiến trúc & thuật toán
• Mục tiêu: Tập trung làm rõ các quy tắc nghiệp vụ điều phối càng sớm càng tốt, hiểu rõ hệ thống tích hợp và thiết kế kiến trúc & thuật toán.
• Thời gian thực hiện: 5 ngày.
• Thời hạn hoàn thành: 15/06/2026.
-
• Phase 2: Phát triển code thuật toán (Cập nhật: Tăng lên 5 ngày)
• Mục tiêu: Lập trình song song thuật toán Ghép Cặp (PyVRP) và thuật toán Điều Phối (CP-SAT).
• Lý do điều chỉnh: Mỗi thuật toán bao gồm nhiều bài toán nhỏ bắt buộc phải phân tầng xử lý (Ghép cặp tạo nhóm, Ghép theo khoảng cách địa lý, ghép qua đêm, chuyến đơn xoay vòng...).
• Thời hạn hoàn thành: 20/06/2026.
-
• Phase 3: Testing, Benchmark và Đóng gói (Cập nhật: Giảm xuống 3 ngày)
• Mục tiêu: Thực hiện testing với dữ liệu thật, benchmark hiệu năng, tối ưu và đóng gói microservice để kịp tiến độ Go-live tổng.
• Thời hạn hoàn thành: 23/06/2026.