Trong đó ỗi phương pháp sẽ đưa ra cách mô m hình khác nhau d dàng tri n khai trên các ph n mđể ễ ể ầ ềm giải quyết bài toán tối ưu như Ortools.. Sau đó sẽ đưa ra kết quả thực nghiệm và đ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
BÁO CÁO MÔN HỌC
HỌC PHẦN: TỐI ƯU LẬP KẾ HOẠCH
(Mã học phần: IT4663)
Đề tài:
TSP with Time Windows
Giảng viên hướng dẫn: Bùi Quốc Trung
Hà Nội, tháng năm 2027 3
Trang 2Mc lc
Trang 31
Lời m u ở đầ
Bài toán người bán hàng du lịch với c a s ử ổ thời gian (TSPTW) là bài toán tìm đường đi
có chi phí t i thiố ểu đi qua từng thành ph trong t p h p các thành ph , m i thành ph ố ậ ợ ố ỗ ố đi qua chính xác một l n, vầ ới điều ki n m i thành ph phệ ỗ ố ải được thăm trong một kho ng ả thời gian nhất định TSPTW đã nhận được sự chú ý đáng kể, trong nhiều năm, vì nó là
c t lõi c a nhi u ng d ng l p lố ủ ề ứ ụ ậ ịch và định tuy n quan trế ọng trong đời th c ự Ở đây, chúng em ẽ s trình bày m s ột ố phương pháp giải được áp d ng trong môn ụ Tối ưu lập kế hoạch như: Vét cạn (Brute Force), Quy ho ch ràng bu c (CP), Quy ho ch nguyên tuy n ạ ộ ạ ế tính (IP), Tham lam (Greedy), Heuristic Trong đó ỗi phương pháp sẽ đưa ra cách mô m hình khác nhau d dàng tri n khai trên các ph n mđể ễ ể ầ ềm giải quyết bài toán tối ưu như Ortools Sau đó sẽ đưa ra kết quả thực nghiệm và đánh giá từng phương pháp
Trong quá trình làm mini-project, chúng em xin chân thành cảm ơn thầy Bùi Qu c Trung ố
đã đánh giá và hướng dẫn, có những nhận xét b ổ ích để chúng em có th hoàn thi n ể ệ
Trang 42
CÔNG VI C CỆ ỦA TỪNG THÀNH VIÊN
Nhận xét: Các thành viên trong nhóm đều tham gia đầy đủ và đóng góp xây dựng các phương pháp để hoàn thành bài tập lớn
Sinh viên Công vi c th c hi n ệ ự ệ
Lê Đức Quân Nhóm trưởng, mô hình và code phương pháp CP Nguyễn Quốc Việt Mô hình và code phương pháp nhánh cận, ILP
Phạm Việt Hoàng Mô hình và code phương pháp Greedy, Heuristic
Trang 53
I Giớ i thi u bài toán ệ
Bài toán: M t nhân viên giao hàng l y hàng ộ ấ ở kho (điểm 0) và cần đi giao hàng cho 𝑁 khách hàng 1,2, … , 𝑁 Khách hàng n𝑖 ằm ở điểm 𝑖 và có yêu c u giao hàng trong kho ng thầ ả ời gian từ 𝑒(𝑖) đến 𝑙(𝑖) và giao hàng hết 𝑑(𝑖) đơn vị thời gian ( ) Bi t r ng , ) là th i gian di 𝑠 ế ằ 𝑡(𝑖 𝑗 ờ chuy n tể ừ điểm 𝑖 đến điểm 𝑗 Nhân viên giao hàng xu t phát t kho t i thấ ừ ạ ời điểm𝑡0, hãy tính toán l trình giao hàng cho nhân viên giao hàng sao cho t ng th i gian di chuy n là ng n nh ộ ổ ờ ể ắ ất
II Các phương pháp giải
1 Thu toán nhánh c n ật ậ
1.1 Mô hình hóa bài toán
1.1.1 T p các bi n ậ ế
1.1.2 Mi n giá tr ề ị
1.1.3 Định nghĩa
Trang 64
1.1.4 Ràng buộc và hàm mục tiêu
1.2 X lý bài toán ử
1.2.1 Kh i t o các biở ạ ến
1.2.2 Gi i thu t nhánh c n ả ậ ậ
Trang 75 1.2.3 Hàm c t t a ắ ỉ
1.3 K t qu ế ả thực nghi m và th i gian ch y ệ ờ ạ
Trang 86
2 Quy ho ch ràng bu c (Constraint Programming) ạ ộ
Mô hình bài toán theo Quy ho ch Ràng buạ ộc:
Gọi 𝑉 = 0,1,2, ,𝑛,𝑛 + 1 là tập các node, trong đó 1, , 𝑛 là các thành ph s ố ẽ thăm, và node và 0 𝑛+1 là điểm bắt đầu và kết thúc M i node liên k t v i 1 c a s ỗ ế ớ ử ổ thời gian 𝑇𝑊𝑖= [𝑎𝑖,𝑏𝑖] là khung th i gian giao hàng c a thành phờ ủ ố 𝑖 Mỗi node cũng có 1 khoảng th i gian ờ 𝑑𝑢𝑟𝑖, đại di n cho th i gian giao hàng t i thành phệ ờ ạ ố 𝑖 V i m i c p thành phớ ỗ ặ ố 𝑖 và , có th𝑗 ời gian di chuyển là 𝑡𝑖,𝑗
• Định nghĩa 3 biến cho mỗi node 𝒊∈𝑽:
o 𝑁𝑒𝑥𝑡𝑖 là thành ph số ẽ thăm tiếp theo của node 𝑖
o 𝐶𝑜𝑠𝑡𝑖 là chi phí từ 𝑖 đến 𝑁𝑒𝑥𝑡𝑖
o 𝑆𝑡𝑎𝑟𝑡𝑖 là thời điểm giao hàng c a node ủ 𝑖
o 𝑊𝑎𝑖𝑡𝑖 là thời gian để giao hàng t i node ạ 𝑖
• Miền giá tr : ị
o 𝐷(𝑁𝑒𝑥𝑡𝑖) = {1,…, 𝑛 +1}
o 𝐷(𝐶𝑜𝑠𝑡𝑖) = {0,…, max}
o 𝐷(𝑆𝑡𝑎𝑟𝑡𝑖) =[𝑎𝑖,𝑏𝑖]
o 𝐷(𝑊𝑎𝑖𝑡𝑖) = {0,…, 𝑚𝑎𝑥}
o 𝑆𝑡𝑎𝑟𝑡0= 0, 𝐶𝑜𝑠𝑡𝑛+1= 0, 𝑁𝑒𝑥𝑡𝑛+1=0
• Ràng buộc:
o Các đỉ nh chỉ thăm 1 lần:
𝑎𝑙𝑙𝑑𝑖𝑓𝑓𝑒𝑟𝑒𝑛𝑡([𝑁𝑒𝑥𝑡0,𝑁𝑒𝑥𝑡 ,…,𝑁𝑒𝑥𝑡1 𝑛+1])
o Không t n t i chu trình con: ồ ạ
𝑛𝑜𝑐𝑦𝑐𝑙𝑒([𝑁𝑒𝑥𝑡0,𝑁𝑒𝑥𝑡 ,…,𝑁𝑒𝑥𝑡1 𝑛])
o Cập nh t chi phí di chuyậ ển:
𝑁𝑒𝑥𝑡𝑖=𝑗 →𝐶𝑜𝑠𝑡𝑖=𝑡𝑖,𝑗 𝑣ớ𝑖 ∀ 𝑖,𝑗 ∈ 𝑉
o Cậ p nh t thời gian ch giao hàng: ậ ờ
𝑁𝑒𝑥𝑡𝑖=𝑗 →𝑊𝑎𝑖𝑡𝑖=𝑆𝑡𝑎𝑟𝑡𝑗−𝑆𝑡𝑎𝑟𝑡𝑖−𝐶𝑜𝑠𝑡 − 𝑑𝑢𝑟𝑖 𝑖 𝑣ớ𝑖 ∀ 𝑖,𝑗 ∈ 𝑉, 𝑗 ≠ 0
o Thỏa mãn th i gian giao hàng: ờ
𝑁𝑒𝑥𝑡𝑖=𝑗 →𝑆𝑡𝑎𝑟𝑡𝑖+ 𝑑𝑢𝑟𝑖+𝐶𝑜𝑠𝑡𝑖≤𝑆𝑡𝑎𝑟𝑡𝑗𝑣ớ𝑖 ∀ 𝑖,𝑗 ∈ 𝑉, 𝑗≠ 0
• Hàm m c tiêu:
Trang 97
𝑓 =min {𝑆𝑡𝑎𝑟𝑡𝑛+1}
Sử d ng công c ụ ụ OR-Tools để gi i quy t bài toán ả ế
➢ OR-Tools là m t b ph n m m ngu n m tộ ộ ầ ề ồ ở ối ưu hoá, được điều chỉnh để ả gi i quyết các vấn đề khó khăn nhất trên th ế giới trong việc định tuy n xe, ế luồng, l p trình sậ ố nguyên và tuyến tính cũng như lập trình ràng buộc
➢ Sau khi mô hình hóa vấn đề ử ụ, s d ng trình giải CP-SAT Solver để ả gi i
Chi tiết cài đặt phương pháp ở trong file /Code/CP.ipynb
Kết qu ả cài đặt được thống kế ở mục III
3 Integer Linear Programing
3.1 Mô hình hóa bài toán
3.1.1 T p các bi n ậ ế
3.1.2 Miền giá tr ị
3.1.3 Ràng bu c ộ
Trang 108
3.1.4 Hàm m c tiêu ụ
3.2 Giải quy t bài toán ế
3.2.1 Kh i t o các biở ạ ến
3.2.2 Khai báo ràng bu c ộ
Trang 119 3.2.3 Khai báo hàm m c tiêu ụ
Trang 1210 3.3 K t qu ế ả thực nghi m và th i gian ch y ệ ờ ạ
Trang 1311
4 Thu t toán tham lam (Greedy) ậ
- Mục tiêu của các chiến lược greedy là tổng thời gian di chuyển trên toàn bộ tuyến đường là nhỏ nhất
4.1 Các chiến lược tham lam
4.1.1 Chiến lược Nearest node first:
- Mô tả: Node có thời gian di chuyển gần nhất với node hiện tại sẽ được chọn làm node để đi tới tiếp theo
- Mã giả:
4.1.2 Chiến lược Nearest start-time first:
- Mô tả: Node có thời gian bắt đầu giao gần nhất với thời gian hiện tại sẽ được chọn làm node để đi tới tiếp theo
- Mã giả:
4.1.2 Chiến lược Nearest end-time first:
- Mô tả: Node có thời gian kết thúc giao gần nhất với thời gian hiện tại sẽ được chọn làm node để đi tới tiếp theo
- Mã giả:
Trang 1412
4.2 K t qu : ế ả
- K t qu ế ả thực nghi m và th i gian ch y trên b d liệ ờ ạ ộ ữ ệu được cung c p ấ
5 Thuật toán Heuristic
5.1 Nguyên tắc cơ bản thuật toán 2-OPT:
• Thay thế hai cạnh không liền kề trong lời giải hiện tại bằng hai cạnh khác và kiểm tra điều kiện, tạo thành một lời giải mới có chi phí thấp hơn
• Điều này được thực hiện liên tục cho đến khi không còn cải thiện nữa
• Về lý thuyết số lượng chu trình mới tối đa có thể sinh ra là n(n 3) (O(n^2)) từ một nút -khởi đầu
Hàm mục tiêu: tổng thời gian di chuyển nhỏ nhất
Trang 1513
5.2 Các hàm quan trọng
- Hàm khởi tạo trạng thái ban đầu
+ Thực hiện vét cạn không gian đường đi đã shuffle để tạo tính ngẫu nhiên
+ Khi có đường đi thoả mãn điều kiện ràng buộc lấy đường đi đó làm giá trị khởi tạo
- Mã giả thuật toán Local search
Trang 1614
- Mã giả thuật toán Iterated local search
- Mã giả thuật toán Simulated annealing:
5.3 Thử nghiệm trên bộ dữ liệu tự tạo
- V i b d u t t o ớ ộ ữ liệ ự ạ
Trang 1715
• Với các khởi tạo khác nhau, kết quả cuối có thể là local optimum hoặc global optimum
• Tăng số lượng vòng lặp làm tăng khả năng hội tụ của thuật toán
- V i b d ớ ộ ữ liệu được cung c p: ấ
Trang 1816
III Kế t qu th c nghi m và nh n xét ả ự ệ ậ
Kiểm tra các phương pháp giải bằng bộ dữ liệu được cung cấp bởi lớp học, các test case có kho ng giá tr tả ị ừ [𝟓,𝟏𝟎𝟎𝟎], phù hợp để ể ki m tra tính hi u qu c a tệ ả ủ ừng phương pháp Bảng sau đây là kết quả thu được sau khi ch y t ng thu t toán, k t qu ạ ừ ậ ế ả được ểbi u di n b i lễ ở ời giải thu được, thời gian chạy chương trình (đơn vị giây)
n Kết qu g c ố ả Brute Force CP ILP
Metaheuristic Iterated local search Simulated annealing Result Time Result Time Result Time Result Time Result Time
5 465 465 0.001 465 0.01 465 0.01 465 0.0003 465 0.0002
10 779 779 0.003 779 0.04 779 0.02 779 0.006 779 0.006
100 57815 - - 57815 3.71 57815 0.61 - - - -
200 101539 - - 101539 10.63 101539 2.35 - - - -
300 164756 - - 164756 28.45 164756 5.39 - - - -
500 267189 - - 267189 86.78 267189 15.79 - - - -
600 335883 - - 335883 105.06 335883 21.18 - - - -
700 368821 - - 368821 144.68 368821 31.41 - - - -
900 468147 - - 468147 233.16 468147 50.66 - - - -
1000 526522 - - 526522 297.76 526522 66.32 - - - -
- Các thu t toán tham lam ậ
n K t qu g c ế ả ố Neerest node first Nearest start-time first Nearest end-time first
Result Time Result Time Result Time
5 465 - - 465 Không đáng kể 465 Không đáng kể
10 779 - - 779 Không đáng kể 779 Không đáng kể
100 57815 - - 57815 Không đáng kể 57815 Không đáng kể
200 101539 - - 101539 Không đáng kể 101539 Không đáng kể
300 164756 - - 164756 Không đáng kể 164756 Không đáng kể
500 267189 - - 267189 Không đáng kể 267189 Không đáng kể
600 335883 - - 335883 Không đáng kể 335883 Không đáng kể
700 368821 - - 368821 Không đáng kể 368821 Không đáng kể
900 468147 - - 468147 Không đáng kể 468147 Không đáng kể
1000 526522 - - 526522 Không đáng kể 526522 Không đáng kể
Trang 1917
Nhận xét:
• Brute Force: r t d ấ ễ để cài đặt nhưng thời gian chạy khá chậm, với bộ dữ liệu nhi u ề đỉnh thì th i gian ch y s vô cùng l n ờ ạ ẽ ớ
• CP : Cách mô hình bài toán d hi u, áp dễ ể ụng được vào được các công c gi i bài toán ụ ả tối ưu ràng buộc Vượt qua hết các test case v i th i gian nhanh, v i N = 1000 thớ ờ ớ ời gian ch y g n 5 phút, kh thi v i bài toán l p l ch trong th c t ạ ầ ả ớ ậ ị ự ế
• ILP : ch y r t nhanh, tuy nhiên phạ ấ ần định nghĩa mô hình hóa bài toán khá là khó Đối
v i nh ng b test có nhi u l i gi i thớ ữ ộ ề ờ ả ỏa mãn điều ki n, ILP tính toán r t ch m ệ ấ ậ
• Greedy: Các thuật toán greedy thường đơn giản có thời gian tính toán thấp không đáng kể Tuy nhiên chỉ cho đáp án khi giả định ban đầu là đúng Cần tiếp tục tìm
phương án cải tiến và đưa ra chiến lược bao quát hơn
• Heuristic: Thời gian ch y là trong kho ng ch p nhạ ả ấ ận được khi th trên b d ử ộ ữ liệu bé hơn 20 Cần cải thiện phương thức khởi tạo thay vì vét cạn và tăng cường thêm các thu t toán metaheuristic khác: Guided local search, Tabu search, Variable ậ neighborhood search