ðẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ðẠI HỌC KHOA HỌC TỰ NHIÊN
ðẶNG THỊ THANH NGUYÊN
PHƯƠNG PHÁP LOCAL SEARCH CHO MỘT
BÀI TOÁN GIAO HÀNG TRONG THỰC TẾ
Ngành: KHOA HỌC MÁY TÍNH
Mã số: 02 08 4801 31
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS ðINH BÁ TIẾN
Thành phố Hồ Chí Minh - 2011
i
Lời cảm ơn
Tôi xin chân thành cảm ơn thầy ðinh Bá Tiến vì sự chỉ bảo, giúp ñỡ và hướng dẫn
tận tâm của thầy trong suốt thời gian tôi thực hiện ñề tài này.
Tôi xin ñược gởi lời cảm ơn ñến Quý Thầy Cô trong trường ñã tận tình giảng dạy,
trang bị cho tôi những kiến thức quý báu trong suốt những năm học vừa qua.
Tôi xin bày tỏ lòng cảm ơn sâu sắc ñến ba mẹ và các anh chị, bạn bè ñã ủng hộ,
ñộng viên, giúp ñỡ tôi trong suốt thời gian vừa qua.
Học viên thực hiện
ðặng Thị Thanh Nguyên
ii
Mục lục
Lời cảm ơn i
Mục lục ii
Danh mục các bảng iv
Danh mục các hình v
Phần mở ñầu 1
Lý do thực hiện và mục tiêu của ñề tài 1
Bố cục luận văn 1
Chương 1.
Tổng quan về bài toán Vehicle Routing 3
1.1.
Giới thiệu bài toán Vehicle Routing (VRP) 3
1.2.
Các biến thể của bài toán VRP 4
1.3.
Các hướng tiếp cận cho bài toán VRP 8
Chương 2.
Bài toán giao hàng của công ty cổ phần sữa Việt Nam - Vinamilk 15
2.1.
Một số khái niệm và ñặc trưng của bài toán 15
2.2.
Ràng buộc của bài toán và thành phần của lời giải 17
2.3.
Mục tiêu của bài toán 18
2.4.
Các bài toán liên quan 18
2.5.
Sự khác biệt của bài toán so với các bài toán VRP ñã ñược công bố 18
Chương 3.
Các kĩ thuật liên quan 20
3.1.
Thuật giải Tabu Search 20
3.2.
Thuật giải Large Neighborhood Search 21
3.3.
Bài toán Flexible Job Shop Scheduling 24
Chương 4.
Thuật giải ñề nghị 32
iii
4.1.
Bước 1: tạo ra một lời giải của bài toán nhưng bỏ qua vấn ñề xếp lịch vào
kho của các xe 33
4.2.
Bước 2: Xếp lịch vào kho cho các xe 39
4.3.
Bước 3: Chỉnh sửa các chuyến của các xe trễ (nếu có) 44
4.4.
Bước 4: Thêm xe mới vào lời giải hiện tại 46
Chương 5.
Kết quả thực nghiệm 49
Chương 6.
Kết luận và hướng phát triền 54
6.1.
Kết luận 54
6.2.
Hướng phát triển 55
Tài liệu tham khảo 56
Danh mục các công trình của tác giả 62
iv
Danh mục các bảng
Bảng 2.1. Thông tin chi tiết về ñội xe của Vinamilk 15
Bảng 4.1. Sự tương quan giữa các khái niệm trong bài toán giao hàng của Vinamilk
với các khái niệm trong bài toán FJSP 41
Bảng 5.1. Thông tin 19 bộ dữ liệu của Vinamilk 49
Bảng 5.2. Kết quả thực nghiệm (với bài báo [38]) 52
Bảng 5.3. Kết quả thực nghiệm mới 53
Danh mục các hình và đồ thị
v
DANH MỤC CÁC HÌNH VÀ ĐỒ THỊ
Trang
Hình 1.1. Cấu trúc bộ gene của HPV 3
Hình 1.2. Cấu trúc của protein E7 5
Hình 1.3. Tác động của protein E7 lên các quá trình nội bào 6
Hình 1.4. Hệ thống phát hiện trực tiếp 13
Hình 1.5. Hệ thống avidin-biotin. 13
Hình 1.6. Hệ thống polymer – kháng thể thứ cấp – enzyme 14
Hình 1.7. ELISA và immuno PCR. Nguyên lý và độ nhạy của hai phương pháp 15
Hình 1.8. Immuno-PCR cổ điển, sử dụng protein lai giữa protein A và streptavidin
17
Hình 1.9. Immuno-PCR phổ biến. 18
Hình 1.10. Sơ đồ mô tả đoạn DNA marker được gắn cộng hợp vào kháng thể. 19
Hình 1.11. Immuno-PCR trực tiếp. 20
Hình 1.12. Immuno-PCR sử dụng các hạt từ phủ kháng thể 21
Hình 1.13. Immuno-PCR sử dụng “bio-barcode” 21
Hình 1.14. Immuno-PCR sử dụng LG protein và hệ thống phát hiện Tus-Ter 22
Hình 2.1. Buồng đếm hồng cầu 31
Hình 2.2. Sơ đồ phương pháp ELISA 38
Hình 2.3. Sơ đồ phương pháp checkerboard 38
Hình 2.4. Sơ đồ phương pháp immuno-PCR 39
Hình 3.1. Mô hình phương pháp lai hóa tế bào miễn dịch sử dụng trong đề tài. 41
Hình 3.2. Lai hóa tế bào miễn dịch sử dụng KTĐD 1D5 trên dòng tế bào HeLa và
C33A với các nồng độ kháng thể 10 µg/ml (A1, A2), 5 µg/ml (B1, B2), 2,5 µg/ml
(C1, C2). 42
Hình 3.3. Lai hóa tế bào miễn dịch sử dụng KTĐD 4H5 trên dòng tế bào HeLa và
C33A với các nồng độ kháng thể 10 µg/ml (A1, A2), 5 µg/ml (B1, B2), 2,5 µg/ml
(C1, C2). 43
Danh mục các hình và đồ thị
vi
Hình 3.4. Lai hóa tế bào miễn dịch sử dụng kháng thể 1D5 (10 µg/ml) trên các dòng
tế bào HeLa (A), C33A (B), CHO-K1 chuyển vector pEGFP-E7HPV18 (C), CHO-
K1 chuyển vector pEGFP-C2 (D), CaSki (E) 44
Hình 3.5. Lai hóa tế bào miễn dịch sử dụng kháng thể 4H5 (10 µg/ml) trên các dòng
tế bào HeLa (A), C33A (B), CHO-K1 chuyển vector pEGFP-E7HPV18 (C), CHO-
K1 chuyển vector pEGFP-C2 (D), CaSki (E) 45
Hình 3.6. Lai hóa tế bào miễn dịch trên dòng tế bào HeLa với kháng thể 1D5 (10
µg/ml), sử dụng tác nhân bộc lộ kháng nguyên là citrate pH 6 10 mM (A), EDTA
pH 8 1 mM (B), không xử lý với tác nhân bộc lộ kháng nguyên (C). 46
Hình 3.7. Lai hóa tế bào miễn dịch trên mẫu tế bào HeLa (A), CaSki (B), C33A (C)
xử lý theo phương pháp ly tâm và trải lên. 47
Hình 3.8. Lai hóa tế bào miễn dịch trên các mẫu tế bào dịch phết cổ tử cung 49
Hình 3.9. Mô hình kĩ thuật immuno-PCR và ELISA sử dụng trong đề tài. 50
Hình 3.10. Đồ thị xác định hằng số ái lực của KTĐD 4H5-biotin với kháng nguyên
E7 HPV 18 tái tổ hợp tinh sạch. 53
Hình 3.11. PCR tạo DNA đánh dấu biotin. 54
Hình 3.12. Đồ thị khảo sát nồng độ kháng thể “bắt giữ” 1D5 55
Hình 3.13. Đồ thị khảo sát nồng độ kháng thể “phát hiện” 4H5-biotin 56
Hình 3.14. Đồ thị khảo sát nồng độ STV-AP 57
Hình 3.15. Tối ưu hóa nồng độ DNA đánh dấu biotin sử dụng cho immuno-PCR. . 58
Hình 3.16. Tối ưu hóa nồng độ streptavidin sử dụng cho immuno-PCR. 59
Hình 3.17. Tối ưu hóa tác nhân khóa giếng. 60
Hình 3.18. Kết quả immuno-PCR với protein E7 HPV 18 tái tổ hợp 61
1
Phần mở ñầu
Lý do thực hiện và mục tiêu của ñề tài
Lớp bài toán ñiều phối xe (Vehicle Routing Problem – VRP) có ứng dụng rất rộng
rãi trong nhiều lĩnh vực của ñời sống, ñặc biệt là trong lĩnh vực giao thông vận tải.
Mỗi bài toán VRP thực tế thường có các ràng buộc ñặc trưng riêng, nhưng nhìn
chung tất cả ñều là bài toán NP-khó. ðề tài này tập trung nghiên cứu và giải quyết
một bài toán VRP thực tế, bắt nguồn từ nhu cầu ñiều phối các xe giao hàng của
công ty Cổ phần sữa Việt Nam (Vinamilk), cơ sở TP.HCM. Hiện nay, Vinamilk
thực hiện việc ñiều phối xe giao hàng bằng tay với quy trình như sau: mỗi ngày,
công ty sẽ nhận các ñơn ñặt hàng của khách hàng (số lượng ñơn hàng từ vài trăm
ñến hơn một ngàn), ñến cuối ngày, nhân viên ñiều phối sẽ tổng hợp lại toàn bộ các
ñơn ñặt hàng ñã nhận trong ngày, và bộ phận ñiều phối thường phải mất khoảng 6
ñến 8 tiếng (ñôi khi phải thức cả ñêm) ñể thực hiện việc phân bổ ñơn hàng lên xe và
xác ñịnh ñường ñi cho các xe vào ngày hôm sau. Cách làm này tốn khá nhiều thời
gian và công sức mà ñôi khi lời giải thu ñược lại chưa hẳn tốt. Do ñó, vấn ñề tự
ñộng hóa trong khâu ñiều phối xe là một nhu cầu rất cần thiết. ðiểm ñặc biệt của
bài toán này là ngoài vấn ñề ñiều phối xe, bài toán còn yêu cầu phải xếp lịch vào
kho cho các xe, yêu cầu có thể ñược mô hình hóa dưới dạng bài toán Flexible Job
Shop Scheduling – một bài toán thuộc lớp bài toán NP – khó. Sự lồng ghép của hai
bài toán khó khiến cho bài toán giao hàng của Vinamilk trở nên khá phức tạp. ðề tài
ñã ñề nghị một thuật giải metaheuristic dựa trên local search ñể giải quyết bài toán
này, kết quả thực nghiệm ñược so sánh với kết quả xếp tay ñược lấy từ thực tế và
kết quả ñã ñược công bố dưới dạng bài báo của một phương pháp dựa trên quy
hoạch ñộng (áp dụng trên cùng bài toán).
Bố cục luận văn
Luận văn gồm có 5 chương:
2
- Chương 1: trình bày tổng quan về bài toán ñiều phối xe (Vehicle Routing
Problem) – bao gồm ñịnh nghĩa bài toán, các biến thể của bài toán và sơ lược
về các hướng tiếp cận hiện nay ñể giải quyết bài toán.
- Chương 2: trình bày chi tiết về bài toán mà luận văn tập trung nghiên cứu và
giải quyết - bài toán giao hàng của Công Ty Cổ Phần Sữa Việt Nam –
Vinamilk.
- Chương 3: trình bày các kĩ thuật liên quan mà luận văn sẽ sử dụng ñể giải
quyết bài toán giao hàng của Vinamilk
- Chương 4: trình bày chi tiết về thuật giải metaheurisitic dựa trên local search
mà luận văn ñề nghị ñể giải quyết bài toán giao hàng của Vinamilk
- Chương 5: trình bày kết quả thực nghiệm khi áp dụng thuật giải ñã ñề nghị
lên một số bộ dữ liệu thực tế của Vinamilk.
- Chương 6: trình bày kết luận và các hướng phát triển của ñề tài
3
Chương 1. Tổng quan về bài toán Vehicle Routing
1.1. Giới thiệu bài toán Vehicle Routing (VRP)
Bài toán ñiều phối xe (Vehicle Routing Problem) [59] - gọi tắt là VRP - là bài toán
mà trong ñó ta có sẵn một tập các xe (vehicle) và một tập các khách hàng
(customer), mỗi khách hàng yêu cầu một số lượng hàng nhất ñịnh, yêu cầu của bài
toán là phải phân phối hàng và tìm ñường ñi giao hàng cho các xe dựa trên một số
mục tiêu cho trước sao cho tất cả các khách hàng ñều phải ñược giao hàng, một
trong những mục tiêu phổ biến nhất là cực tiểu hóa tổng thời gian vận chuyển của
tất cả các xe. Bài toán quen thuộc người ñưa thư (Travelling Salesman Problem -
gọi tắt là TSP) [16] chính là một trường hợp ñặc biệt của bài toán VRP với một xe
giao hàng duy nhất (người ñưa thư).
Bài toán VRP và các biến thể của nó ñều thuộc lớp các bài toán NP-khó [55]. ðây
là một trong những bài toán có ứng dụng thực tế rất rộng lớn và ñã nhận ñược sự
quan tâm, nghiên cứu của rất nhiều nhà khoa học trên thế giới trong suốt 50 năm
qua [4]. Trong bài toán này, các xe sẽ xuất phát từ các kho hàng (depot) và ñi giao
hàng cho các khách hàng, sau ñó quay trở về lại kho hàng. Một số khái niệm chính
của bài toán gồm:
- Xe (vehicle): các phương tiện dùng ñể chuyên chở hàng, có thể có nhiều loại
xe khác nhau, chẳng hạn như xe tải nhỏ, xe tải lớn, xe gắn máy, Các khái
niệm gắn liền với loại xe bao gồm: sức chứa của xe (capacity) – thông số
này cho biết số lượng hàng tối ña mà xe có thể chở, chi phí vận chuyển (gồm
hai loại thông dụng: chi phí cố ñịnh - fixed cost - là chi phí cần thiết ñể xe có
thể khởi hành, chi phí này không phụ thuộc vào ñộ dài quãng ñường mà xe
phải ñi; chi phí ñộng - variable cost là chi phí tiêu tốn trên từng ñơn vị quãng
ñường mà xe phải ñi), quãng ñường tối ña mà xe có thể ñi trong một ngày
(maximum route length), loại mặt hàng (commodity type) mà xe có thể chở,
…
4
- Kho hàng (depot): là nơi chứa hàng hóa và có thể cũng là ñịa ñiểm xuất
phát/ñịa ñiểm trở về của các xe, các xe sẽ lấy hàng tại kho ñể ñi giao hàng
cho các khách hàng, sau khi giao xong, xe sẽ quay trở về lại kho hàng.
- Khách hàng (customer): khách hàng có thể chỉ nhận hàng do xe giao tới,
nhưng cũng có thể vừa nhận hàng (linehaul customer), vừa lấy hàng
(backhaul customer). Các khái niệm ñi kèm với khách hàng gồm: số lượng
hàng mà khách yêu cầu (demand), loại mặt hàng mà khách yêu cầu, khoảng
thời gian (time window) mà khách hàng cho phép xe ñến giao hàng (ví dụ:
khoảng thời gian của khách hàng A là [2p.m, 4p.m] nghĩa là khách hàng A
chỉ cho phép xe ñến giao hàng (hoặc lấy hàng) trong khoảng thời gian từ
2p.m ñếm 4p.m, lượng thời gian cần thiết ñể thực hiện việc giao (nhận)
hàng (service time),
- Chuyến (route - trip): mỗi chuyến của một xe là một chu trình, với ñiểm xuất
phát và ñiểm kết thúc là kho hàng của xe, các ñiểm thành phần của chu trình
tương ứng với ñịa ñiểm của các khách hàng mà xe ghé qua ñể giao (lấy)
hàng.
1.2. Các biến thể của bài toán VRP
Bài toán VRP có rất nhiều biến thể khác nhau dựa trên yêu cầu cụ thể của các bài
toán thực tế. Các biến thể này ñã tạo thành các nhánh nghiên cứu khác nhau, tất
nhiên các phương pháp giải quyết các biến thể cũng có thể ñược chỉnh sửa ñể áp
dụng qua lại lẫn nhau. Một số biến thể quan trọng của bài toán VRP bao gồm
[60][59]:
- Bài toán VRP với khoảng cách bất ñối xứng (Asymmetric VRP, gọi tắt là
AVRP): là bài toán VRP mà trong ñó, ñồ thị biểu diễn ñường ñi là một ñồ thị
có hướng. Hầu hết các bài toán VRP trong thực tế ñều thuộc dạng này.
- Bài toán VRP với nhiều kho hàng (Multi-Depot VRP, gọi tắt là MDVRP): bài
toán với nhiều kho hàng khác nhau, mỗi xe sẽ phụ thuộc vào một kho hàng
duy nhất (home depot)
5
- Bài toán VRP với ràng buộc sức chứa (Capacitated Vehicle Routing
Problem, gọi tắt là CVRP): trong bài toán này, mỗi loại xe có sức chứa
(capacity) khác nhau, yêu cầu bài toán là phải tìm ñường ñi cho các xe sao
cho tổng lượng hàng mà xe phải chở tại thời ñiểm bất kì không ñược vượt
quá sức chứa của xe.
- Bài toán VRP với ràng buộc ñộ dài tối ña của quãng ñường mà xe ñược phép
ñi (Distance-Constrained VRP, gọi tắt là DVRP): trong bài toán này, gắn với
mỗi loại xe là một tham số thể hiện tổng ñộ dài quãng ñường tối ña mà mỗi
xe ñược phép ñi. Yêu cầu bài toán là phải tìm ñường ñi cho các xe sao cho
tổng quãng ñường mà mỗi xe phải ñi không ñược vượt quá tham số này.
- Bài toán VRP với ràng buộc khoảng thời gian (VRP with Time Windows, gọi
tắt là VRPTW): trong bài toán này, mỗi khách hàng sẽ chỉ cho phép xe ñến
giao hàng trong một khoảng thời gian cho phép (time windows) nhất ñịnh,
tương ứng với mỗi khách hàng i, khoảng thời gian này sẽ ñược biểu diễn bởi
ñoạn [a
i
, b
i
], nếu xe ñến ñịa ñiểm của khách hàng thứ i vào trước thời ñiểm
a
i
, xe sẽ phải ñứng chờ cho ñến thời ñiểm a
i
mới ñược giao hàng cho khách,
bên cạnh ñó, việc giao hàng của xe cho khách hàng thứ i cần kết thúc trước
thời ñiểm b
i
.
- Bài toán VRP với yêu cầu giao và nhận hàng (VRP Pickup and Delivery, gọi
tắt là VRPPD): bài toán này cho phép xe thực hiện cả hai chức năng - lấy
hàng (pickup) từ một số khách hàng (linehaul customer) và ñem ñi giao
(delivery) cho khách hàng khác (backhaul customer), bài toán này thường áp
dụng cho các dịch vụ vận chuyển hàng, trong ñó, khách hàng sẽ yêu cầu xe
ñến chỗ mình ñể nhận hàng và giao ñến cho người nhận (một khách hàng
khác). Khi ñó, tất nhiên xe phải ñến gặp khách hàng thứ nhất ñể lấy hàng
trước, rồi mới có hàng ñể giao ñến cho người nhận. Như vậy, trong bài toán
này sẽ có thêm một loại ràng buộc mới: ràng buộc thứ tự ñến gặp khách
hàng (precedence constraint). Các xe phải tuân thủ thứ tự này, nghĩa là phải
6
gặp khách hàng ñặt giao hàng trước, rồi mới ñược ñến gặp khách hàng cần
nhận hàng.
- Bài toán VRP với yêu cầu giao hàng trước (VRP with Backhauls, gọi tắt là
VRPB): tương tự như bài toán VRPPD, bài toán này cũng cho phép xe giao
hàng và nhận hàng, nhưng có một chút khác biệt: xe không ñến gặp khách
hàng ñể lấy hàng rồi giao cho khách hàng khác nữa mà ràng buộc thứ tự gặp
khách hàng ở ñây sẽ là: xe phải ñi giao hàng cho tất cả các khách hàng cần
nhận (linehaul customers) trước, rồi sau ñó mới ñến gặp các khách hàng cần
giao (backhaul customers) ñể lấy hàng ñem về kho. Wade và Salhi [10] ñã
ñề nghị một biến thể khác của bài toán VRPB, trong ñó, xe không cần phải
giao hết hàng rồi mới ñược nhận hàng, mà có thể nhận hàng sớm hơn (tại
một thời ñiểm nào ñó trong lúc giao hàng, thời ñiểm này ñược xác ñịnh dựa
trên kinh nghiệm của tài xế, trạng thái hàng của xe tại thời ñiểm ñó,…).
- Bài toán VRP cho phép một xe ñi nhiều chuyến (bài toán này có rất nhiều tên
gọi khác nhau, bao gồm: VRP with multiple use of vehicles, VRP with multi-
trips, VRP with multiple trips, VRP with multiple vehicle trips, gọi tắt chung
là VRPM): trong bài toán này, mỗi xe có thể chạy nhiều hơn một chuyến,
nghĩa là một chiếc xe có thể xuất phát từ kho hàng, ñi giao hàng, quay trở về
kho hàng và lại lấy hàng ñi giao tiếp cho ñến khi tổng thời gian giao hàng
của xe chạm mức cho phép.
- Bài toán VRP cho phép chia nhỏ ñơn hàng (VRP with split delivery) [13]:
trong bài toán này, mỗi ñơn ñặt hàng của khách hàng ñược phép phân nhỏ ra
thành các ñơn ñặt hàng với số lượng nhỏ hơn, khi ñó, một khách hàng có thể
ñược giao hàng bởi nhiều hơn một xe. Khi các ñơn ñặt hàng của các khách
hàng có kích thước quá lớn, việc chia nhỏ các ñơn ñặt hàng này ra sẽ giúp
tận dụng ñược tối ña sức chứa của xe.
- Bài toán VRP với nhiều loại xe khác nhau [11]: là bài toán với tập các loại xe
có sức chứa và chi phí vận chuyển khác nhau. Bài toán này có hai biến thể
con, gồm:
7
+ Bài toán VRP với ñội xe cố ñịnh (Heterogeneous VRP, hoặc VRP with
Heterogeneous fleet of vehicles): Số lượng xe của mỗi loại là một hằng số.
+ Bài toán VRP với ñội xe biến ñộng (Mixed fleet and size VRP, Fleet Size and
Mix VRP): Số lượng xe của mỗi loại cũng là một biến số, nghĩa là ngoài việc
ñịnh tuyến, ta còn cần phải xác ñịnh ñược số lượng xe mỗi loại cần dùng sao
cho tốt nhất.
- Bài toán VRP với yêu cầu loại xe phù hợp (VRP with site-dependence, gọi tắt
là SDVRP): trong bài toán này, mỗi khách hàng chỉ chấp nhận một số loại xe
nhất ñịnh, ñây cũng là một yêu cầu rất thực tế, chẳng hạn như với các khách
hàng nằm trong hẻm nhỏ hoặc nằm ở ñường cấm xe tải lớn thì chỉ có các xe
tải nhỏ hoặc xe máy mới có thể giao hàng ñến ñược.
- Bài toán VRP với khách hàng ñược biểu diễn bởi các cung (Arc Routing
Problems )[12]: ñây là một bài toán ñặc biệt, khác với các bài toán VRP
thông thường, trong ñó, các khách hàng thay vì ñược biểu diễn bằng các
ñiểm trong ñồ thị, thì sẽ ñược biểu diễn bằng các cung. Bài toán này xuất
phát từ yêu cầu của các bài toán thực tế, chẳng hạn như bài toán tìm ñường ñi
cho các xe dọn tuyết trong mùa ñông, rải muối, rải cát lên mặt ñường băng
ñể hạn chế trơn trượt, khi ñó, các vị trí cần rải muối, cát hoặc lấy tuyết không
còn là các ñiểm nữa, mà là các ñoạn ñường.
- Bài toán VRP với ñơn ñặt hàng theo chu kì (Periodic VRP): trong bài toán
này, các xe giao hàng cho mỗi khách hàng trong nhiều ngày (gọi là một chu
kì), mỗi xe có thể gặp một khách hàng nhiều hơn một lần trong suốt chu kì.
Mỗi khách hàng sẽ có một tham số ñi kèm, quy ñịnh số lần mà xe phải ñến
giao hàng cho khách trong suốt chu kì. Một ứng dụng thực tế của bài toán
này là bài toán thu gom rác với khách hàng là các siêu thị, các cửa hàng tạp
hóa,…, trong ñó, các siêu thị lớn thường cần gom rác ngày một lần, trong khi
các cửa hàng tạp hóa nhỏ thì chỉ cần một tuần hai lần là ñủ.
- Bài toán VRP ña mục tiêu (Multi Objective VRP): ñây là hướng bài toán mới
ñược phát triển trong những năm gần ñây do nhu cầu xuất phát từ thực tế.
8
Trong bài toán này, ngoài mục tiêu cực tiểu hóa tổng chi phí (thời gian) vận
chuyển, còn có các mục tiêu khác, chẳng hạn như: cực tiểu hóa số lượng xe
cần dùng ñể phục vụ hết nhu cầu khách hàng, cân bằng về tổng quãng
ñường, tổng thời gian phải ñi giữa các tuyến ñường nhằm ñảm bảo ñộ công
bằng giữa các tài xế (bằng cách giảm thiểu ñộ chênh lệch ñộ dài, thời gian di
chuyển giữa tuyến ñường dài nhất và tuyến ñường ngắn nhất), giảm thiểu rủi
ro khi chuyên chở các hàng hóa nguy hiểm, tạo mối quan hệ thân quen giữa
tài xế và khách hàng.
Tất nhiên, các biến thể trên của bài toán VRP có thể kết hợp lại với nhau ñể tạo nên
các biến thể mới cho phù hợp với bài toán thực tế cụ thể. Chẳng hạn như: kết hợp
bài toán CVRP (bài toán VRP với ràng buộc sức chứa của xe) và bài toán AVRP
(bài toán VRP với ñồ thị biểu diễn ñường ñi là ñồ thì có hướng), ta có bài toán
ACVRP (bài toán bài toán VRP với ñồ thị biểu diễn ñường ñi là ñồ thị có hướng và
có ràng buộc sức chứa của xe). Bài toán mà luận văn này giải quyết là một bài toán
VRP thực tế và cũng là một dạng biến thể kết hợp của các biến thể ñã nêu trên
nhưng ñược bổ sung thêm một số yêu cầu ñặc trưng khác.
1.3. Các hướng tiếp cận cho bài toán VRP
Các hướng tiếp cận cho bài toán VRP và các biến thể của nó có thể ñược chia làm 4
nhóm chính [4] [35]: nhóm các thuật toán chính xác, nhóm các thuật giải xấp xỉ,
nhóm các thuật giải heuristics cổ ñiển và nhóm các thuật giải metaheuristic. Sơ ñồ
tóm tắt các hướng tiếp cận của từng nhóm ñược trình bày ở Hình 1. Sau ñây là chi
tiết của từng nhóm:
- Nhóm các thuật toán chính xác (exact algorithms): là các thuật toán mà lời
giải thu ñược luôn ñảm bảo là lời giải tối ưu, các thuật toán chính xác cho bài
VRP phần lớn ñược phát triển lên từ các thuật toán chính xác cho bài toán
TSP và các biến thể của nó, gồm: các thuật toán branch and bound, quy
hoạch ñộng (dynamic programming), các thuật toán dựa trên mạng phân
luồng (network flow algorithms), các thuật toán set partitioning. Do hạn chế
9
về mặt thời gian tìm kiếm, các thuật toán chính xác chủ yếu ñược sử dụng ñể
giải quyết các bài toán VRP với kích thước nhỏ và số lượng ràng buộc hạn
chế. Với bài toán CVRP, các thuật toán chính xác hiện nay chỉ khả thi cho
các bộ dữ liệu với số khách hàng nhỏ hơn hoặc bằng 135 [4].
- Nhóm các thuật giải xấp xỉ (approximate algorithms): là các thuật giải mà tỉ
lệ giữa chất lượng lời giải thu ñược so với lời giải tối ưu luôn ñược ñảm bảo
ở một mức nhất ñịnh cho trước. Tương tự như các thuật toán chính xác, các
thuật giải xấp xỉ cho bài toán TSP cũng ñược mở rộng ñể áp dụng cho bài
toán VRP và các biến thể của nó [2]. Các thuật toán ñược ñề nghị trong
[33][34] là một trong các thuật toán tiêu biểu của nhóm này.
- Nhóm các thuật giải heuristic cổ ñiển: các thuật giải này phát triển mạnh vào
khoảng các năm 1960 ñến 1990, hiện nay, các thuật giải này thường ñược
dùng kèm trong các metaheuristic và ñảm nhận nhiệm vụ khởi tạo lời giải
ban ñầu hoặc cải thiện chất lượng của lời giải sẵn có. Sau ñây là một số thuật
giải heuristic cổ ñiển tiêu biểu [4] [35]:
+ Nhóm các thuật giải khởi tạo (constructive heuristics):
• Các thuật giải Savings: ñược ñề nghị lần ñầu bởi Clarke và Wright [1] vào
năm 1964, thuật giải này xây dựng một lời giải theo phương pháp sau: ban
ñầu, khởi tạo n chuyến tương ứng với n khách hàng, sau ñó, các chuyến này
sẽ ñược ghép lại với nhau cho ñến khi không thể ghép ñược nữa (do giới
hạn sức chứa của xe), việc chọn các chuyến ñể ghép lại với nhau dựa trên
một hàm saving. Nhiều tác giả [61][62] ñã phát triển thêm các hàm saving
khác nhau dựa trên phiên bản gốc của Clarke và Wright.
• Các thuật giải Insertion: các thuật giải thuộc nhóm này sẽ xây dựng các
chuyến của lời giải bằng cách lần lượt chèn mỗi khách hàng vào một
chuyến, các chuyến có thể ñược xây dựng ñồng thời hoặc tuần tự. Tiêu chí
ñể chèn khách hàng vào các chuyến thường dựa trên nguyên lý của thuật
10
giải tham lam, một trong những tiêu chí ñơn giản nhất là chèn khách hàng
vào chuyến sao cho tổng quãng ñường mà xe phải ñi thêm là nhỏ nhất.
• Các thuật giải gom nhóm khách hàng trước, tìm ñường ñi sau (cluster-first,
route-second): quá trình tạo lập một lời giải ñược chia làm 2 bước – bước
thứ nhất: chia tập các khách hàng thành các tập con, mỗi tập con tương ứng
với một chuyến, bước thứ 2: xác ñịnh ñường ñi cụ thể cho từng chuyến. Hai
thuật giải tiêu biểu nhất của nhóm này là thuật giải seed-based của Fisher và
Jaikumar giới thiệu vào năm 1981[30] và thuật giải sweep-based của Gillet
và Miller giới thiệu vào năm 1974 [36]
+ Nhóm các thuật giải cải tiến chất lượng lời giải sẵn có (improvement
heuristics): các thuật giải thuộc nhóm này sẽ tìm cách cải tiến chất lượng của
lời giải hiện tại thông qua các bước chỉnh sửa lời giải hiện tại. Các bước chỉnh
sửa này ñược gọi là các phép move. Có hai loại phép move cho bài toán VRP:
phép move tác ñộng lên một chuyến duy nhất (intra-route moves) phép move
tác ñộng lên nhiều chuyến cùng một lúc (inter-route move) [37].
- Nhóm các thuật giải metaheuristic: bắt ñầu phát triển từ năm 1990, ñây là
nhóm các hướng tiếp cận có nhiều triển vọng nhất hiện nay và thu hút ñược
sự quan tâm của một lượng lớn các nhà nghiên cứu. Tác giả M.Gendreau và
các cộng sự ñã công bố một bài khảo sát chi tiết và khá ñầy ñủ về các thuật
giải metaheuristic hiện nay cho bài toán VRP [41]. Sở dĩ metaheuristícc phát
triển mạnh mẽ trong những năm gần ñây là do trong nhiều trường hợp, các
thuật giải metaheuristic cho phép tìm ñược các lời giải tương ñối tốt trong
khoảng thời gian hợp lý cho các bài toán với không gian tìm kiếm quá lớn
(ñặc biệt là các bài toán ứng dụng thực tế) mà các thuật toán chính xác hoặc
các thuật toán xấp xỉ không thể khả thi. Tuy nhiên, ñiểm bất lợi của các
metaheuristic là vấn ñề lựa chọn giá trị phù hợp cho các tham số, cách làm
thông dụng nhất hiện nay là dựa vào kinh nghiệm. Các metaheuristic có thể
chia làm hai nhóm chính:
11
+ Nhóm các thuật giải metaheuristic dựa trên local search (local search
metaheuristics): Bắt nguồn từ một lời giải ban ñầu (lời giải này gọi là lời giải
khởi tạo, có thể ñược tạo thành từ nhiều phương pháp khác nhau, chẳng hạn
như các constructive heursitics ñã ñề cập ở phần trên), các thuật giải Local
Search sẽ thực hiện lặp ñi lặp lại việc tìm kiếm trong miền không gian tìm
kiếm của bài toán nhằm mục ñích tìm ra lời giải tối ưu, tại mỗi bước lặp của
mình, thuật giải sẽ tìm kiếm và chỉ lựa ra một lời giải duy nhất ñể làm cơ sở
cho bước lặp tiếp theo, ñây chính là ñiểm khác biệt cơ bản nhất giữa nhóm
thuật giải Local Search so với nhóm các thuật giải dựa trên quần thể, ở nhóm
các thuật giải dựa trên quần thể, sau mỗi bước lặp, kết quả thu ñược là cả một
tập các lời giải, trong khi nhóm Local Search chỉ chọn một lời giải duy nhất.
Tại mỗi bước lặp, thuật giải sẽ lấy lời giải duy nhất thu ñược từ bước lặp trước
làm lời giải hiện tại, thuật giải sẽ duyệt trong miền không gian láng giềng của
lời giải hiện tại ñể chọn ra lời giải thay thế cho lời giải hiện tại ở bước lặp kế
sau. Mỗi lời giải trong không gian láng giềng của lời giải hiện tại ñược gọi là
một láng giềng của lời giải hiện tại. Sự tác ñộng lên lời giải hiện tại ñể biến nó
thành một lời giải láng giềng của nó gọi là một bước chuyển (move). Trong các
local search, hai vấn ñề quan trọng nhất cần quan tâm là tính tăng cường
(intensification) và tính ña dạng (diversification) của quá trình tìm kiếm, tính
tăng cường là khả năng tập trung tìm kiếm sâu ở những vùng không gian mà ta
dự ñoán là sẽ chứa lời giải tối ưu, tính ña dạng là khả năng tìm ñến những
vùng không gian lời giải mới nhằm thoát ra khỏi các vùng chứa ñiểm tối ưu
cục bộ. Các local search khác nhau sẽ ñưa ra các chiến lược khác nhau ñể ñảm
bảo sự tồn tại và cân bằng giữa hai yếu tố này. Một số metaheuristic tiêu biểu
của nhóm này ñã ñược áp dụng khá hiệu quả cho bài toán VRP gồm:
• Thuật giải Tabu Search: ñược ñề nghị lần ñầu tiên bởi Fred Glover vào năm
1989 [40], thành phần chính quan trọng nhất của thuật giải Tabu Search là
Tabu list, ñây là một danh sách chứa một số phép move ñã ñược áp dụng
trong quá khứ, một phép move sẽ không ñược phép áp dụng lên lời giải hiện
12
tại chừng nào phép move này còn nằm trong Tabu list. Nhiệm vụ của Tabu
list là ñể tránh quay trở lại những lời giải ñã tìm trước ñó, nhằm tăng tính ña
dạng của quá trình tìm kiếm. Tuy nhiên, nếu một phép move ñang nằm
trong Tabu list nhưng nó lại có thể giúp cải thiện chất lượng của lời giải tốt
nhất hiện tại thì phép move này vẫn ñược chấp nhận sử dụng (aspiration
criteria). Các thuật giải Tabu Search tiêu biểu cho bài toán VRP gồm
[5][6][7][15].
• Thuật giải tôi luyện thép (Simulated Annealing): bắt nguồn từ thuật giải
Metropolis-Hasting [22], thuật giải tôi luyện thép mô phỏng quá trình luyện
thép trong tự nhiên vào lý thuyết ñề giải các bài toán tối ưu tổ hợp khó. Ứng
dụng tiêu biểu của thuật giải tôi luyện thép cho bài toán VRP có thể kể ñến
bài báo [42]
• Các phiên bản deterministic của thuật giải tôi luyện thép: trong các phiên
bản này, việc quyết ñịnh xem có chấp nhận một lời giải xấu hơn lời giải
hiện tại hay không sẽ không dựa vào xác suất, mà ñược quyết ñịnh dựa vào
kết quả của quá trình tìm kiếm trước ñó. Các thuật giải tiêu biểu thuộc nhóm
này gồm: thuật giải Threshold accepting, Record-to-record travel [43] và
Great Deluge.
• Thuật giải Variable Neighborhood Search (VNS): thuật giải VNS ñặc biệt ở
chỗ cho phép tìm kiếm trên nhiều tập láng giềng khác nhau, nhờ ñó tăng
tính ña dạng của quá trình tìm kiếm. Các tập láng giềng sẽ ñược ñịnh nghĩa
sẵn theo một ñộ ưu tiên cho trước, và tại mỗi bước lặp, các tập láng giềng sẽ
ñược duyệt lần lượt, nếu lời giải láng giềng phát sinh ngẫu nhiên tập láng
giềng có ñộ ưu tiên cao hơn không thể cải thiện chất lượng lời giải hiện tại,
tập láng giềng kế tiếp sẽ ñược chọn. ðể nâng cao chất lượng tìm kiếm, thuật
giải VNS có thể kết hợp với các local search khác từ ñơn giản (thuật giải leo
ñồi) ñến phức tạp (các metaheuristics khác thuộc nhóm local search). Các
13
thuật giải VNS cho hiệu quả cao ñối với các bài toán VRP ñược ñề cập ñến
trong các bài báo [44] và [45]
• Thuật giải Large Neighborhood Search [14] và Adaptive Large
Neighborhood Search [21]: các miền láng giềng ñược xét tại mỗi bước lặp
của các thuật giải thuộc nhóm này thường có kích thước rất lớn, ñiều này sẽ
giúp quá trình tìm kiếm có thể vượt ra khỏi những ñiểm tối ưu cục bộ.
+ Nhóm các thuật giải dựa trên quần thể (population-based metaheuristics) gồm:
các thuật giải tiến hóa (Evolutionary Algorithms, gồm thuật giải di truyền [26]
– Genetic Algorithm, và thuật giải Memetic [46]), những năm gần ñây còn có
một số thuật giải khác dựa trên quy luật sống bầy ñàn của các loại ñộng vật
trong tự nhiên như thuật giải bầy kiến (Ant Colony Algorithm) [9], thuật giải
Particle Swarm Optimization [47].
14
Hình 1.1. Các hướng tiếp cận cho bài toán VRP
15
Chương 2. Bài toán giao hàng của công ty cổ phần sữa
Việt Nam - Vinamilk
2.1. Một số khái niệm và ñặc trưng của bài toán
Trạm xuất phát (home depot) và các kho hàng(depot) :
Vào ñầu ngày, tất cả các xe của công ty ñều khởi hành từ một trạm xuất phát duy nhất
(Xí Nghiệp Kho Vận Vinamilk – TP.HCM) và quay trở lại trạm xuất phát này sau khi
ñã giao hết số hàng ñược phân. Trong quá trình ñi, xe sẽ ñến các kho hàng ñể lấy hàng
ñem ñi giao cho các khách hàng. Hiện nay, Vinamilk TP.HCM có 2 kho hàng:
- Kho thứ nhất: Kho Trường Thọ -Thống Nhất (Quận Thủ ðức)
- Kho thứ hai: Nhà máy sữa Sài Gòn (Quận 12)
Các kho hàng này chỉ mở cửa cho xe lấy hàng trong khoảng thời gian từ 6h30 ñến 15h.
Do ràng buộc về kích thước mặt bằng của kho, tại cùng một thời ñiểm, chỉ có tối ña 3
xe ñược vào mỗi kho cùng một lúc.
Các loại mặt hàng:
Các loại mặt hàng lạnh của Vinamilk bao gồm hai nhóm:
- Nhóm kem – gồm các sản phẩm kem các loại.
- Nhóm sữa chua - gồm các sản phẩm: sữa chua các loại, fromage, provi.
Các xe chở hàng lạnh ñều yêu cầu phải có máy lạnh, nhưng nhóm kem yêu cầu nhiệt
ñộ thấp hơn nhóm sữa chua và mặt hàng khác. Do ñó, xe chở ñược kem thì cũng có thể
chở ñược các mặt hàng thuộc nhóm sữa chua, nhưng ñiều ngược lại thì không ñúng.
ðội xe:
ðội xe lạnh của Vinamilk TP.HCM hiện nay gồm 23 chiếc (thuộc tổ xe Lạnh Phố),
với sức chứa và khả năng chở khác nhau. Trong ñó, có 11 xe có thể chở ñược cả kem
và sữa chua. Các xe còn lại chỉ có thể chở sữa chua. Tại một thời ñiểm, mỗi xe chỉ có
thể chở một nhóm mặt hàng. Ở ñây, chi phí vận chuyển của các xe ñược xem là như
nhau (mặc dù sức chứa khác nhau). Mỗi xe có hai thông tin quan trọng: loại mặt hàng
mà xe có thể chở, sức chứa (tương ứng với từng loại mặt hàng). Vào ñầu ngày, tất cả
các xe ñều tập trung sẵn ở một ñịa ñiểm chung duy nhất: Xí nghiệp kho vận. Các xe
phải quay trở lại ñịa ñiểm này sau khi kết thúc lịch trình hoạt ñộng trong ngày của
mình. Thông tin cụ thể về sức chứa của từng xe ñược liệt kê trong Bảng 2.1.
Bảng 2.1. Thông tin chi tiết về ñội xe của Vinamilk
16
STT
Sức chứa
(ñơn vị: thùng)
STT
Sức chứa
(ñơn vị: thùng)
Sữa chua
Kem
Sữa chua
Kem
1
750
0
13
750
400
2
750
0
14
750
400
3
350
250
15
750
400
4
200
150
16
750
400
5
400
0
17
350
250
6
350
150
18
350
250
7
200
150
19
750
0
8
200
0
20
750
0
9
350
0
21
750
0
10
450
0
22
750
0
11
350
0
23
750
0
12
360
250
Chuyến:
Một chuyến của một xe ñược ñịnh nghĩa là một ñường ñi của xe mà ñiểm xuất phát là
một kho hàng, và trong mỗi chuyến thì xe chỉ có thể ñến lấy hàng tại mỗi kho nhiều
nhất là một lần; các xe buộc phải giao hết toàn bộ số hàng ñã lấy trong một chuyến
trước khi bắt ñầu một chuyến mới; yêu cầu này giúp tài xế tránh ñược khó khăn khi
phải xếp hàng lên xe khi lấy hàng ở các kho xen kẽ nhau nhiều lần trong quá trình ñi
giao hàng. Bài toán cho phép một xe có thể ñi nhiều chuyến trong một ngày.
ðơn hàng:
Khái niệm khách hàng(customer) trong bài toán VRP lý thuyết sẽ tương ứng với khái
niệm ñơn hàng trong bài toán thực tế này – khi ñó, các ñơn hàng khác nhau có thể
thuộc cùng một ñịa ñiểm. Một ñơn hàng bao gồm các thông tin sau:
- ðịa chỉ giao hàng
- Loại mặt hàng (mỗi ñơn hàng chỉ thuộc một loại mặt hàng duy nhất)
- Số lượng hàng yêu cầu
- Kho hàng chứa ñơn hàng này (hàng ñể giao cho mỗi ñơn hàng sẽ ñược ñóng gói
lại sẵn thành kiện và ñặt tại một kho nào ñó, khi ñi giao hàng, các xe bắt buộc
phải ñến ñúng kho và lấy ñúng kiện hàng của ñơn hàng tương ứng)
Thời gian lấy/giao hàng:
Thời gian lấy hàng t
ại kho v
sẽ là tổng của hai th
ành ph
hàng phải lấy), và th
ời gian lấy(giao)
ñược tính bằng công thức:
Thời gian lấy h
àng = t
Trong bài toán này, th
ời gian l
làm thủ tục tại mỗi ñịa chỉ
giao hàng là 10 phút, t
Hình 2.1. Hình minh h
ọa các khái niệm trong b
2.2. Ràng buộc củ
a bài toán
Bài toán có 7 ràng bu
ộc sau:
1. Các xe ñư
ợc phép ghé kho lấy h
2. Do gi
ới hạn về thời gian hoạt ñộng của xe tải trong th
phép bắt ñầu giao h
àng t
xe kết thúc trước
8h, xe ph
3. Th
ời ñiểm trở về lại trạm xuất phát của các xe không ñ
4. T
ại mỗi thời ñiểm, mỗi xe chỉ ñ
5. Lượng hàng mà m
ỗi xe chở
của xe ñ
ối với loại mặt h
6. ð
ối với mỗi chuyến, xe phải giao hết to
chuy
ến hiện tại ñể bắt ñầu một chuyến ñi mới
17
ại kho v
à thời gian giao hàng tại mỗi ñịa chỉ giao h
àng c
ành ph
ần: thời gian làm thủ tục (không ph
ụ thuộc v
ời gian lấy(giao)
hàng (phụ thuộc vào số lư
ợng h
àng = t
ổng số thùng hàng * t
ốc ñộ lấy(giao) h
ời gian l
àm thủ tục tại kho ñược quy ñịnh l
à 15 phút, th
giao hàng là 10 phút, t
ốc ñộ lấy
(giao) hàng là 3 giây/thùng
ọa các khái niệm trong b
ài toán giao hàng c
ủa Vinamilk
a bài toán
và thành phần của lời giải
ộc sau:
ợc phép ghé kho lấy h
àng trong kho
ảng thời gian từ 6h30 ñến 15h
ới hạn về thời gian hoạt ñộng của xe tải trong th
ành ph
ố, các xe chỉ ñ
àng t
ừ 8h. Nghĩa là, nếu ñợt ghé kho lấy h
àng ñ
8h, xe ph
ải ñứng chờ cho ñến 8h mới ñư
ợc phép ñi giao h
ời ñiểm trở về lại trạm xuất phát của các xe không ñ
ược vư
ợt quá 15h
ại mỗi thời ñiểm, mỗi xe chỉ ñ
ược chở một loại hàng duy nhất.
ỗi xe chở
tại mỗi thời ñiểm không ñược vư
ợt
ối với loại mặt h
àng mà xe ñang chở.
ối với mỗi chuyến, xe phải giao hết to
àn bộ số hàng ñã lấy tr
ư
ến hiện tại ñể bắt ñầu một chuyến ñi mới
àng c
ủa từng xe
ụ thuộc v
ào số lượng
ợng h
àng phải lấy,
ốc ñộ lấy(giao) h
àng
à 15 phút, th
ời gian
(giao) hàng là 3 giây/thùng
ủa Vinamilk
ảng thời gian từ 6h30 ñến 15h
ố, các xe chỉ ñ
ược
àng ñ
ầu tiên của
ợc phép ñi giao h
àng.
ợt quá 15h
.
ợt
quá sức chứa
ư
ớc khi kết thúc
18
Tất cả các ràng buộc trên ñều là các ràng buộc cứng, nghĩa là lời giải của bài toán chỉ
ñược chấp nhận khi thỏa tất cả các ràng buộc trên.
Lời giải của bài toán gồm có ba thành phần:
-
Tập xe sẽ sử dụng ñể giao hàng (là tập con của tập 23 xe của xí nghiệp)
-
Thông tin về danh sách khách hàng, thứ tự giao hàng của từng chuyến của các
xe trong tập xe ñược chọn
-
Thứ tự xếp hàng của các xe tại từng kho.
2.3.
Mục tiêu của bài toán
Bài toán có hai mục tiêu:
-
Mục tiêu thứ nhất: Cực tiểu hóa số xe cần dùng. ðây là mục tiêu quan trọng
nhất và có ñộ ưu tiên cao nhất.
-
Mục tiêu thứ hai: Cực tiểu hóa tổng thời gian di chuyển (total traveling time)
của tất cả các xe – thời gian di chuyển này không tính thời gian chất hàng/bốc
dỡ hàng tại kho/vị trí khách hàng.
2.4.
Các bài toán liên quan
Bài toán giao hàng lạnh trong thành phố của Vinamilk là một dạng kết hợp của nhiều
biến thể của bài toán VRP trong lý thuyết, bao gồm:
-
Bài toán VRP với khoảng cách bất ñối xứng (AVRP): do dữ liệu ñường ñi lấy
từ thực tế nên ñồ thị biểu diễn khoảng cách giữa các ñiểm là ñồ thị có hướng.
-
Bài toán VRP với ràng buộc sức chứa (CVRP): các xe ñều có ràng buộc về sức
chứa
-
Bài toán VRP với ràng buộc về ñộ dài tối ña của quãng ñường mà mỗi xe có thể
ñi (DVRP): các xe phải về kho trước khoảng thời gian quy ñịnh là 4h chiều.
-
Bài toán VRP cho phép một xe ñi nhiều chuyến (VRPM): các xe ñược phép ñi
nhiều chuyến trong một ngày.
-
Bài toán VRP với nhiều loại xe khác nhau (Heterogeneous VRP): tập 23 xe cho
trước có sức chứa khác nhau ñối với từng loại mặt hàng.
2.5.
Sự khác biệt của bài toán so với các bài toán VRP ñã ñược công bố
-
Bài toán của Vinamilk khác với các bài toán CVRP cơ bản vì có ñến hai loại
mặt hàng, và sức chứa của các xe cũng tùy thuộc vào từng loại mặt hàng.