Sau đó, chúng tôi sẽ tiến hành triển khai các phương pháp nêu trên vào mô hình hóa và thiết kế giải thuật cho bài toán xếp lịch bảo vệ cao học Master thesis defense timetabling, với đề x
Trang 1KỸ THUẬT QUY HOẠCH RÀNG BUỘC, TÌM KIẾM CỤC
BỘ DỰA TRÊN RÀNG BUỘC VÀ PHÂN CỤM CÂN BẰNG TRONG VIỆC GIẢI CÁC BÀI TOÁN TỐI ƯU TỔ HỢP
LUẬN VĂN THẠC SĨ KHOA HỌC
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
Huỳnh Thành Trung
KỸ THUẬT QUY HOẠCH RÀNG BUỘC, TÌM KIẾM CỤC BỘ DỰA TRÊN RÀNG BUỘC VÀ PHÂN CỤM CÂN BẰNG TRONG VIỆC GIẢI
CÁC BÀI TOÁN TỐI ƯU TỔ HỢP
Chuyên ngành : Hệ thống thông tin
Trang 3CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn: Huỳnh Thành Trung
Đề tài luận văn: Kỹ thuật quy hoạch ràng buộc, tìm kiếm cục bộ dựa trên ràng buộc và phân cụm cân bằng trong việc giải các bài toán tối ưu tổ hợp
Chuyên ngành: Hệ thống thông tin
Mã số SV: CBC16001
Tác giả, Người hướng dẫn khoa học và Hội đồng chấm luận văn xác nhận tác giả đã sửa chữa, bổ sung luận văn theo biên bản họp Hội đồng ngày 24/03/2017 với các nội dung sau:
- Cấu trúc lại luận văn thành 4 chương (từ 7 chương trong bản luận văn ban
đầu) Cấu trúc của luận văn sau chỉnh sửa như sau:
Chương 1: Giới thiệu đề tài Giới thiệu đề tài thực hiện Chương 2: Cơ sở lý thuyết Nêu lên các cơ sở lý thuyết về bài toán tối
ưu hóa tổ hợp, bài toán xếp lịch bảo vệ cao học, các hướng tiếp cận giải bài toán tối ưu tổ hợp như tìm kiếm cục bộ, quy hoạch ràng buộc, tìm kiếm cục bộ dựa trên ràng buộc và các kỹ thuật bổ trợ như Loại
bỏ đối xứng, Phân rã bài toán, Phân cụm
Chương 3: Đề xuất thuật toán giải bài toán xếp lịch bảo vệ cao học
Trình bày thuật toán đề xuất với các phương pháp sử dụng để cải thiện
mô hình hóa bài toán và các phương pháp sử dụng để tìm kiếm lời giải cho bài toán, sau đó là thực nghiệm đánh giá so sánh kết quả của thuật toán đề xuất
Trang 4Chương 4: Kết luận và các hướng phát triển Tổng hợp các công việc
đã làm được và các hướng phát triển trong tương lai
- Đánh số các trang bắt đầu từ phần nội dung chính của luận văn (thay vì từ phần mục lục)
- Chỉnh sửa lại lỗi văn bản hình vẽ và tên hình vẽ bị nhảy (hình 20)
- Chỉnh sửa lại văn phong khoa học hơn (phần 2.3.2.1)
- Chỉnh sửa lại cách đánh số các định nghĩa cho không còn trùng lặp (phần 2.1.1 và 3.1.2.1)
- Chỉnh sửa lại phần tài liệu tham khảo cho thống nhất và chuẩn xác hơn
Ngày 29 tháng 03 năm 2017
CHỦ TỊCH HỘI ĐỒNG
Trang 5LỜI CẢM ƠN
Để hoàn thành luận văn tốt nghiệp này, lời đầu tiên tôi xin chân thành cảm ơn các thầy giáo, cô giáo của Viện Công nghệ thông tin và Truyền thông Trường Đại học Bách Khoa Hà Nội, những người đã dạy dỗ, trang bị những kíến thức bổ ích trong những năm học vừa qua
Tôi xin bày tỏ lòng biết ơn sâu sắc nhất tới thầy giáo Phạm Quang Dũng, người
đã tận tình hướng dẫn, chỉ bảo trong suốt thời gian học tập, thực tập và làm luận văn Tôi xin bày tỏ lòng biết ơn sâu sắc nhất tới giáo sư Katsumi Inoue cùng hai nghiên cứu sinh Maxime Clement và Emir Demirovic, những người đã tận tình giúp đỡ trong suốt thời gian thực tập nghiên cứu và làm luận văn tại National Institute of Infomatics, Tokyo
Nhân dịp này tôi xin gửi lời cảm ơn chân thành tới gia đình, bạn bè, những người thân đã cổ vũ, động viên tiếp thêm cho em nghị lực để tôi hoàn thành luận văn tốt nghiệp
Tôi xin chân thành cảm ơn!
Hà Nội, ngày 12 tháng 03 năm 2017 Học viên
Huỳnh Thành Trung
Trang 6Danh mục các bảng biểu sử dụng trong đồ án
Bảng 1: Một số API tiêu biểu của thư viện OpenCBLS 40 Bảng 2: Bảng so sánh hiệu năng mô hình nQueen sử dụng Symmetry Breaking
Trang 7Danh mục các hình vẽ sử dụng trong đồ án
Hình 1: Minh họa cho bài toán TSP với 4 thành phố 11
Hình 2: Ví dụ về chu trình con của bài toán TSP 12
Hình 3: Minh họa Local search với bài toán 4-queen 20
Hình 4: Minh họa lời giải cực trị địa phương trong LS 21
Hình 5: Minh họa Backtracking Search với bài toán 4-queen 30
Hình 6: Tổng quan kiến trúc Constraint-based Local Search [7] 32
Hình 7: Minh họa sự họat động của Dependency Graph 35
Hình 8: Minh họa Symmetry Breaking với bài toán N-queens 42
Hình 9: Sơ đồ khối thuật toán phân cụm K-means 47
Hình 10: Ví dụ minh họa bài toán ghép cặp cực đại 51
Hình 11: Ví dụ về ma trận biểu diễn hàm độ đo W 51
Hình 12: Sơ đồ khối của thuật toán K-means balanced clustering 56
Hình 13: Minh họa trường hợp không bảo toàn nghiệm khi phân rã kíp thời gian 59
Hình 14: Minh họa đối xứng giữa các cụm hội đồng – phòng 61
Hình 15: Minh họa đối xứng giữa chủ tịch – thư ký 63
Hình 16: Mô hình pha 1-1 của bài toán MTDT 67
Hình 17: Minh họa ghép cặp cực đại các hội đồng vào các cụm 69
Hình 18: Ví dụ minh họa trường hợp kết quả phân cụm không sử dụng được70 Hình 19: Ví dụ minh họa thuật toán hậu xử lý kết quả phân cụm 72
Hình 20: Mô hình pha 1-2 của bài toán 78
Hình 21: Minh họa phân hoạch láng giềng trong tìm kiếm cục bộ 85
Trang 8Danh mục các từ ngữ viết tắt và thuật ngữ
Chữ viết tắt Tên đầy đủ Ý nghĩa
Trang 9MỤC LỤC
MỤC LỤC
Chương 1: Giới thiệu đề tài 1
1.1 Giới thiệu chung 1
1.2 Ngữ cảnh và lý do thực hiện 1
1.2.1 Bài toán tối ưu tổ hợp: tính cần thiết và các khó khăn 1
1.2.2 Các phương pháp giải quyết 2
1.2.3 Bài toán xếp lịch bảo vệ cao học 4
1.2.4 Lý do thực hiện 4
1.3 Nội dung luận văn 5
Chương 2: Cơ sở lý thuyết 6
2.1 Bài toán tối ưu hóa tổ hợp 6
2.1.1 Một số khái niệm 6
2.1.2 Phương pháp tổng trọng số trong bài toán tối ưu hóa tổ hợp đa mục tiêu 9
2.1.3 Ví dụ - Bài toán người du lịch (TSP) 10
2.2 Bài toán xếp lịch bảo vệ cao học (MTDT) 13
2.2.1 Mô tả bài toán 13
2.2.2 Mô hình toán học của bài toán 14
2.2.3 Ví dụ minh họa 16
2.3 Các hướng tiếp cận giải bài toán tối ưu tổ hợp 19
2.3.1 Tìm kiếm cục bộ 19
2.3.2 Quy hoạch ràng buộc 25
Trang 102.3.3 Tìm kiếm cục bộ dựa trên ràng buộc 31
2.3.4 Các kỹ thuật bổ trợ 40
Chương 3: Đề xuất thuật toán giải bài toán xếp lịch bảo vệ cao học 57
3.1 Các phương pháp sử dụng cải thiện mô hình bài toán 57
3.1.1 Kỹ thuật phân rã thu gọn bài toán 57
3.1.2 Kỹ thuật loại bỏ đối xứng 60
3.1.3 Đánh giá hiệu quả 64
3.2 Các phương pháp sử dụng để tìm kiếm lời giải cho bài toán 65
3.2.1 Heuristic phân cụm cân bằng 65
3.2.2 Tìm kiếm cục bộ sử dụng lời giải từng phần 76
Chương 4: Thực nghiệm đánh giá kết quả 89
4.1 Thực nghiệm 89
4.2 Đánh giá kết quả 90
Chương 5: Kết luận và các hướng phát triển 92
5.1 Kết luận 92
5.2 Các hướng phát triển 93
CÔNG TRÌNH NGHIÊN CỨU CỦA TÁC GIẢ 94
TÀI LIỆU THAM KHẢO 95
Trang 11Chương 1: Giới thiệu đề tài
1.1 Giới thiệu chung
Tên đề tài luận văn: Quy hoạch ràng buộc, tìm kiếm cục bộ dựa trên ràng buộc
và phân cụm cân bằng trong việc giải các bài toán tối ưu tổ hợp
Sơ lược: Trong luận văn này, chúng tôi sẽ tìm hiểu chi tiết nền tảng kiến thức
về quy hoạch ràng buộc (constraint programming), tìm kiếm cục bộ dựa trên ràng buộc (constraint-based local search) trong việc giải các bài toán tối ưu tổ hợp Sau
đó, chúng tôi sẽ tiến hành triển khai các phương pháp nêu trên vào mô hình hóa và thiết kế giải thuật cho bài toán xếp lịch bảo vệ cao học (Master thesis defense timetabling), với đề xuất nổi bật là sử dụng phân cụm cân bằng (K-means balance clustering) để phân rã bài toán thành các bài toán con để song song tìm các lời giải tối ưu từng phần, giúp giảm thiểu đáng kể thời gian tính toán trong khi vẫn đảm bảo được những phương án lịch đưa ra đạt chất lượng cao cho người quyết định (giáo vụ)
1.2 Ngữ cảnh và lý do thực hiện
1.2.1 Bài toán tối ưu tổ hợp: tính cần thiết và các khó khăn
Bài toán tối ưu tổ hợp là lớp bài toán trong đó chúng ta phải đưa ra lời giải quyết định thỏa mãn một số những ràng buộc và đồng thời tối ưu hóa một hoặc nhiều những mục tiêu có tính mâu thuẫn với nhau (ví dụ: trong bài toán lên kế hoạch sản xuất, chất lượng sản phẩm, tốc độ sản xuất, hiệu quả sản xuất và chi phí sản xuất là những mục tiêu có tính mâu thuẫn với nhau)
Trên thực tế hiện nay, các bài toán tối ưu hóa tổ hợp xuất hiện rất phổ biến trên mọi khía cạnh của cuộc sống, từ sản xuất, năng lượng, vận chuyển hậu cần, giao thông, tổ chức hành chính, y tế, etc … Việc giải quyết tốt các bài toán như vậy là rất quan trọng, bởi chất lượng của các phương án đưa ra liên quan trực tiếp đến chất
Trang 12lượng của cuộc sống chúng ta: công việc sản xuất được tối ưu hơn giúp đưa ra các sản phẩm có chất lượng tốt mà giá thành hợp lý; năng lượng được sử dụng tối ưu nên tiết kiệm hơn mà vẫn đảm bảo được hiệu năng; việc xếp lịch được tối ưu giúp cho mọi người làm việc hiệu quả hơn và tránh được những rắc rối không mong muốn (trùng thời gian, không cân đối, v.v…) Có rất, rất nhiều những ví dụ tương tự như vậy, qua đó thể hiện mức độ phổ biến và nhu cầu giải quyết của các bài toán tối ưu hóa tổ hợp trong cuộc sống là rất lớn
Tuy rất phổ biến và cần thiết như vậy, việc giải các bài toán tối ưu hóa tổ hợp nhìn chung gặp nhiều khó khăn Các bài toán này thuộc lớp NP-đầy đủ, trong đó chúng ta có thể kiểm chứng nhanh chóng bất kỳ một lời giải nào có phải là lời giải thỏa mãn cho bài toán hay không (trong thời gian đa thức), nhưng hiện chưa có cách nào tìm ra lời giải thỏa mãn một cách hiệu quả (độ phức tạp thuật toán vẫn là độ phức tạp lũy thừa) [2, 6] Nói cách khác, thời gian thực thi của tất cả các thuật toán hiện tại cho những bài toán này đều tăng rất nhanh theo kích thước bài toán
1.2.2 Các phương pháp giải quyết
Mặc dù các bài toán tối ưu hóa tổ hợp rất khó để giải quyết, các nhà nghiên cứu về tối ưu hóa trong những năm qua vẫn cố gắng nghiên cứu tìm ra các phương pháp để giải các bài toán này một cách tốt nhất có thể được Có thể chia các phương pháp thành hai dạng chính:
- Các phương pháp giải đúng: tiêu biểu có thể kể đến
o Constraint programming (Quy hoạch ràng buộc): là khuôn mẫu lập trình trong đó mối quan hệ của các biến quyết định được biểu diễn bằng các ràng buộc Người dùng có thể sử dụng các ràng buộc và các biến quyết định để mô hình hóa bài toán cần giải, sau đó sử dụng các phương pháp cắt tỉa không gian tìm kiếm dựa vào sự lan truyền của các ràng
Trang 13được lời giải tốt nhất nhờ vào việc tìm kiếm quay lui, không gian lời giải được vét cạn Ưu điểm của quy hoạch ràng buộc là người dùng có thể sử dụng các ràng buộc được định nghĩa trước hoặc tự mình định nghĩa để mô hình hóa bài toán, các ràng buộc này khá tự nhiên với cách hiểu của con người và linh hoạt cho việc mô hình hóa
o Integer Linear Programming (Quy hoạch nguyên): là khuôn mẫu lập trình trong đó sử dụng các biến nguyên và sử dụng các quan hệ tuyến tính để biểu diễn mô hình bài toán cần giải, sau đó sử dụng các phương pháp như cắt tỉa, đơn hình, v.v… để tìm ra lời giải của bài toán
o Logic Programming (Quy hoạch logic): là khuôn mẫu lập trình trong
đó sử dụng các vị từ (có thể hiểu là các biến boolean, nhận giá trị true hoặc false) để mô hình hóa bài toán thông qua các mệnh đề, sau đó sử dụng các giải thuật để tìm kiếm lời giải của bài toán, phổ biến nhất là tìm kiếm quay lui (backtracking search)
- Các phương pháp xấp xỉ: sử dụng các metaheuristic, có thể chia thành 2 loại
o Local search (Tìm kiếm cục bộ): là thuật toán xấp xỉ trong đó đòi hỏi chúng ta phải mô hình hóa được không gian lời giải của bài toán và mối quan hệ láng giềng giữa các lời giải Trong quá trình tìm kiếm, giải thuật sẽ di chuyển lần lượt qua các lời giải lân cận với lời giải hiện tại tại mỗi bước với mong muốn tìm được lời giải tối ưu Ưu điểm của tìm kiếm cục bộ là có thể làm việc trong thời gian tùy ý, do đó có ích khi giải quyết các bài toán tối ưu tổ hợp cần đưa ra một lời giải tốt trong thời gian bị hạn chế Tuy nhiên nhược điểm của tìm kiếm cục bộ là lời giải tìm được có thể là không tối ưu nhất mà bị kẹt ở một tối ưu cục bộ Các metaheuristic là local search tiêu biểu có thể kể đến là hill-climbing, tabu search, simulated annealing, v.v…
Trang 14o Global search (Tìm kiếm toàn cục): trái với local search – thực hiện việc tìm kiếm lời giải tối ưu thông qua thông tin cục bộ của một lời giải với các lời giải láng giềng của nó, tìm kiếm toàn cục thường dựa vào thông tin của một quần thể các lời giải để tìm kiếm lời giải tối ưu Các metaheuristic là global search tiêu biểu có thể kể đến là genetic algorithm, ant colony optimization, evolutionary computation, v.v…
1.2.3 Bài toán xếp lịch bảo vệ cao học
Bài toán xếp lịch cao học là một bài toán tối ưu hóa tổ hợp xuất hiện ở các trường đại học của Việt Nam hiện nay Tại trường Bách Khoa Hà Nội nói riêng và các trường đại học nói chung, nghiệp vụ quản lý xếp lịch bảo vệ của trường vẫn được thực hiện một cách thủ công, bằng công sức và kinh nghiệm của con người Phương pháp này có nhiều nhược điểm, bởi nghiệp vụ xếp lịch bảo vệ cao học là một nghiệp
vụ phức tạp bởi nhiều các ràng buộc (các giáo viên của một hội đồng không trùng nhau, các giáo viên không trùng kíp, các hội đồng không trùng kíp phòng, yêu cầu giảng viên trong/ngoài trường cho các vị trí thành viên trong hội đồng, v.v…) mà người xếp lịch thủ công rất khó khăn trong việc theo dõi và kiểm soát Hơn nữa, kể
cả khi những ràng buộc chặt này được thỏa mãn, thì lịch bảo vệ được xếp bởi con người khó lòng đạt được sự tối ưu với tổ hợp các mục tiêu phức tạp như: mức độ phù hợp của các phản biện với đề tài, một giáo viên không ngồi quá nhiều hội đồng, v.v…
Do đó việc giải quyết bài toán xếp lịch cao học tự động bằng thuật toán là nhu cầu cần thiết
1.2.4 Lý do thực hiện
Xuất phát từ nhu cầu thực tiễn của các bài toán tối ưu hóa tổ hợp nói chung (phần 1.2.1) và bài toán xếp lịch bảo vệ cao học nói riêng (phần 1.2.3), chúng tôi:
Trang 15- Tìm hiểu việc sử dụng quy hoạch ràng buộc và tìm kiếm cục bộ trong việc giải quyết các bài toán tối ưu hóa tổ hợp với mong muốn có nền tảng kiến thức vững chắc trong việc giải quyết các bài toán này
- Đề xuất một thuật toán hiệu quả giải quyết bài toán xếp lịch bảo vệ cao học,
sử dụng quy hoạch ràng buộc, tìm kiếm cục bộ dựa trên ràng buộc Ngoài ra, thuật toán đề xuất còn sử dụng phân cụm cân bằng để phân rã bài toán thành các bài toán con và xử lý song song Với thuật toán đề xuất, chúng tôi mong muốn đây sẽ là một giải pháp được áp dụng vào thực tế để giảm thiểu công sức của các giáo vụ và tăng chất lượng tối ưu của các lịch được xếp
1.3 Nội dung luận văn
Luận văn gồm có 5 chương chính:
Chương 1: Giới thiệu đề tài Giới thiệu đề tài thực hiện
Chương 2: Cơ sở lý thuyết Nêu lên các cơ sở lý thuyết về bài toán tối ưu hóa tổ hợp,
bài toán xếp lịch bảo vệ cao học, các hướng tiếp cận giải bài toán tối ưu tổ hợp như tìm kiếm cục bộ, quy hoạch ràng buộc, tìm kiếm cục bộ dựa trên ràng buộc và các kỹ thuật bổ trợ như Loại bỏ đối xứng, Phân rã bài toán, Phân cụm
Chương 3: Đề xuất thuật toán giải bài toán xếp lịch bảo vệ cao học Trình bày thuật
toán đề xuất với các phương pháp sử dụng để cải thiện mô hình hóa bài toán và các phương pháp sử dụng để tìm kiếm lời giải cho bài toán, sau đó là thực nghiệm đánh giá so sánh kết quả của thuật toán đề xuất
Chương 4: Kết luận và các hướng phát triển Tổng hợp các công việc đã làm được
và các hướng phát triển trong tương lai
Trang 16Chương 2: Cơ sở lý thuyết
2.1 Bài toán tối ưu hóa tổ hợp
2.1.1 Một số khái niệm
Như phần 1.2.1 đã giới thiệu, bài toán tối ưu hóa tổ hợp là lớp bài toán trong
đó chúng ta phải đưa ra lời giải/ quyết định thỏa mãn một số những ràng buộc/ giới hạn và đồng thời tối ưu hóa một hoặc nhiều những mục tiêu có tính mâu thuẫn với nhau Đây là những bài toán xuất hiện và có vai trò quan trọng trên mọi lĩnh vực của cuộc sống, từ năng lượng, giao thông vận tải, tổ chức hành chính, sản xuất, v.v… Sau đây là định nghĩa cụ thể hơn cho các khái niệm liên quan và cho bài toán tối ưu hóa
tổ hợp
Định nghĩa 2.1: Biến quyết định của bài toán (Decision variable)
Biến quyết định của bài toán tối ưu hóa tổ hợp là một biến nằm trong mô hình
của bài toán mà người ra quyết định có thể kiểm soát được giá trị của biến đó và cần xác định giá trị cho biến đó
Biến quyết định có thể coi như những tế bào xây dựng nên bài toán tối ưu hóa tổ hợp Đó không phải là những biến ngẫu nhiên, người ra quyết định hoàn toàn có thể kiểm soát và quyết định được giá trị của nó Ví dụ: số lượng những chiếc xe sẽ được sản xuất, giá thành của một chiếc xe, v.v… Biến quyết định của bài toán thường
được ký hiệu là x, và tập hợp các biến quyết định của bài toán là X
Định nghĩa 2.2: Miền xác định của biến quyết định (Domain)
Miền giá trị của biến quyết định là tập hợp các giá trị có thể gán tới các biến đó
Miền quyết định của biến có thể là một tập hữu hạn hoặc vô hạn các giá trị, miền
đó có thể là liên tục và rời rạc Trong khuôn khổ của luận văn, chúng tôi chỉ xét các bài toán tối ưu hóa tổ hợp rời rạc, trong đó miền của tất cả các biến quyết định cấu
Trang 17thành nên bài toán là hữu hạn và rời rạc Miền xác định của biến quyết định x thường
được ký hiệu là 𝐷𝑥
Định nghĩa 2.3: Ràng buộc (Constraint)
Một ràng buộc của bài toán tối ưu hóa tổ hợp là một điều kiện mà một tập các
biến quyết định của bài toán cần thỏa mãn
Ví dụ: 𝑥1+ 𝑥2 < 3, 𝑥3 ≥ 𝑥4, 𝑣 𝑣 …
Một ràng buộc được định nghĩa trên các biến quyết định của bài toán Trong thực tế, ràng buộc là điều chúng ta rất thường gặp, ví dụ: ngân sách chi tiêu không vượt quá một con số nhất định, giá bán của chiếc xe không được thấp hơn tổng chi
phí sản xuất ra nó, v.v… Ràng buộc của bài toán thường được ký hiệu là c, tập các ràng buộc của bài toán thường được ký hiệu là C
Định nghĩa 2.4: Hàm mục tiêu của bài toán (Objective function)
Hàm mục tiêu của bài toán tối ưu hóa tổ hợp là một hàm được định nghĩa trên
một tập các biến quyết định và cần được tối ưu hóa (cực đại hóa hoặc cực tiểu hóa)
Ví dụ: 𝑓 = 𝑥1× 𝑥2 với:
- 𝑥1 là biến quyết định thể hiện giá thành sản phẩm
- 𝑥2 là biến quyết định thể hiện số lượng của sản phẩm bán ra
- f là hàm mục tiêu thể hiện doanh thu từ việc bán sản phẩm, cần được cực đại hóa
Hàm mục tiêu cũng là khái niệm chúng ta rất thường gặp trong cuộc sống, như cực đại hóa doanh thu, cực tiểu hóa chi phí, v.v… Hàm mục tiêu thường được ký hiệu
là f, tập hợp các hàm mục tiêu của bài toán ký hiệu là F
Định nghĩa 2.5: Lời giải của bài toán (Solution)
Một lời giải của bài toán tối ưu hóa tổ hợp là một bộ giá trị xác định gán cho
tập các biến quyết định của bài toán: s = {<𝑥𝑖, 𝑣𝑖>, 𝑥𝑖 ∊ X, 𝑣𝑖 ∊ 𝐷𝑥𝑖}
Trang 18Việc giải bài toán tối ưu tổ hợp thực chất là đi tìm lời giải tối ưu cho bài toán,
do đó các thuật toán tìm kiếm như Tìm kiếm cục bộ có thể áp dụng được vào cho việc
giải các bài toán dạng này Lời giải của bài toán thường được ký hiệu là s
Định nghĩa 2.6: Lời giải chấp nhận được của bài toán (Feasible Solution)
Một lời giải chấp nhận được của bài toán tối ưu hóa tổ hợp là một lời giải thỏa mãn mọi ràng buộc c trong tập ràng buộc C của bài toán
Định nghĩa 2.7: Không gian lời giải của bài toán (Solution space)
Không gian lời giải của bài toán tối ưu hóa tổ hợp là tập tất cả các lời giải có thể của bài toán
Vì chúng ta đang chỉ xét các bài toán tối ưu hóa tổ hợp rời rạc, với miền giá trị của các biến là rời rạc và hữu hạn, do đó không gian lời giải của bài toán là hữu hạn Tuy vậy, không gian lời giải của bài toán tối ưu hóa tổ hợp thường có kích thước vô cùng lớn, tăng với tốc độ hàm mũ theo kích thước của tập các biến quyết định, do đó việc xét hết toàn bộ lời giải trong không gian là không thể, đòi hỏi phải có những chiến lược tìm kiếm phù hợp Không gian lời giải của bài toán thường được ký hiệu
là S
Định nghĩa 2.8: Bài toán tối ưu hóa tổ hợp
Một bài toán tối ưu hóa tổ hợp là một bộ ba (X, C, F), với:
- X: tập hợp các biến quyết định của bài toán
- C: tập hợp các ràng buộc của bài toán
- F: tập hợp các hàm mục tiêu của bài toán
Nhiệm vụ của việc giải bài toán tối ưu hóa tổ hợp là tìm ra lời giải s, thỏa mãn mọi ràng buộc c ∊ C và tối ưu hóa đồng thời các hàm mục tiêu 𝑓 ∊ F
Trong bài toán tối ưu hóa tổ hợp đa mục tiêu, việc một lời giải tối ưu hóa tuyệt đối toàn bộ các hàm mục tiêu là rất hiếm khi xảy ra, do đó các khái niệm trội Pareto (Pareto dominance) và biên Pareto (Pareto front) được định nghĩa
Trang 19Định nghĩa 2.9: Trội Pareto (Pareto dominance)
Xét 2 vector 𝐹1 = [𝑓11, 𝑓21,…𝑓𝑛1] và 𝐹2 = [𝑓12, 𝑓22, … 𝑓𝑛2] là 2 vector n chiều, khi đó ta nói vector 𝐹1 trội Pareto hơn 𝐹2 nếu 𝑓𝑖1 ≥ 𝑓𝑖2 với mọi i và tồn tại ít nhất 1
số k sao cho 𝑓𝑘1 > 𝑓𝑘2 , ký hiệu là 𝐹1 ≻ 𝐹2
Ví dụ: 𝐹1 = [3, 4], 𝐹2 = [3, 3] , ta có 𝐹1 ≻ 𝐹2
Trong bài toán tổng quát, có thể coi bài toán tối ưu hóa đa mục tiêu cần cực tiểu
hóa tất cả các hàm mục tiêu Khi đó, nếu ta có 2 lời giải 𝑠1 và 𝑠2 đều là lời giải chấp nhận được các ràng buộc và ứng với 2 vector giá trị các hàm mục tiêu 𝐹1 và 𝐹2, nếu
ta có 𝐹1 ≻ 𝐹2 thì chắc chắn lời giải 𝑠2 sẽ tốt hơn lời giải 𝑠1
Định nghĩa 2.10: Biên Pareto (Pareto frontier)
Biên Pareto của bài toán tối ưu hóa tổ hợp là tập hợp P các lời giải chấp nhận
được s thuộc không gian các lời giải S sao cho với bất kỳ lời giải s nào thuộc P, không tồn tại bất kỳ lời giải chấp nhận được s’ nào khác thuộc S mà có vector hàm mục tiêu của s trội Pareto so với vector hàm mục tiêu của s’
Trong các bài toán tối ưu hóa tổ hợp đa mục tiêu, một hướng tiếp cận là xác định được biên Pareto và chọn ra những lời giải trong đó để đưa cho người ra quyết định (decision maker)
Ngoài ra, chuyển bài toán đa mục tiêu thành bài toán tối ưu hóa đơn mục tiêu với phương pháp tổng trọng số chấp nhận cũng là một hướng tiếp cận được sử dụng phổ biến
2.1.2 Phương pháp tổng trọng số trong bài toán tối ưu hóa tổ hợp đa mục tiêu
Phương pháp tổng trọng số (weighted-sum) là một trong nhưng phương pháp đơn giản nhưng hiệu quả để giải các bài toán tối ưu hóa tổ hợp đa mục tiêu Ý tưởng của phương pháp là sử dụng một vector các trọng số để chuyển hóa bài toán tối ưu hóa
đa mục tiêu trở thành một bài toán tối ưu hóa tổ hợp đơn mục tiêu Cụ thể, dựa trên
Trang 20đánh giá mức độ quan trọng của các hàm mục tiêu, người dùng có thể đưa ra một véc
tơ trọng số như sau:
𝑊 = [𝑤1, 𝑤2, … , 𝑤𝑛 ] với n là số các hàm mục tiêu của bài toán Khi đó, chúng ta có thể định nghĩa được hàm tổng trọng số các hàm mục tiêu sau:
𝑓𝑤𝑒𝑖𝑔ℎ𝑡𝑒𝑑−𝑠𝑢𝑚 = ∑ 𝑓𝑖× 𝑤𝑖
𝑓𝑖∈𝐹
và sau đó, bài toán tối ưu hóa đa mục tiêu được chuyển hóa thành bài toán tối ưu hóa đơn mục tiêu hàm mục tiêu này Ưu điểm của phương pháp này là đơn giản nhưng hiệu quả, tuy nhiên nhược điểm là người dùng cần ước lượng và xác định bộ trọng
số
2.1.3 Ví dụ - Bài toán người du lịch (TSP)
Để minh họa cho bài toán tối ưu hóa tổ hợp, chúng tôi chọn bài toán “Người du lịch” (Traveling salesman problem – viết tắt TSP), bởi đây là bài toán rất nổi tiếng,
có nguồn gốc từ lâu đời (năm 1930), có ứng dụng rộng rãi trong nhiều lĩnh vực như lên kế hoạch, hậu cần, sản xuất microchip, v,v… [2]
Bài toán TSP có thể được phát biểu như sau: Một nguời du lịch muốn tham quan
n thành phố 𝑇1, , 𝑇𝑛 Xuất phát từ một thành phố nào đó, người du lịch muốn đến tất
cả các thành phố còn lại, mỗi thành phố đi qua đúng 1 lần rồi quay trở lại thành phố xuất phát Gọi 𝑑𝑖𝑗 là chi phí đi từ thành phố 𝑇𝑖 đến thành phố 𝑇𝑗 Hãy tìm một hành trình thỏa yêu cầu bài toán sao cho chi phí là nhỏ nhất
Dưới dạng đồ thị, bài toán có thể được mô hình hóa như một đồ thị vô hướng
có trọng số, trong đó mỗi thành phố là một đỉnh của đồ thị, khoảng cách giữa 2 thành
Trang 21toán là tìm một chu trình đi lần lượt qua các đỉnh của đồ thị, cuối cùng quay về điểm xuất phát, sao cho tổng độ dài của chu trình là nhỏ nhất
Hình 1: Minh họa cho bài toán TSP với 4 thành phố
Mô hình hóa bài toán: có nhiều cách để mô hình hóa bài toán, sau đây chúng tôi giới thiệu 2 mô hình khác nhau của bài toán
Biến quyết định (Decision variables):
- x[1 n]: mảng n biến quyết định, x[i] = j thể hiện rằng trên chu trình, du khách
sẽ đi đến thành phố j sau khi ở thành phố i Miền xác định: 𝐷𝑥[𝑖] = {1 𝑛}, ∀𝑖 ∈{1 𝑛}
Ràng buộc (Constraints):
- circuit(x): constraint định nghĩa trên mảng biến quyết định x, ràng buộc rằng mảng x sẽ hình thành 1 chu trình với x[i] = j thể hiện rằng j là điểm đến tiếp theo từ i
Trang 22Hàm mục tiêu (Objective functions):
- minimize ∑ 𝑑[𝑖][𝑥[𝑖]]: Cực tiểu hóa đường đi của chu trình
Biến quyết định (Decision variables):
- x[1 n][1 n]: mảng 𝑛2 biến quyết định, x[i][j] = 1 thể hiện rằng đường đi từ thành phố i đến thành phố j nằm trong chu trình và ngược lại, x[i][j] = 0 thể hiện đường đi từ thành phố i đến thành phố j không nằm trong chu trình Miền
xác định: 𝐷𝑥[𝑖][𝑗] = {0,1}, ∀𝑖, 𝑗 ∈ {1 𝑛}
Ràng buộc (Constraints):
- ∑𝑛𝑗=1𝑥[𝑖][𝑗]= 2, ∀𝑖 ∈ {1 𝑛}: ràng buộc thể hiện rằng với mọi thành phố (đỉnh) có đúng duy nhất 2 đường đi (cạnh) với một đầu là thành phố đó, đảm bảo mỗi thành phố có một đường vào và một đường ra
- ∑𝑖,𝑗 ∈{1 𝑛},𝑖≠𝑗𝑥[𝑖][𝑗] ≤ |𝑆| − 1, ∀ 𝑆 ∁ 𝑉, 𝑆 ≠ ∅: ràng buộc ngăn cản không có một chu trình nào được hình thành Nếu không có ràng buộc này, n thành phố
có thể bị chia ra thành nhiều chu trình con
Trang 23Hàm mục tiêu (Objective functions):
- minimize ∑ 𝑑[𝑖][𝑗] × 𝑥[𝑖][𝑗]: Cực tiểu hóa đường đi của chu trình
2.2 Bài toán xếp lịch bảo vệ cao học (MTDT)
Như đã giới thiệu ở phần 1.2.3, bài toán xếp lịch bảo vệ cao học (Master Thesis Defense Timetabling – MTDT) là một bài toán tối ưu hóa tổ hợp xuất hiện ở các trường đại học của Việt Nam hiện nay Đây là một nghiệp vụ phức tạp với các ràng buộc và mục tiêu mà người xếp lịch rất khó khăn trong việc theo dõi và kiểm soát, do
đó nhu cầu giải bài toán xếp lịch tự động là cần thiết
2.2.1 Mô tả bài toán
Bài toán xếp lịch bảo vệ cao học được phát biểu như sau:
Có n học viên, mỗi học viên có một đề tài bảo vệ do một giảng viên hướng dẫn,
đề tài đó thuộc 1 hướng nghiên cứu Mỗi giảng viên có một só các hướng nghiên cứu chuyên sâu được thể hiện bởi 1 danh sách các từ khóa chuyên ngành Ở mỗi đợt bảo
vệ, các giảng viên trong trường và ngoài trường tham gia vào đợt bảo vệ, thời gian các kíp và phòng được chọn trước Bài toán đặt ra là xếp các giảng viên vào các hội đồng bảo vệ của các học viên và phân kíp phòng cho các hội đồng Mỗi một hội đồng gồm năm giảng viên: chủ tịch hội đồng, phản biện 1, phản biện 2, thư ký và ủy viên , mỗi 1 hội đồng diễn ra tại 1 phòng vào 1 kíp thời gian Các giảng viên, kíp, phòng được phân phải thỏa mãn các ràng buộc sau:
- Năm giảng viên phân vào hội đồng phải khác nhau và khác giáo viên hướng dẫn của học viên
- Chủ tịch hội đồng, phản biện 1, thư ký là các giảng viên trong trường, phản biện 2 và ủy viên là các thành viên ngoài trường
- Các giảng viên chỉ được tham gia tối đa 1 hội đồng trong 1 kíp thời gian
- Trong 1 kíp thời gian ở 1 phòng, có tối đa 1 hội đồng
- Một giảng viên không thể ngồi phản biện ở quá nhiều hội đồng
Trang 24Ngoài ra việc xếp lịch còn hướng đến việc tối ưu hóa mục tiêu:
- Sự cân bằng trong việc ngồi hội đồng của các giáo viên
- Mức độ phù hợp cho phản biện 1 và phản biện 2 với hướng đề tài của học viên trong các hội đồng là lớn nhất
2.2.2 Mô hình toán học của bài toán
Từ bài toán đã phát biểu ở trên, ta có thể lên mô hình toán học cho bài toán như sau:
- Dữ liệu đầu vào (Inputs):
+ S = {0,1, , 𝑛 − 1}: Tập n đề tài bảo vệ trong hội đồng, sup(i) là giảng viên hướng dẫn của để tài thứ i
+ IP = {0,1, , 𝑝 − 1}: Tập p giảng viên trong trường
+ EP = {𝑝, 𝑝 + 1, , 𝑝 + 𝑞 − 1}: Tập q giảng viên ngoài trường
+ P = IP ∪ EP: Tập p+q giảng viên tham gia vào đợt bảo vệ
+ l(p): Học hảm học vị của giảng viên p, 𝑝 ∈ 𝑃 (0 cho GS.TS, 1 cho PGS, )
+ T = {0,1, … 𝑡 − 1}: Tập t kíp thời gian dùng cho đợt bảo vệ
- Các biến (Variables):
Trang 25+ xp(𝑠, 𝑖) : giảng viên được phân vào vị trí thứ i của hội đồng có đề tài 𝑠 ∈ 𝑆, với:
o 𝑥𝑝(𝑠, 1): giảng viên ngoài trường được phân làm phản biện 1 của hội đồng, 𝑥𝑝(𝑠, 1) ∈ 𝐸𝑃
o 𝑥𝑝(𝑠, 2): giảng viên trong trường được phân làm phản biện 2 của hội đồng, 𝑥𝑝(𝑠, 2) ∈ 𝐼𝑃
o 𝑥𝑝(𝑠, 3): giảng viên trong trường được phân làm chủ tịch của hội đồng, 𝑥𝑝(𝑠, 3) ∈ 𝐼𝑃
o 𝑥𝑝(𝑠, 4): giảng viên trong trường được phân làm thư ký của hội đồng, 𝑥𝑝(𝑠, 4) ∈ 𝐼𝑃
o 𝑥𝑝(𝑠, 5): giảng viên ngoài trường được phân làm ủy viên của hội đồng, 𝑥𝑝(𝑠, 5) ∈ 𝐸𝑃
+ 𝑥𝑡(𝑠): kíp thời gian được phân cho hội đồng có đề tài 𝑠 ∈ 𝑆 , 𝑥𝑡(𝑠) ∈ 𝑇 + 𝑥𝑟(𝑠): phòng được phân cho hội đồng có đề tài 𝑠 ∈ 𝑆 , 𝑥𝑟(𝑠) ∈ 𝑅
- Các đại lượng phụ thuộc biến (Invariants):
+ 𝑜(𝑝) = #{𝑥𝑝(𝑠, 𝑖) | (𝑖 ∈{1, … , 5}) ˄ (𝑠 ∈ 𝑆) ˄ (𝑥𝑝(𝑠, 𝑖) = 𝑝)}, ∀ 𝑝 ∈ 𝑃 : số hội đồng mà giảng viên p tham dự
+ 𝑒(𝑝) = #{𝑥𝑝(𝑠, 𝑖) | (𝑖 ∈ {1,2}) ˄ (𝑠 ∈ 𝑆) ˄ (𝑥𝑝(𝑠, 𝑖)= 𝑝)}, ∀ 𝑝 ∈ 𝑃 : số hội đồng mà giảng viên p làm phản biện
+ 𝑚𝑖𝑛𝑂 = 𝑚𝑖𝑛𝑝 ∈𝑃{𝑜(𝑝)} : số hội đồng của giảng viên ngồi hội đồng ít nhất tham dự
+ 𝑚𝑎𝑥𝑂 = 𝑚𝑎𝑥𝑝 ∈𝑃{𝑜(𝑝)} : số hội đồng của giảng viên ngồi hội đồng nhiều nhất tham dự
- Các ràng buộc (Constraints):
+𝑥𝑝(𝑠, 𝑖) ≠ 𝑠𝑢𝑝(𝑠), ∀ 1 ≤ 𝑖 ≤ 5 , 𝑠 ∈ 𝑆 : thành viên của một (0)
Trang 26hội đồng phải khác giáo viên hướng dẫn của hội đồng đó
+𝑥𝑝(𝑠, 𝑖) ≠ 𝑥𝑝(𝑠, 𝑗), ∀ 1 ≤ 𝑖 ≤ 𝑗 ≤ 5 , 𝑠 ∈ 𝑆 : hai thành viên của một (1) hội đồng phải đôi một khác nhau
+(𝑥𝑝(𝑠1, 𝑖) = 𝑥𝑝(𝑠2, 𝑗) => (𝑥𝑡(𝑠1) ≠ 𝑥𝑡(𝑠2)), ∀ 𝑖, 𝑗 ∈ {1, … , 5}), ∀ 𝑠1 (2)
≠ 𝑠2 ∈ 𝑆 : không tồn tại một giảng viên ngồi hai hội đồng được phân vào
cùng một kíp thời gian
+(𝑥𝑟(𝑠1) = 𝑥𝑟(𝑠2)) => (𝑥𝑡(𝑠1) ≠ 𝑥𝑡(𝑠2)), ∀ 𝑠1 ≠ 𝑠2 ∈ 𝑆 : không (3) tồn tại hai hội đồng được phân cùng phòng tại một kíp thời gian
+e(𝑝) < 𝜆, ∀ 𝑝 ∈ 𝑃 : các giảng viên không thể tham gia phản biện (4) quá nhiều hội đồng
Để minh họa cho bài toán xếp lịch bảo vệ cao học, chúng tôi xin lấy ví dụ từ
bộ dữ liệu jury6 của đợt bảo vệ cao học tháng 4/2015 của khoa CNPM, ĐHBKHN
Trang 27- Ban đầu, lịch chưa được xếp, các thông tin đầu vào của bài toán được cho
trước (học viên, đề tài, từ khóa hướng nghiên cứu của đề tài, các giảng viên được phân công tham gia đợt bảo vệ, v.v… )
- Trước khi được đưa vào module thuật toán, các thông tin (giảng viên, phòng,
kíp, đề tài) sẽ được tiền xử lý bằng các cách đánh chỉ số (indexing); ánh xạ giữa thông tin và chỉ số sẽ được lưu giữ để phục hồi sau khi thu được kết quả
- Sau đó module thuật toán sẽ giải bài toán và đưa ra kết quả tối ưu hóa hai hàm mục tiêu và thỏa mãn các ràng buộc Như trong ví dụ cụ thể này, thuật toán trả về lịch tối ưu được xếp thỏa mãn các ràng buộc, giá trị của 2 hàm mục tiêu
Trang 28là obj1 = 0 (đảm bảo cân bằng tuyệt đối giữa các thành viên trong hội đồng)
và obj2 = 17
- Cuối cùng, sử dụng từ điển lưu giữ để khôi phục các thông tin từ dạng các chỉ
sổ trong lịch kết quả
Trang 292.3 Các hướng tiếp cận giải bài toán tối ưu tổ hợp
2.3.1 Tìm kiếm cục bộ
2.3.1.1 Ý tưởng phương pháp
Tìm kiếm cục bộ (Local Search – viết tắt LS) là một phương pháp giải xấp xỉ được sử dụng phổ biến trong việc giải các bài toán tối ưu hóa tổ hợp Phương pháp này có thể áp dụng trong các bài toán mà chúng ta có thể mô hình hóa được không gian các lời giải, quan hệ lân cận của hai lời giải; cần tìm ra lời giải tối ưu hóa các tiêu chí đặt ra Ý tưởng của phương pháp là xuất phát từ một lời giải được khởi tạo ban đầu, lần lượt đi qua các lời giải lân cận trong không gian các lời giải với cố gắng tìm ra một lời giải tốt Tại mỗi bước, thuật toán đang dừng ở một lời giải và cần chọn một lời giải trong tập các lời giải lân cận của lời giải này để di chuyển đến, dựa vào hàm đánh giá
Ví dụ dưới đây minh họa cách tìm kiếm cục bộ tìm một lời giải cho bài toán Queens Khác với phương pháp tìm kiếm quay lui đã được giới thiệu ở phần trước, điểm xuất phát của thuật toán ở đây là một lời giải với giá trị các biến đã được khởi tạo (các con hậu đều đã được đặt vào bàn cờ) Tại mỗi bước, LS sẽ xét các lời giải láng giềng, chọn ra lời giải láng giềng tiềm năng nhất dựa trên hàm đánh giá để di chuyển đến Ở đây, lời giải lân cận được định nghĩa là lời giải thu được bằng cách thay đổi vị trí của một con hậu so với lời giải hiện tại; hàm đánh giá là số các vi phạm Sau một số bước di chuyển, LS đã tìm ra một lời giải hợp lệ cho bài toán
Trang 30n-Hình 3: Minh họa Local search với bài toán 4-queen Nguồn: docs.jboss.org/drools/release/6.2.0.Beta2/optaplanner-docs/html/localSearch.html
Vấn đề lớn nhất cản trở LS tìm ra lời giải tối ưu cho bài toán là các lời giải cực trị địa phương Lời giải cực trị địa phương là một lời giải tốt hơn các lời giải láng giềng của nó (dựa trên hàm đánh giá) Do chỉ dùng thông tin cục bộ từ các lời giải láng giềng, quá trình tìm kiếm cục bộ sẽ có xu hướng bị kẹt lại ở những lời giải tối
ưu cục bộ này và do đó, khảo sát được rất ít vùng trên không gian tìm kiếm Mặt khác, thông thường một bài toán tối ưu hóa tổ hợp có rất nhiều các lời giải cực trị địa phương, do đó lời giải cực trị địa phương tìm được không đảm bảo là lời giải tốt nhất hay thậm chí là một lời giải tốt cho bài toán Hình vẽ dưới đây sẽ minh họa rõ cho điều này
Trang 31Hình 4: Minh họa lời giải cực trị địa phương trong LS
Nguồn: http://web.maths.unsw.edu.au/~rsw/lgopt.pdf
Nhìn chung, ưu điểm lớn nhất của tìm kiếm cục bộ là đảm bảo làm việc trong khoảng thời gian bị giới hạn, quá trình tìm kiếm có thể dừng bất cứ lúc nào Tuy nhiên nhược điểm của LS là không đảm bảo luôn tìm ra được lời giải tối ưu do không gian tìm kiếm không được xem xét toàn bộ
2.3.1.2 Metaheuristic
2.3.1.2.1 Metaheuristic là gì?
Như đã trình bày ở phần trước, một trong những vấn đề lớn nhất của tìm kiếm cục bộ là đưa quá trình tìm kiếm thoát khỏi các điểm cực trị địa phương, và các metaheuristic thường được sử dụng để thực hiện điều này Metaheuristic là các chiến lược giúp định hướng quá trình tìm kiếm, giúp cho quá trình trở nên hiệu quả và tìm được các lời giải tốt trong không gian tìm kiếm Các metaheuristic thường mang tỉnh tổng quát thay vì đặc thù cho riêng từng bài toán cụ thể Các thuật toán metaheuristic rất đa dạng, từ các thuật toán đơn giản như hill climbing cho đến các thuật toán học phức tạp, với các metaheuristic tiêu biểu và được sử dụng rộng rãi có thể kể đến như stimulated-annealing, tabu search, etc…[7] Sau đây chúng ta cùng xem xét cụ thể Tabu Search – một metaheuristic tiêu biểu để hiểu rõ hơn cơ chế cũng như vai trò của metaheuristic trong việc định hướng quá trình tìm kiếm
Trang 322.3.1.2.2 Ví dụ minh họa - Tabu Search
Tabu search là một trong những các metaheuristic được sử dụng phổ biến và tính hiệu quả của nó đã được chứng minh qua nhiều các bài toán tối ưu hóa tổ hợp [8] Ý tưởng chính của Tabu Search là sử dụng một bộ nhớ thích nghi và phản hồi liên tục với quá trình tìm kiếm, qua đó cung cấp nhiều thông tin hơn cho quá trình này, giúp tránh việc bị kẹt lại tại một điểm cực trị địa phương Có hai khái niệm chính trong Tabu Search là: cấu trúc bộ nhớ và chiến lược tìm kiếm
a Cấu trúc bộ nhớ
Tabu Search cúng giống như các metaheuristic khác trong LS, bắt đầu quá trình tìm kiếm xuất phát từ một lời giải khởi tạo ban đầu, sau đó liên tiếp thực hiện các
phép di chuyển qua các lời giải chọn ra từ tập các lời giải láng giềng N với mong
muốn tìm kiếm được một lời giải tốt hơn cho bái toán Trong quá trình tìm kiếm, Tabu Search cho phép di chuyển đến một lời giải láng giềng làm tồi đi giá trị của hàm mục tiêu so với lời giải hiện tại, tuy nhiên lời giải láng giềng này được chọn từ một tập láng giềng 𝑁∗ đã được thay đổi so với tập láng giềng ban đầu N Sự thay đổi này
có được nhờ vào cấu trúc bộ nhớ mà Tabu Search lưu giữ trong quá trình tìm kiếm
Bộ nhớ này sẽ lưu giữ những đặc tính cấm (tabu) mà nhờ vào đó giúp loại bỏ bớt các
lời giải trong tập láng giềng N hiện tại để thu được 𝑁∗ Một cấu trúc bộ nhớ rất thường
gặp là danh sách lưu giữ các lời giải đã được thăm gần đây trong các bước di chuyển
trước đó
Một lời giải trong các bài toán tối ưu tổ hợp phức tạp thường có kích thước không nhỏ, và việc lưu giữ một danh sách toàn bộ các lời giải như vậy sẽ gây khó khăn về mặt kích thước vùng nhớ cũng như tốc độ truy vấn thông tin các đặc tính cấm để loại bỏ bớt các lời giải tại mỗi bước Do đó, Tabu Search thường chỉ lưu giữ
phần đặc tính của các lời giải đã được thay đổi trong quá trình tìm kiếm Ví dụ,
Trang 33chu trình, chúng ta có thể lưu giữ 2 chỉ số i,j của cạnh, thay vì lưu giữ trạng thái của toàn bộ các cạnh, qua đó làm giảm đáng kể kích thước của bộ nhớ Phần đặc tính bị
cấm này thường được gọi là tabu-active, đại diện cho một move được thực hiện gần đây trong quá trình tìm kiếm Các lời giải chứa các phần đặc tính bị cấm sẽ bị loại bỏ
ra khỏi tập láng giềng N trong các move tiếp theo, qua đó đảm bảo các lời giải này sẽ
không bị thăm lại
Cấu trúc bộ nhớ của Tabu Search thường có độ dài cố định l, độ dài này được
gọi là độ dài tabu (tabu length) Song song với quá trình sử dụng bộ nhớ để lọc bỏ
những lời giải cấm trong tập láng giềng N, bộ nhớ được cập nhật liên tục: những phần
đặc tính cấm tương ứng với bước di chuyển cục bộ (local move) vừa thực hiện sẽ được cập nhật vào bộ nhớ, và phần đặc tính cấm tương ứng với bước di chuyển cục
bộ thực hiện ở l bước trước đó sẽ được loại bỏ khỏi bộ nhớ Bằng cơ chế cập nhật và
hủy bỏ như vậy, cấu trúc bộ nhớ của Tabu Search luôn đảm bảo lưu giữ thông tin
cấm của l bước di chuyển gần nhất, phản hồi và cập nhật liên tục với quá trình tìm
kiếm
b Chiến lược tìm kiếm
Khi quá trình tìm kiếm bị kẹt tại một điểm hoặc một vùng cực trị địa phương,
nó sẽ thực hiện lặp lại liên tục cùng một chuỗi các bước di chuyển, thăm lại cùng một tập các lời giải Do đó, nhờ vào việc lưu giữ một bộ nhớ có cấu trúc như đã mô tả ở phần trên, Tabu Search lái quá trình tìm kiếm thoát ra khỏi chu trình lặp đó Song song với việc sử dụng bộ nhớ, chiến lược tìm kiếm của Tabu Search cho phép di chuyển đến một lời giải có độ đo hàm mục tiêu tồi hơn so với lời giải hiện tại, qua đó cân bằng hai yếu tố cho tìm kiếm: cố gắng hướng đến lời giải có chất lượng tốt và cố gắng tìm kiếm các vùng không gian khác nhau của không gian tìm kiếm Đoạn mã giả trong đoạn code 5 sau đây trình bày một phiên bản chiến lược tìm kiếm đơn giản nhưng thường gặp của Tabu Search:
Trang 34Code 1: Minh họa chiến lược tìm kiếm trong Tabu Search [8]
- Dòng 1-2 mô tả việc khởi tạo lời giải ban đầu là một lời giải chọn trước (có
thể chọn ngẫu nhiên hoặc dựa trên một số tiêu chí từ không gian các lời giải)
và bộ nhớ (ban đầu là một danh sách rỗng)
- Dòng 3-20 thực hiện một vòng lặp tìm kiếm, chỉ dừng lại khi đạt được trạng
thái dừng (có thể là số vòng lặp giới hạn, thời gian giới hạn, ngưỡng của hàm đánh giá, v.v ) Phía trong vòng lặp thực thi chiến lược tìm kiếm của Tabu Search
o Dòng 5 khởi tạo một danh sách rỗng các lời giải ứng cử viên Dòng
6-11 tìm kiếm lời giải tốt nhất trong tập các lời giải láng giềng N và
không nằm trong bộ nhớ tabu (tương đương với việc tìm kiếm lời giải tốt nhất trong tập láng giềng 𝑁∗)
o Dòng 13-15 thực hiện kiểm tra xem lời giải vừa tìm được có tốt hơn lời giải tốt nhất đá tìm được cho bài toán hay không, nếu có thì tiến hành cập nhật Sau đó, tiến hành di chuyển đến lời giải vừa tìm được
đó, bất kể lời giải đó có tốt hơn lời giải tốt nhất hay không
Trang 35o Dòng 16-19 thực thi cơ chế cập nhật bộ nhớ song song với quá trình tìm kiếm Cụ thể, lời giải vừa được thăm sẽ được đưa vào bộ nhớ tabu
Bộ nhớ này có chiều dài tối đa là độ dài tabuLength l, do đó khi đã
đầy, song song với việc lưu trữ lời giải mới, bộ nhớ sẽ tiến hành “quên”
đi lời giải cũ nhất (cơ chế First In First Out), tức lời giải đã được thăm
ở l vòng lặp trước đó Lời giải vừa cập nhật vào bộ nhớ sẽ được đảm bảo không bị thăm lại ở l vòng lặp kế tiếp
- Cuối cùng, khi thực hiện xong quá trình tìm kiếm, lời giải tốt nhất tìm được sẽ
được trả về cho người quyết định
2.3.2 Quy hoạch ràng buộc
2.3.2.1 Quy hoạch ràng buộc là gì?
Quy hoạch ràng buộc (Constraint programming – viết tắt CP) là một hướng tiếp cận khác trong việc giải các bài toán tối ưu hóa tổ hợp Quy hoạch ràng buộc thực chất là một mô hình lập trình trong đó mối quan hệ giữa các biến được mô hình dưới dạng các ràng buộc Quy hoạch ràng buộc thuộc loại mô hình lập trình khai báo (Declarative programming – loại mô hình lập trình trong đó mã nguồn viết ra chỉ khai báo logic của chương trình, không biểu đạt luồng thực thi của chương trình), thể hiện
ở việc các ràng buộc không mô tả các bước thực hiện của chương trình mà chỉ biểu đạt các logic, thuộc tính mà lời giải cần phải có Do đó, quy hoạch ràng buộc thừa hưởng đầy đủ các ưu việt của loại mô hình lập trình này [2]:
- Hạn chế sự thay đổi: Do mã nguồn không biểu đạt luồng thực thi của chương trình nên dữ liệu trong chương trình sẽ rất ít khi bị thay đổi, người lập trình ít phải quan tâm đến dữ liệu bị thay đổi ở những hàm nào, luồng nào
- Giảm thiểu ảnh hưởng của các biến trạng thái: Do không cần biểu đạt luồng thực thi nên CP có thể hạn chế được các biến lưu trạng thái, do đó hạn chế được sự ảnh hưởng của các biến này lên các hàm khác nhau nếu lỗi xảy ra (VD: nếu một biến trạng thái bị lỗi và được gọi đến bởi nhiều hàm khác nhau,
Trang 36các hàm đó sẽ đều xảy ra lỗi và người lập trình phải mất công sức hơn rất nhiều
2.3.2.2 Mô hình hóa (Modeling)
Trong phần mô hình hóa bài toán, các biến quyết định, các ràng buộc sẽ được sử dụng để mô hình hóa bài toán cần giải Một bài toán tối ưu hóa tổ hợp có thể có nhiều cách để mô hình hóa, như chúng ta đã thấy trong ví dụ về mô hình hóa bài toán TSP
ở phần 2.1.3 Tính chính xác và hiệu quả của việc mô hình hóa bài toán ảnh hưởng lớn đến tính chính xác và tốc độ trong việc tìm kiếm lời giải cho bài toán
Các ràng buộc chính là linh hồn của CP; việc lựa chọn các ràng buộc để mô hình hóa bài toán có tính chất vô cùng quan trọng đến hiệu quả của mô hình và chi phối các yếu tố khác như biến quyết định, miền quyết định Như phần 2.1.1 đã định nghĩa, một ràng buộc (constraint) là một điều kiện mà một tập hữu hạn các biến quyết định của bài toán phải thỏa mãn Trong CP, một ràng buộc có thể được coi như một phương thức (procedure), với việc một ràng buộc có thể là sự tổng hợp từ nhiều ràng buộc con khác (sub-constraint) Nhờ vào đó, một người lập trình có thể dễ dàng làm quen với quy hoạch ràng buộc, và có thể dễ dàng tự định nghĩa các ràng buộc phù hợp cho bài toán của mình Ví dụ sau đây sẽ minh họa rõ hơn về việc sử dụng các ràng buộc trong CP để mô hình hóa bài toán TSP
Trang 37Code 2: TSP model in CP
Trong ví dụ trên, chúng tôi sử dụng minizinc (ngôn ngử sử dụng CP phổ biến và mạnh nhất hiện nay [3]) để minh họa mô hình hóa bài toán TSP theo cách mô hình hóa đầu tiên trong phần 2.1.3
- Dòng 1-3 khai báo đầu vào của bài toán, bao gồm số thành phố và mảng trọng
số khoảng cách giữa 2 thành phố
- Dòng 4 khai báo biến quyết định của bài toán (mảng succ[1 n] với succ[i] thể hiện thành phố tiếp theo trong chu trình sau thành phố i) và miền giá trị của biến
- Dòng 5 khai báo ràng buộc circuit định nghĩa trên toàn bộ mảng biến quyết
định của bài toán, thể hiện ràng buộc rằng mảng biến này phải hình thành nên
1 chu trình
- Dòng 6,7 thể hiện cách sử dụng ràng buộc để khai báo hàm mục tiêu của bài
toán (khai báo biến total và ràng buộc total bằng tổng các khoảng cách trong
chu trình)
- Dòng 8 thể hiện mục tiêu của bài toán là tìm lời giải chấp nhận được các ràng
buộc và cực tiểu hóa hàm mục tiêu (tổng khoảng cách total)
Ví dụ trên minh họa hai điều: cách sử dụng các ràng buộc như các phương thức
để định nghĩa các ràng buộc, các hàm mục tiêu khác; và cách gọi đến các ràng
buộc trừu tượng như ràng buộc circuit Các ràng buộc trừu tượng như vậy được
gọi là ràng buộc toàn cục (Global Constraint) Các ràng buộc trừu tượng này được
Trang 38mô hình hóa từ các ràng buộc đơn giản, định nghĩa trên tập các biến quyết định
của bài toán Dưới đây là minh họa mô hình hóa ràng buộc circuit
Code 3: Ràng buôc toàn cục Circuit Ràng buộc toàn cục là một khái niệm rất quan trọng trong CP, bởi nhờ vào đó ta
có thể:
- Tái sử dụng được các ràng buộc quan trọng và phức tạp
- Giúp việc mô hình hóa bài toán dễ dàng hơn, việc đọc hiểu, mở rộng mô hình cũng trở nên đơn giản hơn
- Tối ưu mô hình hóa dễ dàng hơn (nhờ việc đảm bảo các global constraint đã được mô hình hóa tối ưu)
Có rất nhiều ràng buộc toàn cục phổ biến, được mô hình hóa trong các thư viện của các ngôn ngữ lập trình CP như minizinc, tiêu biểu có thể kể đến: alldifferent( x[1 n]) khai báo rằng các biến x[1], x[2], …, x[n] phải đôi một khác nhau, atmost(k, x[1 n], v) khai báo rằng có tối đa k biến trong mảng x[1 n] nhận giá trị v, cardinality(k, x[1 n], v) thể hiện rằng có đúng k biến trong mảng x[1 n] nhận giá trị
v, v.v…
Trang 392.3.2.3 Tìm kiếm (Search)
Sau khi đã mô hình hóa bài toán, người dùng có thể phát triển phần tìm kiếm lời giải cho bài toán một cách độc lập, không cần thiết phải sửa đổi hay tác động đến mô hình của bài toán Có rất nhiều phương pháp có thể áp dụng trong pha search, nhưng tựu chung lại các phương pháp này đều sử dụng việc lan truyền tổ hợp (propagation) khi giá trị của biến bị thay đổi, giúp thu được thông tin của các ràng buộc ở trạng thái hiện tại Những thông tin đó giúp chúng ta có thể lọc (filter) những miền của những biến ràng buộc còn lại chưa được gán giá trị, đánh giá hiệu quả của bước di chuyển trong tìm kiếm cục bộ, v.v… Có hai loại phương pháp chính trong Search: Phương pháp giải đúng (Complete method) và phương pháp giải xấp xỉ (Incomplete method)
2.2.3.1 Phương pháp giải đúng
Phương pháp giải đúng đảm bảo tìm được lời giải tối ưu cho bài toán Nhờ vào các ràng buộc, CP lan truyền tổ hợp (propagation) xuất phát từ một/một số biến được khởi tạo, sử dụng các ràng buộc để cắt tỉa miền của các biến Trong khuôn khổ của luận văn, chúng tôi xin giới thiệu phương pháp tìm kiếm quay lui (backtracking search) Đây là phương pháp cơ bản nhưng mạnh mẽ, được sử dụng rất phổ biến trong các search solver của CP
Tìm kiếm quay lui có thể xem như thực hiện một tìm kiếm theo chiều sâu trên cây tìm kiếm Tại một nút trên cây tìm kiếm, một biến chưa được khởi tạo sẽ được lựa chọn giá trị trong miền của biến đó để gán giá trị; mỗi lựa chọn này sẽ được đại diện bởi một nhánh rẽ từ nút để mở rộng cây tìm kiếm Ví dụ dưới đây với bài toán n-Queens sẽ minh họa cây tìm kiếm, các nút và cách thuật toán rẽ nhánh Cụ thể, tại mỗi nút, thuật toán sẽ chọn con hậu ở cột tiếp theo chưa được xếp để xếp vào bàn cờ, mỗi cách xếp là một nhánh mới của cây Sau một số bước tìm kiếm, lời giải chấp nhận được được tìm thấy
Trang 40Hình 5: Minh họa Backtracking Search với bài toán 4-queen
Nguồn: http://ktiml.mff.cuni.cz/~bartak/constraints/propagation.html
Có nhiều cách để rẽ nhánh từ một nút, được gọi là chiến lược rẽ nhánh, ví dụ:
first fail là chiến lược ưu tiên chọn biến có kích thước miền giá trị nhỏ nhất để khởi
tạo, indomain median là chiến lược ưu tiên chọn giá trị nằm giữa trong miền của biến
để khởi tạo, etc… Lựa chọn chiến lược rẽ nhánh phù hợp có thể làm tăng hiệu quả rất lớn cho thuật toán tìm kiếm
Trong quá trình rẽ nhánh, trạng thái của các ràng buộc được lan truyền theo sự lan truyền giá trị của các biến quyết định, được gọi là lan truyền ràng buộc (constraint propagation) Có hai lợi ích lớn mà lan truyền ràng buộc đem lại Một là, trạng thái của các ràng buộc sẽ được sử dụng để kiểm tra liệu một nút trên cây tìm kiếm có thể dẫn tới được một lời giải hợp lệ hay không, nếu không thì toàn bộ cây con xuất phát
từ nút đó sẽ bị cắt bỏ khỏi quá trình tìm kiếm, nhờ đó giảm đáng kể kích thước của không gian cần tìm kiếm Hai là, nhờ vào thông tin của các ràng buộc hiện tại, các chiến lược rẽ nhánh sử dụng heuristic có thể chọn được nhánh rẽ tốt
Khi quá trình tìm kiếm gặp phải một ngõ cụt (một nút lời giải hợp lệ hoặc một