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

Giải bài toán người bán hàng du lịch với khung thới gian hạn định bằng cách kết hợp tìm kiếm cục bộ và lập trình ràng buộc

85 57 1

Đ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 85
Dung lượng 1,06 MB

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

Nội dung

Trong hướng tiếp cận mới này, đề tài đã giải quyết bài toán TSPTW bằng cách kết hợp tìm kiếm cục bộ cụ thể là tìm kiếm tabu và lập trình ràng buộc cụ thể là giải thuật nhánh và cận.. Tro

Trang 1

-

VŨ ĐỨC NAM

GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG DU LỊCH VỚI KHUNG THỜI GIAN HẠN ĐỊNH BẰNG CÁCH KẾT HỢP TÌM KIẾM CỤC BỘ VÀ LẬP TRÌNH RÀNG BUỘC

LUẬN VĂN THẠC SĨ

TP HỒ CHÍ MINH, Tháng 6 năm 2005

Trang 2

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

Trang 3

Tp HCM, ngày … tháng … năm 2005

NHIỆM VỤ LUẬN VĂN THẠC SĨ

I - TÊN ĐỀ TÀI: GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG DU LỊCH VỚI KHUNG THỜI GIAN

HẠN ĐỊNH BẰNG CÁCH KẾT HỢP TÌM KIẾM CỤC BỘ VÀ LẬP TRÌNH RÀNG BUỘC

II - NHIỆM VỤ VÀ NỘI DUNG:

Đề tài xây dựng một hướng tiếp cận mới để giải bài toán người bán hàng du lịch với khung

thời gian hạn định (TSPTW)

Trong hướng tiếp cận mới này, đề tài đã giải quyết bài toán TSPTW bằng cách kết hợp tìm

kiếm cục bộ (cụ thể là tìm kiếm tabu) và lập trình ràng buộc (cụ thể là giải thuật nhánh và cận)

Sự kết hợp điểm mạnh của hai phương pháp này giúp cải thiện hiệu suất của giải thuật, ngoài ra

giải thuật có thể tìm ra được lời giải chất lượng cao trong thời gian có thể chấp nhận được

Giải thuật được sử dụng trong luận văn này giúp sinh ra được lời giải chất lượng cao trên rất

nhiều các bộ dữ liệu mẫu của các tác giả nổi tiếng trên thế giới Đề tài cũng đã so sánh kết quả

thực nghiệm được sinh ra trong đề tài này với các kết quả được sinh ra từ giải thuật của các tác

giả nổi tiếng khác trên thế giới trên cùng các bộ dữ liệu mẫu

III - NGÀY GIAO NHIỆM VỤ: 20/10/2005

IV - NGÀY HỒN THÀNH NHIỆM VỤ: 30/06/2005

V - HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: TS DƯƠNG TUẤN ANH

Trang 4

Nội dung và đề cương luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua

Trang 5

Trong đề tài này, chúng tôi xây dựng một hướng tiếp cận mới để giải bài toán người bán hàng du lịch với khung thời gian hạn định (TSPTW) Mục đích của bài

toán này nhằm tìm ra một chu trình Hamilton với chi phí tối thiểu trong một đồ thị n đỉnh G = (X, A), bắt đầu tại đỉnh nguồn và viếng thăm các đỉnh i X trong khung

thời gian hạn định của nó TSPTW là một bài toán có rất nhiều ứng dụng trong thực tế

Trong hướng tiếp cận mới này, chúng tôi giải quyết bài toán TSPTW bằng cách kết hợp tìm kiếm cục bộ (cụ thể là tìm kiếm tabu) và lập trình ràng buộc (cụ thể là giải thuật nhánh và cận) Hai hướng tiếp cận này rất phổ biến và có nhiều ứng dụng vào các bài toán trên thế giới, hơn nữa mỗi hướng tiếp cận đều có điểm mạnh riêng của nó Sự kết hợp điểm mạnh của hai phương pháp này giúp cải thiện hiệu suất của giải thuật, ngoài ra giải thuật có thể tìm ra được lời giải chất lượng cao trong thời gian có thể chấp nhận được

Giải thuật được sử dụng trong luận văn này giúp sinh ra được lời giải chất lượng cao trên rất nhiều các bộ dữ liệu mẫu của các tác giả nổi tiếng trên thế giới Chúng tôi cũng đã so sánh kết quả thực nghiệm được sinh ra trong đề tài này với các kết quả được sinh ra từ giải thuật của các tác giả nổi tiếng khác trên thế giới trên cùng các bộ dữ liệu mẫu

Trang 6

In this thesis, we develop a new approach to solve efficiently for the Traveling Salesman Problem with Time windows (TSPTW) TSPTW addresses the problem of

finding a Hamiltonian tour of minimum cost in graph G = (X, A) of n vertices, starting at the source vertex and visiting each vertex i∈ X during its time window

The TSPTW is known to be NP Complete and has applications in many sequencing and distribution problems

In our new approach, we solve the TSPTW by combining Local Search (tabu search particularly) and Constraint Programming (branch and bound particularly) These two methods are very popular, can apply broadly to many real world problems and have their own strengths The combination of these strong points of the two methods helps improving the performance of the algorithm, finding the high quality result in an acceptable time

The algorithm used in this thesis can generate the high quality solution for many benchmark datasets We also compared the experimental results of our approach to those of previous works in the world

Trang 7

MỤC LỤC

MỤC LỤC -i

DANH SÁCH BẢNG VÀ HÌNH VẼ - iii

Chương I PHÁT BIỂU VẤN ĐỀ - 2

1.1 Giới thiệu vấn đề sẽ làm - 2

1.2 Ứng dụng của vấn đề sẽ làm - 2

1.3 Giới thiệu về phương pháp dự định để giải quyết vấn đề - 3

1.4 Cấu trúc của luận văn - 4

Chương II CƠ SỞ LÝ THUYẾT - 6

2.1 Tìm kiếm cục bộ - 6

2.1.1 Tìm kiếm cục bộ cơ bản: - 7

2.1.2 Giải thuật tìm kiếm cục bộ tổng quát: - 8

2.1.3 Ba giải thuật tìm kiếm cục bộ khá phổ biến: - 8

2.1.4 Tìm kiếm tabu (Tabu Search): - 9

2.2 Lập trình ràng buộc -12

2.2.1 Giải hệ ràng buộc toàn phần -12

2.2.2 Giải hệ ràng buộc riêng phần -14

Chương III CÁC CÔNG TRÌNH LIÊN QUAN -18

3.1 Phương pháp quy hoạch động (dynamic programming) -18

3.2 Tìm kiếm cục bộ -18

3.3 Lập trình ràng buộc -20

3.4 Xu hướng mới -21

Chương IV PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ -22

4.1 Phương pháp giải quyết vấn đề -22

4.1.1 Mô tả bài toán -22

4.1.2 Chiến lược để tìm ra lời giải láng giềng -24

4.2 Các bước để giải quyết bài toán -26

4.2.1 Giải thuật để tìm ra lời giải ban đầu -27

4.2.2 Giải thuật tìm ra lời giải chất lượng cao -30

4.3 Cấu trúc dữ liệu đề nghị -38

4.3.1 Cấu trúc dữ liệu cho đồ thị G -38

4.3.2 Cấu trúc dữ liệu cho lộ trình -39

Trang 8

4.3.3 Cấu trúc dữ liệu cho danh sách tabu -41

4.4 Thiết kế cơ sở dữ liệu -42

Chương V HIỆN THỰC VÀ KẾT QUẢ THỰC NGHIỆM -44

5.1 Hiện thực đề tài -44

5.1.1 Thể hiện bài toán TSPTW -44

5.1.2 Hiện thực giải thuật tìm ra lời giải ban đầu -46

5.1.3 Hiện thực giải thuật tìm ra lời giải chất lượng cao -47

5.1.4 Một số kĩ thuật khác được sử dụng trong đề tài -52

5.2 Kết quả thực nghiệm -53

5.2.1 Kết quả trên các bộ dữ liệu mẫu -53

5.2.2 So sánh với các công trình và tác giả trên thế giới -64

Chương VI KẾT LUẬN VÀ PHƯƠNG HƯỚNG MỞ RỘNG -69

6.1 Một số kết luận liên quan đến đề tài -69

6.2 Một số đóng góp của đề tài -69

6.3 Phương hướng mở rộng -69

THƯ MỤC THAM KHẢO -72

Trang 9

DANH SÁCH BẢNG VÀ HÌNH VẼ

Danh sách bảng:

Bảng 1: So sánh đặc điểm cơ bản của 3 giải thuật tìm kiếm cục bộ - 9

Bảng 2: Số lần và thời gian xảy ra các tác vụ được thống kê bởi Lin-Kernighan 40

Bảng 3: Kết quả thực thi của giải thuật trên bộ dữ liệu 20 đỉnh -53

Bảng 4: Kết quả thực thi của giải thuật trên bộ dữ liệu 40 đỉnh -55

Bảng 5: Kết quả thực thi của giải thuật trên bộ dữ liệu 60 đỉnh -56

Bảng 6: Kết quả thực thi của giải thuật trên bộ dữ liệu 80 đỉnh -58

Bảng 7: Kết quả thực thi của giải thuật trên bộ dữ liệu 100 đỉnh -59

Bảng 8: Kết quả thực thi của giải thuật trên bộ dữ liệu 150 đỉnh -61

Bảng 9: Kết quả thực thi của giải thuật trên bộ dữ liệu 200 đỉnh -62

Bảng 10: So sánh với thời gian thực thi của giải thuật với Dumas -65

Bảng 11: So sánh với thời gian thực thi của giải thuật với Pesant & Gendreau -66

Bảng 12: So sánh với thời gian thực thi của giải thuật với Ohlmann & Thomas -67

Danh sách hình vẽ: Hình 1: Thể hiện bài toán TSPTW trên đồ thị -23

Hình 2: Bước chuyển cục bộ m -23

Hình 3: Một bước chuyển 2-opt -24

Hình 4: Thể hiện 2-opt trên array -25

Hình 5: Một bước chuyển 3-opt -25

Hình 6: Thể hiện 3-opt trên array -25

Hình 7: Hiện thực 2-opt trong đề tài -34

Hình 8: Thể hiện việc xén nhánh trên cây tìm kiếm -35

Hình 9: Một ví dụ mẫu thể hiện đồ thị G -38

Hình 10: Thể hiện cấu trúc dữ liệu cho ví dụ mẫu -39

Trang 10

Hình 11: Danh sách tabu -41

Hình 12: Mô tả việc chèn phần tử khi danh sách tabu đầy -42

Hình 13: Thiết kế cơ sở dữ liệu (ERD) -42

Hình 14: Thêm đỉnh cầm canh vào đồ thị -45

Hình 15: Chiến lược tìm kiếm của 2-opt trong đề tài -48

Hình 16: Thể hiện việc xén một nhánh trên cây tìm kiếm -52

Hình 17: Đồ thị về chi phí trên bộ dữ liệu 20 đỉnh -54

Hình 18: Đồ thị về thời gian trên bộ dữ liệu 20 đỉnh -54

Hình 19: Đồ thị về chi phí trên bộ dữ liệu 40 đỉnh -55

Hình 20: Đồ thị về thời gian trên bộ dữ liệu 40 đỉnh -56

Hình 21: Đồ thị về chi phí trên bộ dữ liệu 60 đỉnh -57

Hình 22: Đồ thị về thời gian trên bộ dữ liệu 60 đỉnh -57

Hình 23: Đồ thị về chi phí trên bộ dữ liệu 80 đỉnh -58

Hình 24: Đồ thị về thời gian trên bộ dữ liệu 80 đỉnh -59

Hình 25: Đồ thị về chi phí trên bộ dữ liệu 100 đỉnh -60

Hình 26: Đồ thị về thời gian trên bộ dữ liệu 100 đỉnh -60

Hình 27: Đồ thị về chi phí trên bộ dữ liệu 150 đỉnh -61

Hình 28: Đồ thị về thời gian trên bộ dữ liệu 150 đỉnh -62

Hình 29: Đồ thị về chi phí trên bộ dữ liệu 200 đỉnh -63

Hình 30: Đồ thị về thời gian trên bộ dữ liệu 200 đỉnh -63

Hình 31: Đồ thị so sánh về thời gian với giải thuật của Dumas -66

Hình 32: Đồ thị so sánh về thời gian với giải thuật của Pesant & Gendreau -67

Hình 33: Đồ thị so sánh về thời gian với giải thuật của Ohlmann & Thomas -68

Trang 11

TÊN ĐỀ TÀI

GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG DU LỊCH VỚI KHUNG THỜI GIAN HẠN ĐỊNH BẰNG CÁCH KẾT HỢP TÌM KIẾM CỤC BỘ VÀ LẬP TRÌNH RÀNG BUỘC (Solving Traveling Salesman Problem with Time Windows (TSPTW) by combining Local Search and Constraint Programming)

Trang 12

CHƯƠNG I

PHÁT BIỂU VẤN ĐỀ

Chương này giới thiệu tổng quan về vấn đề sẽ làm trong đề tài, ứng dụng của vấn đề này cũng như phương pháp dự định để giải quyết vấn đề

1.1 GIỚI THIỆU VẤN ĐỀ SẼ LÀM

Bài toán người bán hàng du lịch với khung thời gian hạn định (TSPTW) là bài toán nhằm mục đích tìm ra con đường tối ưu về chi phí và đi qua tất cả các thành phố với những điều kiện sau đây:

- Mỗi thành phố chỉ đi qua đúng một lần sau đó quay trở về thành phố xuất phát

- Mỗi thành phố phải được đi qua trong một khung thời gian hạn định (Time

Window) cho trước

Bài toán có thể mô tả cụ thể hơn như sau: cho N thành phố, ta định nghĩa dij là khoảng cách đường đi từ i đến j, tij là thời gian để đi từ i đến j, với i, j thuộc N, [ai,

b i] là khung thời gian hạn định cho thành phố i, với khung thời gian hạn định này thì thành phố i phải được đến không sớm hơn thời điểm ai và không trễ hơn thời điểm

b i

Nếu người bán hàng đến thành phố i sớm hơn thời điểm ai thì người bán hàng đó phải đợi một thời gian wi cho đến a i, nếu người bán hàng rời khỏi thành phố i trễ hơn thời điểm bi thì con đường đó không khả thi

Mục đích của bài toán là tìm ra con đường có chi phí chất lượng cao, ở đây chi phí có thể là tổng khoảng cách đi được hay tổng thời gian cần thiết để hoàn thành đường đi

TSPTW có thể xem như là một bài toán biến thể của bài toán Traveling Salesman Problem (TSP) với thời gian viếng thăm các thành phố bị giới hạn

1.2 ỨNG DỤNG CỦA VẤN ĐỀ SẼ LÀM

TSPTW là một bài toán được ứng dụng rất rộng rãi trong thực tế, đặc biệt là trong môi trường sản xuất và phân phối sản phẩm Ví dụ như bài toán vận chuyển

Trang 13

toán này chính là khoảng cách cần thiết để giao tất cả những kiện hàng cho những khách hàng đã được lên lịch trước, ngoài ra thời gian giao hàng cho mỗi địa điểm cần phải nằm trong một khung thời gian hạn định cho trước Mục đích chính của bài toán này là tìm ra chi phí tối thiểu mà có thể giao hàng cho tất cả khách hàng Một vấn đề tương tự trong quá trình sản xuất: cho một tập công việc với thời gian để thực hiện mỗi công việc đã cho trước Mục đích của bài toán là tìm ra thứ tự thực hiện các công việc sao cho thời gian hoàn thành tất cả công việc là nhỏ nhất Thời gian hoàn thành các công việc cũng bị giới hạn trong một khung thời gian hạn định

Bài toán tìm đường tối ưu cho xe buýt trong thành phố (bus routing problem), đây là bài toán khá phổ biến Mục đích của bài toán là tìm ra lộ trình tối ưu cho việc đến và rời khỏi các trạm yêu cầu trong thành phố và quay trở lại trạm xuất phát Thời gian đến và rời các trạm cũng được quy định trước

Ngoài ra đề tài còn ứng dụng vào một số bài toán khác như: bài toán chuyển thư (postal deliveries problem), bài toán ga xe lửa…v.v

Tóm lại, bài toán TSPTW có thể ứng dụng nhằm sinh ra những lời giải tối ưu cho những vấn đề trên nhằm mục đích giảm thiểu chi phí và mang lại hiệu quả kinh tế cao

TSPTW là một bài toán tương đối tổng quát cho hàng loạt các vấn đề nêu trên Việc tìm ra giải pháp hữu hiệu cho bài toán này thực sự là một vấn đề đang được quan tâm trên toàn thế giới

1.3 GIỚI THIỆU VỀ PHƯƠNG PHÁP DỰ ĐỊNH ĐỂ GIẢI QUYẾT VẤN ĐỀ

Bài toán TSPTW có thể được thể hiện như sau:

Cho một đồ thị vô hướng với tập đỉnh {1, 2, …, n} và thời gian cần thiết để đi từ đỉnh i đến đỉnh j là tBijB Mỗi đỉnh i bị ràng buộc bởi một thời gian bắt đầu aBiB và thời

gian kết thúc bBiB Bài toán cần tìm một chu trình Hamilton (chu trình đi qua mỗi đỉnh

của đồ thị đúng một lần, và quay lại đỉnh bắt đầu) với chi phí tốt nhất có thể được Trong đề tài này, chúng tôi xét chi phí chính là thời gian để hoàn thành lộ trình

Bài toán TSPTW là một bài toán tối ưu tổ hợp (combinational optimization)

thuộc loại khó Trên thế giới đã tồn tại một số phương pháp để giải quyết bài toán này Mỗi phương pháp đều có những ưu và khuyết điểm khác nhau Một đặc điểm chung của những phương pháp đã tồn tại là thời gian thực thi khá lâu cho những bài toán có số đỉnh lớn

Trang 14

Mục đích của luận văn này là nghiên cứu một phương pháp mới để giải bài toán này với một thời gian thực thi có cải thiện so với những giải pháp trước đó

Phương pháp mới này chính là sự kết hợp của hai hướng tiếp cận lớn: tìm kiếm cục bộ (local search) và lập trình ràng buộc (constraint programming) Tìm kiếm cục bộ, cụ thể là kĩ thuật tìm kiếm tabu sẽ được ứng dụng để tìm ra lời giải chất lượng

cao cho bài toán Trong quá trình tìm kiếm ta áp dụng lập trình ràng buộc, cụ thể là

phướng pháp nhánh và cận, để thu hẹp không gian tìm kiếm

Tìm kiếm cục bộ và lập trình ràng buộc là hai phương pháp khá phổ biến và đã được ứng dụng rộng rãi trong nhiều bài toán phức tạp khác Khi kết hợp hai phương pháp này chúng ta có thể vận dụng được thế mạnh của cả hai hướng tiếp cận vào cùng một bài toán giúp tăng độ hữu hiệu để tìm ra lời giải có chất lượng cao Ngoài ra, sự kết hợp của hai phương pháp này giúp cho bài toán có thể mở rộng hay thu hẹp một cách linh động, uyển chuyển, dễ dàng, thích hợp cho bài toán TSPTW hay nhưng bài toán tương tự

1.4 CẤU TRÚC CỦA LUẬN VĂN

Để tiện theo dõi, phần này giới thiệu cấu trúc và nội dung cơ bản của các phần tiếp theo trong luận văn:

Chương II: Cơ sở lý thuyết

Chương này chú trọng vào các cơ sở lý thuyết quan trọng được sử dụng trong đề tài

Chương III: Các công trình liên quan

Chương này giới thiệu các công trình trên thế giới liên quan đến đề tài Chương này giúp chúng ta hình dung được một cách tổng quan các phương pháp đã tồn tại trên thế giới từ đó chúng ta thấy được một số phương pháp mới đã được dùng để giải quyết đề tài này

Chương IV: Phương pháp giải quyết vấn đề

Chương này thể hiện các vấn đề liên quan đến đề tài: giải thuật chi tiết để giải quyết vấn đề, thiết kế cấu trúc dữ liệu, thiết kế cơ sở dữ liệu

Chương V: Hiện thực và kết quả thực nghiệm

Chương này thể hiện các kĩ thuật đã được sử dụng để hiện thực bài toán Ngoài ra, chương này còn chú trọng vào một số kết quả thực nghiệm khi chạy trên một số bài toán dữ liệu lớn

Trang 15

Chương này tổng kết một số vần đề liên quan đến đề tài, thêm vào đó là một số phương hướng có thể áp dụng để phát triển và mở rộng đề tài

Trang 16

CHƯƠNG II

CƠ SỞ LÝ THUYẾT

Phương pháp để giải bài toán TSPTW được sử dụng trong đề tài chính là sự kết

hợp của hai phương pháp: Tìm kiếm cục bộ (local search) mà cụ thể là tìm kiếm tabu (tabu search), và lập trình ràng buộc (constraint programming) với chiến lược nhánh và cận (branch & bound) Sự kết hợp này nhằm phát huy thế mạnh của cả hai

phương pháp trên Sự kết hợp được thể hiện trong 2 bước:

- Bước 1: dùng lập trình ràng buộc để giới hạn lại miền trị trên không gian tìm kiếm

- Bước 2: ứng dụng tìm kiếm tabu để tìm ra lời giải chất lượng cao, trong quá

trình tìm kiếm thì giải thuật tiếp tục sử dụng lập trình ràng buộc để thu hẹp không gian tìm kiếm

Trong bước 1, giải thuật chủ yếu chú trọng vào việc giới hạn lại không gian tìm kiếm Yêu cầu của bài toán là phải chạy được trên những dữ liệu lớn, do đó không gian tìm kiếm ban đầu thường khá lớn, việc thu hẹp chúng thực sự rất quan trọng và ảnh hưởng đáng kể đến hiệu suất của bài toán

Bước 2 nhằm mục đích tìm ra lời giải thực sự của bài toán Trong bước này

chúng ta sẽ áp dụng giải thuật tìm kiếm tabu để tìm ra lời giải Giải thuật này có thể

áp dụng để tìm ra lời giải cho những bài toán dữ liệu lớn mà những phương pháp khác không thể giải được trong một thời gian có thể chấp nhận Trong từng bước

chuyển của tìm kiếm tabu ta lại áp dụng lập trình ràng buộc để thu hẹp không gian

tìm kiếm

Mục đích chính của đề tài là phải tìm ra giải pháp hữu hiệu, có thời gian chạy cải thiện so với các giải pháp đã tồn tại trên thế giới

2.1 TÌM KIẾM CỤC BỘ

Tìm kiếm cục bộ là một kĩ thuật tổng quát cho những bài toán tìm kiếm Đây là một kĩ thuật tìm kiếm không hệ thống, không vét cạn và không đảm bảo tìm ra lời giải tối ưu, giải thuật chỉ tìm ra lời giải tốt nhất có thể được bằng cách cố gắng cải thiện lời giải cho đến khi thỏa mãn một điều kiện nào đó

Giải thuật này rất được ưa chuộng bởi vì nó rất hữu hiệu và có ứng dụng rộng rãi Sau đây là một số cơ sở lý thuyết liên quan đến tìm kiếm cục bộ:

Trang 17

2.1.1 Tìm kiếm cục bộ cơ bản:

Định nghĩa 1.1 (Bài toán tối ưu tổ hợp)

Chúng ta gọi π là một thể hiện của một bài toán tối ưu tổ hợp Π, π là một bộ 3

<S, F, f>, trong đó S là tập hữu hạn các lời giải, F ⊆ S là tập các lời giải khả thi và f:

S → ℜ định nghĩa một hàm mục tiêu nhằm đánh giá chất lượng của các lời giải trong S

Vấn đề đặt ra là tìm một lời giải tối ưu toàn cục xP

Định nghĩa 1.2 (Bài toán tìm kiếm)

Cho trước bộ <S, F> trong đó S là tập các lời giải và F ⊆ S là tập các lời giải khả thi, một bài toán tìm kiếm bao gồm tìm kiếm một lời giải khả thi trong tập F,

nghĩa là một phần tử xP

(hàm mục tiêu- cost function)

Định nghĩa 1.3 (Không gian tìm kiếm)

Cho một bài toán tối ưu tổ hợp Π, mỗi thể hiện π của Π ta định nghĩa một không gian tìm kiếm SB π PB P với các tính chất sau:

- Mỗi phần tử trong không gian tìm kiếm tương ứng với một lời giải trong không gian lời giải

- Ít nhất một lời giải tối ưu cũng có trong không gian tìm kiếm

Định nghĩa 1.4 (Quan hệ lân cận)

Với mỗi π là một thể hiện của Π, và một lời giải s trong không gian lời giải S,

ta định nghĩa N(s) ⊆ S là tập lời giải láng giềng của s và mỗi phần tử s’ ∈ N(s) gọi là lời giải láng giềng của s

Cho một lời giải s, tập N(s) được định nghĩa là tập các bước chuyển khả thi từ

s

Definition 1.5 (Hàm chi phí)

Trang 18

Với mỗi π là một thể hiện của Π trong không gian lời giải S, ta định nghĩa hàm

chi phí f kết hợp với mỗi s ∈ S f(s) đánh giá chất lượng của lời giải

2.1.2 Giải thuật tìm kiếm cục bộ tổng quát:

Cho một lời giải ban đầu sBoB∈ S, lặp trên không gian tìm kiếm, sử dụng các bước chuyển dựa trên quan hệ lân cận Tại mỗi bước lặp, ta thể hiện một bước chuyển từ

lời giải s sang lời giải s’ Khi giải thuật áp dụng một bước chuyển m từ s sang s’, và nếu m được chấp nhận ta viết: s’ = s ⊕ m Việc lựa chọn bước chuyển dựa trên giá trị của hàm chi phí f Giải pháp ban đầu sBoB có thể được xây dựng dựa trên một số giải thuật đơn giản hay được phát sinh ngẫu nhiên

Giải thuật sẽ dừng khi tìm ra lời giải thoả mãn yêu cầu về chi phí hay số lần lặp vượt qua một giới hạn cho phép mà chưa tìm ra lời giải

Giải thuật:

procedure LocalSearch(MaxCost, MaxMoves)

begin

lấy s = {(vB i B, dB ij B)| dB ij B ∈ DB i B for all vB i B ∈ V} là lời giải ban đầu

while f(s) > MaxCost and TotalMoves < MaxMoves do

+ M’ là tập các bước chuyển cục bộ từ lời giải s, M’ ∈ M

+ Thủ tục GenerateLocalMoves trả về kết quả của tất cả các bước chuyển tốt

nhất M’ trong vùng lân cận của s

+ Thủ tục GenerateLocalMoves và MakeLocalMoves sẽ được định nghĩa chi

tiết trong các giải thuật tìm kiếm cụ thể

2.1.3 Ba giải thuật tìm kiếm cục bộ khá phổ biến:

Leo đồi (Hill-Climbing) dựa trên ý tưởng cơ bản là tại mỗi bước chuyển trong

Trang 19

thuật có thể rơi vào điểm tối ưu cục bộ (điểm chỉ tối ưu trong một vùng lân cận mà

không tối ưu trong không gian tìm kiếm tổng thể) Tìm kiếm tabu (Tabu Search) và mô phỏng luyện kim (Simulated Annealing) là 2 hướng tiếp cận nhằm mục đích cải

thiện ý tưởng tìm kiếm cơ bản của Hill Climbing

Sau đây là bảng so sánh 3 giải thuật, bảng 1:

Đặêc điểm Leo đồi Mô phỏng luyện

kim

Tìm kiếm tabu

Lời giải ban

đầu Không xác định rõ Không xác định rõ Không xác định rõ Lựa chọn

bước chuyển Ngẫu nhiên Ngẫu nhiên Bước chuyển tốt nhất mà không bị

cấm Bước chuyển

Chọn bước chuyển nào cũng được

Điều kiện

dừng Lặp cho đến khi không còn cải thiện được nữa Trạng thái ổn định của hệ thống Lặp cho đến khi không còn cải

thiện được nữa

Bảng 1: So sánh đặc điểm cơ bản của 3 giải thuật tìm kiếm cục bộ

Dựa vào bảng so sánh trên, chúng ta có nhận xét rằng giải thuật tìm kiếm tabu và giải thuật mô phỏng luyện kim có thể thoát ra khỏi điểm tối ưu cục bộ bằng cách

chấp nhận cả những bước chuyển mà sinh ra lời giải tệ hơn lời giải hiện tại Nhờ vào đặc điểm này nên hai phương pháp này rất được ưa chuộng trên thế giới hiện nay

2.1.4 Tìm kiếm tabu (Tabu Search):

Tìm kiếm tabu là một kĩ thuật tối ưu được đưa ra bởi Glover vào cuối những

năm 1980, từ đó nó được ứng dụng rộng rãi cho nhiều bài toán Đây là giải thuật cải

thiện từ giải thuật leo đồi (Hill Climbing) để tránh trường hợp tối ưu cục bộ

Chiến lược cơ bản của tìm kiếm tabu là giữ lại tất cả các lời giải đã đi qua

trước đó nhằm mục đích không có một lời giải nào lặp lại 2 lần, nghĩa là các lời giải trong danh sách đều bị cấm sử dụng lại Khi gặp trường hợp tối ưu cục bộ, giải thuật sẽ thoát ra bằng cách chọn một lời giải tốt nhất có thể thay thế được

Trang 20

Chiều dài của danh sách cấm (tabulist) là tham số cho giải thuật tìm kiếm

tabu Việc lựa chọn chiều dài của danh sách cấm là rất quan trọng, quyết định đến hiệu suất của giải thuật

Sau đây là 2 thủ tục được hiện thực dựa trên ý tưởng của giải thuật tìm kiếm tabu Hai thủ tục này sẽ được đưa vào trong giải thuật tìm kiếm cục bộ tổng quát ở

trên để trở thành một giải thuật hoàn chỉnh

Hiện thực 2 thủ tục GenerateLocalMoves và MakeLocalMoves

procedure GenerateLocalMoves(s, TotalMoves)

begin

M’ ← ∅; BestCost ← ∞;

for each vB i B ∈ V do

begin

DB i B ← current domain value of vB i B;

dB curt B ← initial value;

for each d ∈ DB i B | d ≠ dB curr B do

Trang 21

Tìm kiếm tabu có cải tiến:

Việc sử dụng danh sách cấm giúp giải thuật có thể tránh được lặp vòng, tuy nhiên trong một số trường hợp nó có thể bỏ qua một số giải pháp tốt Vì lí do này

giải thuật tìm kiếm tabu có thể cải tiến bằng một tiêu chuẩn kì vọng (aspiration criterion) như sau: nếu một lời giải s khi áp dụng bước chuyển m có cải thiện đáng kể về hàm chi phí thì lời giải s ⊕ m sẽ được chấp nhận như là một lời giải mới mà

không cần quan tâm tới trạng thái hiện tại của danh sách cấm, nghĩa là không cần quan tâm tới việc bước chuyển đó có tồn tại trong danh sách cấm hay chưa

Thủ tục GenerateLocalMoves() có thể viết lại như sau khi áp dụng tiêu

chuẩn kì vọng vào giải thuật tìm kiếm tabu:

procedure GenerateLocalMoves(s, TotalMoves)

begin

M’ ← ∅; BestCost ← ∞;

for each vB i B ∈ V do

begin

DB i B ← current domain value of vB i B; dB curt B ← initial value;

for each d ∈ DB i B | d ≠ dB curr B do

begin

m ← {vB i B, d};

if f(s ⊕ m) ≤ BestCost then begin

if f(s ⊕ m) < BestCost then begin

BestCost ← f(s ⊕ m);

M’ ← ∅;

M’ ← M’ ∪ m;

end else

if (m is out of tabu list) then M’ ← M’ ∪ m;

end

dB curr B = d;

end end

return M’;

end

Việc áp dụng tiêu chuẩn kì vọng trong giải thuật tìm kiếm tabu giúp cho giải

thuật này có thể sinh ra lời giải tối ưu nhanh hơn sau một số ít bước chuyển hơn

Trang 22

2.2 LẬP TRÌNH RÀNG BUỘC

Giống như lập trình logic, lập trình ràng buộc thuộc về phương thức lập trình mô tả (declarative programming)

Lập trình ràng buộc là lĩnh vực nghiên cứu các hệ thống tính toán dựa trên các

ràng buộc (constraint) Ý tưởng chính của lập trình ràng buộc là giải bài toán ứng

dụng bằng các phát biểu những ràng buộc của bài toán đó, tìm kiếm lời giải thoả mãn một phần hoặc tất cả những ràng buộc đó

So sánh với các phương pháp cổ điển, lập trình ràng buộc có những ưu điểm:

- Thời gian phát triển phần mềm nhanh

- Mềm dẻo, linh hoạt, dễ thích ứng với những thay đổi

- Dễ đưa vào những tương tác với người sử dụng

Lập trình ràng buộc có liên quan đến một lĩnh vực của trí tuệ nhân tạo (AI) là các bài toán giải hệ ràng buộc (constraint satisfaction problems)

2.2.1 Giải hệ ràng buộc toàn phần

Một bài toán giải hệ ràng buộc (CSP) bao gồm bộ ba P = (V, D, C)

Trong đó,

V = {VB 1 B, VB 2 B,…, VB n B} là tập các biến

D = {DvB 1 B, DvB 2 B, …, DvB n B} là tập các miền trị của các biến tương ứng

C = {CB 1 B, CB 2 B,… CB n B} là tập hợp các ràng buộc trên các biến, nó giới hạn khả năng lựa chọn giá trị cho biến

Nếu các miền trị là những tập trị hữu hạn và rời rạc thì bài toán CSP sẽ được gọi là CSP trên miền trị hữu hạn (FCSP)

Các bài toán CSP được chia làm 2 loại chính sau:

- Bài toán thoả mãn ràng buộc (satisfiability problems): mục tiêu là tìm ra một

cách gán trị vào biến mà thỏa mãn một số ràng buộc

- Bài toán tối ưu (optimization problems): mỗi cách gán trị vào biến có một

hàm mục tiêu tương ứng Mục tiêu của bài toán là tìm một cách gán trị vào biến với hàm mục tiêu cao nhất hay hàm chi phí thấp nhất

Trang 23

Tất cả các bài toán CSP đều là bài toán NP-complete, có độ phức tạp tính toán

Select an arbitrary element a ∈ DB i B’ and remove a from DB i B’;

if value a for vB i B is consistent with <aB 1 B, …,aB i B> then

Trang 24

AHEAD, BACK, CONFLICT-DIRECTD-BACKJUMPING, …

BACKTRACKING-WITH-LOOK-2.2.2 Giải hệ ràng buộc riêng phần

Phương pháp giải hệ ràng buộc riêng phần (Partial constraint satisfaction)

nhằm tìm ra giá trị của tập các biến chỉ cần thoả mãn một tập con của các ràng buộc mà không cần phải thoả mãn tất cả các ràng buộc

Một bài toán giải hệ ràng buộc riêng phần (Partial constraint satisfaction problem - PCSP) gồm một bộ ba (V, C, ω), trong đó, V là tập hữu hạn của biến, mỗi biến gắn với một miền trị hữu hạn C là tập các ràng buộc và ω là hàm trọng số thể hiện tầm quan trọng của các ràng buộc ω: C → ℜ

Vì vậy, chúng ta có thể định nghĩa hai loại ràng buộc sau: ràng buộc cứng

(hard constraint) là ràng buộc bắt buộc phải thoả mãn nên có hàm trọng số ω rất

lớn, ràng buộc mềm (soft constraint) là ràng buộc nên thoả mãn mà không bắt buộc

Một lời giải của bài toán giải hệ ràng buộc riêng phần là việc gán trị vào biến trong miền trị của chúng sao cho:

- Số lượng các ràng buộc bị vi phạm c ∈ C là nhỏ nhất

- Tổng trọng số của tất cả các ràng buộc bị vi phạm c ∈ C là nhỏ nhất

Mục tiêu của bài toán là tìm ra lời giải thoả mãn càng nhiều ràng buộc càng tốt

Giải thuật nhánh và cận (Branch & Bound):

Giải thuật nhánh và cận vận hành tương tự như giải thuật quay lui, ý tưởng cơ

bản của giải thuật là lưu lại tất cả các lời giải tốt nhất cho đến lần xét hiện tại và loại bỏ đi những nhánh tìm kiếm mà biết chắc chắn rằng sẽ không thể cho giải pháp tốt hơn các lời giải đã tìm được

Giải thuật nhánh và cận được sử dụng để giải bài toán PCSP trong đó sử dụng

hàm đánh giá dựa trên số lượng ràng buộc bị vi phạm

Giải thuật nhánh và cận có thể được viết như sau:

Một số tham số được sử dụng trong giải thuật:

- Search path: con đường tìm kiếm hiện tại

Trang 25

- Distance: số lượng ràng buộc bị vi phạm bởi việc chọn giá trị trên đường tìm

kiếm hiện tại

- Variables: tập các biến chưa được gán trị trên đường tìm kiếm hiện tại

- Values: tập giá trị còn lại trong miền trị của biến đầu tiên trong Variables

- N: Số bất tương thích cần thiết cho một giải pháp

- S: Số bất tương thích tối đa cho một giải pháp Ban đầu S = 0 và N = ∞

procedure P-BB(Search-path, Distance, Vars, Values)

if N ≤ S then return ‘finished’;

else return ‘keep searching’; /*backtrack*/

end

else

if Values = ∅ then return ‘keep-searching’;/*backtrack*/

else

begin /*try to extend Search-path*/

Current-value ← head(Values); v ← head(Vars);

assign Current-value to v; New-distance ← Distance;

for all constraints c in C(v) do begin

if checkBC(v,c) = ‘inconsistant’ then

New-distance ← New-distance +1;

if New-distance ≥ N then exit for;

end

if New-distance < N and

P-BB(Search-path plus Current-value, New-distance, tail(V),

domain of head(tail(Vars)))= ‘finished’then return ‘finished’;

else /*will see if can do better with another value*/

return P-BB(Search-path, Distance, Vars, tail(Values));

end

end

Trang 26

procedure checkBC(c, v)

begin

Let V(c) be the set of all variables involving in the constraint c;

if all variable v’ ∈ V(c) and v’ ≠ v are instantiated then

if c is satisfied then return ‘consistent’

else return ‘inconsistent’;

else return ‘consistent’;

end

Một số lưu ý:

- Nếu chúng ta muốn tối ưu tổng trọng số của những ràng buộc bị vi phạm thì chúng ta nên thay dòng:

New-distance ← New-distance + 1

New-distance ← New-distance + weight(c)

- Thứ tự biến, thứ tự giá trị xét và thứ tự ràng buộc cũng rất quan trọng trong

giải thuật giải hệ ràng buộc riêng phần, và có thể đưa vào giải thuật nhánh và cận

- Giải thuật nhánh và cận có thể cải tiến thành giải thuật nhánh và cận có kiểm tra hướng tới (Branh & Bound with Forward Checking) với ý tưởng cơ bản là mỗi lần một giá trị a được gán vào một biến v thì giải thuật sẽ nhìn tới tất cả những biến tương lai mà có ràng buộc với v từ đó có thể loại bỏ được các giá trị trong miền trị của các biến đó mà không tương thích với a

Giải thuật giải hệ ràng buộc riêng phần thực sự hữu ích trong thực tế Thực vậy giải thuật này thực sự uyển chuyển và có thể áp dụng cho rất nhiều các bài toán khác nhau Giải thuật có thể thay đổi, thêm bớt các ràng buộc một cách rất dễ dàng, hơn nữa chúng ta có thể đánh giá cũng như sắp xếp độ ưu tiên của các ràng buộc Từ đó chúng ta có thể giải bài toán giải hệ ràng buộc một cách hiệu quả hơn

Giải thuật nhánh và cận là một giải thuật tìm kiếm có hệ thống Giải thuật này

rất phổ biến trong các bài toán giải hệ ràng buộc riêng phần Trong các bài toán có không gian tìm kiếm lớn, nếu phải duyệt qua tất cả không gian đó thì sẽ tốn rất nhiều thời gian Khi đó, giải thuật nhánh và cận sẽ phát huy tác dụng bằng cách loại bỏ đi một số nhánh mà chắc chắn sẽ không mang lại lời giải tốt hơn lời giải hiện tại Điều này giúp tiết kiệm được thời gian sinh ra lời giải

Trang 27

Tóm lại, chương này chú trọng vào việc mô tả cơ sở lý thuyết của hai hướng tiếp cận được sử dụng trong đề tài Ngoài ra, chương này còn giúp chúng ta hiểu được thế mạnh của giải thuật tìm kiếm cục bộ và giải thuật lập trình ràng buộc Từ đó, ta thấy được tầm quan trọng của chúng

Trang 28

CHƯƠNG III

CÁC CÔNG TRÌNH LIÊN QUAN

Trên thế giới đã tồn tại khá nhiều phương pháp và giải thuật từng được dùng để giải bài toán TSPTW, tuy nhiên đa số các phương pháp còn sử dụng độc lập, chưa có sự kết hợp thế mạnh của hai hay nhiều phương pháp để tạo thành một phương pháp hoàn chỉnh và hiệu quả hơn Sau đây là một số phương pháp đã được áp dụng để giải bài toán người bán hàng du lịch với khung thời gian hạn định

3.1 PHƯƠNG PHÁP QUY HOẠCH ĐỘNG (DYNAMIC PROGRAMMING)

Phương pháp này đã được ứng dụng để giải bài toán TSPTW với một số công trình trên thế giới như sau:

Công trình của Dumas et al [1995] đã giải bài toán TSPTW với hàm mục tiêu là tối thiểu khoảng cách đường đi Ý tưởng cơ bản của giải thuật là loại bỏ bớt những trạng thái và bước chuyển không tốt trong suốt quá trình thực thi của giải thuật Công trình của ông có thể giải bài toán lên đến 100 đỉnh với khung thời gian hạn định khá rộng, tuy nhiên công trình chỉ giải cho các bài toán với dữ liệu đưa vào là nguyên [8]

Công trình của Mingozzi et al [1993] đã giải bài toán TSPTW với ý tưởng cơ bản giống như giải thuật của Dumas với chiến lược quy hoạch động hai bước (two phase dynamic programming) Trong giải thuật có sử dụng một hàm chận (bounding function) để loại bỏ những trạng thái mà không thể dẫn tới một lời giải tốt hơn [14] Phương pháp quy hoạch động có ưu điểm là giải được ra kết quả tối ưu Tuy nhiên nhược điểm cơ bản của giải thuật là: chỉ giải được trên các bài toán có bộ dữ liệu nhỏ với khung thời gian hạn định nguyên và thời gian để sinh ra lời giải là khá lâu

3.2 TÌM KIẾM CỤC BỘ

Phương pháp này bao gồm các giải thuật: giải thuật leo đồi (hill climbing), giải thuật tìm kiếm tabu (tabu search), giải thuật mô phỏng luyện kim (simulated annealing), giải thuật di truyền (genetic algorithm) Có thể kể đến một số công

trình sau đây:

Trang 29

chuyển láng giềng (neighborhood) dựa vào các hàm đánh giá sự vi phạm (penalty function) [4]

Patrick Karlsson [2002] đã giải bài toán TSP dùng phương pháp mô phỏng luyện kim Tuy nhiên ông chưa đưa vào bài toán yếu tố khung thời gian hạn định, điều đó cho thấy bài toán ông giải quyết còn khá đơn giản so với bài toán TSPTW [17]

Blanton và Wainwright [1993] đã giải bài toán tìm đường tối ưu với khung thời gian hạn định (Vehicle Routing Problem with Time Windows - VRPTW) bằng giải thuật di truyền Có thể nói bài toán TSPTW là một bài toán cụ thể của bài toán VRPTW Dựa vào phương pháp giải bài toán VRPTW chúng ta có thể suy ra được cách giải cho bài toán TSPTW Giải thuật của các ông đã đưa ra được kết quả thoả mãn với yêu cầu Tuy nhiên giải thuật của các ông đã có nhược điểm là trong đa số các bộ dữ liệu mẫu thì giải thuật không đưa được về kết quả tối ưu [3]

Zhu, Kenny Qili [2000] cũng đã đưa ra lời giải cho bài toán này bằng giải thuật di truyền với một số cải tiến không đáng kể [22]

Từ những nhược điểm trên của Blanton và Wainwright Noor Hasnah Moin [1996] đã cải tiến bằng cách đưa ra giải thuật di truyền ghép lai (Hybrid Genetic Algorithm) Ý tưởng cơ bản của giải thuật là tương tự như giải thuật di truyền nhưng

được cải tiến bằng các Heuristic giúp giải thuật đưa ra được các kết quả tốt và tối

ưu hơn [15]

Lin [1965] đã xây dựng giải thuật tìm kiếm tabu với chiến lược k-optimal để

giải bài toán TSP với thời gian đa thức Trong giải thuật này, Lin đã tìm ra lời giải bằng cách lặp việc thay thế k cạnh trong đồ thị bằng k cạnh khác cho đến khi chất lượng hàm mục tiêu không thể cải tiến được nữa Tuy nhiên khi đưa ràng buộc khung thời gian hạn định vào thì bài toán này trở nên phức tạp hơn nhiều và việc tìm kiếm trên một không gian lân cận rộng lớn thực sự là một trở ngại lớn, và Lin đã thực hiện song song hoá bài toán nhằm mục đích rút gọn thời gian thực thi bài toán Giải thuật song song được chạy trong mô hình PRAM và đã cải thiện được lời giải đáng kể [11]

Je_rey W Ohlmann , Barrett W Thomas (2002) đã giải bài toán TSPTW bằng

giải thuật mô phỏng luyện kim nén (compressed annealing) Ý tưởng cơ bản của giải

thuật là cũng dựa trên phương pháp mô phỏng luyện kim và thêm vào một số

heuristic nhằm tìm ra lời giải nhanh hơn Vời cải tiến này thì giải thuật có thể giải

bài toán TSPTW với kết quả tối ưu hơn [13]

Trang 30

Công trình của William P Nanry, J Wesley Barnes đã giải bài toán nhận và gởi với khung thời gian hạn định (pickup and delivery with time windows) sử dụng

tìm kiếm tabu có tác động (tabu reactive) Đây là một phương pháp cải tiến của

phương pháp tìm kiếm tabu bình thường bằng cách cho chiều dài của danh sách tabu thay đổi tuỳ theo bài toán [23]

Ưu điểm của phương pháp tìm kiếm cục bộ là có thể luôn tìm ra được lời giải cho tất cả các bài toán tối ưu tổ hợp trong một thời gian đủ lâu, nhưng nhược điểm của chúng là thời gian chạy để sinh ra lời giải là khá lâu và tuỳ thuộc khá nhiều vào lời giải ban đầu

3.3 LẬP TRÌNH RÀNG BUỘC

Lập trình logic có ràng buộc (Constraint Logic Programming) hay các giải thuật giải hệ ràng buộc có thể giải được bài toán TSPTW Có thể kể đến một số công trình sau đây:

Công trình của Langevin, ông đã dùng giải thuật nhánh và cận (branch & bound) để giải bài toán TSPTW Tuy nhiên giải thuật của ông cũng không tìm ra được lời giải tối ưu do trong quá trình tìm lời giải ông đã thêm vào một số heuristic

nhằm cải thiện thời gian thực thi Số đỉnh tối đa mà giải thuật có thể giải là 40 [12] Công trình của Christofides et al [1981] và Baker [1983], họ đã dùng giải thuật nhánh và cận (Branch & Bound algorithm) để giải quyết bài toán TSPTW, tuy nhiên giải thuật của các ông chỉ giải được những bài toán có tối đa 50 đỉnh với điều kiện là phải nới rộng khoảng thời gian hạn định của mỗi đỉnh và các khoảng thời gian này không được trùng lắp nhiều [2]

Applegate et al [1998] đã giải bài toán TSPTW bằng giải thuật nhánh và cắt (branh & cut) Giải thuật này về cơ bản giống như giải thuật nhánh và cận nên cũng chỉ giải được một số bài toán dữ liệu nhỏ, khung thời gian hạn định nới rộng [1] Công trình của Pesant et al [1998] Ý tưởng cơ bản của giải thuật là dùng phương pháp nhánh và cận và không cần có ràng buộc nào trên khung thời gian hạn định Ông đã đưa ra một số ràng buộc có thể tóm tắt như sau: (1) Tối thiểu tổng chi phí của đường đi (2) Mối thành phố chỉ đi qua đúng một lần (3) Tránh lặp vòng có thể xảy ra (4) Mỗi đỉnh phải được đi qua trong một khung thời gian hạn định cho trước Dựa vào các ràng buộc mô tả trên, ông đã giới hạn lại được tập miền trị lân cận đáng kể của các đỉnh từ đó đem lại được hiệu suất cao hơn [12]

Ưu điểm chính của phương pháp lập trình ràng buộc là dễ dàng thay đổi tập

Trang 31

toán khác nhau Nhưng nhược điểm chung là chúng có thể không sinh ra lời giải tối

ưu mà ta mong muốn

Công trình của S.R Thangiah, I.H Osman, and T Sun đã có sự so sánh ba hướng tiếp cận: giải thuật di truyền, giải thuật mô phỏng luyện kim, giải thuật tìm kiếm tabu cho bài toán Vehicle Routing Problems with Time Windows (VRPTW) Dựa vào sự so sánh của 3 hướng tiếp này cho thấy đây là 3 hướng tiếp cận rất thích hợp cho nhưng bài toán dạng VRPTW, tuy nhiên khi 3 giải thuật này hoạt động độc lập thì thời gian chạy ra kết quả tối ưu cho những bài toán lớn cũng chưa tốt lắm [21]

Công trình của Filippo Focacci, Andrea Lodi, Michela Milano giải bài toán TSPTW bằng phương pháp chính xác (hybrid exact algorithm) Đây là phương pháp tìm ra lời giải tối ưu tuyệt đối, tuy nhiên thời gian thực thi bài toán rất lớn Chính vì vậy giải thuật này chỉ ứng dụng cho các bài toán có số đỉnh nhỏ [9]

Với sự gợi ý của Pesant và Gendreau [11], đề tài này đã hiện thực được một

hướng ghép lai mới khá hiệu quả, đó là sự hướng ghép lai giữa tìm kiếm tabu và giải thuật nhánh và cận

Qua thực nghiệm cho thấy phương pháp mới có thể đem lại lời giải xấp xỉ tối

ưu với một độ hữu hiệu tính toán khá tốt Với việc ứng dụng phương pháp mới thì bài toán có thể giải trong một thời gian có cải thiện đáng kể Hầu hết các phương pháp ghép lai này vẫn là những công trình đang được nghiên cứu trên thế giới, thực sự vẫn chưa có giải thuật ghép lai nào đã được nghiên cứu thực sự hiệu quả để giải quyết bài toán TSPTW

Từ các công trình, chúng ta có thể nhận xét rằng TSPTW là một bài toán rất được quan tâm trên thế giới hiện nay, rất nhiều nhà nghiên cứu trên thế giới đang nghiên cứu những phương pháp mới nhằm cải thiện thời gian sinh ra lời giải có chất lượng cao cho bài toán này

Trang 32

CHƯƠNG IV

PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ

Phần này chú trọng vào phương pháp cụ thể được sử dụng trong đề tài để giải quyết vấn đề Ngoài ra, phần này cũng trình bày các giải thuật cụ thể được sử dụng để giải bài toán Giải thuật được sử dụng trong đề tài này chính là sự kết hợp của

tìm kiếm tabu và giải thuật nhánh và cận Phần này cũng mô tả một số cấu trúc dữ

liệu quan trọng được sử dụng trong quá trình hiện thực

4.1 PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ

Trong phần này, chúng tôi mô tả cụ thể bài toán cũng như phương pháp sẽ sử dụng để giải quyết bài toán TSPTW

4.1.1 Mô tả bài toán

Bài toán TSPTW có thể thể hiện như sau:

Cho một đồ thị vô hướng đầy đủ G với tập đỉnh {1, 2,…, n}, trong đó V = {2, …, n} thể hiện các thành phố cần viếng thăm, 1 là đỉnh xuất phát Để thuận tiện trong quá trình tìm ra lời giải, ta thêm vào một đỉnh cầm canh n + 1 đóng vai trò giống như đỉnh 1 Khi đó đỉnh 1 được xem như là đỉnh khởi đầu và n + 1 là đỉnh kết thúc

Vì vậy lộ trình (tour) cần tìm chính là một chu trình Hamilton bắt đầu tại đỉnh 1 và kết thúc tại đỉnh n+1

Ta có thể định nghĩa VP

thuộc {2, …, n+1}

Mục tiêu của bài toán được thể hiện thông qua công thức:

Minimize∑cBi,Si B với i ∈ VP

o

P

Công thức trên nhằm thể hiện lộ trình cần tìm phải đạt tối thiểu về tổng chi phí Giả sử đề tài này sẽ xét chi phí chính là thời gian đi từ thành phố này đến thành phố khác

Ngoài ra mỗi đỉnh của đồ thị đều được kết hợp với một khung thời gian hạn

định [a , b ] thể hiện khoảng thời gian cho phép đi qua đỉnh i

Trang 33

Sau đây là đồ thị thể hiện cho bài toán TSPTW, hình 1:

[a2, b 2]

[aj, b j] [a1 ,b 1]

Gọi s là lời giải hiện tại (là một chu trình đi qua tất cả các đỉnh của đồ thị, mỗi

đỉnh đi qua đúng một lần, tất cả các đỉnh đều được đi qua trong khung thời gian hạn

định cho phép) Ta định nghĩa một bước chuyển cục bộ (local move) m chính làbước chuyển khi áp dụng trên lời giải s để thành lời giải s’, hình 2

Hình 2: Bước chuyển cục bộ m

s

Ta định nghĩa tập các lời giải láng giềng (neighborhood) của s là các lời giải có thể đạt được từ s khi áp dụng các bước chuyển cục bộ Tập các lời giải khả thi trong tập các lời giải láng giềng này được gọi là tập lời giải láng giềng khả thi

(feasible neighborhood)

Trang 34

Khi chỉ áp dụng giải thuật tìm kiếm cục bộ đơn giản (luôn chọn lời giải cục bộ khả thi tốt nhất cho đến khi không thể tốt hơn lời giải hiện tại) thì giải thuật có khả

năng rơi vào điểm tối ưu cục bộ (local optimum) Tìm kiếm tabu chính là một trong

những giải pháp để thoát ra khỏi điểm tối ưu cục bộ với chiến lược như sau: từ lời giải hiện tại, giải thuật sẽ chuyển đến lời giải láng giềng tốt nhất có thể có mà không cần quan tâm tới lời giải láng giềng đó có tốt hơn lời giải hiện tại hay không

Ngoài ra, để giải thuật tránh lặp vòng thì một danh sách cấm (tabu list) sẽ được

dùng để lưu lại tất cả các giải pháp đã đi qua

Hơn nữa, ở mỗi bước lặp trong quá trình tìm kiếm ra lời giải lân cận s’ từ s, giải thuật nhánh và cận được sử dụng để giới hạn lại không gian các bước chuyển lân cận Việc sử dụng giải thuật nhánh và cận sẽ loại bỏ được một số nhánh trên cây tìm kiếm (search tree) mà chắc chắn sẽ không thể đem lại được lời giải tốt hơn

lời giải hiện tại

4.1.2 Chiến lược để tìm ra lời giải láng giềng

Trong đề tài này giải thuật tìm kiếm tabu sẽ dùng chiến lược k-interchange để tìm ra lời giải lân cận s’ từ một lời giải s Ý tưởng cơ bản của chiến lược này là ta thay thế k cạnh trong lời giải s bằng k cạnh khác để tạo thành lời giải s’ tốt nhất có thể được Thực nghiệm đã chứng minh được k = 2 hay k = 3 là có thể tìm ra những lời giải láng giềng tốt nhất, ta định nghĩa là 2-opt hay 3-opt

Như vậy trong bài toán TSPTW, ta có thể định nghĩa một bước chuyển cục bộ (local move) chính là việc thay thế k cạnh trong lời giải hiện tại s thành k cạnh khác để tạo ra tập lời giải láng giềng của s

Kĩ thuật 2-opt chính là việc thay 2 cạnh trong lời giải hiện tại bằng 2 cạnh khác để đạt được một lời giải láng giềng Ta có thể minh hoạ bằng hình 3, hình 4

2 3

8 7

Trang 35

9 8

7 6 5

1

Hình 6: Thể hiện 3-Opt trên array

Trong kĩ thuật k-interchange, khi chúng ta đang đứng ở lời giải s, để tìm ra lời giải s’ thì chúng ta phải tìm được k cạnh trong tập các cạnh để có thể thay thế, việc tìm k cạnh trong một tập hợp cạnh khá lớn c thì chắc chắn sẽ tốn rất nhiều thời gian,

do đó giải thuật nhánh và cận đã được sử dụng nhằm mục đích loại bỏ các cạnh trong tập hợp cạnh c mà chắc chắn sẽ không mang lại lời giải khả thi hay lời giải tốt

Trang 36

hơn Việc đưa vào bài toán người bán hàng du lịch yếu tố khung thời gian hạn định

giúp cho việc loại bỏ số cạnh trong tập hợp cạnh c là rất đáng kể

4.2 CÁC BƯỚC ĐỂ GIẢI QUYẾT BÀI TOÁN

Các bước chính để giải quyết bài toán được tóm tắt như sau:

+ Tìm ra lời giải ban đầu (initial solution): là một chu trình Hamilton hợp lệ

với những ràng buộc của đề tài, tuy nhiên chi phí của lời giải này còn cao

+ Từ lời giải ban đầu áp dụng kĩ thuật 2-opt để cải thiện nó nhằm tìm ra lời

giải có chất lượng cao về chi phí Trong mỗi bước lặp của của giải thuật, chiến lược

nhánh và cận có thể được áp dụng nhằm thu hẹp lại không gian tìm kiếm

Thủ tục LocalSearch() tổng quát cho bài toán TSPTW khi có kết hợp với giải

thuật nhánh và cận có thể được viết lại như sau, giải thuật nhánh và cận được kết hợp vào từng bước lặp của giải thuật tìm kiếm tabu:

procedure LocalSearch(MaxCost, MaxMoves)

begin

V’ ← LimitedLocalMoves(V)

lấy s = {(vB i B, dB ij B)| dB ij B ∈ DB i B for all vB i B ∈ V’} là lới giải ban đầu

while f(s) > MaxCost and TotalMoves < MaxMoves do

Trong đó, thủ tục LimitedLocalMoves() nhằm giới hạn lại không gian tìm

kiếm bằng cách loại bỏ những nhánh mà không thể đem lại lời giải khả thi hay lời giải tốt hơn lời giải hiện tại

Giải thuật trên đã thể hiện được sự kết hợp của tìm kiếm tabu và giải thuật nhánh và cận Trong mỗi bước lặp của tìm kiếm tabu thì giải thuật nhánh và cận đã

được đưa vào nhằm giới hạn không gian tìm kiếm Kết quả là thời gian thực thi của giải thuật được cải thiện đáng kể

Trang 37

4.2.1 Giải thuật để tìm ra lời giải ban đầu

Vì giải thuật tìm kiếm tabu không chỉ định rõ giải thuật cần dùng để tìm ra lời

giải ban đầu, do đó, chúng ta có thể chọn bất kì giải thuật nào để sinh ra lời giải ban đầu, ví dụ như: giải thuật tham lam, quy hoạch động…

Đề tài này dùng lập trình ràng buộc với giải thuật backtracking chuẩn để tìm

ra lời giải ban đầu, tuy nhiên trong giải thuật lập trình ràng buộc này ta chỉ xét một số ràng buộc cứng (ràng buộc bắt buộc phải thoả mãn) Ngoài ra, một số heuristic

được đưa vào nhằm cải thiện thời gian sinh ra lời giải ban đầu

Gọi i là một đỉnh bất kì của đồ thị thuộc lộ trình, SBi B là đỉnh kế vị trực tiếp của

i, βBiB, εBiB là điểm đầu và điểm cuối trong một phần lộ trình đi qua i, tBijB định nghĩa thời

gian đi từ thành phố i đến thành phố j Dựa vào mô tả của đề bài, ta có thể rút ra

một số ràng buộc cứng như sau:

Ta có thể giải thích một số ràng buộc như sau:UB

- Ràng buộc (1) và (4) đảm bảo rằng mỗi thành phố chỉ đi qua đúng một lần

- Ràng buộc (2) và (3) nhằm tránh việc tạo lộ trình con trong lộ trình cha

- Ràng buộc (5) giới hạn thời gian viếng thăm một đỉnh phải thuộc khung thời gian hạn định

- Ràng buộc (6) thể hiện ràng buộc về thời gian trên mỗi cạnh của lộ trình Ràng buộc này thể hiện tính khả thi của lộ trình

Sử dụng những ràng buộc trên, chúng ta có thể thu hẹp lại không gian tìm kiếm của các đỉnh trên đồ thị một cách đáng kể

Giải thuật chi tiết để tìm ra lời giải ban đầu:

Thủ tục Backtracking() nhằm tìm ra lời giải ban đầu bằng giải thuật quay lui

Giải thuật này có dùng một số heuristic nhằm mục đích tìm ra lời giải nhanh nhất có

thể được

Trang 38

Input:

- curNode: đỉnh xuất phát

Output:

- No Solution: nếu không tìm ra lời giải

- Found Solution: nếu tìm ra một lời giải khả thi Khi đó kết quả sẽ được lưu trữ trong danh sách route

procedure Backtracking(curNode)

begin

i = 0; route[i] = curNode;

domainCur = get neighbor of curNode;

while ((i ≥ 0) and (i < numVertex-1))

curNode = route[i]; domainCur = get neighbor of curNode;

end end

else

begin

i = i + 1; curNode = nextNode;

Mark[curNode] = true; route[i] = curNode;

domainCur = get neighbor of curNode;

Store route; Store arrivalTime [i];

return “Found Solution”;

end

Thủ tục SelectValue() nhằm chọn ra một nút từ tập các nút láng giềng của

Trang 39

phạm bất cứ ràng buộc nào ở trên Nếu không chọn được một nút nào thì giải thuật sẽ quay lui

Input:

- curNode: nút hiện tại đang xét

- DCur: tập các nút láng giềng của curNode

Output:

- -1: Không tìm được nút nào

- num: nút chọn được từ tập các nút làng giềng DCur

procedure SelectValue(curNode, DCur)

end end

end

return –1

end

Trong đó:

- Route: dùng để lưu trữ lộ trình hiện tại

- Mark: dùng để đánh dấu những đỉnh đã viếng thăm rồi, nhằm tránh lặp vòng

trong quá trình tìm kiếm

Trang 40

- arrivalTime[i]: chính là thời điểm thực sự đến đỉnh i Điều kiện arrivalTime[i]BB ≥ aBiB và arrivalTime[i] ≤ bBiB

Đây là một giải thuật không đệ quy sau khi khử đệ quy từ giải thuật quay lui (backtracking) dạng đệ quy Giải thuật sẽ dừng khi tìm ra một lời giải hợp lệ Và để tìm ra được một lời giải hợp lệ thì trong quá trình tìm kiếm, giải thuật đã dựa vào một số ràng buộc đã được mô tả ở trên Vì đây là một giải thuật sẽ sinh ra thời gian tính toán là hàm mũ, nên thời gian sinh ra được lời giải trong trường hợp xấu nhất là

rất lớn Chính vì lí do đó, một số heuristic được đưa vào, các heuristic có vai trò rất

lớn nhằm giảm thời gian sinh ra lời giải ban đầu

Các heuristic được đưa vào:

- Các đỉnh láng giềng phải có thời gian đến thuộc khung thời gian hạn định của đỉnh đó

- Các đỉnh láng giềng được sắp xếp tăng dần theo: giá trị trung bình của khung thời gian hạn định cộng với chi phí từ đỉnh đang xét đến các đỉnh láng giềng

Nghĩa là đỉnh nào cần tới thì sẽ được chọn ra xét trước

Giả sử ta đang xét đỉnh i Thời gian đến đỉnh i là TBiB Gọi j và k là hai đỉnh láng giềng của i, khi đó j, k thuộc miền trị của đỉnh i (j, k ∈ DBiB) Gọi cBijB, cBikB lần lượt là chi phí đi từ đỉnh i đến đỉnh j và k tương ứng [startTWBjB, stopTWBjB], [startTWBkB, stopTWBkB]

lần lượt là khung thời gian hạn định của đỉnh j và k tương ứng Khi đó, giải thuật sẽ chọn đỉnh kế cận của đỉnh i như sau:

Next(i) = j, nếu (startTWBjB + stopTWBjB)/2 + cBijB ≤ (startTWBkB + stopTWBkB)/2 + cBikB

Next(i) = k, nếu (startTWBjB + stopTWBjB)/2 + cBijB > (startTWBkB + stopTWBkB)/2 + cBikB

Chính các heuristic trên giúp cho giải thuật này có thể tìm ra được một lời giải

ban đầu trong một thời gian ngắn

4.2.2 Giải thuật tìm ra lời giải chất lượng cao

Trong phần này, chúng tôi sẽ mô tả một cách chi tiết giải thuật được sử dụng trong đề tài để sinh ra lời giải chất lượng cao Ý tưởng chính của giải thuật này

chính là sự kết hợp của tìm kiếm tabu và giải thuật nhánh và cận Trong đó tìm kiếm tabu là khung chính để giải quyết bài toán với mỗi bước chuyển cục bộ được tìm ra bằng kĩ thuật 2-opt đã nêu ở phần trên Trong mỗi bước lặp của tìm kiếm tabu thì chúng ta sử dụng giải thuật nhánh và cận để thu hẹp không gian tìm kiếm

Ngày đăng: 10/02/2021, 09:28

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