BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI --- NGUYỄN HẢI ĐĂNG 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 LUẬN VĂN THẠC
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
NGUYỄN HẢI ĐĂNG
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
LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN
Trang 2
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
NGUYỄN HẢI ĐĂNG
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
CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS PHẠM QUANG DŨNG
Trang 3LỜI MỞ ĐẦU
cho 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
đượ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ẽ
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
phục vụ sớm nhất có thể và tối thiểu hóa hành trình dài nhất Sau đó, tôi đề 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
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
Trang 4vận tải, các hướng tiếp cận và thư viện Chương 2 trình bày về 10 thuật toán tham
đánh giá đối với các thuật toán tham lam
Trang 5M ỤC LỤC
L ỜI MỞ ĐẦU 1
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ổ hợp 11
1 2 Các hướng tiếp cận giải bài toán tối ưu tổ hợp 13
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ải 15
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
ật toán tham lam 8 (Greedy8) 45
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ả thử nghiệm 58
K ẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 61
TÀI LI ỆU THAM KHẢO 62
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
đú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 ọc viên thực hiện
Nguy ễn Hải Đăng
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ệ
hướng dẫn, giúp đỡ em hoàn thành khóa luận tốt nghiệp
của mình, phục vụ tốt hơn trong công việc thực tế
Trang 9DANH M ỤC CÁC CHỮ VIẾT TẮT
Search
ràng buộc
Vehicle Routing Problem
đường đi các phương tiện
with Time Window
buộc về khung thời gian
hóa
Search Vehicle Routing
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ới các thuật toán 60
Trang 11DANH M ỤC CÁC HÌNH VẼ
Hình 1.1: Ví dụ 2 tuyến đường khác nhau 18
Hì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] 21
Hì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 24
Hì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 25
Hì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 26
Hì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
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
Trang 13CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
1.1 Bài toán t ối ưu tổ hợp
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 trong
chuyề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ột bài toán tối ưu tổ hợp [31] là một bộ (X, D, C, f) trong đó:
đượ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
thước nxn sao cho không có hai con hậu bất kì nào khống chế nhau Khả năng
Trang 14Khống chế những ô thuộc cùng đường chéo
X i ≠ X j v ới i ≠ j: Các con hậu không ở cùng 1 hàng
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
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
bà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]
Trang 15Chỉ có duy nhất một loại bước di chuyển là gán lại giá trị một phần tử X i trong tập
cách tham lam:
Gán lại giá trị X i 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ổ hợp đượ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
thời gian hữu hạn cho phép
Trang 161.2.1 Hướng tiếp cận giải đúng
ư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, hay quy
hoạch nguyên tuyến tính (ILP)
1.2.2 Hướng tiếp cận giải gần đúng
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ừ
đổ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 đề tối ưu cục bộ của Local search có thể áp dụng các phương pháp
trở lại các lời giải trước đó
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ừ một cá thể độ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
khác thành công như [20] [5] [4]
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
Trang 17và trong tình huống gặp tối ưu cục bộ, tất cả các tậ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 đã
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
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
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ề vấn đề 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]
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án chính xác [3] [10]
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
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
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 l Nế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à xe khô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
quần thể [21]
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
Heuristics đã được đề xuất trong [12], để tối ưu hóa tuyến đườ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]
bay UAV đã được đề xuất, nghiên cứu và thử nghiệm Mô hình tối ưu cho bài toán nà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
Đ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
được kết quả tốt hơn
Trang 191.4 Thư viện CBLSVR
1.4.1 T ổng quan
Constraint Based Local Search Vehicle Routing (CBLSVR) [9] là thư viện
trên dữ liệu phức tạp
1.4.2 Láng gi ềng
move đổi vị trí 2 điểm với nhau Two-opt move xóa bỏ 2 kết nối cũ, thay bằng 2 kết
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)
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
đị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, S2là điểm xuất phát và E1, E2là điểm kết thúc tuyến đường
+ Xóa bỏ kết nối cạnh (2,3); (6,7)
+ Bổ sung kết nối (2,6); (3,7)
Trang 21Hình 1.2: Minh h ọa thuật toán performTwoOptMove1(2,6)
+ Xóa bỏ kết nối cạnh (2,3); (6,7)
+ Bổ sung kết nối (2,6); (3,7)
+ Xóa bỏ kết nối cạnh (2,3); (6,7)
+ Bổ sung kết nối (2,6); (3,7)
Trang 22+ Đổi chiều tuyến đường
+ Xóa bỏ kết nối cạnh (2,3); (6,7)
+ Bổ sung kết nối (2,6); (3,7)
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
đị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,
S2là điểm xuất phát và E1, E2là điểm kết thúc tuyến đường
+ Xóa bỏ kết nối cạnh (2,3); (6,7)
+ Bổ sung kết nối (2,7); (6,3)
Trang 24Kết quả route[1] = S1127E1
+ Xóa bỏ kết nối cạnh (2,3); (6,7)
+ Bổ sung kết nối (2,7); (6,3)
+ Xóa bỏ kết nối cạnh (2,3); (6,7)
+ Bổ sung kết nối (2,7); (6,3)
Trang 25Kết quả route[1] = S1127E1
+ Xóa bỏ kết nối cạnh (2,3); (6,7)
+ Bổ sung kết nối (2,7); (6,3)
1.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, x2là 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, y không phả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]); (y, next[y])
Bổ sung kết nối (y, x1); (x2, next[y]); (prev[x1], next[x2])
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, E2 là điểm kết thúc tuyến đường
+ Xóa bỏ kết nối cạnh (1,2); (4,5); (8,9)
+ Bổ sung kết nối (8,2); (4,9); (1,5)
Trang 27Hình 1.13: Minh h ọa thuật toán performOrOptMove2(2,4,6)
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 (x, next[x]); (y, next[y]); (z, next[z])
Bổ sung kết nối (x, z); (next[y], next[x]; (y, next[z])
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à E1 là điểm kết thúc tuyến đường
+ Xóa bỏ kết nối cạnh (2,3); (4,5); (6,7)
+ Bổ sung kết nối (2,6); (5,3); (4,7)
Trang 28Hình 1.15: Minh h ọa thuật toán performThreeOptMove1(2,4,6)
Kết quả
1.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, E2 là điểm kết thúc tuyến đường
+ Xóa bỏ kết nối cạnh (2,3); (4,5); (7,8); (9,10)
+ Bổ sung kết nối (2,5); (9,8); (1,5); (4,3); (7,5)
Trang 29Hình 1.17: Minh h ọa giải thuật performCrossExchangeMove(2,4,7,9)
CBLSVR có đối tượng VRManager để thực hiện quản lý và cập nhật các thay đổi
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
ứ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
lộ trình:
Ký hiệu: ⊥ là null point
Các hàm khởi tạo lời giải trình bày trong bảng 1.1
Trang 30khách hàng
Các hàm truy vấn về trạng thái của lời giải trình bày trong bảng 1.2
Point next(Point x)
đường nếu x là điểm cuối hoặc x không thuộc tuyến đường nào thì trả về ⊥
Point prev(Point x)
đườ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)
thì trả về ⊥
int index(Point x)
Trả về chỉ số của điểm x trong tuyến đường nếu x không thuộc tuyến đường nào thì trả về ⊥
lời giải trước
lời giải trước
lời giải trước
của lời giải trước đó
Trang 311.4.3.2 B ất biến
của lời giải mới
như đã nói ở trên, còn hàm initPropagate là hàm khởi tạo các biến và cấu trúc dữ
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:
vượt quá khả năng của xe trong bài toán CVRP
cạnh từ điểm xuất phát đến điểm bất
toán có ràng buộc về độ dài đường đi
đó
AccumulatedNodeWeightsOnPathVR
Thường được sử dụng với bài toán ràng
buộc về trọng tải của xe
Trang 32TotalCostVR Tính tổng các chi phí của tất cả các
1 public class GenericLocalSearch implements ISearch {
Trang 334 }