1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

67 21 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 1,11 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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 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 3

hoạt động vận chuyển hàng hóa vẫ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ự lựa chọn các tuyến đường 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

Tối ưu hóa quá trình di chuyển của các phương tiện tạo ra cơ hội kinh doanh

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ụ 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

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

Trang 4

vậ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 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

Trang 5

M Ụ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 6

2.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 7

L Ờ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ừ bất kỳ đồ á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

Trang 8

L Ờ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ình hướ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ế của một học viên,

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ốt hơn trong công việc thực tế

Em xin chân thành cảm ơn!

Trang 9

DANH M ỤC CÁC CHỮ VIẾT TẮT

Chữ viết tắt Tên đầy đủ Ý nghĩa

CBLS Constraint Based Local

Search

Tìm kiếm cục bộ dựa trên ràng buộc

MMCVRP 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ìm kiếm cục bộ dựa trên rà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

Trang 10

DANH 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 11

DANH 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 12

DANH 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 13

CHƯƠ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ổ hợp là bài toán không quan tâm đế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 trong 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 trong các tổ chức, doanh nghiệp Như bài toán lập tuyến tối ưu trong lĩnh vự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ây 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ụ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ác ràng buộc đặt ra, đồng thời tối ưu mộ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 đó:

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 nxn 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

Trang 14

Khố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 n biến quyết định X = {X 1 , X 2 , …, X n}: Biến X i biểu thị hàng cho con hậu

đứng ở cột i

Miền giá trị D = {D 1 , D 2 , …, D n } trong đó D i = {1…n} M ỗi biến X i có miền

từ 1 đến n

Tập ràng buộc:

X i ≠ Xj v ới i ≠ j: Các con hậu không ở cùng 1 hàng

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óa

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 15

Chỉ 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

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ị 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 toán tối ưu tổ hợp kích thước lớn đang đượ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

Trang 16

1.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, 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ừ

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 đề tối ưu cụ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ử dụng một danh sách

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ử dụng phương pháp này để tránh quay

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ừ 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 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ẽ lần lượt được duyệ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

Trang 17

và 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 đã 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ữ cảnh

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ề sức chứ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ề 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]

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án chí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

Trang 18

khá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

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ều khách khác Như vậy sẽ có ràng buộc về thứ tự gặp khách hàng và tuân

thủ theo thứ tự hành trình đó Khi gắn với các mô hình thực tế trong cuộc sống trở 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ỉ cần giao đế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], để 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]

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á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 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ều trườ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

Trang 19

diệ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 hợp vào các thành phần khác, cũng như cài đặt chiến lược 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 đổi vị trí 1 điểm Twopoint 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

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ểm y

Trang 20

1.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ểm x và next[x], điểm y và next[y] Tạ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, S2là điểm xuất phát và E1, E2là điểm kết thúc tuyến đường

Nếu thực hiệ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)

+ Đổi chiều tuyến đường

Trang 21

Hình 1.2: Minh h ọa thuật toán performTwoOptMove1(2,6)

Kết quả route[1] = S11265E1

route[2] = S2437E2

Nếu thực hiện: performTwoOptMove2(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)

+ Đổi chiều tuyến đường

Kết quả route[1] = S15621E1

route[2] = S2437E2

Nếu thực hiện: performTwoOptMove3(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)

Trang 22

+ Đổi chiều tuyến đường

Kết quả route[1] = S11265E1

route[2] = S2 734E2

Nếu thực hiện: performTwoOptMove4(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)

+ Đổi chiều tuyến đường

Kết quả route[1] = S15621E1

route[2] = S2 734E2

Trang 23

1.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ểm x và next[x], điểm y và next[y] Tạ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,

S2là điểm xuất phát và E1, E2là điểm kết thúc tuyến đường

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

Trang 24

Kết quả route[1] = S1127E1

route[2] = S25634E2

Nếu thực hiện: performTwoOptMove6(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

Kết quả route[1] = S1721E1

route[2] = S2 5634E2

Nếu thực hiện: performTwoOptMove7(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

Trang 25

Kết quả route[1] = S1127E1

route[2] = S2 4365E2

Nếu thực hiện: performTwoOptMove8(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

Kết quả route[1] = S1721E1

route[2] = S24365E2

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 26

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

Nếu thực hiện: performOrOptMove1(2,4,6)

+ 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)

+ Cập nhật lại tuyến đường

Kết quả route[1] = S115E1

Trang 27

Hì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 x, Point y, Point z)

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

Nếu thực hiện: performThreeOptMove1(2,4,6)

+ 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)

+ Cập nhật lại tuyến đường

Trang 28

Hì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E1

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

Nếu thực hiện: performCrossExchangeMove(2,4,7,9)

+ 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)

+ Cập nhật lại tuyến đường

Trang 29

Hình 1.17: Minh h ọa giải thuật performCrossExchangeMove(2,4,7,9)

Kết quả route[1] = S112895E2

route[2] = S2673410E2

Với kiến trúc CBLS khi một số biến thay đổi giá trị thì các bất biến, hàm và ràng buộc được xây dựng trên các biến cũng sẽ thay đổi theo Nên trong thư viện 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

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ài toá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ột số phương thức của biến

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 30

khá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

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)

Trả về điểm ngay sau x trong tuyến đườ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)

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ỉ 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ề ⊥

Point oldNext(Point x) Trả về điểm có vị trí ngay sau x trong

lời giải trước

Point oldPrev(Point x) Trả về điểm có vị trí ngay trước x trong

lời giải trước

int oldRoute(Point x) Trả về chỉ số tuyến đường đi qua x trong

lời giải trước

int oldIndex(Point x) Trả về chỉ số của x trong tuyến đường

của lời giải trước đó

Trang 31

1.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 initPropagate là hàm khởi tạo các biến và cấu trúc dữ

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 này

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ất phát đến điểm bất

kỳ Hàm này được sử dụng cho các bài toán có ràng buộc về độ dài đường đi

hoặc tính chi phí cho tuyến đường nào

đó AccumulatedNodeWeightsOnPathVR

Tính tổng tích lũy trọng số theo điểm 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 32

TotalCostVR Tính tổng các chi phí của tất cả các

Đưa thời gian đến sớm nhất của các điểm trong bài toán VRP với ràng buộc

về thời gian Plus, Minus, Mult, Div, Mod Các phép toán số họ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) {

Trang 33

4 }

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());

Ngày đăng: 25/02/2021, 16:01

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] D. Applegate, W. Cook, S. Dash, and A. Rohe, “Solution of a min-max vehicle routing problem,” INFORMS J. on Computing, vol. 14, no. 2, pp. 132–143, Apr Sách, tạp chí
Tiêu đề: Solution of a min-max vehicle routing problem
Tác giả: D. Applegate, W. Cook, S. Dash, A. Rohe
Nhà XB: INFORMS J. on Computing
Năm: 2002
[3] R. Baldacci, E. Hadjiconstantinou, and A. Mingozzi, “An exact algorithm for the capacitated vehicle routing problem based on a two-commodity network flow formulation,” Operations Research, vol. 52, no. 5, pp. 723–738, 2004. [Online].Available: http://dx.doi.org/10.1287/opre.1040.0111 Sách, tạp chí
Tiêu đề: An exact algorithm for the capacitated vehicle routing problem based on a two-commodity network flow formulation
Tác giả: R. Baldacci, E. Hadjiconstantinou, A. Mingozzi
Nhà XB: Operations Research
Năm: 2004
[6] George Bernard Dantzig and John Hubert Ramser. The Truck Dispatching Problem. Management Science 6(1), pp 80-91, 1959 Sách, tạp chí
Tiêu đề: The Truck Dispatching Problem
Tác giả: George Bernard Dantzig, John Hubert Ramser
Nhà XB: Management Science
Năm: 1959
[7] M. Desrochers, J. Desrosiers, and M. Solomon, “A new optimization algorithm for the vehicle routing problem with time windows,” Operations Research, vol. 40, no. 2, pp. 342–354, 1992. [Online]. Available:http://dx.doi.org/10.1287/opre.40.2.342 Sách, tạp chí
Tiêu đề: A new optimization algorithm for the vehicle routing problem with time windows
Tác giả: M. Desrochers, J. Desrosiers, M. Solomon
Nhà XB: Operations Research
Năm: 1992
[9] Pham Quang Dung, Le Kim Thu, Nguyen Thanh Hoang, Pham Van Dinh, Bui Quoc Trung. A Constraint-Based Local Search for offine and online general vehiclerouting. International Journal on Artificial Intelligence Tools, Volume 26, Issue 02, pages 1-32, April 2017 Sách, tạp chí
Tiêu đề: A Constraint-Based Local Search for offine and online general vehiclerouting
Tác giả: Pham Quang Dung, Le Kim Thu, Nguyen Thanh Hoang, Pham Van Dinh, Bui Quoc Trung
Nhà XB: International Journal on Artificial Intelligence Tools
Năm: 2017
[10] R. Fukasawa, H. Longo, J. Lysgaard, M. P. d. Arag˜ao, M. Reis, E. Uchoa, and R. F. Werneck, “Robust branch-and-cut-and-price for the capacitated vehicle routing problem,” Mathematical Programming, vol. 106, no. 3, pp. 491–511, 2006.[Online]. Available: http://dx.doi.org/10.1007/s10107-005-0644-x Sách, tạp chí
Tiêu đề: Robust branch-and-cut-and-price for the capacitated vehicle routing problem
Tác giả: R. Fukasawa, H. Longo, J. Lysgaard, M. P. d. Arag˜ao, M. Reis, E. Uchoa, R. F. Werneck
Nhà XB: Mathematical Programming
Năm: 2006
[11] L. G. P. J.-Y. Gendreau, M., “Metaheuristics for the capacitated vrp,” in The Vehicle RoutingProblem, V. D. Toth, P., Ed. SIAM Monographs on Discrete Mathematics and Applications, 2002, vol. 9 Sách, tạp chí
Tiêu đề: Metaheuristics for the capacitated vrp
Tác giả: L. G. P. J.-Y. Gendreau, M
Nhà XB: SIAM Monographs on Discrete Mathematics and Applications
Năm: 2002
[12] M. Gendreau, F. Guertin, J.-Y. Potvin, and R. Sguin, “Neighborhood search heuristics for adynamic vehicle dispatching problem with pick-ups and deliveries,”Transportation ResearchPart C: Emerging Technologies, vol. 14, no. 3, pp. 157 –174, 2006.[Online].Available:http://www.sciencedirect.com/science/article/pii/S0968090X06000349 Sách, tạp chí
Tiêu đề: Neighborhood search heuristics for a dynamic vehicle dispatching problem with pick-ups and deliveries
Tác giả: M. Gendreau, F. Guertin, J.-Y. Potvin, R. Sguin
Nhà XB: Transportation Research Part C: Emerging Technologies
Năm: 2006
[15] D. E. Goldberg. Genetic algorithms in search, optimization and machine learning. Addison Wesley, Reading, 1989 Sách, tạp chí
Tiêu đề: Genetic algorithms in search, optimization and machine learning
Tác giả: D. E. Goldberg
Nhà XB: Addison Wesley
Năm: 1989
[16] Bruce Golden, S. Raghavan, Edward Wasil. The vehicle routing problem: latest advances new challenges. Springer, 2008.63 Sách, tạp chí
Tiêu đề: The vehicle routing problem: latest advances new challenges
Tác giả: Bruce Golden, S. Raghavan, Edward Wasil
Nhà XB: Springer
Năm: 2008
[17] R. S. W.-E. A. Golden, Bruce L., The Vehicle Routing Problem: Latest Advances and NewChallenges, ser. 43. The address: Springer, 2008 Sách, tạp chí
Tiêu đề: The Vehicle Routing Problem: Latest Advances and NewChallenges
Tác giả: R. S. W.-E. A. Golden, Bruce L
Nhà XB: Springer
Năm: 2008
[20] J. Homberger and H. Gehring. A two-phase hybrid metaheuristic for the vehicle routing problem with time windows. European Journal of Operational Research, 162(1):220_238, 2005 Sách, tạp chí
Tiêu đề: A two-phase hybrid metaheuristic for the vehicle routing problem with time windows
Tác giả: J. Homberger, H. Gehring
Nhà XB: European Journal of Operational Research
Năm: 2005
[21] S. Kumar and R. Panneerselvam, “A survey on the vehicle routing problem and its variants,” Intelligent Information Management, vol. 4, no. 3, pp. 66–74, 2012 Sách, tạp chí
Tiêu đề: A survey on the vehicle routing problem and its variants,” "Intelligent Information Management
[22] G. Laporte, “The vehicle routing problem: An overview of exact and approximate algorithms,” European Journal of Operational Research, vol. 59, no. 3, pp. 345 – 358, 1992. [Online]. Available Sách, tạp chí
Tiêu đề: The vehicle routing problem: An overview of exact and approximate algorithms
Tác giả: G. Laporte
Nhà XB: European Journal of Operational Research
Năm: 1992
[24] Y. Marinakis, “Multiple phase neighborhood search-grasp for the capacitated vehicle routing problem,” Expert Systems with Applications, vol. 39, no. 8, pp. 6807 – 6815, 2012. [Online]. Available:http://www.sciencedirect.com/science/article/pii/S0957417412000176 Sách, tạp chí
Tiêu đề: Multiple phase neighborhood search-grasp for the capacitated vehicle routing problem
Tác giả: Y. Marinakis
Nhà XB: Expert Systems with Applications
Năm: 2012
[26] M. D. Moffitt and M. E. Pollack. Optimal rectangle packing: A meta-CSP approach. In Proceedings of the 16th International Conference on Automated Planning and Scheduling, 2006 Sách, tạp chí
Tiêu đề: Optimal rectangle packing: A meta-CSP approach
Tác giả: M. D. Moffitt, M. E. Pollack
Nhà XB: Proceedings of the 16th International Conference on Automated Planning and Scheduling
Năm: 2006
[27] Murray, C.C., Chu, A.G.: The flying sidekick traveling salesman problem: Optimization of drone-assisted parcel delivery. Transportation Research Part C:Emerging Technologies 54, pp 86–109 (2015) Sách, tạp chí
Tiêu đề: The flying sidekick traveling salesman problem: Optimization of drone-assisted parcel delivery
Tác giả: C.C. Murray, A.G. Chu
Nhà XB: Transportation Research Part C: Emerging Technologies
Năm: 2015
[28] Pascal Van Hentenryck and Laurent Michel. Constraint-based Local Search. The MIT Press, 2005 Sách, tạp chí
Tiêu đề: Constraint-based Local Search
Tác giả: Pascal Van Hentenryck, Laurent Michel
Nhà XB: The MIT Press
Năm: 2005
[29] Ralphs, T., Guzelsoy, M., Mahajan, A.: The SYMPHONY source code https://projects.coin-or.org/SYMPHONY (2010) Sách, tạp chí
Tiêu đề: The SYMPHONY source code
Tác giả: Ralphs, T., Guzelsoy, M., Mahajan, A
Năm: 2010
[30] T. Ralphs, L. Kopman, W. Pulleyblank, and L. Trotter, “On the capacitated vehicle routing problem,” Mathematical Programming, vol. 94, no. 2, pp. 343–359, 2003. [Online]. Available: http://dx.doi.org/10.1007/s10107-002-0323-0 Sách, tạp chí
Tiêu đề: On the capacitated vehicle routing problem
Tác giả: T. Ralphs, L. Kopman, W. Pulleyblank, L. Trotter
Nhà XB: Mathematical Programming
Năm: 2003

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w