ỨNG DỤNG GIẢI THUẬT DI TRUYỀN TRONG XỬ LÝ BÀI TOÁN ĐỊNH TUYẾN XE APPLICATION GENERATION ALGORITHM FOR SOLVER VEHILCE ROUTING PROBLEM Cao Ngọc Ánh1, Trần Bích Thảo2 Khoa Cơng nghệ Thông tin, trường Đại học Kinh tế - Kỹ thuật Công nghiệp Khoa Công nghệ Thông tin, trường Đại học Kinh tế - Kỹ thuật Cơng nghiệp TĨM TẮT Mục tiêu nghiên cứu tìm giải pháp cho Vấn đề Định tuyến Xe cách sử dụng thuật toán di truyền Bài toán Định tuyến Xe Vehicle Routing Problem (VRP) tốn tối ưu hóa tổ hợp phức tạp thuộc lớp NP-complete Vehicle Routing Problem vấn đề toán học, đề gốc tốn gói gọn câu hỏi: “Làm để tạo lộ trình tối ưu cho đội xe giao hàng tới lượng khách hàng có sẵn?” Bài báo nghiên cứu thuật tốn di truyền kỹ thuật tìm kiếm sử dụng máy tính để tìm giải pháp gần đến vấn đề tối ưu hóa tìm kiếm để giải tốn định tuyến xe Từ khóa: Vehicle Routing Problem (VRP); Genetic Algorithm ABSTRACT The main objective of this research is to find a solution to the Vehicle Routing Problem using genetic algorithms Vehicle Routing Problem (VRP) is a complex combinatorial optimization problem of class NP-complete The Vehicle Routing Problem is a math problem, and the original problem of this problem is encapsulated in the question: “How to create an optimal route for a fleet of vehicles to deliver to an existing customer? " The article studies genetic algorithms and search techniques used in computers to find the correct or approximate solutions to optimization and search problems to solve vehicle routing problems Keywords: Vehicle Routing Problem (VRP); Genetic Algorithm I GIỚI THIỆU đến VRP mở rộng từ nhóm nhỏ nhà tốn học sang phạm vi rộng nhà Có thể phát biểu toán VRP nghiên cứu nhà thực hành, từ cách đơn giản sau: Có tập hợp 𝑀 xe ngành khác nhau, nhiều lĩnh vực giống xuất phát kho hàng Các phương pháp giải xác đảm bảo lời làm nhiệm vụ giao hàng cho 𝑁 khách giải tối ưu tìm thấy khoảng hàng, khách hàng đòi hỏi cung cấp thời gian hữu hạn Tuy nhiên, thời gian chạy lượng hàng định Yêu cầu đặt của trường hợp tồi lớn, tốn tìm đường ngắn cho 𝑀 xe đáp lớp thuật tốn giải ứng tất đòi hỏi khách hàng tốn có kích thước nhỏ vừa: thuật [1] toán nhánh cận (brand and bound) [4], thuật Vehicle Routing Problem bắt nguồn từ năm toán sinh cột [5],… 1959 George Dantzig John Ramser Các phương pháp gần gồm giải [2][3] thiết lập công thức toán học phương thuật cho chất lượng lời giải gần với lời giải pháp tiếp cận thuật tốn để giải tối ưu nhóm giải thuật heuristic cổ vấn đề cung cấp xăng dầu cho trạm dịch điển, nhóm giải thuật tìm kiếm cục vụ Năm 1964, Clarke Wright cải tiến nhóm giải thuật metaheuristic [6][7] cách giải Dantzig Ramser cách Một số chúng giải thuật di truyền sử dụng cách tiếp cận khác, gọi (GA), phương pháp tìm kiếm tối ưu ngẫu thuật tốn tiết kiệm Từ quan tâm nhiên cách mơ theo tiến hóa người hay sinh vật Tư tưởng giải thuật di truyền mô tượng tự nhiên, kế thừa đấu tranh sinh tồn Trong thuật toán này, cá thể quần thể biểu diễn lời giải cho toán cần giải Ban đầu, quần thể (tức tập hợp lời giải) khởi tạo cách ngẫu nhiên Quần thể ban đầu gọi hệ Sau đó, q trình tiến hóa quần thể thực nhiều lần, lần hệ hay quần thể sinh Thế hệ tạo thành cách sau Đầu tiên trình chọn lọc (selection) Mỗi cá thể hệ cũ có xác suất “sống sót” để tiếp tục tồn hệ Lời giải tương ứng với cá thể có độ thích nghi cao, xác suất cá thể sống sót sang hệ lớn Tiếp đến trình lai ghép chéo (crossover) Với cá thể cần “sinh” cho hệ mới, cặp cá thể chọn ngẫu nhiên nhiên để làm “cha mẹ” Cặp cá thể “cha mẹ” kết hợp với nhau, theo quy tắc định nghĩa trước, để “sinh” cá thể Quy tắc “sinh” cho tốn khác khác Cách “sinh con” lấy nửa thành phần cá thể “cha” nửa thành phần cá thể “mẹ” “trộn” lại với để tạo cá thể “con” Ở bước tiếp theo, cá thể quần thể bị đột biến gen (mutation) theo xác suất cho trước Cũng cách thức “sinh” con, cách thức đột biến tốn khác khác Cách đột biến thay đổi thành phần cá thể Sau đó, từ quần thể có, quần thể lại tạo theo cách thức nói Q trình lặp lặp lại điều kiện dừng thõa mãn, thời gian chạy tối đa Lời giải tốn cá thể tốt tất quần thể tạo II MƠ HÌNH TỐN HỌC Bài tốn VRP biểu diễn tập V xe vận chuyển, tập C khách hàng đồ thị có hướng G Đồ thị G có |C|+2 đỉnh, khách hàng đỉnh từ 1, 2,…, n; đỉnh biểu thị kho xuất phát đỉnh n+1 biểu diễn cho kho kết thúc Tập A cung đồ thị biểu diễn kết nối kho với khách hàng khách hàng với Mỗi cung (i, j) có giá trị chi phí cij Mỗi khách hàng i có nhu cầu di Một lộ trình kho xuất phát, qua số khách hàng kết thúc kho hàng kết thúc, khách hàng xe phục vụ Mục tiêu toán tìm phương án điều đội xe hợp lý để giao hàng tới tất khách hàng cho tổng chi phí nhỏ Mơ hình tốn học toán sau, giả sử: n: Tổng số khách hàng cần phục vụ K: Tổng số chuyến xe N = {0, 1, …, n +1}: Tập đỉnh đồ thị V = {0, 1, , K}: Tập xe vận chuyển C = {1, 2, …, n}: Tập khách hàng cij: Chi phí từ i đến j q: sức chứa xe di: nhu cầu nút i Khi ta có biến mơ hình xijk: biểu diễn xem xe k có từ I đến j khơng với 𝑛ế𝑢 𝑥𝑒 𝑡ℎứ 𝑘 đ𝑖 𝑡ừ 𝑖 đế𝑛 𝑗 𝑥𝑖𝑗𝑘 = { 𝑣ớ𝑖 𝑐á𝑐 𝑡𝑟ườ𝑛𝑔 ℎợ𝑝 𝑐ị𝑛 𝑙ạ𝑖 𝑖, 𝑗 ∈ 𝑁, 𝑘 ∈ 𝑉 yik: biểu diễn đỉnh i có xe k phục vụ khơng với 𝑛ế𝑢 𝑥𝑒 𝑡ℎứ 𝑘 đ𝑖 đế𝑛 𝑖 𝑣ớ𝑖 𝑐á𝑐 𝑡𝑟ườ𝑛𝑔 ℎợ𝑝 𝑐ị𝑛 𝑙ạ𝑖 𝑖 ∈ 𝑁, 𝑘 ∈ 𝑉 Hàm mục tiêu toán: 𝑦𝑖𝑘 = { 𝑚𝑖𝑛 ∑ ∑ ∑ 𝑐𝑖𝑗 𝑥𝑖𝑗𝑘 𝑖∈𝑁 𝑗∈𝑁 𝑘∈𝑉 Các ràng buộc toán: ∑𝑖∈𝑁 𝑥𝑖𝑗𝑘 = 𝑦𝑗𝑘 ∀𝑗 ∈ 𝑁, 𝑘 ∈ 𝐾 (II.1) ∑𝑖∈𝑁 ∑𝑘∈𝐾 𝑥𝑖𝑗𝑘 = ∀𝑗 ∈ 𝐶 (II.2) ∑𝑖∈𝑁 𝑥𝑖𝑗𝑘 − ∑𝑖∈𝑁 𝑥𝑖𝑗𝑘 = ∀𝑗 ∈ 𝐶, 𝑘 ∈ 𝐾 ∑𝑗∈𝑁 𝑦𝑗𝑘 ∗ 𝑑𝑗 ≤ 𝑞 ∀𝑘 ∈ 𝐾 (II.3) (II.4) ∑𝑗∈𝑁 𝑥0𝑗𝑘 = ∑𝑖∈𝑁 𝑥𝑖0𝑘 = ∑𝑖∈𝑁 𝑥𝑖(𝑛+1)𝑘 = ∀𝑘 ∈ 𝐾 (II.5) ∀𝑘 ∈ 𝐾 ∀𝑘 ∈ 𝐾 (II.6) (II.7) ∑𝑗∈𝑁 𝑥(𝑛+1)𝑗𝑘 = ∀𝑘 ∈ 𝐾 (II.8) đó: (II.1) biểu diễn mối liên hệ x y (II.2), (II.3): đảm bảo khách xe phục vụ (II.4) đảm bảo sức chứa xe (II.5), (II.6), (II.7), (II.8) đảm bảo lộ trình bắt đầu kết thúc kho Việc mơ hình hóa tốn VRP nghiên cứu nhiều tác giả trình bày chi tiết báo [8][9][10][11] III THUẬT TOÁN DI TRUYỀN GIẢI BÀI TOÁN VRP Biểu diễn lời giải Lời giải (nhiễm sắc thể) biểu diễn thành chuỗi số ngun hốn vị Mỗi số ngun chuỗi số nguyên gán cho khách hàng Thứ tự gene nhiễm sắc thể thứ tự thăm xe Ví dụ: Với kho, 10 kho kết thúc Lộ trình 1: → → → 10 Lộ trình 2: → → → → 10 Lộ trình 3: → → →7 → → 10 Chuỗi số nhiễm sắc thể ứng với lời giải sau: → → (-1) → → → → (-2) → → →7→5 Khởi tạo quần thể ban đầu Phương thức khởi tạo quần thể mô tả sau: Thực thuật toán K-Means chia khách hàng thành k cụm (k = tổng số xe) Với xe, khởi tạo ngẫu nhiện lộ trình cụm khách hàng tương ứng Tổng hợp lộ trình xe, ta có phương án tương ứng Lặp lại hai bước đến có đủ quần thể Lựa chọn hàm thích nghi: Hàm thích nghi tốn VRP định nghĩa sau: 𝑓𝑖 = 𝑑𝑖 + 𝑐𝑖 đó: fi độ thích nghi cá thể thứ i, di tổng độ dài quãng đường đi, ci tổng chi phí sử dụng xe Như vậy, lời giải đánh giá tốt dựa vào hai yếu tố: tổng quãng đường đi, chi phí sử dụng xe nhỏ Các thao tác di truyền 4.1 Lựa chọn cá thể Bài viết dùng phương pháp lấy mẫu Stochastic universal sampling – SUS) để tìm cá thể cha mẹ tốt nhằm thực tái tổ hợp Quy trình thực SUS sau: Tính tổng giá trị thích nghi quần thể F Tính khoảng cách trỏ P = F/N, với N số cá thể giữ lại Tính giá trị trỏ 𝑃𝑜𝑖𝑛𝑡𝑒𝑟𝑠 = [𝑆 + 𝑖 ∗ 𝑃]𝑣ớ𝑖 𝑖 ∈ [0, 𝑁 − 1] Tính giá trị ngẫu nhiên 𝑆 ∈ [0, 𝑃) Với 𝑃 ∈ 𝑃𝑜𝑖𝑛𝑡𝑒𝑟𝑠, i nhỏ mà tổng giá trị thích nghi từ đến i >= P cá thể i lựa chọn 4.2 Trao đổi chéo Bài viết dùng biến thể phương pháp trao đổi chéo có thứ tự gọi trao đổi chéo khơng gói (Non-Wrapping Ordered Crossover – NWOX) Ví dụ: NST 1: HCBD | GFE | IJALK NST 2: CAGE | BDF | LKIJH Sử dụng NWOX ta thu là: NST 1: HCGE | BDF | IJALK NST 2: CABD | GFE | LKIJH 4.3 Đột biến Trong phạm vi báo này, phương pháp đột biến dạng đảo gene áp dụng 4.4 Tạo hệ Ở hệ, cá thể tốt lựa chọn từ quần thể để xây dựng hệ tiếp theo, cá thể sinh từ trao đổi chéo đột biến thêm vào quần thể Các cá thể quần thể xếp giảm dần theo độ thích nghi Quần thể xây dựng sau loại bỏ cá thể trùng lặp cá thể Như vậy, thuật toán di truyền giải toán VRP thể sau: Bước 1: Tiến hành phân cụm khách hàng thành k-cụm (k số xe chở hàng) Bước 2: Khởi tạo quần thể ban đầu gồm N cá thể từ trình phân cụm Bước 3: Đánh giá tính thích nghi cá thể quần thể ban đầu Bước 4: Lặp lại từ bước 4.1 đến bước 4.4 đến vượt số hệ cho phép - Bước 4.1: Chọn cá thể để tái tổ hợp phương pháp SUS - Bước 4.2: Thực trao đổi chéo thuật toán NWOX - Bước 4.3: Thực đột biến cá thể - Bước 4.4.: Đánh giá tính thích nghi cá thể quần thể xây dựng quần thể Bước 5: Trả kết kết thúc thuật tốn IV CÀI ĐẶT THUẬT TỐN Dưới đây, thuật tốn GA cài đặt ngơn ngữ lập trình R Chương trình viết biên dịch Rstudio 1.4.1717 chạy máy tính cá nhân Core i7-E7440 4600U 2.7GHz 8G RAM Sau khởi động RStudio, chọn project CVRP_NCKH Để cài đặt thuật toán, ta xây dựng hàm sau: Hàm khởi tạo quần thể giant_path