Tải bản đầy đủ (.doc) (20 trang)

Kết hợp thuật giải Large Neighborhood Search và Simulated Annealing cho một biến thể thực tế của bài toán Vehicle Routing

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (437.53 KB, 20 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Họ tên học viên cao học: Đặng Thị Thanh Nguyên
Tên đề tài:
Kết hợp thuật giải Large Neighborhood Search và Simulated Annealing
cho một biến thể thực tế của bài toán Vehicle Routing
Chuyên ngành: Khoa Học Máy Tính
Cán bộ hướng dẫn : TS. Đinh Bá Tiến
ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Họ tên HVCH: Đặng Thị Thanh Nguyên
ĐỀ CƯƠNG NGHIÊN CỨU ĐỀ TÀI
LUẬN VĂN THẠC SĨ
Tên đề tài:
Thuật giải Large Neighborhood Search và Simulated Annealing cho một biến thể thực tế của
bài toán Vehicle Routing
Chuyên ngành: Khoa Học Máy Tính
Mã số: 02 4801 31
Cán bộ hướng dẫn: TS. Đinh Bá Tiến
Tp. HCM, tháng 8 năm 2010
1. Giới thiệu tổng quan
1.1. Giới thiệu bài toán Vehicle Routing (Vehicle Routing Problem – VRP)
Bài toán Vehicle Routing Problem - gọi tắt là VRP là bài toán mà trong đó ta có sẵn một tập các xe
và một tập các khách hàng, 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 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) 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 (chính là 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ó. Đâ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. Trong bài toán này, các xe (vehicle) xuất phát từ
các kho hàng (depot) và đi giao hàng cho các khách hàng (customer), 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), 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, nó 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 (route
length), loại mặt hàng (commodit type) mà xe có thể chở, …
- Kho hàng (depot): là nơi chứa hàng hóa, 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 (commodity type), 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, thời gian thực hiện việc giao (nhận) hàng (service time),
- Tuyến đường (route): tuyến đường 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 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:
- Bài toán VRP với khoảng cách bất đối xứng (Asymmetric VRP, gọi tắt là AVRP): 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, được gọi là kho hàng
chủ (home depot) của xe.
- 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ó một 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ở trong một
tuyến đường không được vượt quá sức chứa của xe. Nếu thay ràng buộc sức chứa bằng ràng
buộc về độ dài tối đa của quãng đường mà mỗi xe đi, ta có một biến thể khác, đó là bài toán
DVRP (Distance-Constrained VRP): gắn với mỗi loại xe là một tham số thể hiện độ dài
quãng đường tối đa mà mỗi xe có thể đ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, khoảng thời gian này được biểu diễn bởi đoạn [a
i
,
b
i
] (tương ứng với khách hàng thứ i), nếu xe đến giao hàng cho 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, đồng thời 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 và đem đi giao (delivery) cho khách hàng khác, 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 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 tuyến đường, 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:
+ 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ế. 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 và đượ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
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. Hình 1 trình bày sơ đồ tóm tắt các hướng tiếp cận cho
bài toán VRP.
- 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ế 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 routes
tương ứng với n khách hàng, sau đó, các route 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 route để ghép lại
với nhau dựa trên một hàm saving. Nhiều tác giả đã 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 route 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 route, các route 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 route thường dựa trên
nguyên lý của thuật 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 route 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 route, bước thứ 2: xác
định đường đi cụ thể cho từng route. 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 route duy nhất
(intra-route moves) phép move tác động lên nhiều route 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:
+ Nhóm các thuật giải tìm kiếm cục bộ (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 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ó. Chi tiết của thuật giải sẽ được giới thiệu
ở phần 3.2. Ứ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 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ộ. Chi tiết của các thuật giải thuộc nhóm này sẽ được trình bày ở
phần 3.3

+ 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]
Hình 1Hin
(*): Hướng tiếp cận kết hợp giữa Simulated Annealing và Large Neighborhood Search, đây là hướng tiếp cận mà đề tài sẽ áp dụng
Hình 1. Các hướng tiếp cận cho bài toán VRP
(*)
2. Mục đích nghiên cứu của đề tài
Bài toán VRP là bài toán được ứng dụng rất rộng rãi trong nhiều lĩnh vực của đời sống, chẳng
hạn: bài toán giao hàng của các công ty thực phẩm, bài toán chuyên chở hàng của các công ty
vận tải,… Mỗi bài toán thường có các ràng buộc đặc trưng riêng, ứng với yêu cầu cụ thể của
thực tế. Đề 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ài toán giao
hàng lạnh trong thành phố 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
dưới hai 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 rất 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. Mục đích của đề tài là áp dụng biến thể kết hợp của thuật giải Large Neighborhood
Search và thuật giải Simulated Annealing – một trong những hướng tiếp cận được đánh giá
cao đối với các bài toán VRP hiện nay [25]. – vào bài toán giao hàng của Vinamilk.
3. Đối tượng nghiên cứu
3.1. Bài toán giao hàng lạnh trong thành phố của công ty Cổ phần sữa Việt Nam
Vinamilk, cơ sở TP.HCM
Bài toán giao hàng của công ty Cổ phần sữa Việt Nam Vinamilk là một biến thể thực tế (kết
hợp của nhiều biến thể) của bài toán VRP. Ngoài các ràng buộc thường thấy trong các bài

toán VRP lý thuyết, bài toán này còn có một số ràng buộc rất đặc trưng, xuất phát từ yêu cầu
của thực tế.
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ọ (TRF) và kho Thống Nhất (TNF) – Quận Thủ Đức (2
kho này có vị trí rất gần nhau nên có thể xem như 1 kho duy nhất)
- Kho thứ hai: Kho Sài Gòn (SGF) – 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ừ 6:30 đến 15:00. 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 một 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ó ba thông tin quan trọng: sức chứa, loại mặt hàng mà xe có thể chở và tổng thời gian
đi giao hàng tối đa mà xe có thể đi trong một ngày (hiện nay được quy định là 7 tiếng – không
tính giờ nghỉ trưa).

Thông tin cụ thể của từng xe được liệt kê trong bảng sau:
STT SỐ XE Hiệu xe
Sức chứa
(đơn vị: thùng)
Sữa chua Kem
1 54V 7817 MITSU 750 0
2 54V 7818 MITSU 750 0
3 54T 4098 ISUZU 350 250
4 54M 9608 DAIHATSU 200 150
5 54T 6764 ISUZU 400 0
6 57H 5295 ISUZU 350 150
7 57K 0327 DAIHATSU 200 150
8 54M 9607 DAIHATSU 200 0
9 57H 4781 ISUZU 350 0
10 54S 7096 ISUZU 450 0
11 57H 4932 ISUZU 350 0
12 54T 0389 ISUZU 360 250
13 54L 6739 ISUZU 750 400
14 54L 6790 ISUZU 750 400
15 54L 6683 ISUZU 750 400
16 54V 6791 ISUZU 750 400
17 54Y 6603 ISUZU 350 250
18 54Y 7955 ISUZU 350
250
19 57M 0653 HINO 750 0
20 57M 0656 HINO 750 0
21 57M 0752 HINO 750 0
22 57M 0667 HINO 750 0
23 57M 0779 HINO 750 0
Route:

Một route 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 route 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 route trước khi bắt đầu một route mới;
yêu cầu này giúp tài xế tránh được khó khăn khi phải 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 route 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. 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, số lượng hàng (mỗi đơn hàng chỉ thuộc một loại mặt hàng duy nhất)
- Kho hàng của đơn hàng này (mỗi đơn hàng chỉ thuộc một kho hàng duy nhất)
Thời gian lấy/giao hàng:
Thời gian lấy hàng tại kho và thời gian giao hàng tại mỗi địa chỉ giao hàng của từng xe sẽ là
tổng của hai thành phần: thời gian làm thủ tục (không phụ thuộc vào số lượng hàng phải lấy),
và thời gian lấy(giao) hàng (phụ thuộc vào số lượng hàng phải lấy, được tính bằng công thức:
thời gian lấy hàng = tổng số thùng hàng * tốc độ lấy(giao) hàng). Trong bài toán này, thời
gian làm thủ tục tại kho được quy định là 15 phút, thời gian làm thủ tục tại mỗi địa điểm giao
hàng là 10 phút, tốc độ lấy(giao) hàng là 3 giây/thùng
Mục tiêu của bài toán:
Mục tiêu của bài toán là tìm ra cách điều phối các xe sao cho cực tiểu hóa số lượng xe cần
dùng để giao hết lượng hàng yêu cầu trong ngày: mục tiêu này có độ ưu tiên cao nhất, ngoài
ra, một mục tiêu nữa là phải tiểu hóa tổng thời gian giao hàng của tất cả các xe
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.
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.
- Bài toán của Vinamilk tuy có nhiều kho hàng, nhưng lại khác với bài toán Multi-depot
VRP trong lý thuyết vì: đối với bài toán Multi-depot VRP, mỗi xe sẽ thuộc một kho cố
định duy nhất, trong khi ở bài toán của Vinamilk, các xe có thể đến bất kì kho hàng
nào để lấy hàng; mặt khác, các khách hàng trong bài toán Multi-depot VRP có thể
nhận hàng từ bất cứ kho hàng nào, trong khi ở bài toán của Vinamilk, mỗi đơn hàng
đã được chỉ định sẵn kho chứa, và các xe bắt buộc phải giao đúng gói hàng của khách
hàng tại kho đã chỉ định.
- Có lồng ghép một bài toán Scheduling khác ở bên trong – bài toán Flexible Job Shop
Scheduling: do tại mỗi thời điểm, chỉ có 3 xe được vào một kho hàng lấy hàng cùng
lúc, do đó, nếu kho đang hết chỗ, xe đến lấy hàng phải đứng chờ cho đến khi có chỗ
trống thì mới được vào, nếu xe phải chờ quá lâu thì có thể sẽ không kịp trở về xí
nghiệp vào cuối này theo thời gian quy định (trước 4h chiều). Do đó, ngoài việc định
tuyến cho các xe, một yêu cầu khác của bài toán này là phải xếp lịch vào kho cho các
xe sao cho tận dụng được không gian của các kho một cách tốt nhất. Bài toán xếp lịch
vào kho cho các xe có thể xem như một bài toán Flexible Job Shop Scheduling – một
lớp bài toán con của nhóm bài toán Machine Scheduling, và cũng thuộc lớp bài toán
NP khó - với hàm mục tiêu là cực tiểu hóa tổng số thời gian về kho trễ của các xe.
Theo khảo sát của tác giả thì cho đến nay, bài toán VRP kết hợp với bài toán xếp lịch
vào kho lấy hàng như vậy chỉ mới được đề cập đến trong một bài báo duy nhất [39].,
và trong bài báo này, chỉ có một kho hàng và tại mỗi thời điểm chỉ có 1 xe được phép
vào kho lấy hàng.
3.2. Thuật giải Simulated Annealing
Thuật giải Simulated Annealing (gọi tắt là SA), tạm dịch là “tôi luyện thép” là một Local
Search mang tính xác suất, bắt nguồn từ thuật toán Metropolis-Hasting [22]. do tác giả

Metropolis và các cộng sự đề xuất vào năm 1953. Những năm sau đó, SA bắt đầu được chú ý
nhiều hơn và có rất nhiều nghiên cứu cả lý thuyết lẫn ứng dụng. Dần dần SA đã trở thành một
công cụ tối ưu hóa được các nhà nghiên cứu sử dụng rất phổ biến. Nổi bật là nghiên cứu của
Kirkpatrick và các cộng sự vào năm 1983 [23] Chính ông là người đầu tiên dựa vào ý tưởng
sự tương tự giữa quá trình tôi luyện với việc giải quyết một bài toán tối ưu tổ hợp để phát
triển thuật giải SA. Cũng giống nhau các Local Search khác, tại mỗi bước lặp, SA chỉ xét một
lời giải hiện tại duy nhất. Các lời giải thuộc miền láng giềng của lời giải hiện tại sẽ được
duyệt, và nếu được chọn, một lời giải láng giềng sẽ thay thế lời giải hiện tại để trở thành lời
giải hiện tại mới và chuyển sang bước lặp kế.
Hình 2. Mã giả của một thuật giải SA đơn giản
Hình 2 thể hiện mã giả của một thuật giải SA đơn giản, trong đó:
- x
0
: lời giải thu được từ quá trình khởi tạo.
- x: lời giải hiện tại đang xét.
- x’ : lời giải láng giềng được chọn để so sánh với lời giải hiện tại x.
- x* : lời giải tốt nhất hiện tại.
- N(x): Tập láng giếng của lời giải x
- f(x): hàm mục tiêu.
- TP: nhiệt độ hiện tại
- α: Hệ số giảm nhiệt độ
- r: Là một số ngẫu nhiên được phát sinh.
- itermax: Số vòng lặp tối đa của bài toán.
- nitermax: Số vòng lặp liên tiếp tối đa mà hàm mục tiêu f(x) không thể cải thiện được.
- minoritermax: Số vòng lặp tối đa cho phép khi sử dụng cùng một nhiệt độ TP.
- Các biến iter, niter, minoriter: các biến chạy dùng để so sánh với các giá trị itermax,
nitermax, minoritermax để xác định điều kiện dừng của thuật giải.
Trong Hình 2, thuật giải SA có hai vòng lặp While lồng nhau, vòng lặp ngoài để điều khiển
biến nhiệt độ TP, trong khi vòng lặp trong sẽ thực hiện tìm kiếm tại một mức nhiệt độ cố
định. Từ điều kiện cho phép chấp nhận lời giải mới (điều kiện

T
f
er


<
), ta có thể thấy sự ảnh
hưởng của biến nhiệt độ T lên sự đa dạng của quá trình tìm kiếm. Nếu biến T có giá trị lớn,
khả năng chấp nhận các lời giải không tốt hơn lởi giải hiện tại sẽ cao hơn so với khi biến T có
giá trị nhỏ. Do đó, T càng nhỏ thì càng đẩy nhanh quá trình hội tụ về lời giải tối ưu, nhưng có
thể sẽ khiến quá trình tìm kiếm bị mắc kẹt ở một điểm tối ưu cục bộ và không thể thoát ra
được. T càng lớn thì khả năng vượt ra khỏi vùng tối ưu cục bộ của quá trình tìm kiếm sẽ càng
cao, nhưng có thể khiến việc hội tụ về lời giải tối ưu chậm hơn. Do đó, việc chọn giá trị khởi
tạo TP
0
ban đầu việc điều khiển giá trị T trong suốt quá trình tìm kiếm là một vấn đề rất quan
trọng, ảnh hưởng lớn đến chất lượng của quá trình tìm kiếm.
3.3. Thuật giải Large Neighborhood Search
Ý tưởng của thuật giải Large Neighborhood Search (gọi tắt là LNS) được đề nghị lần đầu tiên
bởi Shaw [14]. vào năm 1998. Thuật giải LNS là một thuật giải Local Search thuộc nhóm các
thuật giải Very Large Scale Neighborhood Search (gọi tắt là VLSN – các thuật giải Local
Search với các miền láng giềng có kích thước rất lớn và biến động). Với các thuật giải VLSN,
các miền láng giềng được xét tại mỗi bước lặp 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ờ đó có thể tìm ra được
những lời giải gần với tối ưu toàn cục. Tuy nhiên, chính vì kích thước miền láng giềng lớn mà
các thuật giải VLSN khi chạy thường tốn rất nhiều thời gian. Nhiều kĩ thuật đã được đề nghị
để khắc phục vấn đề này, từ đó tạo nên nhiều biến thể VLSN khác nhau. Thuật giải LNS
chính là một trong những biến thể này. Trong thuật giải LNS, việc duyệt miền láng giềng của
lời giải hiện tại được thực hiện thông qua hai bước chính: bước phá hủy (destroy) và bước
chỉnh sửa (repair) [21]. Tại bước phá hủy, một số phần tử của lời giải hiện tại sẽ bị loại ra, tạo

nên một lời giải thành phần (partial solution), sau đó, tại bước chỉnh sửa, các phần tử vừa bị
loại sẽ lần lượt được thêm trở lại vào lời giải thành phần của bước trước, để tạo lại một lời
giải hoàn chỉnh. Như vậy, miền láng giềng tại mỗi bước lặp chính là tập các lời giải đầy đủ
mới thu được sau khi áp dụng hai bước phá hủy và chỉnh sửa lên lời giải hiện tại. Phương
pháp cụ thể được chọn để thực hiện bước phá hủy và bước chỉnh sửa sẽ quyết định lượng thời
gian cần tiêu tốn cho một bước lặp. Phương pháp đơn giản nhất là chọn ngẫu nhiên tại bước
phá hủy và thực hiện thêm các phần tử vào tại bước chỉnh sửa bằng một thuật giải tham lam
đơn giản.
Hình 3 minh họa một bước lặp của thuật giải LNS cho bài toán CVRP với 21 khách hàng,
trong đó, hình phía trên bên trái là lời giải hiện tại, hình phía trên bên phải là lời giải sau khi
thực hiện bước phá hủy, lời giải phía dưới là lời giải thu được sau khi thực hiện bước chỉnh
sửa. Ở đây, tại bước phá hủy, 6 khách hàng sẽ được chọn ngẫu nhiên để loại ra khỏi lời giải
hiện tại (các khách hàng bị loại: ), và sau đó sẽ thêm lần lượt trở lại dựa trên nguyên tắc của
thuật giải tham lam như sau: tại mỗi bước thêm, chọn khách hàng c sao cho cực tiểu hóa ∆t
c,
trong đó ∆t
c
là quãng đường phải đi thêm khi thêm c vào vị trí tốt nhất (vị trí mà tổng quãng
đường phải đi thêm là ngắn nhất).
Hình 3. Mình họa một bước lặp của thuật giải LNS cho bài toán CVRP với 21 khách
hàng [21].
Hình 4. Mã giả của thuật giải LNS [21].
Hình 4 minh họa mã giả của thuật giải LNS, trong đó, đầu vào của thuật giải là một lời giải
hợp lệ (feasible solution)x, nghĩa là một lời giải thỏa tất cả các ràng buộc cứng, x
b
là lời giải
tốt nhất hiện tại, d(.) là hàm phá hủy, r(.) là hàm chỉnh sửa. Ở đây, tại mỗi bước lặp, thay vì
quét toàn bộ miền láng giềng và chọn ra lời giải tốt nhất, thuật giải chỉ chọn một lời giải duy
nhất x’ thuộc tập láng giềng N(x) (có thể phát sinh ngẫu nhiên, hoặc chọn lời giải tốt nhất
thuộc một tập con rất nhỏ của tập láng giềng N(x)) (dòng 4). Tiêu chuẩn accept(x’.x) sẽ quyết

định xem có chọn lời giải x’ thay thế cho lời giải hiện tại hay không, hai tiêu chuẩn
accept(x’.x) phổ biến nhất là:
- Chỉ chấp nhận các lời giải tốt hơn lời giải hiện tại: Nếu x’ < x thì accept(x’.x)=true,
ngược lại accept(x’.x)=false
- Chấp nhận theo tiêu chuẩn của thuật giải Simulated Annealing: Nếu
T
)x(c)'x(c
er


<
thì
accept(x’.x)=true, ngược lại accept(x’.x)=false, với r là một số ngẫu nhiên thuộc đoạn
[0,1]
Việc chọn phương pháp phá hủy và phương pháp chỉnh sửa sao cho hợp lý là các vấn đề rất
quan trọng, quyết định tính hiệu quả của thuật giải LNS.
- Quá trình phá hủy: việc chọn kích thước tập các phần tử bị loại ra khỏi lời giải hiện tại
rất quan trọng, nếu con số này quá nhỏ, quá trình tìm kiếm sẽ khó thoát ra khỏi tối ưu
cục bộ, nhưng nếu con số này quá lớn, việc tìm kiếm sẽ mất rất nhiều thời gian. Hơn
4
4
4
8
8
8
10
9 9
9
10
10

11
11 11
10
12 12
12
13 13
13
14
14
14
15
15
15
16
16
16
17 17
17
18
18
18
19 19
19
20 20
20
21
21
21
nữa, chiến lược chọn tập các phần tử bị loại cũng phải được chọn sao quá trình tìm
kiếm có thể bao quát hết không gian lời giải, hoặc hướng được đến nhiều vùng không

gian lời giải có khả năng chứa tối ưu toàn cục, tránh việc “lẩn quẩn” quanh một miền
không gian con duy nhất. Do đó, các chiến lược phá hủy thường có chứa yếu tố mang
tính xác suất.
- Quá trình chỉnh sửa: quá trình chỉnh sửa có thể thực hiện bằng phương pháp heuristic
(thông dụng nhất là thuật giải tham lam), hoặc bằng một thuật toán chính xác (có thể
mô hình hóa về dạng Quy hoạch ràng buộc-Constraint Programming hoặc Quy hoạch
nguyên hỗn hợp-Mixed Integer Programming và dùng các solver có sẵn để giải). Nếu
sử dụng các phương pháp chính xác để giải, trong một số trường hợp sẽ giúp đạt đến
tối ưu toàn cục nhanh hơn, tuy nhiên, trong một số trường hợp, có thể làm giảm tính
đa dạng hóa (diversification) của quá trình tìm kiếm. Do đó, cần cân nhắc và chọn lựa
phương pháp giải quyết phù hợp tùy từng trường hợp cụ thể.
3.4. Thuật giải Large Neighborhood Search và thuật giải Simulated Annealing
cho bài toán VRP
P. Shaw - tác giả đề xuất LNS, cũng chính là người đầu tiên áp dụng LNS cho bài toán VRP
[14]. vào năm 1998. Trong bước phá hủy, tác giả đề xuất một độ đo để chọn danh sách các
khách hàng sẽ bị loại ra lời giải hiện tại: độ đo mức liên quan giữa các khách hàng:
Trong đó, R(i,j) là độ đo mức liên quan giữa hai khách hàng i và j, c
ij
là khoảng cách giữa i và
j đã được chuẩn hóa về đoạn [0,1], V
ij
bằng 0 nếu i và j cùng thuộc đường đi của một xe,
ngược lại, V
ij
sẽ bằng 1. Với một nhóm các khách hàng có độ liên quan cao với nhau thì khi
một khách hàng được chọn, khả năng các khách hàng còn lại trong nhóm cũng được chọn sẽ
cao. Tuy nhiên, để tránh trường hợp một nhóm khách hàng được chọn đi chọn lại nhiều lần,
tác giả đã đưa thêm một yếu tố ngẫu nhiên vào để làm tăng độ đa dạng của quá trình tìm
kiếm. Số khách hàng được chọn trong bước phá hủy là một tham số động, được tăng lên sau
mỗi α bước lặp liên tiếp mà chất lượng lời giải tốt nhất không được cải thiện.

Tại bước chỉnh sửa, tác giả sử dụng kĩ thuật tìm kiếm Limited Discrepancy Tree [24]. để tìm
cách thêm các khách hàng vừa bị loại vào trở lại lời giải bán phần thu được từ bước trước.
Tác giả Shaw [14]. đã thử nghiệm phương pháp LNS trên nhiều bộ dữ liệu chuẩn khác nhau
của hai bài toán VRP: 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 VRPTW (bài toán VRP với ràng buộc thời gian giao hàng – mục tiêu của bài toán này rất
giống với mục tiêu mà đề tài này đang xét tới: cực tiểu hóa tổng số xe cần dùng và cực tiểu
hóa tổng đường đi của các xe). Kết quả cho thấy trong phần lớn các trường hợp, LNS đều tìm
được lời giải có cùng chất lượng với lời giải tốt nhất được công bố, ngoài ra, LNS còn tìm ra
thêm được 7 (/18 bộ dữ liệu) lời giải tốt nhất mới đối với bài toán CVRP, và 3 (/29 bộ dữ liệu)
đối với bài toán VRPTW.
Tiếp nối kết quả của Shaw, một số nhóm tác giả đã tiếp tục cải tiến việc áp dụng thuật giải
LNS vào các biến thể khác của bài toán VRP và đều thu được kết quả tốt, tiêu biểu nhất có thể
kể đến công trình của các tác giả R. Bent và P. V. Hentenryck [25]., D. Mester và O. Bräysy
[26]., E. Prescott-gagnon, G. Desaulniers và L. M. Rousseau [27]., D. Pisinger và S. Ropke
[28] Trong các biến thể cải tiến, các tác giả thường kết hợp thêm một số hướng tiếp cận khác
nhằm tăng tính hiệu quả quá trình tìm kiếm, trong đó, sự kết hợp giữa thuật giải Simulated
Annealing với thuật giải LNS tỏ ra khá hiệu quả cho trường hợp hàm mục tiêu là sự kết hợp
giữa cực tiểu hóa số xe và cực tiểu hóa tổng quãng đường phải đi của các xe [25].[28]
4. Các phương pháp nghiên cứu
Thực hiện:
- Khảo sát một số thuật giải heuristic cổ điển cho bài toán VRP (nhóm các thuật giải
heursitic khởi tạo – constructive heuristic) để thực hiện khởi tạo lời giải ban đầu.
- Khảo sát các thuật giải dựa trên Simulated Annealing và Variable Neighborhood
Search cho bài toán VRP và các biến thể của nó.
- Khảo sát các hướng tiếp cận đơn giản cho bài toán Flexible Job Shop Scheduling (gồm
2 phần: hướng tiếp cận khởi tạo lời giải và hướng tiếp cận cho phép cải thiện chất
lượng lời giải sẵn có)
- Thu thập dữ liệu từ xí nghiệp kho vận – công ty Cổ phần sữa Việt Nam Vinamilk.
- Thiết kế và cài đặt các thuật giải biến thể khác nhau dựa trên sự kết hợp giữa thuật giải
Simulated Annealing và thuật giải Variable Neighborhood Search cho bài toán của

Vinamilk.
Phương pháp đánh giá:
- So sánh kết quả cài đặt với kết quả sắp tay của công ty Vinamilk hiện nay (trên 40 bộ
dữ liệu thu thập được của 2 tháng 2/2010 và 3/2010).
- So sánh kết quả thuật giải cài đặt với phương pháp dựa trên Quy hoạch động sắp được
công bố [38]. (áp dụng trên cùng bài toán).
5. Nội dung và phạm vi của vấn đề sẽ đi sâu nghiên cứu, giải quyết và phát
triển về kết quả đạt được
Luận văn tập trung nghiên cứu sự kết hợp giữa thuật giải Simulated Annealing và thuật giải
Variable Neighborhood Search cho bài toán VRP và áp dụng vào bài toán VRP của công ty
sữa Việt Nam Vinamilk. Do bài toán của Vinamilk là một bài toán thực tế, với một số ràng
buộc đặc trưng mà các bài toán lý thuyết ít hoặc chưa đề cập đến, nên các thuật giải khảo sát
được cần được thiết kế lại sao cho phù hợp với yêu cầu của thực tế.
Một số hướng phát triển của đề tài:
- Mục tiêu bài toán: hiện nay, bài toán mà đề tài xét đến chỉ giới hạn ở hai mục tiêu cơ
bản: cực tiểu hóa số xe cần sử dụng và cực tiểu hóa tổng quãng đường mà các xe phải
đi trong một ngày. Hướng phát triển của đề tài sẽ là bổ sung thêm một số mục tiêu
thực tế khác (chẳng hạn: cân bằng giữa quãng đường mà các xe phải đi), các mục tiêu
này có thể hàm chứa sự mâu thuẫn lẫn nhau, do đó, một hướng phát triển khác của đề
tài là ứng dụng các hướng tiếp cận của bài toán tối ưu đa mục tiêu [48]
- Ràng buộc của bài toán: bổ sung thêm một số ràng buộc về thời gian (chẳng hạn: quy
định về khoảng thời gian được phép giao hàng ở các khách hàng – do có một số khách
hàng là các cửa hàng ở chợ, chỉ cho phép giao hàng vào buổi sáng,…, khi đó, bài toán
sẽ mở rộng thành biến thể VRPTW)
6. Nơi thực hiện đề tài nghiên cứu của luận văn
Luận văn được thực hiện tại Bộ môn Công Nghệ Phần Mềm – Khoa Công Nghệ Thông Tin –
trường Đại Học Khoa Học Tự Nhiên TP.HCM.
7. Thời gian thực hiện:
Từ tháng 9/2010 đến tháng 6/2011
8. Các tài liệu tham khảo được sử dụng khi viết đề cương

[1]. G. Clarke and J.V. Wright (1964), Scheduling of vehicles from a central depot to a
number of delivery points, Operations Research, vol. 12, pp 568-581
[2]. V. Nagarajan and R. Ravi (2007), Poly-logarithmic Approximation Algorithms for
Directed Vehicle Routing Problems, in Proceedings of the the 10th International
Workshop on Approximation (APPROX '07), Barcelona, Spain, pp 257–270
[3]. G. Laporte, M. Gendreau , J. Y. Potvin, F. Semet, Classical and Modern Heuristics
for the Vehicle Routing Problem, International Transaction in Operational
Research, vol. 7, pp 285-300
[4]. G. Laporte (2009), Fifty Years of Vehicle Routing, Les Cahiers du GERAD, HEC
Montréal, G–2009–43, 19
[5]. J. F. Côté, J. Y. Potvin (2008), A tabu search heuristic for the vehicle routing
problem with private fleet and common carrier, European Journal of Operational
Research, 198(2), pp 464-469
[6]. Li, F., Golden, B.L., and Wasil, E.A (2005), Very large-scale vehicle routing: New
test problems, algorithms, and results, Computers and Operations Research, vol. 32,
1165-1179.
[7]. Cordeau, J F., Laporte, G., and Mercier (2004), A. Improved tabu search algorithm
for the handling of route duration constraints in vehicle routing problems with time
windows, Journal of the Operational Research Society, vol. 55, pp 542–546.
[8]. Prins, C (2004), A simple and eff ective evolutionary algorithm for the vehicle
routing problem, Computers & Operations Research, vol. 3, pp 1985–2002
[9]. Reimann, M., Doerner, K., and Hartl, R.F. D-Ants (2004), Savings based ants
divided and conquer the vehicle routing problem, Computers & Operations
Research, vol. 31, pp 563-591
[10]. A.C.Wade, S. Salhi (2002), An investigation into a new class of vehicle routing
problem with backhauls, the International Journal of Management Science, vol. 30,
pp 479 – 487
[11]. Baldacci, R., Battarra, M., Vigo, D., Golden, B., Raghavan, S. and Wasil, E. (2007),
Routing a heterogeneous fleet of vehicles, in B.Golden, S.Ragavan and E.Wasil
(editors), The Vehicle Routing Problem: Latest Advances and New Challenges,

Springer-Verlag, Heidelberg, Germany, pp 3-29
[12]. Wøhlk, S., A decade of capacitated arc routing (2007), in B.Golden, S.Ragavan and
E.Wasil (editors), The Vehicle Routing Problem: Latest Advances and New
Challenges, Springer-Verlag, Heidelberg, Germany, pp 29-48
[13]. C. Archetti, M.G. Speranza (2008), The split delivery vehicle routing problem: a
survey, in B.Golden, S.Ragavan and E.Wasil (editors), The Vehicle Routing
Problem: Latest Advances and New Challenges, Springer-Verlag, Heidelberg,
Germany, pp 3-29
[14]. P. Shaw (1998), Using constraint programming and local search methods to solve
vehicle routing problems, in Proceedings of the 4
th
International Conference on
Principles and Practice of Constraint Programming (CP-98), Pisa, Italy, pp 417–431
[15]. N. Christofidesand, S. Eilon (1969), An algorithm for the vehicle dispatching
problem, Operational Research Quarterly, vol. 20, pp 309–318
[16]. J.D.C. Little, K.G. Murty,D.W. Sweeney and C. Karel (1963), An algorithm for the
travelling salesman problem, Operations Research, vol. 11, pp 972–989.
[17]. G. Laporte, H. Mercure and Y. Nobert (1986), An exact algorithm for the
asymmetrical capacited vehicle routing problem, Networks, vol. 16, pp 33–46.
[18]. N. Christofides, A. Mingozzi and P. Toth (1981), Exact algorithms for the vehicle
routing problem, based on spanning tree shortest path relaxations, Mathematical
Programming, vol. 20, pp 255–282 .
[19]. D. Houck, J.C. Picard, M. Queyranne and R. Vemuganti (1980), The travelling
salesman problem as a constrained shortest path problem: Theory and computation
experience, Opsearch, vol. 17, pp 93–109
[20]. M.L. Fisher (1994), Optimal solution of vehicle routing problems using minimum K-
trees, Operations Research, vol. 42, pp 626–642.
[21]. S. Ropke and D. Pisinger (2006). An Adaptive Large Neighborhood Search Heuristic
for the Pickup and Delivery Problem with Time Windows, Transportation Science,
vol. 40, pp 455–472

[22]. Metropolis, N., Rosenbluth, A.W., Rosenbluth, M.N, Teller, A.H., Teller, E. (1953),
Equation of State Calculation by Fast Computing Machines, Journal of Chemistry
and Physical, vol. 21, pp 1087-1091
[23]. Kirkpatrick, S , Gelatt, C.D, Vecchi, M.P (1983). Optimization by Simulated
Annealing, Science, vol 220 (4598), pp. 671-680.
[24]. William D. Harvey , Matthew L. Ginsberg (1995), Limited discrepancy search, in
Proceedings of the 14th international joint conference on Artificial intelligence
(IJCAI-95) , Montreal, Quebec, Canada, pp 607-613
[25]. Russell Bent , Pascal Van Hentenryck (2004), A Two-Stage Hybrid Local Search for
the Vehicle Routing Problem with Time Windows, Transportation Science, vol. 38
(4), pp 515-530
[26]. David Mester , Olli Bräysy (2005), Active guided evolution strategies for large-scale
vehicle routing problems with time windows, Computers and Operations Research,
vol. 32 (6), pp 1593-1614
[27]. E. Prescott-gagnon, G. Desaulniers, L. M. Rousseau (2009), A branch-and-price-
based large neighborhood search algorithm for the vehicle routing problem with time
windows, Networks, vol. 54(4), pp 190-204.
[28]. David Pisinger , Stefan Ropke (2007), A general heuristic for vehicle routing
problems, Computers and Operations Research, vol. 34 (8), pp 2403-2435
[29]. B.E. Gillett and L.R. Miller (1974), A heuristic algorithm for the vehicle dispatch
problem”, Operations Research, vol. 22, pp 340–349
[30]. M. Fisher and R. Jaikumar (1982), A generalized assignment heuristic for vehicle
routing, Networks, vol. 11, pp 109–124
[31]. B.M. Baker and J.Sheasby (1999), Extensions to the generalised assignment heuristic
for vehicle routing, European Journal of Operational Research, vol.119, pp 147–157
[32]. C.D. Tarantilis (2005), Solving the vehicle routing problem with adaptive memory
programming methodology, Computers & Operations Research, vol. 32, pp 2309–
2327
[33]. M. Desrochers, J. Lenstra, M. Savelsbergh, and F. Soumis (1988), Vehicle routing
with time windows: optimization and approximation, In Bruce L. Golden and Arjang

A. Assad (editors), Vehicle Routing: Methods and Studies, North-Holland,
Amsterdam, pp 65 84
[34]. N. Bansal , A. Blum , S. Chawla , A. Meyerson (2004), Approximation algorithms
for deadline-TSP and vehicle routing with time-windows, in Proceedings of the
thirty-sixth annual ACM symposium on Theory of computing (STOC '04), New York,
USA
[35]. S. Ropke (2005), Heuristic and exact algorithms for vehicle routing problems, Ph.D.
Thesis, Computer science department at the University of Copenhagen (DIKU)
[36]. B.E. Gillet and L.R. Miller (1974), A heuristic algorithm for the vehicle-dispatch
problem. Operations Research, vol. 22, pp 340–349
[37]. G. Laporte and F. Semet (2002), Classical heuristics for the capacitated VRP, In P.
Toth and D. Vigo (Editors), The Vehicle Routing Problem, SIAM, Philadelphia, pp
109-149
[38]. Khoa Tran, Nguyen Dang, Tien Dinh (2011), On a Real-World Variant of the
Vehicle Routing Problem, accepted in poster session of the 3
rd
Asian conference on
Intelligent Information and Database Systems (ACIIDS 2011)
[39]. Ortega, P., Oliva, C., Ferland, J., Cepeda M. (2009), Multiple ant colony system for a
VRP with time windows and scheduled loading. Ingeniare Revista chilena de
ingeniera, vol. 17, pp 393–403
[40]. F. Glover (1989), Tabu Search - part I, ORSA Journal on Computing, vol.1 (3), pp
190-206
[41]. M. Gendreau, J. Y. Potvin, O. Braysy, G. Hasle, A. Løkketangen (2007),
Metaheuristics for the Vehicle Routing Problem and Its Extensions: A Categorized
Bibliography, in B.Golden, S.Ragavan and E.Wasil (editors), The Vehicle Routing
Problem: Latest Advances and New Challenges, Springer-Verlag, Heidelberg,
Germany, pp 143-169
[42]. I. Zeng, H.L. Ong and K.M. Ong (2005) An assignment-based local search method
for solving vehicle routing problems, Asia-Pacific Journal of Operational Research,

vol. 22, pp 85–104
[43]. F. Li, B. Golden and E. Wasil (2007), A record-to-record travel algorithm for solving
the heterogeneous fleet vehicle routing problem, Computers & Operations Research,
vol. 34, pp 2734-2742.
[44]. L.M. Rousseau, M. Gendreau and G. Pesant (2002). Using constraint-based operators
to solve the vehicle routing problem with time windows, Journal of Heuristics, vol.
8, pp 43- 58
[45]. J. Kytojoki, T. Nuortio, O. Braysy and M. Gendreau (2007), An efficient variable
neighborhood search heuristic for very large scale vehicle routing problems,
Computers & Operations Research, vol. 34, pp 2743–2757
[46]. C.M.R.R. Lima, M.C. Goldbarg and E.F.G. Goldbarg (2005), A Memetic Algorithm
for the Heterogeneous Fleet Vehicle Routing Problem, Electronic Notes in Discrete
Mathematics. Vol. 18, pp 171-176
[47]. A Chen, G Yang, Z. Wu (2006), Hybrid discrete particle swarm optimization
algorithm for capacitated vehicle routing problem, Journal of Zhejiang University -
Science, vol. 7(4), pp 607-614
[48]. R. E. Steuer (1986), Multiple criteria optimization: theory, computation and
application, Krieger Publishing Company, USA, 546

×