Mục tiêu của bài toán này là đảm bảo tất cả các khách hàng được phục vụ ớm nhất có thể s và tối thiểu hóa hành trình dài nhấ Sau đó tôi đềt.. Trong nhi u bài toán, yêu cề ầu đặt ra là tì
Trang 1B GIÁO D Ộ ỤC VÀ ĐÀO TẠ O
TRƯỜ NG Đ Ạ I H C BÁCH KHOA HÀ N I Ọ Ộ
-
THU T TOÁN TÌM KI M C Ậ Ế Ụ C BỘ GIẢ I BÀI TOÁN
ĐIỀ U HÀNH V N T I T I THI U HÓA Ậ Ả Ố Ể
Trang 2B GIÁO D Ộ ỤC VÀ ĐÀO TẠ O
TRƯỜ NG Đ Ạ I H C BÁCH KHOA HÀ N I Ọ Ộ
-
THU T TOÁN TÌM KI M C Ậ Ế Ụ C BỘ GIẢ I BÀI TOÁN
ĐIỀ U HÀNH V N T I T I THI U HÓA Ậ Ả Ố Ể
HÀNH TRÌNH DÀI NH T Ấ
Chuyên ngành: CÔNG NGH THÔNG TIN Ệ
LUẬN VĂN THẠC SĨ KỸ THU T Ậ
Hà N ộ i – Năm 2018
Trang 3L ỜI MỞ ĐẦ U
Trong thực tế ệ hi n nay có nhiều loại mô hình v n t i Viậ ả ệc vận chuy n hàngểhóa từ kho đến các cửa hàng Hệ th ng chuyểố n hàng hóa theo yêu c u Hầ ệ th ng ốchở người và v n chuy n hàng hóa theo tuy n c nh, h th ng taxi, h th ng xe ậ ể ế ố đị ệ ố ệ ốbuýt các mô hình này về cơ bản đã phục vụ phần l n nhu cớ ầu đi lại và v n chuyậ ển hàng hóa Tuy nhiên mô hình vận t i truy n thả ề ống đặc biệt là khu v c thành thở ự ị,
hoạt động vận chuyển hàng hó va ẫn chưa hi u quảệ Vi c thiệ ếu thông tin thời gian
thực và sự phức tạp trong lập kế hoạch tđể ối ưu hóa sự ựa chọn các tuyến đường lcho các phương tiện là m t trong nh ng lý do chính Có rộ ữ ất ít nghiên c u v l i ích ứ ề ợ
có được v tề ối ưu quãng đường di chuyển của các phương tiệ đển ph c v nhi u ụ ụ ềlượng khách nh t và t n ít chi phí nh t S tấ ố ấ ự ối ưu này phù h p v i ợ ớ xu hướng phát tri n cể ủa nền kinh t hi n nay ế ệ
Tối ưu hóa quá trình di chuyển của các phương tiệ ạo ra cơ hội kinh doanh n t
hấp dẫn bởi vì quá trình di chuyển của các phương tiện s ẽ là ngắn nhất và phục vụđược nhi u nhu c u nhề ầ ất Như vậy s kéo theo giá thành trong vi c ch hàng s ẽ ệ ở ẽgiảm theo, ngoài ra còn giảm nguy cơ tắc nghẽn giao thông, gây ra nhiều hệ ụ l y như
v ô nhiề ễm môi trường…
Trong luận văn này, tôi nghiên c u bài toán l p l trình v n t i giao hàng cho ứ ậ ộ ậ ảcác xe tải v i ràng buớ ộc về ả t i tr ng nh m tốọ ằ i thi u hóa hành trình dài nh t ể ấ(MMCVRP) Mục tiêu của bài toán này là đảm bảo tất cả các khách hàng được
phục vụ ớm nhất có thể s và tối thiểu hóa hành trình dài nhấ Sau đó tôi đềt , xuất và cài đặt th nghi m 10 thu t toán tham lam xây d ng l i gi i ử ệ ậ ự ờ ả ban đầu Các thu t toán ậnày được cài đ t, th nghi m và ặ ử ệ đánh giá trên các bộ ữ ệ d li u trích xu t t b d li u ấ ừ ộ ữ ệ
v n t i c a Christophides.ậ ả ủ
Luận văn được chia thành 3 chương không kể phần mở đầu và phần kết luận: Chương 1 trình bày cơ sở lý thuy t v bài toán tế ề ối ưu tổ ợ h p, bài toán tối ưu lộ trình
1
Trang 4vận tải, các hướng tiếp cận và thư việ Chương 2 trình bày về 10n thuật toán tham lam và chi n lế ược của từng thuật toán Chương 3 trình bày về ế k t qu th nghi m và ả ử ệđánh giá đố ới v i các thu t toán tham lam ậ
2
Trang 5M ỤC LỤ C
L I M Ờ Ở ĐẦ 1 U
LỜI CAM ĐOAN 5
L I CỜ ẢM ƠN 6
DANH M C CÁC CH VI T T TỤ Ữ Ế Ắ 7
DANH M C CÁC B NGỤ Ả 8
DANH M C CÁC HÌNH VỤ Ẽ 9
DANH M C CÁC GI Ụ Ả MÃ 10
CHƯƠNG 1 CƠ SỞ LÝ THUY T 11 Ế 1.1 Bài toán tối ưu tổ ợ 11 h p 1.2 Các hướng tiếp cận giải bài toán tối ưu tổ ợ 13 h p 1.2.1 Hướ ng ti p c n gi i đúng 14 ế ậ ả 1.2.2 Hướ ng ti p c n gi i g n đúng 14 ế ậ ả ầ 1.3 Các bài toán tối ưu điều hành vận tả 15 i 1.4 Thư viện CBLSVR 17
1.4.1 Tổng quan 17
1.4.2 Láng giềng 17
1.4.3 Các l p APIớ 27
1.5 Bài toán điều hành v n t i t i thi u hóa hành trình dài nh t 32 ậ ả ố ể ấ 1.5.1 Phát bi u bài toánể 32
1.5.2 Mô hình toán h cọ 33
CHƯƠNG 2 CÀI ĐẶT THU T TOÁN GIẬ ẢI BÀI TOÁN ĐIỀU HÀNH V N Ậ T I T I THI U HÓA HÀNH TRÌNH DÀI NH TẢ Ố Ể Ấ 37
2.1 Thu t toán tham lam 1 (Greedy1)ậ 37
2.2 Thu t toán tham lam 2 (Greedy2)ậ 38
2.3 Thu t toán tham lam 3 (Greedy3)ậ 39
2.4 Thu t toán tham lam 4 (Greedy4)ậ 40
2.5 Thu t toán tham lam 5 (Greedy5)ậ 42
2.6 Thu t toán tham lam 6 (Greedy6)ậ 43
2.7 Thu t toán tham lam 7 (Greedy7)ậ 44
2.8 Thu t toán tham lam 8 (Greedy8)ậ 45
3
Trang 62.9 Thu t toán tham lam 9 (Greedy9)ậ 46
2.10 Thu t toán tham lam 10 (Greedy10)ậ 47
CHƯƠNG 3 KẾT QU TH NGHIẢ Ử ỆM VÀ ĐÁNH GIÁ 49
3.1 D li uữ ệ 49
3.2 K t qu th ế ả ử nghiệm và đánh giá 49
3.3 Tổng kết và nhận xét kết quả ử nghiệ 58 th m K T LUẾ ẬN VÀ HƯỚNG PHÁT TRI NỂ 61
TÀI LI U THAM KH OỆ Ả 62
4
Trang 7L ỜI CAM ĐOAN
Tôi xin cam đoan số ệ li u và k t qu nghiên c u trong luế ả ứ ận văn này là trung
thực và không sao chép từ ất kỳ đồ b án, luận văn nào khác Mọi thông tin trích dẫn trong luận văn đã được chỉ rõ ngu n gồ ốc rõ ràng và được phép công b N u khôngố ếđúng như đã nêu trên tôi xin hoàn toàn chịu trách nhi m v tài c a mình ệ ề đề ủ
Hà N i, Ngày 30 Tháng 9 ộ Năm 2018
H c viên thọ ực hiện
Nguyễn Hải Đăng
5
Trang 8L ỜI CẢM ƠN
Em xin g i l i cử ờ ảm ơn chân thành và sự tri ân sâu sắc đối với các thầy cô của trường Đại h c Bách Khoa Hà Nọ ội, đặc bi t là các th y cô trong vi n Công Nghệ ầ ệ ệ Thông Tin và Truyền thông của trường đã tạo điều kiện cho em được học tập vànghiên c u chuyên ngành công nghứ ệ thông tin Và em cũng xin chân thành cảm ơn
thầy TS Phạm Quang Dũng và các thành viên trong nhóm nghiên cứu đã nhiệt tìnhhướng dẫn, giúp đỡ em hoàn thành khóa lu n t t nghi p ậ ố ệ
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế ủa một học viên, c
luận văn này không thể tránh được những thiếu sót Em rất mong nhận được sự chỉbảo, đóng góp ý kiến của các thầy cô để em có điều ki n b sung, nâng cao ý th c ệ ổ ứ
c a mình, phủ ục vụ ốt hơn trong công việ t c thực tế
Em xin chân thành cảm ơn!
6
Trang 9MMCVRP Min-Max Capacitated
Vehicle Routing Problem
Bài toán định tuyến đường đi các phương tiện nhằm tối thiểu hóa hành trình dài nh t ấ
ILP Integer Linear Program Quy hoạch nguyên tuyến
tính VNS Variable Neighborhood
Search
Tìm kiếm trên các tập láng gi ng khác nhau ềVRP Vehicle Routing Problem Bài toán v n t i ậ ả
CVRP Capacitated Vehicle
Routing Problem
Bài toán v n t i có ràng ậ ả
buộc sức chứa VRPTW Vehicle Routing Problem
with Time Window
Bài toán v n t i có ràng ậ ả
buộc về khung th i gian ờVRPPD VRP Pickup and Delivery Bài toán v n chuy n hàng ậ ể
hóa UAV Unmanned aerial vehicle Máy bay không người lái CBLSVR Constraint Based Local
Search Vehicle Routing
T kiìm ếm cục bộ ựa trên dràng buộc các bài toán
v n t i ậ ảAPI Application Programming
Interface
Giao di n l p trình ệ ậ ứng
d ng ụ
SD Standard Deviation Độ ệ l ch chu n ẩ
MDR Minimum distance Route
7
Trang 10DANH M C CÁC B Ụ ẢNG
B ng 1.1: Nhóm hàm kh i t o l i gi i 28ả ở ạ ờ ả
Bảng 1.2: Nhóm hàm truy vấn v ề trạng thái c a l i gi i 28 ủ ờ ả
B ng 1.3: M t s hàm và ràng buả ộ ố ộc cơ bản được thi t k ế ế trong thư viện CBLSVR 30
B ng 3.1: Mô t b d li u 49ả ả ộ ữ ệ
B ng 3.2: K t qu th nghiả ế ả ử ệm với thuật toán greedy1 51
B ng 3.3: K t qu th nghiả ế ả ử ệm với thuật toán greedy2 51
B ng 3.4: K t qu th nghiả ế ả ử ệm với thuật toán greedy3 52
B ng 3.5: K t qu th nghiả ế ả ử ệm với thuật toán greedy4 53
B ng 3.6: K t qu th nghiả ế ả ử ệm với thuật toán greedy5 54
B ng 3.7: K t qu th nghiả ế ả ử ệm với thuật toán greedy6 55
B ng 3.8: K t qu th nghiả ế ả ử ệm với thuật toán greedy7 56
B ng 3.9: K t qu th nghiả ế ả ử ệm với thuật toán greedy8 56
B ng 3.10: K t qu th nghiả ế ả ử ệm với thu t toán greedy9 57ậ B ng 3.11: K t qu th nghiả ế ả ử ệm với thu t toán greedy10 58ậ B ng 3.12: Tả ổng hợp k t qu th nghiế ả ử ệm vớ các thuậi t toán 60
8
Trang 11DANH M C CÁC HÌNH V Ụ Ẽ
Hình 1.1: Ví d ụ 2 tuyến đường khác nhau 18Hình 1.2: Minh h a thu t toán performTwoOptMove1(2,6) 19ọ ậHình 1.3: Minh h a thu t toán performTwoOptMove2(2,6) 19ọ ậHình 1.4: Minh h a thu t toán performTwoOptMove3(2,6) 20ọ ậHình 1.5: Minh h a thu t toán performTwoOptMove4(2,6) 20ọ ậHình 1.6: Ví d ụ 2 tuyến đường khác nhau router[1], router[2] 21Hình 1.7: Minh h a thu t toán performTwoOptMove5(2,6) 21ọ ậHình 1.8: Minh h a thu t toán performTwoOptMove6(2,6) 22ọ ậHình 1.9: Minh h a thu t toán performTwoOptMove7(2,6) 22ọ ậHình 1.10: Minh h a thu t toán performTwoOptMove8(2,6) 23ọ ậHình 1.11: Ví d 2 tuyụ ến đường với 5 điểm 24Hình 1.12: Minh h a thu t toán performOrOptMove1(2,4,6) 24ọ ậHình 1.13: Minh h a thu t toán performOrOptMove2(2,4,6) 25ọ ậHình 1.14: Ví d tuyụ ến đường với 8 điểm 25Hình 1.15: Minh h a thu t toán performThreeOptMove1(2,4,6) 26ọ ậHình 1.16: Ví d 2 tuyụ ến đường router[1] và router [2] với các điểm khác nhau 26Hình 1.17: Minh h a gi i thu t performCrossExchangeMove(2,4,7,9) 27ọ ả ậHình 1.18: Minh họa lộ trình v n t i cho 2 xe 34ậ ả
9
Trang 12DANH M C CÁC GI Ụ Ả MÃ
Gi mã 2.1: Thu t toán tham lam th 1 38ả ậ ứ
Gi mã 2.2: Thu t toán tham lam th 2 39ả ậ ứ
Gi mã 2.3: Thu t toán tham lam th 3 40ả ậ ứ
Gi mã 2.4: Thu t toán tham lam th 4 41ả ậ ứ
Gi mã 2.5: Thu t toán tham lam th 5 43ả ậ ứ
Gi mã 2.6: Thu t toán tham lam th 6 44ả ậ ứ
Gi mã 2.7: Thu t toán tham lam th 7 45ả ậ ứ
Gi mã 2.8: Thu t toán tham lam th 8 46ả ậ ứ
Gi mã 2.9: Thu t toán tham lam th 9 47ả ậ ứ
Gi mã 2.10: Thu t toán tham lam th 10 48ả ậ ứ
10
Trang 13CHƯƠNG 1 CƠ SỞ LÝ THUY T Ế
1.1 Bài toán tối ưu tổ ợ h p
Bài toán tối ưu tổ ợp là bài toán không quan tâm đế h n việc xây dựng t t cấ ả các cấu hình như bài toán liệt kê mà chỉ nh m xây dựằ ng m t c u hình “t t” nh t ộ ấ ố ấtheo m t mộ ục tiêu nào đó Bài toán thường xuất hi n r t nhi u trệ ấ ề ong các lĩnh vực
của đ i sống xã hội đặc biệt là các hoạt động quản lý, lập kếờ hoạch, điều hành trongcác tổ chức, doanh nghiệp Như bài toán lập tuyế ối ưu trong lĩnh vựn t c giao thông
vận tải [18] [16], bài toán đóng gói hàng hóa [26], bài toán xếp hàng trong các dâychuy n sề ản xuất [8], bài toán x p th i khóa bi u trong quế ờ ể ản lý đào tạo [25]
Mục tiêu của các bài toán này là cần tìm ra một lời giải thỏa mãn một tập cácràng bu c ộ đặt ra, đồng thờ ối ưu mội t t hoặc nhiều hàm mục tiêu nào đó
M t bài toán t i ộ ố ưu tổ ợ h p [31] là m t b (X, D, C, ộ ộ f) trong đó:
X = X{ 1, …, Xn} là tập các biến
D = {D1, …, Dn} trong đó Dilà mộ ậ ờ ạt t p r i r c th hi n mi n giá tr c a ể ệ ề ị ủ Xi
C = {C1, …, Ck} là t p các ràng buậ ộc được định nghĩa trên các biến
f là hàm m c tiêu cụ ần tối ưu Trong nhi u bài toán, yêu cề ầu đặt ra là tìm lời
gi i thả ỏa mãn ràng buộc, vì v y hàm mậ ục tiêu f không được quan tâm
Bài toán tối ưu tổ ợ h p có nhiề ứu ng d ng trong thụ ực tế, đã và đang thu hút được đầu tư nghiên cứu nh m gi i quy t các vằ ả ế ấn đề trong điều hành, s n xu t đ ả ấ ểtăng sản lượng lao động, ti t ki m chi phí nguyên li u và th i gian ế ệ ệ ờ
Ví dụ ề v bài toán N Queen yêu c u x- ầ ếp n con h u lên m t bàn c vua kíchậ ộ ờ thước n n x sao cho không có hai con h u b t kì nào kh ng ch nhau Kh ậ ấ ố ế ả năng
kh ng ch cố ế ủa mỗi con h u bao g m: ậ ồ
Kh ng ch nh ng ô cùng hàng ho c cùng c t ố ế ữ ặ ộ
11
Trang 14Kh ng ch nh ng ô thuố ế ữ ộc cùng đường chéo
Bài toán N Queen thu c vào l p bài toán t- ộ ớ ối ưu tổ ợ h p, có th ể được mô t b ng mô ả ằhình toán học:
T p biậ n ến quyết định X = {X1, X2, …, Xn}: Biến Xi biểu thị hàng cho con hậu
Xi i X+ ≠ j j + v i ớ ≠ : Các con h u không kh ng ch i j ậ ố ế theo đường chéo
Xi i X- ≠ j j - v i ớ ≠ : Các con h u không kh ng ch i j ậ ố ế theo đường chéo
Quá trình giải bài toán theo hướng tìm kiếm cục bộ ự d a trên ràng buộc gồm hai bước chính d a theo ki n trúc CBLS [28]: ự ế
Mô hình hóa bài toán
Định nghĩa các biến quyết định
Xây dựng ràng bu c và hàm m c tiêu ộ ụTìm ki m ế
Kh i t o l i giở ạ ờ ải ban đầu
Th c hi n l p: Di chuyự ệ ặ ển qua các lời gi i lân c n ả ậPhân tích bài toán N Queen v- ới n = 8 theo mô hình CBLS Quá trình mô hình hóabài toán d a theo mô hình toán hự ọc đã trình bày ở trên:
T p biậ ến: Mảng x[i], trong đó x[i] là hàng c a con h u trên c t ủ ậ ộ i
Mi n giá tr ề ị x[i], D[i] = [0 7]
12
Trang 15Ch ỉ có duy nhất một loại bước di chuyển là gán lại giá trị ột phần tử X m i trong tập
bi n Lế ời giải được khở ại t o ng u nhiên Tìm ki m d ng l i khi không còn vi ph m ẫ ế ừ ạ ạ
Lời giải tiếp theo được lựa chọn ra trong các lời giải lân cận hiện tại theo cách tham lam:
Ch n con h u c t ọ ậ ở ộ i đang bị kh ng ch nhi u nh t ố ế ề ấ
Gán l i giá tr ạ ị Xi thành giá tr ị làm giảm vi phạm nhiều nh t ấ
1.2 Các hướng tiếp cận giải bài toán tối ưu tổ ợ h p
Các hướng ti p cế ận để gi i bài toán tả ối ưu tổ ợp đượ h c chia thành 2 lo i: ạhướng ti p c n giế ậ ải đúng và hướng ti p c n gi i gế ậ ả ần đúng Hướng ti p c n giế ậ ải đúng
đảm b o luôn cho l i gi i tả ờ ả ối ưu, tuy nhiên với các b d li u l n thì th i gian tính ộ ữ ệ ớ ờ
là r t lấ ớn Hướng ti p c n gi i gế ậ ả ần đúng trong đó có tìm kiếm cục bộ để ả gi i các bài toán tối ưu tổ ợp kích thướ ớn đang đượ h c l c quan tâm nghiên c u phát tri n vì nó ứ ể
có khả năng tìm ra lời gi i chả ất lượng t t trong nhiố ều bài toán kích thước lớn với
th i gian h u h n cho phép ờ ữ ạ
13
Trang 161.2.1 Hướng tiếp cận giải đúng
Hướng tiếp cận giải đúng bao gồm các kỹ thuật cho phép tìm ra lời giải tối
ưu hoặc ch ra l i gi i th a mãn ràng bu c không t n t i vì nó duy t h t các kh ỉ ờ ả ỏ ộ ồ ạ ệ ế ảnăng trong không gian lời giải Phương pháp này bao gồm các thuật toán điển hình như thuật toán nhánh c n ho c quy hoậ ặ ạnh động, quy ho ch ràng bu c, hạ ộ ay quy
ho ch nguyên tuy n tính (ILP) ạ ế
1.2.2 Hướng tiếp cận giả ần đúngi g
Tìm ki m cế ục bộ (Local Search) là phương pháp tìm lời gi i tả ốt hơn từ
những lời giải là láng giềng của lời giải hiện tại bằng cách áp dụng các phép biến
đổ ụi c c b sinh ra l i gi i láng gi ng t l i gi i hi n t i ộ để ờ ả ề ừ ờ ả ệ ạ
Để tránh vấn đề ối ưu cụ t c b c a Local search có th áp dộ ủ ể ụng các phương pháp Meta-Heuristic được trình bày sau đây:
- Tìm kiếm Tabu (Tabu search) [13] [14] Là thuật toán sử ụng một danh sách d
ch a các thao tác di chuyứ ển đã thực hiện trước đó, thao tác di chuyển s ẽ không được
thực hiện nếu đã tồn tại trong danh sách Sử ụng phương pháp này để tránh quay d
tr lở ại các lời giải trước đó
- Giải thuật di truyền [15] dựa trên các nguyên lý của tiến hóa như đột biến, chọn l c ọ Ý tưởng ban đầu là kh i t o m t qu n th các lờở ạ ộ ầ ể i gi i Các c p cá th ả ặ ểtrong qu n thầ ể ẽ s giao ghép với nhau để ạ t o ra cá thể ớ m i có đặc tính như cặp cá thể sinh ra nó Hoặc từ ột cá thể độ m t bi n cho ra cá th khác bế ể ằng cách thay đổi mộ ốt s
đặc tính c a cá th ủ ể ban đầu Cho đến nay, đã có rất nhiều phương thức được đ xu t ề ấcho quá trình ghép gặp và đột bi n áp d ng cho bài toán tế ụ ối ưu, trong đó có đề xu t ấkhác thành công như [20] [5] [4].
- Thuật toán Variable neighborhood Search chia tập láng giềng thành các tập láng gi ng nhề ỏ hơn v i đ ớ ộ ưu tiên khác nhau Trong quá trình tìm kiếm các tập láng
giềng sẽ ần lượt được duyệ l t theo th t ứ ự ưu tiên theo các mức đ ộ ưu tiên cho trước
Nếu tìm thấy láng giềng tốt hơn lời giải hiện tại thì các tập láng giềng còn lạ ẽi s không được duy t, nh v y t i m i vòng l p, l i giệ ờ ậ ạ ỗ ặ ờ ải được c i thi n v i chi phí th p ả ệ ớ ấ
14
Trang 17và trong tình huống gặ ối ưu cục bộ, tấ ả các tập t t c p láng gi ng s ề ẽ được duyệt để tìm
lời giải tốt hơn do đó khả năng tìm được lời giải tối ưu sẽ cao hơn Hansen đãnguyên cứu tỉ ỉ m thuật toán Variable Neighborhood Search (VNS) cơ bản và các kỹthu t c i ti n, r i s dậ ả ế ồ ử ụng chúng để ả gi i nhi u bài toán c ề ổ điển trong [19]
1.3 Các bài toán tối ưu điều hành vận tải
Bài toán tối ưu điều hành vận tải là bài toán trong đó cần xây dựng lộ trình cho một đội xe phục vụ các yêu cầu v n chuyậ ển người và hàng hóa Có nhi u bi n ề ế
th cể ủa bài toán ph thuụ ộc vào ràng buộc và hàm mục tiêu trong tùy từng ngữ ảnh c
c th ụ ể
Vào năm 1959 Dantzig [6] và cộng s đã đ xu t mô hình hóa c a bài toán ự ề ấ ủ
vận tải dưới dạng bài toán tối ưu Trong mô hình với điều kiện bao gồm các xe vận
tải giống nhau về ức chứ s a để vận chuyển hàng hóa t ừ kho trung tâm đến cho khách hàng Ngày nay, bài toán này được g i chung là “Vehicle Routing Problem” (VRP) ọ[17] [22] Đã có rất nhi u bài báo nghiên c u về ứ ề ấn đề v này và phát tri n theo nhiể ều hướng khác nhau như Capacitated Vehicle Routing problem (CVRP) [30] Min-Max Capacitated Vehicle Routing Problem (MMCVRP) [1], Vehicle Routing Problem with Time Windows (VRPTW) [7]
Mục tiêu của bài toán CVRP là tổng chiều dài tuyến đường là ng n nh t Có ắ ấ
rất nhiều nhà khoa học đã phát triển các thuật toán heuristics [11] [24] và thuật toánchính xác [3] [10]
Bài toán MMCVRP (Min Max Capacitated Vehicle Routing Problem) v- ới
mục tiêu ố t i thiểu hóa hành trình dài nhất Thuật toán này đầu tiên được đ xuấ ởề t b i Golden và đồng s ự [2] Gần đây, thuật toán tìm kiếm cục bộ đang được đề xuất và cài đặt th nghiử ệm [9] để gi i bài toán MMCVRP Bài toán này sả ẽ được trình bày
c th phụ ể ần 1.5.3
Bài toán VRPTW thực chất là bài toán CVRP có b sung thêm ràng buổ ộc về khung thời gian VRPTW Là bài toán điều hành xe sao cho với mỗi yêu cầu của
15
Trang 18khách hàng điều tồn tại 2 tham số e, l Xe phải đến đón trong khoảng thời gian từ e
đến Nl ếu xe đến s m hơn e thì s ph i ch t i th i đi m e m i đư c ph c v ớ ẽ ả ờ ớ ờ ể ớ ợ ụ ụvà xekhông đượ ớc t i muộn hơn l M t s thuộ ố ật toán thường được s dử ụng để ả gi i quy t ế
vấn đề này là tìm ki m Tabu, gi i thu t di truy n, thu t toán ti n hóa, tế ả ậ ề ậ ế ối ưu hóa
hoặc nhiề khách khác Như vậy sẽ có ràng buộc về ứ ự ặp khách hàng và tuân u th t g
th ủ theo thứ ự hành trình đó Khi gắn với các mô hình thực tế trong cuộc sống trở t nên khó khăn và ph c tứ ạp hơn nhiều so v i VRP c ớ ổ điển Trong th c t , hàng hóa ự ếkhông chỉ ầ giao đế c n n khách hàng mà còn nh n tậ ừ khách hàng và đưa trở ạ l i về kho Có nhiều công trình nghiên c u vứ ề ấ v n đ ề này, thu t toán tìm kiậ ếm cục bộ Heuristics đã đượ đềc xuất trong [12], để ối ưu hóa tuyến đườ t ng d ki n c a xe ự ế ủĐến năm 2014, m t mô hình v n t i m i k t h p v n chuyộ ậ ả ớ ế ợ ậ ển người và hàng hoá được đề xuất đầu tiên bởi Li và đồng nghi p [23] ệ
Trong một vài năm gần đây, mô hình vận tải kế ợt h p giữa xe tả ới v i thi t bế ị bay UAV đã được đ xu t, nghiên c u và th nghi m Mô hình t i ề ấ ứ ử ệ ố ưu cho bài toánnày được đ xu t bề ấ ởi Murray và Chu vào năm 2015 [27] Mô hình được xây d ng ựtheo hướng xe t i s v n chuyểả ẽ ậ n các hàng hoá n ng và c ng k nh và có kho ng ặ ồ ề ảcách lớn v i tốớ c đ di chuyểộ n ch m hơn so vớậ i thi t b ế ị bay UAV nhưng UAV chỉ di chuy n ể được trong kho ng cách ng n và ph i quay v nả ắ ả ề để ạp năng lượng điện
Điều đó cho thấy, bài toán tối ưu điều hành v n tậ ải được quan tâm trong nhiều thập kỷ qua và số lượng giải pháp đã tăng lên nhanh chóng Cùng với sự phát triển về ố t c độ x ử lý và dung lượng bộ nh ớ đã tăng lên đáng kể, cho phép các nhàkhoa h c gi i quyọ ả ết nhiề trườu ng h p khác nhau, th nghi m v i d li u l n và thu ợ ử ệ ớ ữ ệ ớđược k t qu tế ả ốt hơn
16
Trang 19diện giúp định nghĩa các bất biến, hàm, ràng buộc mà ngư i dùng tự địờ nh nghĩa có
th ể tích hợp với các thành phần sẵn có của thư viện Ngoài ra thư viện còn có tính
mở, cho phép người dùng có thể ự t thiết kế và cài đặt các bất biến, hàm và ràng
buộc của mình và tích ợp vào các thành phần khác, cũng như cài đặt chiế lược h n tìm kiếm của riêng mình Các API hỗ ch ợ cho người dùng giảm th i gian phátờ tri n ểcác ứng dụng, chương trình Local Search ngắn gọn hơn và không cần ph i thao tác ảtrên d li u phữ ệ ức tạp
1.4.2 Láng giềng
Thuật toán local Search là thuật toán được tạo ra từ các lời giải láng giềng
dựa trên các thao tác di chuyển (move) Thư viện CBLSVR đề ậ c p đ n các thao tácế
di chuy n (move) thông dể ụng như: One point move thay đổ ị trí 1 điể- i v m Twopoint move đổi vị í 2 điể tr m v i nhau Two opt move xóa bớ - ỏ 2 k t nế ối cũ, thay bằng 2 k t ế
nối mới giữa các điểm… Phần sau đây, các toán tử di chuyển c c b s ụ ộ ẽ được trình bày chi ti t ế
1.4.2.1 Phương thức performOnePointMove(Point x, Point y)
Trong đó: điểm x và điểm y có th cùng ho c khác tuyể ặ ến đường (route)
Th c hiự ện: chèn điểm x vào sau điể ym
17
Trang 201.4.2.2 Các phương thức performTwoOptMove1(Point x, Point y);
performTwoOptMove2(Point x, Point y); performTwoOptMove3(Point x, Point y); performTwoOptMove4(Point x, Point y)
Trong đó: điểm x, y n m trên các tuyằ ến đường khác nhau; x, y không phải là điểm đầu hay điểm k t thúc; next[xế ], next[y] là điểm ti p theo lế ần lượ ủt c a x, y trên tuyến đường
Thực hiện: Xóa bỏ đường nối giữa điể x và next[x], điểm y và next[y] Tạm o
m i ớ đường nối cạnh (x, y) và cạnh (next[x], next[y]) đối với mỗi phương thức sẽ xác
định tuyến đường khác nhau (do đổi chiều đường đi)
Ví d : Cho 2 tuyụ ến đường router[1] và router[2] với 1, 2, 3, 4, 5, 6, 7 là các điểm,
S1, S2 là điểm xuất phát và E1, E2là điểm kết thúc tuyến đường
Hình 1.1: Ví d ụ 2 tuyến đường khác nhau
Trang 21Hình 1.2: Minh h a thu t toán performTwoOptMove1(2,6) ọ ậ
+ Đổi chi u tuyề ến đường
Hình 1.3: Minh h a thu t toán performTwoOptMove2ọ ậ (2,6)
Trang 22+ Đổi chi u tuy n ề ế đường
Hình 1.4: Minh h a thu t toán performTwoOptMove3(2,6ọ ậ )
+ Đổi chi u tuyề ến đường
Hình 1.5: Minh h a thu t toán performTwoOptMove4(2,6) ọ ậ
K t qu ế ả route[1] = S1 5 6 2 1 E1
route[2] = S2 7 3 4 E 2
20
Trang 231.4.2.3 Các phương thức: performTwoOptMove5(Point x, Point y);
performTwoOptMove6(Point x, Point y); performTwoOptMove7(Point x, Point y); performTwoOptMove8(Point x, Point y)
Trong đó: điểm x, y n m trên các tuyến đườằ ng khác nhau; x, y không ph i là ảđiểm đầu hay điểm k t thúc; next[xế ], next[y] là điểm ti p theo lế ần lượ ủt c a x, y trên tuy n ế đường
Thực hiện: Xóa bỏ đường nối giữa điể x và next[x], điểm y và next[y] Tạm o
m i ớ đường nối cạnh (x, next[y]) và cạnh (y, next[x]) đối với mỗi phương thức sẽ xác
định tuy n ế đường khác nhau (do đổi chiều đường đi)
Ví d : Có 2 tuyụ ến đường router[1] và router[2] với 1, 2, 3, 4, 5, 6, 7 là các điểm, S1,
S2 là điểm xuất phát và E1, E2là điểm k t thúc tuyế ến đường
Hình 1.6: Ví d ụ 2 tuyến đường khác nhau router[1], router[2]
N u th c hiế ự ện: performTwoOptMove5(2,6)
+ Xóa b kỏ ết nố ại c nh (2,3); (6,7)
+ B sung k t n i (2,7); (6,3) ổ ế ố
+ Đổi chi u tuyề ến đường
Hình 1.7: Minh h a thu t toán performTwoOptMove5(2,6) ọ ậ
21
Trang 24+ Đổi chi u tuyề ến đường
Hình 1.8: Minh h a thu t toán performTwoOptMove6(2,6)ọ ậ
+ Đổi chi u tuyề ến đường
Hình 1.9: Minh h a thu t toán performTwoOptMove7(2,6) ọ ậ
22
Trang 25+ Đổi chi u tuyề ến đường
Hình 1.10: Minh h a thu t toán performTwoOptMove8(2,6)ọ ậ
K t qu ế ả route[1] = S1 7 2 1 E1
route[2] = S2 4 3 6 5 E21.4.2.4 Các phương thức: performOrOptMove1(Point x1, Point x2, Point y);
performOrOptMove1(Point x1, Point x2, Point y)
Trong đó: x1, x2 là các điểm cùng n m trên 1 tuyằ ến đường, y là điểm nằm trên tuy n ế đường còn l i; ạ x1, x2, không phy ải là điểm đầu, cuối trên tuyến đường
prev [x1], prev [x2], prev [y] là các điểm lần lượt đứng trước x1, x2, y
next [x1], next [x2], next [y] là các điểm lần lượt đứng sau x1, x2, y
Th c hi n di chuy n ự ệ ể x1, x2 n tuyđế ến đường chứa y
Xóa b kỏ ết nối: (prev[x1], x1); (x2, next[x2]); ( , next[ ]) y y
B sung k t n i ( , ổ ế ố y x1); (x2, next[ ]); (prev[y x1], next[x2])
23
Trang 26Ví d : Có 2 tuyụ ến đường router[1] và router[2] v i 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 là cácớđiểm, S1, S2 là điểm xuất phát và E1, E2là điểm kết thúc tuyến đường
Hình 1.11: Ví d 2 tuyụ ến đường với 5 điể m
Trang 27Hình 1.13: Minh h a thu t toán performOrOptMove2(2,4,6)ọ ậ
K t qu ế ả route[1] = S1 1 5 E1
route[2] = S2 6 7 8 4 3 2 9 10 E2+ Phương thức: performThreeOptMove1(Point , Point , Point z) x y
Trong đó: x y, , z là 3 điểm thu c cùng 1 tuyến đườộ ng (x trước y, y trước z)
Xóa b kỏ ết nố ại c nh ( , next[ ]); ( , next[ ]); (z, next[z]) x x y y
B sung k t n i ( , z); (next[ ], next[ ]; ( , next[z]) ổ ế ố x y x y
Ví d : Tuyụ ến đường router[1] với 1, 2, 3, 4, 5, 6, 7, 8 là các điểm, S1 là điểm xuất phát và E1là điểm k t thúc tuyế ến đường
Hình 1.14: Ví d tuyụ ến đường với 8 điểm
Trang 28Hình 1.15: Minh h a thu t toán performThreeOptMove1(2,4,6) ọ ậ
K t qu ế ả
route[1] = S1 1 2 6 5 3 4 7 8 E11.4.2.5 Phương thức: performCrossExchangeMove(Point x1, Point y1, Point
x2, Point y2)
Trong đó: x1 và y1là điểm cùng 1 tuyến đường, x1 đứng trước y1
x2 và y2là điểm cùng 1 tuyến đường, x2 đứng trước y2
Thực hện: Xóa b (ỏ x1, next[x1]), (y1, next[y1]), (x2, next[x2]), (y2, next[y2]) và
b sung (ổ x1, next[x2]), (y2, next[y1]), (x2, next[x1]), (y1, next[y2])
Ví d : Có 2 tuyụ ến đường router[1] và router [2] v i 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ớ
là c ác điểm S1, S2 là điểm xuất phát và E1, E2là điểm kết thúc tuyến đường
Hình 1.16: Ví d 2 tuyụ ến đường router[1] và router[2] với các điểm khác nhau
Trang 29Hình 1.17 Minh h a gi i thu t performCrossExchangeMove(2,4,7,9) : ọ ả ậ
c a bi n, b t bi n, hàm, ràng buủ ế ấ ế ộc
1.4.3.1 Biến lộ trình
Biến lộ trình là biến thể hiện lời giải của bài toán đã cho VarRoutersVR
trong thư viện CBLSVR là biế ộn l trình Biến này sẽ mô hình hóa lời giải cho bàitoán Trong bài toán vậ ản t i có tập K là tập tuyến đường, trong đó mỗi tuyến đường
ứng v i m t xe và s ớ ộ ẽ có điểm đầu và điểm k t thúc; ngoài ra còn t p các khách hàng ế ậ
m i khách hàng ch có duy nh t 1 tuy n ỗ ỉ ấ ế đường đi qua Mộ ố phương thức củt s a bi n ế
27
Trang 30khách hàng
initRandom() Sắp xếp các đi m khách hàng vào ngẫu ể
nhiên các tuyến đường
Point prev(Point x)
Tr v ả ề điểm ngay trước x trong tuy n ếđường n u x ế là điểm đ u ho c x không ầ ặthu c tuyộ ến đường nào thì tr v ả ề ⊥
int route(Point x)
Tr v ả ề chỉ ố s tuyến đường đi qua điểm x
nếu không có tuyến đường nào đi qua x thì tr v ả ề ⊥
int index(Point x)
Tr v ả ề chỉ ố ủa điểm x trong tuyến s cđường n u x không thu c tuyế ộ ến đường nào thì tr v ả ề ⊥
Point oldNext(Point x) Tr v ả ề điểm có vị trí ngay sau x trong
Trang 311.4.3.2 Bất biến
Bất biến là đối tượng biểu diễn đặc trưng của lời giải Khi lời giải thay đổi thì các b t biấ ến cũng cần được cập nhật để chúng có thể bi u diễn đúng thuộể c tính
của lời giải mới
Các hàm propagate chính là các hàm c p nh t b t bi n khi l i giậ ậ ấ ế ờ ải thay đổi như đã nói ở trên, còn hàm initPropag te là hàm kh i t o các bi n và c u trúc d a ở ạ ế ấ ữ
li u ệ hàm sẽ được tự động gọi bởi VRManager khi việc lên mô hình bài toán kết thúc
Thư viện CBLSVR có cung c p các b t bi n hay g p trong các bài toán VRP sau: ấ ấ ế ặ
+ AccumulatedWeightEdges tính t ng tr ng s ổ ọ ố tích lũy theo cạnh Bất biến này
có th ể được dùng để tính tổng quãng đường di chuyển theo mỗi điểm
+ AccumulatedWeightNodes tính t ng tr ng s ổ ọ ố tích lũy theo đỉnh Bất biế này n
có thể được dùng để ể bi u diễn điều ki n tệ ổng số yêu cầu trên m t tuy n khôngộ ế được vượt quá kh ả năng của xe trong bài toán CVRP
cạnh từ điểm xuấ phát đến điểm bất t
kỳ Hàm này được sử ụng cho các bài dtoán có ràng buộc về độ dài đường đi
hoặc tính chi phí cho tuyến đường nào
Trang 32TotalCostVR Tính t ng các chi phí cổ ủa tất cả các
Leq, Eq, Neq, Implicate, AND, OR Các phép toán logic
1 public class GenericLocalSearch implements ISearch {
2 public GenericLocalSearch (VRManager mgr, LexMultiFunctions F,
3 ArrayList <INeighborhoodExplorer > neighborhoodExplorer) {
30
Trang 334 }
5 public void search(int maxIter, int timeLimit) {
6 bestSolution = new ValueRoutesVR (XR);
7 currentIter = 0;
8 XR.setRandom();
9 Neighborhood N = new Neighborhood(mgr);
10 bestValue = new LexMultiValues (F.getValues());