Luận văn này đề xuất một phương pháp lai ghép mới, kết hợp thế mạnh của hai cách tiếp cận lập trình ràng buộc và tìm kiếm cục bộ để giải bài toán xếp lịch thi và ứng dụng nó xây dựng chư
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
VŨ HÀ TUẤN ANH
XẾP LỊCH THI HỌC KỲ BẰNG PHƯƠNG PHÁP KẾT HỢP
TÌM KIẾM TABU VÀ LẬP TRÌNH RÀNG BUỘC
(Generating University Examination Timetables by
Combining Tabu Search and Constraint Programming)
Chuyên ngành : Công Nghệ Thông Tin
LUẬN VĂN THẠC SĨ
TP HỒ CHÍ MINH, Tháng 10 năm 2004
Trang 2LỜI CẢM ƠN
Để thực hiện tốt luận văn này tôi đã trải qua 2 năm học tại trường Đại Học Bách Khoa TP.HCM Trong quá trình đó các thầy cô của khoa Công Nghệ Thông Tin và các thầy cô của Phòng Quản Lý Sau Đại Học đã tận tình hướng dẫn tôi nắm bắt được nhiều kiến thức khác nhau qua các môn học, nắm bắt được phương pháp sống và làm việc để có thể hoàn thiện bản thân Thế hệ sinh viên của tôi và các thế hệ sau này nữa sẽ luôn biết ơn công lao hướng dẫn của các thầy cô Tôi kính xin gởi lòng biết ơn của tôi đến tất cả các thầy cô
Tôi đã làm việc hơn 6 tháng để hoàn thành đề tài tốt nghiệp này Thầy Tiến Sĩ Dương Tuấn Anh đã tận tình hướng dẫn cho tôi từ cách nghiên cứu đề tài cho đến cách viết một đề tài Thầy đã không quản khó khăn và thời gian để giải thích cho tôi từng khái niệm, hướng dẫn tôi phương hướng để nghiên cứu Nếu không có Thầy hướng dẫn thì tôi không thể hoàn thành luận văn này Đề tài này và tri thức của tôi là công trình của Thầy Tôi kính gởi đến Thầy lòng biết
ơn sâu sắc của tôi
Tôi đã hoàn thành khóa học trong khi tôi vẫn phải công tác tại Công Ty Tin Học Bưu Điện – NetSoft Tôi không thể nào quên được những ngày đầu học tập vất vả khi vừa phải học, vừa phải hoàn thành nhiệm vụ được giao tại công
ty Nếu không có quyết định của lãnh đạo công ty cho phép tôi được đi học trong giờ làm việc, cho phép tôi có thể hoàn thành công việc ngoài giờ thì cho
dù tôi hết sức cố gắng cũng không thể hoàn thành cùng lúc hai nhiệm vụ Tôi kính gởi lòng biết ơn của tôi đến lãnh đạo công ty, và tôi sẽ làm việc tốt hơn nữa để luôn hoàn thành xuất sắc nhiệm vụ được giao
Bạn bè ơi, đồng nghiệp ơi! Không có các bạn giúp đỡ và động viên thì tôi khó lòng đạt được kết quả như ngày hôm nay Chúng ta sẽ cùng nhau tiếp tục tiến bước các bạn nhé! Cảm ơn nhau và giúp nhau tiến bộ không chỉ hôm nay và ngày mai, ngày mai nữa
Tôi xin chân thành cảm ơn gia đình tôi đã hỗ trợ, động viên cho tôi rất nhiều trong quá trình học tập và thực hiện luận văn Gia đình tôi đã phải hy sinh rất nhiều cho tôi có nhiều thời gian hơn và tạo điều kiện cho tôi vừa hoàn thành chương trình học vừa hoàn thành trách nhiệm của một người cha trong gia đình
Một lần nữa tôi xin được cảm ơn tất cả
TP.Hồ Chí Minh, Tháng 10 năm 2004
Vũ Hà Tuấn Anh
Trang 3Bài toán xếp lịch thi học kỳ là một bài toán sắp xếp các môn thi của trường đại học, sao cho tránh được các sinh viên không thi trùng thời gian, các môn thi trải đều cho các sinh viên và thỏa mãn về sức chứa của phòng thi
Luận văn này đề xuất một phương pháp lai ghép mới, kết hợp thế mạnh của hai cách tiếp cận lập trình ràng buộc và tìm kiếm cục bộ để giải bài toán xếp lịch thi và ứng dụng nó xây dựng chương trình xếp lịch thi học kỳ cho trường Đại học Bách Khoa TP.Hồ Chí Minh Phương pháp này gồm hai giai đoạn: giai đoạn một dùng giải thuật backtracking có kiểm tra hướng tới để tạo ra lời giải ban đầu thỏa mãn được tất cả các ràng buộc cứng nhưng chưa tính đến các ràng buộc mềm, giai đoạn hai dùng giải thuật tabu search để cải thiện lời giải khả thi thành lời giải tối ưu thỏa mãn các ràng buộc mềm của bài toán
Trong quá trình nghiên cứu, luận văn đã sử dụng các kỹ thuật tăng độ hữu hiệu cho giải thuật backtracking có kiểm tra hướng tới và tabu search với mục đích tăng cường khả năng tìm kiếm lời giải tối ưu và tăng tốc độ thực thi
Luận văn đã sử dụng ngôn ngữ C# để xây dựng phần mềm xếp lịch thi học kỳ cho trường Đại Học Bách Khoa TP.Hồ Chí Minh, qua đó thử nghiệm kết quả bài toán
và so sánh với các đề tài đã nghiên cứu trước đây
Trang 4The problem on semester exam scheduling is the one on arrangement equally all subjects at university for all students without being coincided on time and also satisfactorily on room capacity
This thesis proposes a new hybrid method of a constraint programming’s strength and a local research to find the best way applying to semester exam timetabling at HCMC University of Technology It consists of two phases: firstly, the constraint programming phase creates an initial solution that satisfies all hard constraints regardless of the soft ones; secondly, the tabu search one improving the possibility
of a solution into an optimization one which can meet all soft constraints’demand of
a problem
In the process of research, the algorithm of backtracking and tabu search are used with the aim at increasing its efficiency in searching for the optimization and speeding up the application
C# language is used in this thesis to establish a software programme on exam scheduling for HCMC University of Technology, test the problems’results and also compares them with the previous ones
Trang 5LỜI CẢM ƠN i
TÓM TẮT ii
ABSTRACT iii
MỤC LỤC iv
DANH MỤC HÌNH ẢNH vii
DANH MỤC BẢNG viii
Chương 1 GIỚI THIỆU 1
1.1 Mục tiêu nghiên cứu 1
1.2 Nhiệm vụ của luận văn 2
1.2.1 Mục đích của chương trình xếp lịch thi 2
1.2.2 Các quy tắc học vụ 2
1.2.3 Các yêu cầu đặt ra 3
1.3 Kết quả của luận văn 4
1.4 Cấu trúc nội dung luận văn 5
Chương 2 CÁC CÔNG TRÌNH LIÊN QUAN 7
2.1 Phương pháp xây dựng tuần tự 7
2.2 Lập trình ràng buộc 8
2.3 Tìm kiếm cục bộ 8
2.4 Xu hướng mới 10
2.5 Các vấn đề cần tập trung nghiên cứu trong đề tài 11
2.6 Phương hướng giải quyết bài toán 12
Chương 3 CƠ SỞ LÝ THUYẾT 13
3.1 Lập trình ràng buộc 13
3.1.1 Phân loại các bài toán giải hệ ràng buộc 15
3.1.2 Phân loại các ràng buộc 15
3.1.3 Các ứng dụng của lập trình ràng buộc 16
3.2 Các giải thuật giải hệ ràng buộc 17
3.2.1 Giải thuật sinh và thử 17
3.2.2 Giải thuật backtracking căn bản 18
3.2.3 Giải thuật backtracking có kiểm tra hướng tới 19
Trang 63.4 Các giải thuật tìm kiếm cục bộ 23
3.4.1 Giải thuật leo đồi 23
3.4.2 Giải thuật di truyền 24
3.4.3 Giải thuật mô phỏng luyện kim 25
3.5 Giải thuật tabu search 27
3.5.1 Tổng quan về tabu search 27
3.5.2 Giải thuật tabu search 28
3.5.3 Các thành phần chính của tabu search 30
3.5.4 Chiến thuật sử dụng tabu search 33
3.5.5 Giải thuật tabu search với bài toán xếp lịch thi 35
3.6 Kết luận 37
Chương 4 PHƯƠNG PHÁP GIẢI BÀI TOÁN XẾP LỊCH THI 39
4.1 Phương pháp lai ghép 39
4.1.1 Mô tả bài toán 40
4.1.2 Lời giải của bài toán xếp lịch thi 42
4.2 Giai đoạn 1: TÌM LỜI GIẢI BAN ĐẦU bằng giải thuật backtracking có kiểm tra hướng tới 43
4.2.1 Kỹ thuật xác định các môn thi đụng độ 45
4.2.2 Kỹ thuật mô hình hóa miền trị của tiết thi 47
4.2.3 Kỹ thuật sắp thứ tự môn thi 49
4.2.4 Kỹ thuật sắp thứ tự tiết thi 49
4.2.5 Kỹ thuật xếp phòng thi 50
4.3 Giai đoạn 2: TỐI ƯU LỜI GIẢI bằng giải thuật tabu search 53
4.3.1 Lời giải láng giềng 55
4.3.2 Hàm chi phí cho lời giải 56
4.3.3 Kỹ thuật tính hiệu chi phí 57
4.3.4 Danh sách tabu 58
4.3.5 Điều kiện kỳ vọng 59
4.3.6 Điều kiện dừng 59
4.4 Kết luận 60
Chương 5 HIỆN THỰC BÀI TOÁN VÀ THỬ NGHIỆM 61
5.1 Hiện thực bài toán xếp lịch thi học kỳ 61
5.1.1 Mô hình kiến trúc tổng thể 61
5.1.2 Mô hình kiến trúc 3-lớp 62
Trang 75.2.1 Thống kê số liệu thử nghiệm chương trình xếp lịch thi học kỳ 67
5.2.2 Thử nghiệm tìm lời giải ban đầu 67
5.2.3 Thử nghiệm tìm lời giải tối ưu 70
5.2.4 So sánh với các nghiên cứu trước đây 73
5.3 Kết luận 75
Chương 6 KẾT LUẬN & HƯỚNG PHÁT TRIỂN 76
6.1 Kết luận 76
6.2 Hướng phát triển 78
TÀI LIỆU THAM KHẢO 80
Phụ lục A CƠ SỞ DỮ LIỆU THẬT CỦA CHƯƠNG TRÌNH 83
Phụ lục B CÁC GIAO DIỆN CHÍNH CỦA CHƯƠNG TRÌNH 86
Phụ lục C THUẬT NGỮ VIỆT ANH ĐỐI CHIẾU 92
Trang 8Hình 3.1: Ví dụ về bài toán giải hệ ràng buộc 15
Hình 3.2: Giải thuật backtracking căn bản 18
Hình 3.3: Giải thuật backtracking có kiểm tra hướng tới 20
Hình 3.4: Ví dụ về bài toán tô màu đồ thị 21
Hình 3.5: Giải thuật tô màu đồ thị 22
Hình 3.6: Giải thuật di truyền 25
Hình 3.7: Giải thuật mô phỏng luyện kim 26
Hình 3.8: Giải thuât tabu search 28
Hình 3.9: Lưu đồ giải thuật tabu search 29
Hình 4.1: Mô hình phương pháp lai ghép 39
Hình 4.2: Hình ảnh ví dụ về lời giải của bài toán xếp lịch thi 42
Hình 4.3: Lưu đồ giải thuật backtracking có kiểm tra hướng tới cho bài toán xếp lịch thi 44
Hình 4.4: Ma trận đụng độ giữa các môn thi 45
Hình 4.5: Cấu trúc dữ liệu cho các môn thi đụng độ 46
Hình 4.6: Tổ chức môn học theo collection và bảng băm 47
Hình 4.7: Mô hình hóa miền trị của tiết thi 48
Hình 4.8: Chọn phòng cho các nhóm thi 52
Hình 4.9: Giải thuật tabu search cho bài toán xếp lịch thi 54
Hình 4.10: Các phương pháp thay đổi tiết thi cho các môn thi 55
Hình 5.1: Mô hình kiến trúc tổng thể 61
Hình 5.2: Mô hình kiến trúc 3-lớp 63
Hình 5.3: Dữ liệu bài toán theo mô hình UML 65
Hình 5.4: Đồ thị biểu diễn quá trình thực hiện giải thuật tabu search 71
Hình 5.5: Chi tiết các bước chuyển tabu search 72
Trang 9Bảng 4.1: Bảng ví dụ về lời giải của bài toán xếp lịch thi 42
Bảng 4.2: Điểm phạt về khoảng cách của hai môn thi đụng độ 50
Bảng 4.3: Điểm phạt về khoảng cách giữa hai môn thi không đụng độ 50
Bảng 4.4: Điểm phạt về khoảng cách số buổi thi của hai môn thi đụng độ 56
Bảng 4.5: Điểm phạt cho các môn thi có cùng tiết thi 57
Bảng 4.6: Bảng hiệu chi phí delta 58
Bảng 5.1: Bảng thống kê số liệu của chương trình xếp lịch thi học kỳ 67
Bảng 5.2: Kết quả thử nghiệm dùng giải thuật backtracking tìm kiếm lời giải ban đầu 68
Bảng 5.3: Kết quả thử nghiệm về hệ số điểm phạt 69
Bảng 5.4: Kết quả thử nghiệm về khoảng cách tiết phạt 70
Bảng 5.5: Bảng kết quả thử nghiệm dùng tabu search tìm kiếm lời giải tối ưu 71
Bảng 5.6: Kết quả thử nghiệm về sự ảnh hưởng của lời giải khả thi ban đầu 73
Bảng 5.7: Kết quả thử nghiệm của Bùi Bách Đăng và Nguyễn Tín Quang 74
Bảng 5.8: Kết quả thử nghiệm backtracking của Lâm Kim Hòa 74 Bảng 5.9: Kết quả thử nghiệm giải thuật mô phỏng luyện kim của Lâm Kim Hòa 75
Trang 10Chương 1
GIỚI THIỆU
1.1 Mục tiêu nghiên cứu
Mỗi ngày sống của chúng ta đều có nhiều hoạt động liên quan đến vấn đề sắp xếp các hoạt động sao cho hợp lý theo một trình tự thời gian nhất định Ngay từ lúc còn ngồi trên ghế nhà trường chúng ta luôn quen thuộc với các thời khóa biểu học tập và lịch thi Các phương tiện giao thông công cộng giúp chúng ta đi đến trường, hay đi công tác đều cần được sắp xếp thời gian rõ ràng như đi xe buýt, đi tàu lửa hay đi máy bay Tại các nơi làm việc, công sở đều cần có chỉ định rõ lịch làm việc, lịch họp Tại bệnh viện, các y tá cũng cần được sắp xếp để trực phục vụ bệnh nhân Và còn nhiều công tác khác trong thực tế cần thiết phải được xếp lịch
Nhu cầu xếp lịch học tập và lịch thi học kỳ tại trường Đại Học Bách Khoa TPHCM
và các trường đại học trong thành phố trong những năm gần đây là rất cần thiết, nhất là khi số lượng khoa và sinh viên ngày càng tăng lên Do đó việc nghiên cứu để xếp lịch thi học kỳ tại trường Đại Học Bách Khoa TPHCM là một vấn đề cần được thực hiện để hỗ trợ cho các thầy cô trong công tác giáo vụ của trường Xếp lịch thi
học kỳ vốn là một bài toán tối ưu tổ hợp (combinatorical optimization) thuộc loại
khó Đã tồn tại nhiều phương pháp khác nhau để giải quyết bài toán này Mỗi phương pháp đều có những ưu khuyết điểm khác nhau
Mục đích của luận văn này là nghiên cứu một phương pháp xếp lịch thi mới là sự kết hợp của hai cách tiếp cận lớn để giải quyết các hệ ràng buộc: lập trình ràng buộc
(constraint programming) và tìm kiếm cục bộ (local search) Lập trình ràng buộc
giúp tạo ra lời giải ban đầu thỏa mãn được tất cả những ràng buộc cứng nhưng chưa tính đến các ràng buộc mềm, cụ thể là sử dụng giải thuật backtracking có kiểm tra
hướng tới (backtracking with forward checking) Tìm kiếm cục bộ, mà ở đây thông
qua kỹ thuật tabu search, sẽ cải thiện lời giải khả thi thành lời giải có chất lượng cao, tức là lời giải có tính đến các ràng buộc mềm Phương pháp mới này có chú ý
sử dụng thế mạnh của cả hai cách tiếp cận lập trình ràng buộc và tìm kiếm cục bộ
Đề tài này còn có nhiệm vụ nghiên cứu vận dụng một số kỹ thuật tăng độ hữu hiệu
Trang 11của giải thuật tabu search được công bố thời gian gần đây vào việc giải quyết bài toán xếp lịch thi
Kết quả nghiên cứu mong muốn được đóng góp một phần nhỏ vào trong ứng dụng xếp lịch thi học kỳ của trường Đại Học Bách Khoa TPHCM và cho nhiều bài toán xếp lịch khác thường có trong đời sống
1.2 Nhiệm vụ của luận văn
Những đặc điểm của một bài toán xếp lịch thi học kỳ thường thay đổi theo từng trường đại học/cao đẳng Riêng đề tài này chủ yếu dựa vào những đặc trưng riêng của việc xếp lịch thi học kỳ ở trường Đại học Bách Khoa TP Hồ Chí Minh
1.2.1 Mục đích của chương trình xếp lịch thi
Chương trình xếp lịch thi học kỳ có nhiệm vụ xếp lịch thi cho tất cả các môn học
mở trong học kỳ - năm học và cung cấp các công cụ linh hoạt để hỗ trợ cho người dùng trong việc lựa chọn các chiến lược phù hợp
Số tiết thi: thông thường từ 1 đến 3 (45 phút đến 120 phút)
Phòng học: là một chuỗi gồm 3 chữ số ghép với chuỗi mô tả tên dãy như: 404A4 (A4 là tên dãy nhà) Cũng có trường hợp, tên phòng là một chuỗi có
độ dài bất kỳ (GDB2A)
Dãy nhà: là một chuỗi không giới hạn số ký tự như: XCK, SAN,
Sức chứa thi: nhỏ hơn sức chứa phòng (khoảng 50% sức chứa phòng) là số sinh viên tối đa có thể cho vào phòng thi
Trang 12Các quy tắc
Một ngày tối đa có 12 tiết, trong đó 6 tiết buổi sáng và 6 tiết buổi chiều
Mỗi sinh viên trong học kỳ được đăng ký nhiều môn Các môn mà sinh viên đăng ký phải có trong sổ tay sinh viên do phòng đào tạo cấp
Các khóa thường được xếp lịch thi không trùng nhau do lịch học không giống nhau
Trong thời gian thi, các sinh viên được nghỉ học nên chương trình xếp lịch thi không cần phải tránh những thời gian này Có thể giờ thi trùng với giờ học nhưng chỉ xảy ra với những sinh viên đăng ký học tại khóa sau hoặc học vượt
1.2.3 Các yêu cầu đặt ra
Chương trình xếp lịch thi phải đáp ứng được các yêu cầu sau: (một số yêu cầu là ràng buộc cứng được ký hiệu là C, các ràng buộc mềm được ký hiệu là M)
Về môn thi
Các nhóm của một môn thi phải được xếp thi cùng lúc (C)
Chương trình phải đáp ứng được trường hợp người xếp lịch muốn một môn
nào đó được xếp vào một thời điểm cố định hoặc khoảng thời gian cố định
Chương trình cho phép chọn bất kỳ môn nào, nhóm các môn nào trong các khóa để xếp lịch thi Ngoài ra, các môn chưa được chọn có thể được ghép để xếp lịch với các khóa khác ở lần chạy sau
Về thời gian và tiết học
Không xảy ra trường hợp hai hoặc nhiều môn thi của một sinh viên có lịch thi chồng lên nhau (C)
Ngày bắt đầu và kết thúc thi có thể được xác định trước
Cho phép người sử dụng tránh các ngày lễ hay Chủ Nhật, hoặc một ngày bất
kỳ, một tiết bất kỳ trong khoảng thời gian thi đã đặt ra
Thời gian thi của một môn phải nằm trọn trong từng buổi (sáng hoặc chiều) (C)
Trang 13Về phòng thi
Khi xếp phòng cho các nhóm của cùng một môn thi thì nên xếp các phòng đó gần nhau để tiện lợi cho việc di chuyển của sinh viên, người coi thi và giáo viên ra đề (M)
Trong cùng một phòng thi thì không có nhiều hơn hai môn thi trong cùng một thời điểm (C)
Chương trình sẽ tự động gán phòng thi cho các môn thi sao cho tối thiểu hóa chỗ trống (M)
Về sinh viên
Lịch thi không quá dày đối với mỗi sinh viên (chẳng hạn, mỗi sinh viên chỉ nên thi tối đa một môn trong một buổi, nhằm tăng thời gian nghỉ ngơi cho sinh viên) (M)
Cho phép chọn thời gian tối thiểu giữa hai môn thi liên tiếp sao cho phù hợp với thời gian thi
Tóm lại bài toán xếp lịch thi bao gồm nhiều dạng ràng buộc khác nhau mà chương trình phải cố gắng thỏa mãn Đối với các ràng buộc cứng, đây là bài toán thỏa mãn ràng buộc và đối với các ràng buộc mềm, đây là bài toán tối ưu hóa
Dữ liệu mẫu đã có của bài toán xếp lịch thi học kỳ gồm 324 môn thi, cho khoảng 10.000 sinh viên, dựa vào khoảng 64.000 đăng ký môn học
1.3 Kết quả của luận văn
Kết quả của luận văn gồm các nội dung chính sau:
Nghiên cứu các công trình liên quan đến bài toán xếp lịch thi đã được công
bố phần đây và tổng hợp lý thuyết cần thiết mà đề tài sử dụng để giải quyết bài toán xếp lịch thi bao gồm lý thuyết về lập trình ràng buộc và tìm kiếm cục bộ
Đề xuất giải pháp kết hợp lập trình ràng buộc và tìm kiếm cục bộ để giải quyết bài toán xếp lịch thi học kỳ Trong đó, đề tài sẽ đề xuất cụ thể giải thuật lập trình ràng buộc phù hợp để tìm lời giải khả thi ban đầu cho bài toán,
Trang 14và đề xuất giải thuật tìm kiếm cục bộ có kèm các chiến thuật tăng độ hữu hiệu nhằm tối ưu bài toán xếp lịch thi
Áp dụng các giải thuật đã đề xuất để xây dựng một chương trình tự động xếp lịch thi học kỳ cho trường Đại Học Bách Khoa TP.HCM Trong đó chương trình phải được xây dựng có hướng mở để có thể dễ dàng áp dụng nhiều giải thuật khác nhau và có thể mở rộng các chức năng quản lý học vụ nhằm đáp ứng ngay cho nhu cầu xếp lịch thi của trường
Phân tích, đánh giá kết quả thực nghiệm và so sánh với các công trình đã thực hiện gần đây qua đó rút ra kết luận cho công trình nghiên cứu
1.4 Cấu trúc nội dung luận văn
Nội dung của luận văn được trình bày thành 6 chương Trong chương 1, luận văn giới thiệu mục tiêu nghiên cứu của đề tài qua đó nêu rõ bài toán xếp lịch thi học kỳ của Trường đại học Bách khoa TP.HCM, xác định cụ thể các mục tiêu cần làm rõ
và kết quả cần đạt được của luận văn
Trong chương 2, luận văn trình bày các công trình đã nghiên cứu gần đây có nội dung liên quan đến nhiệm vụ của luận văn, phần này tập trung nêu rõ các tác giả và các công trình họ đã làm được, đồng thời nêu lên các vấn đề còn tồn tại trong các nghiên cứu trước, qua đó cũng nêu lên phương hướng mà đề tài sẽ giải quyết
Trong chương 3, luận văn trình bày cơ sở lý thuyết cho đề tài Phần đầu là lý thuyết của phương pháp lập trình ràng buộc, đây chính là cơ sở mà đề tài sẽ thực hiện trong giai đoạn một cho việc tìm ra lời giải ban đầu, tuy vậy để có tầm nhìn tổng quát về lập trình ràng buộc đề tài đã trình bày kỹ các giải thuật đã được sử dụng cho lập trình ràng buộc như giải thuật sinh và thử, giải thuật backtracking căn bản, giải thuật backtracking có kiểm tra hướng tới và giải thuật tô màu đồ thị Phần kế tiếp là
cơ sở lý thuyết để giải quyết vấn đề tối ưu bài toán xếp lịch thi đó là phương pháp tìm kiếm cục bộ và tabu search Trong phần này luận văn trình bày các giải thuật tìm kiếm cục bộ như giải thuật leo đồi, giải thuật di truyền, giải thuật mô phỏng luyện kim và đặc biệt tập trung trình bày giải thuật tabu search Giải thuật tabu search là giải thuật mà đề tài muốn sử dụng trong giai đoạn 2 của phương pháp lai ghép nhằm tối ưu lời giải khả thi ban đầu
Trong chương 4, luận văn trình bày chi tiết mô hình bài toán xếp lịch thi, phương pháp lai ghép để giải bài toán trong đó gồm hai giai đoạn Giai đoạn 1 là tìm lời giải
Trang 15ban đầu bằng giải thuật backtracking có kiểm tra hướng tới kèm theo các kỹ thuật tăng độ hữu hiệu của giải thuật như kỹ thuật xác định các môn thi đụng độ, kỹ thuật
mô hình hóa miền trị, kỹ thuật sắp thứ tự môn thi, kỹ thuật sắp thứ tự tiết thi Giai đoạn 2 là tìm lời giải tối ưu bằng giải thuật tabu search kèm theo cách thức chọn lời giải láng giềng, kỹ thuật tính hàm chi phí cho lời giải, kỹ thuật tính hiệu chi phí, kỹ thuật hiện thực danh sách tabu và điều kiện kỳ vọng Và để chứng tỏ được tính hiệu quả của phương pháp lai ghép trong chương này cũng trình bày sự hiện thực của bài toán và kết quả thử nghiệm chương trình
Trong chương 5, luận văn trình bày cách thức hiện thực bài toán xếp lịch thi học kỳ bao gồm trình bày tổng quan mô hình kiến trúc tổng thể, mô hình 3 lớp, cấu trúc dữ liệu của bài toán theo ngôn ngữ UML Và các thử nghiệm của bài toán để chứng tỏ tính hữu hiệu của phương pháp lai ghép, đồng thời so sánh với kết quả của các tác giả đã nghiên cứu trước đây
Phần cuối luận văn là tài liệu tham khảo mà luận văn đã sử dụng và các phụ lục kèm theo
Trang 16Chương 2
CÁC CÔNG TRÌNH LIÊN QUAN
Bài toán xếp lịch là một trong những bài toán khó được tập trung nghiên cứu bởi nhiều nhà khoa học trên thế giới Bài toán này đã được nghiên cứu áp dụng cho các loại lịch biểu như lịch học tập của trường học, lịch công tác cho các nhân viên, lịch trực y tá của bệnh viện, lịch thi đấu thể thao của các giải thể thao, lịch bay của các hãng hàng không, lịch đi đến của tàu lửa Trong đó việc xếp lịch học tập và lịch thi tại các trường trung học, cao đẳng, đại học được tập trung rất lớn bởi các nhà nghiên cứu với nhiều cách thức xếp lịch khác nhau
Phần này điểm qua các phương pháp và giải thuật quan trọng từng được dùng trong các nghiên cứu giải bài toán xếp lịch thi đã có Các bài toán tổng kết về các phương pháp xếp lịch thi khác nhau trên thế giới đã được viết bởi Carter, 1986 [8] và Carter
et al., 1996 [9] tóm tắt thành ba loại phương pháp chính:
(a) Heuristic xây dựng tuần tự (sequential construction heuristic)
(b) Lập trình ràng buộc (constraint programming)
(c) Tìm kiếm cục bộ (local search)
2.1 Phương pháp xây dựng tuần tự
Nhóm phương pháp này là các phương pháp ra đời sớm nhất để giải quyết bài toán xếp lịch thi trong trường học Theo những phương pháp này, các môn thi được gán tiết thi tuần tự từng môn một Tiêu biểu của nhóm này là giải thuật tô màu đồ thị
(graph vertex coloring) để giải bài toán xếp lịch thi Mỗi môn thi tương ứng với một
đỉnh của đồ thị và mỗi cạnh giữa hai đỉnh nếu những môn thi tương ứng có chung ít nhất một sinh viên Các giải thuật tô màu đồ thị thường được dùng đi kèm với một
số heuristic đặc biệt để có thể giải quyết vấn đề một cách hữu hiệu hơn Carter [8][7], Brelaz [3] đã tổng kết có so sánh về các heuristic này Một heuristic thông thường là chọn môn thi mà xung đột với nhiều môn thi khác nhất để xếp trước
Trang 17Nhược điểm chính của việc dùng giải thuật tô màu đồ thị để giải bài toán xếp lịch thi là giải thuật này khó thích ứng với lớp bài toán có khá nhiều ràng buộc
2.2 Lập trình ràng buộc
Dùng lập trình ràng buộc, thông qua ngôn ngữ lập trình logic có ràng buộc
(Constraint Logic Programming) hay dựa vào các giải thuật giải hệ ràng buộc [15]
có thể giải được bài toán xếp lịch thi Có thể kể đến công trình của Boizumault và các đồng sự, 1996 [1] xếp lịch thi cho trường đại học Catholique de l’Ouest ở Angres, Pháp Công trình này sử dụng ngôn ngữ lập trình logic có ràng buộc trên miền trị hữu hạn CHIP Nó có hai ưu điểm chính là thời gian phát triển chương trình khá nhanh, và dễ thích ứng với bài toán có nhiều ràng buộc Nhược điểm chính là
nó không thể giải quyết hữu hiệu đồng thời ràng buộc cứng và ràng buộc mềm, tức
là trường hợp tập ràng buộc là một hệ phân cấp có nhiều mức ràng buộc với những
độ ưu tiên khác nhau
P David, 1997 [10] đã sử dụng giải thuật giải hệ ràng buộc với kỹ thuật tu chỉnh lặp
(iterative repair) cho bài toán xếp lịch thi vấn đáp cho kỳ thi tuyển vào trường
Ecole des Mines de Nantes, Pháp Đây là một giải thuật không hoàn bị, có thể làm mất một số lời giải, nhưng giải thuật đáp ứng rất nhanh, thích hợp với những ứng dụng phải sinh ra thời biểu một cách trực tuyến
Bùi Bách Đăng và Nguyễn Tín Quang, 2003 [7] đã thực hiện xếp lịch thi học kỳ cho trường Đại Học Bách Khoa TP.HCM theo hướng tiếp cận lập trình ràng buộc, kết quả đã tỏ ra hữu hiệu khi sử dụng giải thuật backtracking có kiểm tra hướng tới với một số chiến thuật tăng độ hữu hiệu
2.3 Tìm kiếm cục bộ
Nhóm phương pháp này bao gồm: giải thuật di truyền (genetic algorithm), giải thuật
mô phỏng luyện kim (simulated annealing), và tabu search
Buke, Newall và Weare, 1996 xây dựng một giải thuật di truyền cho bài toán xếp
lịch thi học kỳ mà họ gọi là giải thuật memetic [6] Trong giải thuật này, một tập các
thời biểu ban đầu được tạo ra nhờ một kỹ thuật ngẫu nhiên Rồi các thời biểu được chọn một cách ngẫu nhiên từ tập này, chúng được gắn trọng số bởi giá trị mục tiêu
của chúng, và quá trình đột biến (mutation) được tiến hành bằng cách sắp xếp lại
Trang 18các môn thi được chọn một cách ngẫu nhiên hoặc tất cả môn thi trong một tiết được
chọn một cách ngẫu nhiên Cuối cùng một giai đoạn dùng giải thuật leo đồi (hill climbing) được áp dụng cho lịch biểu này để cải tiến chất lượng của nó Quá trình
như vậy tiếp diễn với một tập lịch biểu mới
Giải thuật mô phỏng luyện kim cũng là một kỹ thuật được dùng nhiều trong việc giải bài toán xếp lịch thi Thompson & Downsland, 1996 [19] dùng một cách tiếp cận gồm hai giai đoạn Trong giai đoạn 1, họ chỉ xét những ràng buộc quan trọng Giả sử có một lời giải khả thi tìm thấy, họ sẽ đưa vào ràng buộc thứ yếu để tối ưu hóa lời giải khả thi thành lời giải tối ưu Họ sử dụng các “Kempe chain” bao gồm
hai tập con các môn thi tại các tiết i và j mà tại đây hai tập gán có thể hoán đổi cho
nhau một cách hợp lệ Burke và các đồng sự, 2001 [4] đã đưa ra một giải thuật mô phỏng luyện kim để dùng cho bài toán xếp lịch thi mà trong đó thời gian tìm kiếm lời giải có thể được đưa vào như là một thông số nhập Họ gọi giải thuật này là giải
thuật mô phỏng luyện kim định trước thời gian chạy (time pre-defined simulated annealing)
Tabu search là một kỹ thuật tương tự như giải thuật mô phỏng luyện kim trong cách
sử dụng các bước chuyển lân cận để thoát ra khỏi điểm tối ưu cục bộ Tuy nhiên, giải thuật có cơ chế cho phép ghi nhận lại danh sách các bước đã di chuyển trước đó
và không cho phép sử dụng lại các bước chuyển này và giải thuật bắt buộc phải quay sang các lời giải khác Bên cạnh đó, tabu search còn có điều kiện kỳ vọng để cho phép sử dụng lại các bước chuyển trong danh sách bị cấm nếu nó thỏa mãn điều kiện kỳ vọng đã được chỉ ra
Boufflet & Negre, 1996 [2] đã áp dụng tabu search để giải bài toán xếp lịch thi cho trường Đại Học Kỹ Thuật Compiègne ở Pháp White & Zhang, 1997 [22] đã sử dụng giải thuật tabu search cho trường đại học Ottawa ở Canada, và tác giả đã khẳng định việc sử dụng riêng lẻ các giải thuật không cho lời giải tốt bằng phối hợp giải thuật tabu search và lập trình ràng buộc Di Gaspero & Schaerf, 2000 [12] đã dùng tabu search vào bài toán xếp lịch thi, tác giả đã đưa ra chiến thuật tandem gồm
2 giải thuật tabu search chạy luân phiên nhau để cho ra kết quả cuối cùng White & Xie, 2000 [23] tiếp tục thực hiện bài toán xếp lịch thi bằng một hệ thống 4 pha sử dụng giải thuật tabu search với tên gọi OTTABU và tác giả đã hiện thực cho kết quả tốt hơn mong đợi
Trang 19Ưu điểm chung của nhóm phương pháp tìm kiếm cụ bộ này là nếu chạy đủ lâu, giải thuật có thể đem lại lời giải tối ưu, nhưng nhược điểm chung của nhóm là chúng tốn thời gian chạy và kết quả thường tùy thuộc vào việc chọn những lời giải khởi đầu
2.4 Xu hướng mới
Ngoài ba nhóm phương pháp nói trên, một khuynh hướng gần đây là việc lai ghép nhiều phương pháp khác nhau để giải bài toán xếp lịch Cách tiếp cận này phát xuất
từ tư tưởng sử dụng các phương pháp luân phiên (tandem methods) để tăng cường
tính hiệu quả của từng giải thuật khác nhau trong từng trường hợp cụ thể Corne và Ross sử dụng lời giải ban đầu từ giải thuật peckish và sau đó là giải thuật tiến hóa hoặc leo đồi để tối ưu lời giải White & Zhang, 1997 [22] đã trình bày phương pháp lai ghép với lời giải ban đầu sử dụng lập trình ràng buộc, lời giải này được sử dụng làm đầu vào cho giải thuật tabu search để cho ra lời giải tối ưu Tác giả đã khẳng định việc sử dụng phương pháp lai ghép cho kết quả tốt hơn nhiều so với việc sử dụng từng giải thuật riêng lẻ Di Gaspero & Schaef, 2000 [12] đề nghị những hướng giải quyết mới dùng tabu search với chiến thuật tandem và dựa trên một số đặc điểm của bài toán tô màu đồ thị Theo Di Gaspero, chiến thuật tandem là cơ chế kết hợp hai kỹ thuật tìm kiếm cục bộ khác nhau và chạy luân phiên nhau để cùng hoàn thành lời giải, tác giả đã hiện thực sử dụng cả hai giải thuật tabu search với hai thông số khác nhau trên mỗi giải thuật
Merlot và các cộng sự, 2002 [17] đã trình bày phương pháp lai ghép bắt đầu bằng lập trình ràng buộc để cho ra lời giải khả thi khởi đầu, rồi sử dụng giải thuật mô phỏng luyện kim để hoàn thiện lời giải khả thi thành lời giải có chất lượng cao, và
sử dụng giải thuật leo đồi để tinh chỉnh hơn nữa cho lời giải tối ưu
Tuan-Anh Duong, Kim-Hoa Lam, 2004 [21] đã sử dụng phép lai ghép giữa lập trình ràng buộc và giải thuật mô phỏng luyện kim cho bài toán xếp lịch thi trường Đại Học Bách Khoa TP.HCM, các tác giả đã thành công trong việc kết hợp hai giải thuật để giải bài toán với số liệu thực khoảng 10.000 sinh viên, 320 môn thi
Khuynh hướng lai ghép này là nhằm kết hợp được thế mạnh của hai phương pháp khác nhau để có thể đối phó với cả hai loại ràng buộc cứng và mềm, và qua thực nghiệm cho thấy 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
Trang 202.5 Các vấn đề cần tập trung nghiên cứu trong đề tài
Theo các công trình đã công bố, nhận xét thấy có một số vấn đề mà đề tài cần tập trung nghiên cứu như sau:
- Đa số các công trình đều xem xét bài toán xếp lịch thi với các môn thi có số tiết bằng nhau, hoặc không xét đến số tiết thi mà cho số tiết thi bằng 1 và bằng luôn với tiết trong lịch thi Xem xét môn thi với số tiết khác nhau đòi hỏi giải thuật giải bài toán phải xem xét để môn thi phải được tổ chức sao cho tiết thi trọn vẹn trong một buổi sáng hoặc buổi chiểu và cùng một ngày
- Nhiều công trình chỉ quan tâm sắp xếp lịch thi cho một khoa cụ thể, nếu xem xét bài toán ở góc độ xếp lịch thi cho toàn trường thì phải xem xét sự xung đột giữa các môn thi trong cùng khoa và các môn thi không cùng khoa Các môn thi không cùng khoa sẽ ít xung đột nhau hơn, tuy nhiên vẫn có thể có sự xung đột khi mà một sinh viên có thể học cùng lúc 2 khoa trở lên, hoặc có thể một môn học cả có trên 2 khoa cùng học Giải thuật xắp xếp phòng thi cũng phải quan tâm đến điều này vì lúc đó tại một thời điểm có thể có nhiều môn cùng thi
- Vấn đề nhiều sinh viên của nhiều khoa cùng học thi một môn cũng phải được xem xét thêm, môn Anh Văn chẳng hạn, cần phải xếp lịch thi để giáo viên trực đề không phải đi chuyển quá nhiều để giải đáp thắc mắc liên quan đến
đề thi
- Xem xét để lịch thi có thể thi trong một khoảng thời gian từ 2 tuần trở nên cũng cần phải quan tâm, vì trong thực tế lịch thi cũng rất cần phải kéo dài theo tùy chọn của người xếp lịch
- Việc đa dạng hóa các giải thuật trong một chương trình xếp lịch thi cũng nên được quan tâm để người sử dụng có thể lựa chọn các giải thuật khác nhau tùy thuộc vào từng điều kiện cụ thể của yêu cầu xếp lịch thi
- Xu hướng lai ghép đã thể hiện tính hữu hiệu hơn là sử dụng từng giải thuật riêng biệt Nhưng việc đa dạng hóa lai ghép các giải thuật chưa thật sự đầy
đủ và mạnh mẽ, nhất là lai ghép giữa lập trình ràng buộc và tabu search
Trang 212.6 Phương hướng giải quyết bài toán
Phương hướng giải quyết bài toán xếp lịch thi học kỳ là phối hợp tìm kiếm tabu với một số tính chất của giải thuật tô màu đồ thị hoặc lập trình ràng buộc Sự phối hợp nhằm phát huy thế mạnh của mỗi phương pháp Công tác xếp lịch thi sẽ được chia làm hai giai đoạn:
1 Dùng giải thuật tô màu đồ thị hoặc lập trình ràng buộc (cụ thể là giải thuật backtracking có kiểm tra hướng tới) để tạo ra một lịch biểu khả thi
2 Dùng tabu search để cải thiện chất lượng của lịch biểu khả thi để đạt đến một lịch biểu xấp xỉ tối ưu
Giai đoạn 1 của phương pháp này nhằm đạt được một lịch biểu ban đầu, thỏa mãn tất cả những ràng buộc bắt buộc Trong một số trường hợp, lịch biểu này còn để lại một vài môn thi chưa được gán tiết
Giai đoạn 2 là nhằm cải thiện chất lượng của lịch biểu sinh ra từ giai đoạn 1 và cố gắng gắn tiết cho mọi môn thi, trong trường hợp có một vài môn thi vẫn chưa gán tiết Kỹ thuật tabu search sử dụng trong giai đoạn này chính là kỹ thuật tối ưu hóa,
mà nhằm tối ưu hóa dựa vào những mục tiêu thứ cấp Các mục tiêu thứ cấp được thể hiện bằng một hàm mục tiêu
Ghi chú: Chúng ta cũng có thể chỉ dùng đơn thuần tabu search để giải quyết bài toán xếp lịch thi, bằng cách áp dụng kỹ thuật này lên một lịch biểu ban đầu được chọn một cách ngẫu nhiên Nhưng các nghiên cứu trước đã cho thấy rằng làm như vậy không hữu hiệu vì việc tìm ra một lịch biểu khả thi trong nhiều trường hợp sẽ rất khó khăn, và tốn rất nhiều nỗ lực tìm kiếm
Trang 22Chương 3
CƠ SỞ LÝ THUYẾT
Trong những năm gần đây, lập trình ràng buộc và tìm kiếm cục bộ được rất nhiều nhà khoa học quan tâm nghiên cứu và đã áp dụng để giải quyết nhiều bài toán khó Lập trình ràng buộc đặc biệt thích hợp cho việc giải quyết các bài toán có nhiều mối liên hệ ràng buộc nhau trong lời giải Lập trình ràng buộc cũng là một tiếp cận tốt cho việc giải bài toán xếp lịch thi học kỳ Tìm kiếm cục bộ lại được nhiều nhà khoa học quan tâm để tối ưu các các bài toán khó, trong đó đặc biệt thích hợp để tối ưu bài toán xếp lịch thi học kỳ
Trong phần này, luận văn trình bày cơ sở lý thuyết về lập trình ràng buộc và tìm kiếm cục bộ, trong đó tập trung nghiên cứu kỹ giải thuật backtracking có kiểm tra hướng tới và giải thuật tabu search Cơ sở lý thuyết này là nền tảng để giải quyết phương pháp lai ghép mà đề tài đã đặt ra
3.1 Lập trình ràng buộc
Lập trình ràng buộc là một phương pháp giải quyết các bài toán dựa trên ràng buộc,
nó thuộc loại phương pháp lập trình mô tả tương tự như lập trình lôgic
Một bài toán giải hệ ràng buộc đưa ra các yêu cầu với một số biến hữu hạn và ràng buộc lẫn nhau Tập hợp giá trị cho các biến là hữu hạn Một ràng buộc chính là một
bộ giá trị được chấp nhận trong tập các giá trị của biến Mục đích chính của lập trình ràng buộc là tìm ra một sự gán các biến sao cho thỏa mãn tất cả các ràng buộc Bài toán giải hệ ràng buộc được định nghĩa là một bộ ba P = (V, D, C), trong đó:
- V = {v1, , vn} là tập hợp các biến Biến là đại lượng cần gán trị
- D = {D1, , Dn} là tập hợp các miền trị Mỗi miền trị là tập hợp hữu hạn các giá trị có thể chấp nhận cho các biến tương ứng
Trang 23- C = {c1, , cm} là tập hợp các ràng buộc Mỗi ràng buộc ci là một quan hệ được định nghĩa trên tập hợp con các biến và nó giới hạn khả năng lựa chọn giá trị cho biến
Lời giải của bài toán giải hệ ràng buộc là các phép gán trị cho tất cả các biến sao cho chúng thỏa mãn tất cả các ràng buộc
Chẳng hạn, nếu xem bài toán xếp lịch thi học kỳ là một hệ ràng buộc thì ta có:
- Biến là các môn thi, phòng thi
- Miền trị là các tiết trong lịch thi, tùy vào từng biến sẽ có miền trị khác nhau tương ứng
- Ràng buộc là các điều kiện phải thỏa mãn cho việc sắp xếp lịch thi
- Lời giải là lịch thi bao gồm một bộ giá trị cho tất cả các biến sao cho chúng thỏa mãn tất cả các ràng buộc
Bài toán giải hệ ràng buộc có thể là bài toán thỏa mãn ràng buộc hoặc bài toán tối
ưu hóa các ràng buộc Các ràng buộc trong bài toán thỏa mãn ràng buộc, vì bắt buộc
phải thỏa mãn nên gọi là ràng buộc cứng (hard constraint) Còn các ràng buộc
không bắt buộc phải thỏa mãn như trong bài toán tối ưu mà chỉ làm tối ưu hàm chi
phí nên được gọi là ràng buộc mềm (soft constraint)
Tất cả các bài toán CSP đều là bài toán NP-complete
Ví dụ: Bài toán giải hệ ràng buộc gồm 3 biến C, D, E có các giá trị nằm trong tập trị {1, 2, 3, 4} Tìm các giá trị thỏa mãn các ràng buộc: C<D, C<E, và D<E
Trong bài toán này:
Trang 24Hình 3.1: Ví dụ về bài toán giải hệ ràng buộc
3.1.1 Phân loại các bài toán giải hệ ràng buộc
Có thể chia các hệ ràng buộc thành 2 loại bài toán giải hệ ràng buộc chính:
- Bài toán thỏa mãn ràng buộc (satisfiability problem): với mục đích tìm ra
một phép gán trị cho tất cả các biến nhằm thỏa mãn tất cả các ràng buộc
- Bài toán tối ưu (optimization problem): với mục đích tìm ra một phép gán trị
theo một hàm chi phí hay giá trị mục tiêu, trong đó làm sao giảm thiểu nhất hàm chi phí hay nâng lên cao nhất giá trị mục tiêu Điều này còn được gọi là phép gán tối ưu
3.1.2 Phân loại các ràng buộc
Có nhiều tiêu chuẩn để phân loại các ràng buộc như sau:
Phân loại theo tính chất quan trọng của ràng buộc:
- Ràng buộc cứng (hard constraint): là loại ràng buộc tuyệt đối không được vi
phạm
Ví dụ: Một sinh viên không được tham dự nhiều môn thi trong cùng một thời điểm
Trang 25- Ràng buộc mềm (soft constraint): là loại ràng buộc có thể được vi phạm,
nhưng vi phạm càng ít càng tốt Lý tưởng là không nên vi phạm
Ví dụ: Lịch thi của các môn không nên quá dày đối với các sinh viên, mỗi sinh viên chỉ nên thi tối đa một môn thi trong một buổi
Nhận xét: Nếu ràng buộc quá cứng, bài toán có thể không giải được, để bài toán có thể có lời giải cần phải nới lỏng ràng buộc bằng các cách sau:
- Bỏ bớt ràng buộc
- Bỏ bớt biến
- Mở rộng miền trị của các biến
Phân loại theo không gian miền trị:
- Miền trị hữu hạn Ví dụ: A là số tự nhiên, có giá trị từ 1 đến 9
- Miền trị vô hạn Ví dụ: B là số thực
Nhận xét: Bài toán xếp lịch thi học kỳ thuộc miền trị hữu hạn, trong đó các môn là các biến, miền trị của các môn là tập các tiết thi
Phân loại theo ràng buộc:
- Ràng buộc đơn biến Ví dụ: A>0
- Ràng buộc song biến Ví dụ: A>B
- Ràng buộc đa biến Ví dụ: Hệ phương trình n biến
Nhận xét: Mọi ràng buộc n biến đều có thể chuyển thành các ràng buộc song biến
Do đó ràng buộc song biến được nghiên cứu và sử dụng nhiều nhất
Phân loại theo số biến:
- Số biến thay đổi Ví dụ: Bài toán tìm đường có số biến không xác định trước
- Số biến cố định Ví dụ: Bài toán xếp lịch thi học kỳ có số biến cố định là số môn thi cần phải xếp lịch thi
3.1.3 Các ứng dụng của lập trình ràng buộc
Bài toán giải hệ ràng buộc được sử dụng để giải rất nhiều bài toán trong thực tế và giải quyết các bài toán trong ngành trí tuệ nhân tạo Một vài ứng dụng như:
Trang 26- Giải các bài toán lập kế hoạch, xếp lịch công tác, xếp thời khóa biểu, xếp lịch bay, xếp lịch học tập, lịch thi học kỳ
- Giải các bài toán tìm đường, bài toán người bán hàng rong
- Xử lý ngôn ngữ tự nhiên
- Bài toán tô màu bản đồ
- Chẩn đoán mạch điện tử
- Giải các bài toán về máy học, suy luận thời gian
3.2 Các giải thuật giải hệ ràng buộc
Một bài toán giải hệ ràng buộc có thể được giải bằng một trong hai hướng sau:
- Tìm kiếm có hệ thống (systematic search) là lần lượt gán từng giá trị cho
từng biến sao cho tất cả các biến đều có giá trị và tất cả ràng buộc đều được thỏa mãn Mục đích của phương pháp này là tìm cách gán tất các các giá trị
có thể cho biến
- Tìm kiếm bất hệ thống (non-systematic search) là từ một lời giải ban đầu,
giải thuật tìm đến một lời giải láng giềng tốt hơn, hoặc một lời giải láng giềng có thể chấp nhận được, việc tìm kiếm tiếp tục cho đến khi đạt được lời giải tối ưu hoặc gặp một điều kiện dừng nào đó
Các giải thuật cơ bản có thể giải quyết được bài toán giải hệ ràng buộc:
- Giải thuật sinh và thử (generate-and-test algorithm)
- Giải thuật hồi quy cơ bản (standard backtracking algorithm)
- Giải thuật hồi quy có kiểm tra hướng tới (backtracking algorithm with ahead)
look Giải thuật tô màu đồ thị (graphic coloring)
3.2.1 Giải thuật sinh và thử
Giải thuật sinh và thử sẽ lần lượt xem xét tất cả các lời giải được sinh ra Lời giải cuối cùng là lời giải thỏa mãn tất cả các ràng buộc của bài toán Vì giải thuật xem xét mọi lời giải nên giải thuật sinh và thử còn được gọi là giải thuật vét cạn, và theo
lý thuyết mọi bài toán đều có thể giải quyết bằng giải thuật này
Trang 27Giải thuật sinh và thử được thực hiện qua 3 bước sau:
1 Sinh ra một lời giải có thể
2 So sánh lời giải với điều kiện phải thỏa mãn của bài toán
3 Nếu nó là lời giải cần tìm thì giải thuật thành công; nếu không, quay lại bước 1 Với cách thực hiện này, không gian tìm kiếm lời giải là rất lớn và nó chính là tích Cartesian của các tập hợp miền trị của tất cả các biến: D = Dv1 x Dv2 x x Dvn
Nếu kích thước của miền trị là d, thì |D| = d n và nếu có e ràng buộc thì tổng số lượt phải xem xét là O(edn) Khi n càng lớn thì giải thuật sẽ chạy rất lâu
3.2.2 Giải thuật backtracking căn bản
Giải thuật backtraking cơ bản
while D i ’ is not empty
select an arbitrary element a є D ’ and remove a from D i
if value a for v i is consistent with <a 1 , , a i > then i’
Trang 28Một giải thuật căn bản để giải các bài toán giải hệ ràng buộc trên miền trị hữu hạn là giải thuật backtracking hay còn gọi là giải thuật tree search Điểm căn bản của giải thuật này là các biến được sắp theo một thứ tự nào đấy, sau đó lần lượt được gán trị Trong quá trình này, mỗi biến được kiểm tra xem có vi phạm ràng buộc với những biến đã gán hay không Nếu một ràng buộc nào đó không thỏa mãn, ta phải chọn trị khác cho biến hiện hành Nếu tất cả các giá trị trong miền trị của biến hiện hành đều
vi phạm ràng buộc, giải thuật gặp phải một tình huống bế tắc (dead-end) phải quay
lui về biến trước đó Giải thuật backtracking căn bản được trình bày ở Hình 3.2:
3.2.3 Giải thuật backtracking có kiểm tra hướng tới
Giải thuật backtracking căn bản có một nhược điểm chính là bị thrashing, tức là dò tìm trên những nhánh khác nhau của không gian tìm kiếm thì có thể lặp lại cùng một thất bại cũ Do vậy nhiều nỗ lực để cải thiện giải thuật backtracking đã được đề
ra
Theo Decter và Frost, 2002 [11], các kỹ thuật để cải tiến giải thuật backtracking căn bản bao gồm hai loại:
- Các kỹ thuật nhìn tới (look-ahead)
- Các kỹ thuật nhìn lui (look-back)
Các kỹ thuật nhìn tới được dùng khi giải thuật backtracking chuẩn bị gán trị cho biến kế tiếp Các kỹ thuật nhìn lui được dùng khi giải thuật backtracking gặp phải một tình huống bế tắc phải quay lui lại biến trước đó
Các kỹ thuật nhìn tới thường được ưu chuộng hơn các giải thuật nhìn lui vì dễ kết hợp với các kỹ thuật sắp thứ tự biến và sắp thứ tự trị Các giải thuật nhìn tới thường
phối hợp giải thuật backtracking với một kỹ thuật tương thích (consistency technique) hay còn gọi là kỹ thuật lọc (filtering) để tiền xử lý các miền trị dựa vào
sự lan truyền ràng buộc
Có nhiều cách phối hợp giữa giải thuật backtracking với kỹ thuật tương thích Một giải thuật căn bản trong nhóm này được gọi là giải thuật backtracking với kiểm tra
hướng tới (backtracking with forward checking) Giải thuật này có thể được coi như
là ta bổ sung vào giải thuật backtracking căn bản động tác loại ra khỏi miền trị của các biến chưa được gán trị tất cả những trị nào không tương thích với sự gán trị hiện hành
Trang 29Giải thuật backtracking với kiểm tra hướng tới được trình bày trong Hình 3.3:
Giải thuật backtraking có kiểm tra hướng tới
while D i ’ is not empty
select an arbitrary element a є D i ’ and remove a from D i ’ ty_domain := false
emp
for all k, i < k ≤ n
for all values b in D k ’
if value b for v k is not consistent with a
<
then
1 , , a i-1 > and v i =a move b from D
re end for
Hình 3.3: Giải thuật backtracking có kiểm tra hướng tới
Giải thuật này dự định sẽ được chọn sử dụng để tạo ra một lời giải ban đầu cho lịch thi học kỳ
Trang 303.2.4 Giải thuật tô màu đồ thị
Bài toán tô màu đồ thị là một trong các bài toán thuộc lớp NP-complete: cho một đồ
thị vô hướng G=(V, E) với tập đỉnh V={v1,…, vn} và tập cạnh E={e1,…em}, hãy tìm
số màu tối thiểu c1, , ck để tô tất cả các đỉnh sao cho 2 đỉnh có cạnh nối không trùng
màu với nhau
Bài toán tô màu đồ thị cũng được biểu diễn về dạng bài toán lập trình ràng buộc bằng cách ánh xạ tập các đỉnh thành tập các biến, tập các màu thành tập miền trị của biến và tập các cạnh là tập các ràng buộc Với ánh xạ này, có thể sử dụng các chiến lược giải quyết bài toán lập trình ràng buộc để giải bài toán tô màu đồ thị
Ví dụ: Bài toán tô màu đồ thị như sau: có 4 vùng được tô bằng 3 màu đỏ, xanh và vàng, sao cho các vùng giáp nhau phải được tô bằng các màu khác nhau
Bài toán này tương đương với một bài toán lập trình ràng buộc:
Tập biến là 4 vùng cần tô màu {V1, V2, V3, V4}
Miền trị của mỗi biến là 1 tập các màu
Trang 31Nếu áp dụng bài toán tô màu đồ thị để để tìm lời giải cho lịch thi học kỳ cần có phép ánh xạ cho mỗi môn thi tương ứng với một đỉnh của đồ thị và mỗi cạnh giữa hai đỉnh nếu những môn thi tương ứng có chung ít nhất một sinh viên Giải thuật này cũng có thể được sử dụng để tìm lời giải khả thi ban đầu cho phương pháp lai ghép
Giải thuật tô màu đồ thị được Burke E và các cộng sự [5] trình bày trong Hình 3.5
Giải thuật tô màu đồ thị
Đầu vào: đồ thị G
1 Gán j:=1, H:=G
2 Gọi v j là đỉnh có bậc lớn nhất của H, số bậc của một đỉnh là số cạnh nối với đỉnh đó
3 Tìm đỉnh x i liền kề với đỉnh v j, 2 đỉnh liền kề là 2 đỉnh chỉ cách bởi 1 đỉnh trung gian
Nếu không tồn tại đỉnh nào thì chọn đỉnh có bậc lớn nhất không liền kề với v j
4 Hợp v j và x i vào v j, và lặp lại bước 3 cho tới khi không chọn được một đỉnh nào
khác nữa để tiếp tục thì bắt đầu trở lại bước 2 với H := H – {v j}, j := j + 1
5 Khi không còn đỉnh nào hết thì ngừng và màu của tất cả các đỉnh đã được hợp vào
v i (1 ≤ i ≤ j) với j màu cho đồ thị G
Hình 3.5: Giải thuật tô màu đồ thị
Một kỹ thuật tìm kiếm cục bộ bắt đầu từ một lời giải ban đầu s0 (có thể được hình
thành từ một vài kỹ thuật nào đó hoặc được sinh ra ngẫu nhiên), được đưa vào một vòng lặp để di chuyển trên không gian tìm kiếm, các bước lặp sẽ đi từ một lời giải hiện tại đến một lời giải trong các lời giải láng giềng Đó được gọi là sự di chuyển trong không gian tìm kiếm
Trang 32Trong các kỹ thuật tìm kiếm cục bộ, kỹ thuật tìm kiếm tốt nhất đòi hỏi phải di chuyển và chọn ra một lời giải tốt nhất, khi đó nó chỉ di chuyển khi việc di chuyển đem mang lại kết quả hàm mục tiêu tốt hơn và chỉ dừng lại khi đạt được việc tối thiểu hóa hàm mục tiêu Nếu làm theo kỹ thuật này cần thiết phải di chuyển trên toàn bộ tập lời giải láng giềng để có thể đạt được yêu cầu đặt ra
Cũng có thể sử dụng kỹ thuật khác là chọn lời giải ngẫu nhiên trong tập lời giải láng giềng và chấp nhận lời giải đó khi nó tốt hơn lời giải hiện tại Nhiều khả năng, nó sẽ dừng lại sau một vài bước lặp mà không đưa ra được giá trị tốt hơn cho hàm mục tiêu Kỹ thuật này bị bẫy và rơi vào giá trị tối ưu cục bộ
Hiện nay có các kỹ thuật tìm kiếm cục bộ tiêu biểu như:
- Giải thuật leo đồi (hill climbing algorithm)
- Giải thuật di truyền (generic algorithm)
- Giải thuật mô phỏng luyện kim (simulated annealing algorithm)
- Giải thuật tabu search
3.4 Các giải thuật tìm kiếm cục bộ
3.4.1 Giải thuật leo đồi
Giải thuật leo đồi (hill climbing algorithm) dùng kỹ thuật lặp và áp dụng cho một
lời giải duy nhất trong không gian tìm kiếm Trong mỗi bước lặp, một lời giải láng giềng của lời giải hiện hành được chọn xem xét (vì thế giải thuật leo đồi còn được gọi là giải thuật tìm kiếm lân cận hay tìm kiếm cục bộ) Nếu lời giải mới cho giá trị của hàm mục tiêu tốt hơn, lời giải mới được chọn và trở thành lời giải hiện hành Nếu không thì một lời giải láng giềng khác sẽ được chọn và thử Quá trình trên sẽ dừng nếu không cải thiện thêm được cho lời giải hiện hành
Nhận thấy, giải thuật leo đồi chỉ cung cấp các giá trị tối ưu cục bộ và những giá trị này phụ thuộc rất nhiều vào điểm khởi đầu
Đề tăng độ thành công, giải thuật leo đồi thường được thực hiện nhiều lần, mỗi lần với một lời giải khởi đầu khác nhau (những lời giải này không cần chọn ngẫu nhiên – một tập lời giải khởi đầu của một lần thực thi phụ thuộc vào kết quả của những lần chạy trước đó)
Trang 333.4.2 Giải thuật di truyền
Giải thuật di truyền (genetic algorithm) được mô phỏng theo thuyết tiến hóa của
Darwin Các lời giải được tìm ra theo cơ chế hoạt động của sự chọn lọc tự nhiên và các quy luật của di truyền học
Giải thuật di truyền bắt đầu với một tập lời giải (được biểu diễn bằng nhiễm sắc thể) được gọi là quần thể Giải thuật sẽ cho tiến hóa quần thể này thành một quần thể mới − tức là tạo ra một thế hệ mới − bằng ba phép toán: chọn lọc, lai ghép và đột biến Các lời giải trong quần thể mới tiếp tục được sinh sôi nảy nở với hy vọng rằng quần thể mới tốt hơn quần thể cũ Các lời giải được chọn sau đó để hình thành các lời giải con tùy thuộc vào độ thích nghi của chúng, nghĩa là chúng có phù hợp để tiếp tục sinh sôi nảy nở hay không
Quá trình này được lặp lại cho đến một điều kiện nhất định nào đó được thỏa mãn hoặc là khi tìm thấy được lời giải thích hợp nhất
Phép chọn lọc
- Phép chọn lọc chọn ra những cá thể tùy theo độ thích nghi của nó
- Độ thích nghi của cá thể càng cao thì khả năng cá thể ấy truyền sang thế hệ sau càng lớn
- Phép đột biến cho phép ta đưa thêm thông tin vào quần thể, làm cho chất liệu
di truyền phong phú thêm
Thuật giải di truyền
Cho P(t) một quần thể có N cá thể, được khởi tạo ngẫu nhiên ban đầu (lúc t=0)
Trang 34 Độ thích nghi của tất cả các cá thể được tính dựa trên hàm mục tiêu;
Độ thích nghi là một số thực dương, giá trị càng lớn cá thể càng tốt
Một tập các phép toán di truyền thường được dùng là:
Hình 3.6: Giải thuật di truyền
3.4.3 Giải thuật mô phỏng mô phỏng luyện kim
Mô phỏng luyện kim (Simulated Annealing) là một kỹ thuật tối ưu hóa được đề xuất
bởi S Kirkpatrick và các cộng sự vào năm 1983 Đây là một kỹ thuật tìm kiếm cục
bộ cho phép tìm thấy các lời giải theo các bước di chuyển theo kiểu cách có kiểm soát
Trang 35Kỹ thuật mô phỏng luyện kim mô phỏng việc nung nóng kim loại trong lò nhiệt rồi cho nó nguội dần đi Ngành luyện kim gọi quá trình này là quá trình u, tôi hoặc thấu
(annealing) Kim loại sau khi trải qua quá trình này sẽ có các tính chất tốt hơn
chẳng hạn như tôi thép sẽ cứng hơn nhưng ít dòn hơn so với sắt ban đầu rất nhiều Khi thực hiện quá trình luyện kim, người ta lợi dụng ngưỡng nhiệt độ của kim loại, làm cho kim loại vượt qua ngưỡng này, sau đó cho nó nguội dần đi cho đến khi đạt được trạng thái ổn định Tốc độ của việc làm nguội sẽ ảnh hưởng đến chất lượng của kim loại sau này Và chính vì lẽ đó kỹ thuật này được mô phỏng để tìm lời giải khả thi và hội tụ về lời giải tối ưu
Giải thuật mô phỏng luyện kim
Chọn lời giải ban đầu s 0 ;
Chọn nhiệt độ khởi đầu t 0 > 0;
Chọn hàm thu giảm nhiệt độ α
repeat
repeat
Chọn ngẫu nhiên s ∈ N(s 0 ) /* s là lời giải láng giềng của s 0 */
δ = f(s) – f(s 0 ); /* tính sự thay đổi của hàm chi phí */
until điều_kiện_dừng = true
/* cuối cùng s 0 là một lời giải gần như là lời giải tối ưu */
Hình 3.7: Giải thuật mô phỏng luyện kim
Để có thể áp dụng được giải thuật mô phỏng luyện kim ta phải diễn tả bài toán trong khung thức của sự tìm kiếm cục bộ, bằng cách định nghĩa:
- Một không gian lời giải (solution space)
- Một cơ cấu xác định vùng lân cận (neighbourhood structure)
Trang 36- Một hàm chi phí (cost function)
Định nghĩa này sẽ xác định một quang cảnh lời giải mà có thể dò tìm bằng cách di chuyển từ lời giải hiện hành sang lời giải lân cận Hình 3.7 trình bày cấu trúc tổng quát của giải thuật căn bản của giải thuật mô phỏng luyện kim
Các bước di chuyển dự tuyển được chọn một cách ngẫu nhiên và tất cả những bước
di chuyển có cải thiện đều được chấp nhận một cách tự động Còn các bước di
chuyển khác được chấp nhận với một xác suất exp(-δ/t), với δ là mức thay đổi ở
hàm chi phí và t là một thông số điều khiển
3.5 Giải thuật tabu search
Tabu search là một kỹ thuật tìm kiếm cục bộ được thiết kế để giải quyết các vấn đề tối ưu hóa, nó được sử dụng để hướng dẫn các phương pháp khác thoát khỏi cạm bẫy của sự tối ưu hóa cục bộ Tabu search dựa vào chính bài toán mà nó đang giải quyết để tăng cường chất lượng lời giải bằng cách kết hợp cách thức sử dụng bộ nhớ một cách uyển chuyển và sử dụng lại thông tin về lời giải đã viếng thăm trước
đó
Theo Hertz A, Taillard E., de Werra D., 1995 [14] giải thuật tabu search được đề nghị đầu tiên bởi Glover từ năm 1986 Các ý tưởng cơ bản của tabu search được phát thảo bởi Hansen, và sau đó là các nỗ lực để hình thức hóa giải thuật được Glover, de Werra & Hertz báo cáo Và thời gian gần đây, khía cạnh lý thuyết của tabu search đang được tiếp tục nghiên cứu bởi Faigle & Kern, Glover, Fox
3.5.1 Tổng quan về tabu search
Schaerf A 1996 [18] tóm lượt giải thuật tabu search như sau: giải thuật tabu search
bắt đầu bằng một lời giải khởi đầu so, giải thuật tabu search dò tìm tập lời giải V là tập con của tập lời giải láng giềng N(si) của lời giải si, các lời giải trong tập V thỏa
mãn một vài tiêu chí đặt ra Lời giải có giá trị của hàm mục tiêu nhỏ nhất trong tập
V sẽ trở thành lời giải kế tiếp si+1, nó không phụ thuộc vào các giá trị của hàm mục tiêu tốt hơn hay xấu hơn so với lời giải si
Để ngăn chặn tình huống lặp vòng, giải thuật sẽ sử dụng danh sách tabu là danh sách các bước cấm di chuyển Danh sách này gồm k bước di chuyển trước đó (k có
thể là tham số cho giải thuật) và nó được xây dựng như một hàng đợi có kích thước
Trang 37cố định, nghĩa là khi tabu search đi đến bước di chuyển mới thì bước di chuyển này được thêm vào hàng đợi và bước di chuyển cũ nhất sẽ được bỏ đi
Có một cơ chế khác thay thế lời giải của tabu search như sau: nếu một lời giải có sự cải tiến lớn hàm mục tiêu, thì lời giải tabu search hiện hành bị bỏ đi và lời giải tốt hơn được chấp nhận thay cho lời giải cũ bất chấp lời giải đó đã nằm trong danh sách
cấm hay không Chính xác hơn, chúng ta định nghĩa hàm kỳ vọng A (aspiration function) trong đó với mỗi giá trị v của hàm mục tiêu, nó trả về một giá trị v’ là giá trị kỳ vọng của giải thuật cần đạt được Cho một lời giải hiện tại s, hàm mục tiêu f,
và lời giải kế s’ thông qua bước chuyển m, nếu f(s’) ≤ A(f(s)) thì s’ có thể được chấp nhận, ngay cả khi bước chuyể m tồn tại trong danh sách tabu
Điều kiện dừng của tabu search là sau một số lần lặp cho trước, hoặc khi giá trị của hàm mục tiêu của lời giải hiện tại đạt đến giá trị cho trước, hoặc sau một số lần lặp
mà nó không thể tiếp tục cải thiện lời giải
Các tham số điều khiển chính yếu của giải thuật là chiều dài k của danh sách tabu, hàm kỳ vọng A, tập lời giải V của các lời giải láng giềng được kiểm tra trong mỗi
bước lặp, và số lần lặp lớn nhất cho giải thuật tabu search
3.5.2 Giải thuật tabu search
TABU-SEARCH
Bước 1 Chọn một lời giải khởi đầu i trong tập lời giải S Gán i* = i và k = 0
Bước 2 Gán k=k+1 và sinh ra V* là tập con của tập lời giải láng giềng N(i,k), trong đó bước di chuyển m áp dụng cho lời giải i
hoặc không vi phạm một trong các điều kiện tabu t r (i,m) ∈ T r với (r=1,…t)
hoặc thỏa mãn một trong các điều kiện kỳ vọng a r (i,m) ∈ A r (i,m) với (r=1,…,a)
Lưu ý:
N(i,k) là tập các lời giải láng giềng trừ đi các lời giải trong danh sách tabu
Nếu gọi N(i) là tập các lời giải láng giềng,
T là tập các lời giải trong danh sách tabu, thì N(i,k) = N(i) – T
Bước 3 Chọn lời giải tốt nhất j trong V* dựa vào hàm mục tiêu f
hoặc hàm mục tiêu điều chỉnh f’, và gán i = j
Bước 4 Nếu f(i) < f(i*) thì gán i* = i
Bước 5 Cập nhật các điều kiện tabu và các điều kiện kỳ vọng
Bước 6 Nếu một điều kiện dừng thỏa mãn thì kết thúc
Ngược lại thì trở lại bước 2.
Hình 3.8: Giải thuât tabu search
Trang 38Giải thuật tabu search được Hertz A., Taillard E., de Werra D., 1995 [14] trình bày trong Hình 3.8 Theo giải thuật này, điểm nhấn mạnh nhất là cách thức chọn tập lời
giải V*, nó chính là tập lời giải láng giềng nhưng chịu sự điều khiển bởi các điều kiện tabu tr và các điều kiện kỳ vọng ar Nhờ vào sự chi phối của hai điều kiện này
mà tập lời giải V* được chọn lọc để trở thành tập lời giải có chất lượng tốt hơn tập
lời giải láng giềng
Hình 3.9: Lưu đồ giải thuật tabu search
Trang 39Giải thuật tabu search được White G.M and Zhang J., 1997 [22] trình bày theo dạng lưu đồ trong Hình 3.9 Lưu đồ giải thuật này nhấn mạnh hai vấn đề cơ bản của tabu search là danh sách tabu và tiêu chuẩn kỳ vọng Tập lời giải V* được chọn lọc nhờ danh sach tabu và tiêu chuẩn kỳ vọng Trong quá trình lặp để tìm lời giải tối ưu, danh sách tabu và tiêu chuẩn kỳ vọng được cập nhật để cho kết quả tốt nhất có thể được Lưu đồ giải thuật này sử dụng so là lời giải tốt nhất trong suốt quá trình tìm kiếm, và s* là lời giải tốt nhất trong một vòng lặp Khi tìm thấy lời giải nào tốt hơn lời giải so thì lời giải tốt nhất so này sẽ được cập nhật lại
3.5.3 Các thành phần chính của tabu search
Lời giải ban đầu
Các phương pháp tìm kiếm cục bộ thường phải chọn một lời giải ban đầu làm điểm xuất phát để khám phá không gian lời giải Đối với một vài phương pháp, lời giải ban đầu có thể làm ảnh hưởng đến chất lượng và thời gian tìm lời giải tối ưu cuối cùng Có hai cách chọn lời gian ban đầu đó là: chọn lời giải ngẫu nhiên ban đầu và chọn lời giải là kết quả của một giải thuật đơn giản trước đó
Đề tài này chọn lời giải ban đầu là kết quả của giải thuật backtracking có kiểm tra hướng tới, và thử nghiệm chất lượng lời giải của giải thuật tabu search với các lời giải ban đầu có chất lượng khác nhau
Hàm chi phí
Hàm chi phí được sử dụng để đánh giá một lời giải trong tìm kiếm cục bộ Hàm chi phí thường được định nghĩa dựa trên sự vi phạm của các thuộc tính xây dựng nên lời giải Việc định nghĩa hàm chi phí là rất quan trọng trong việc so sánh và chọn lựa lời giải có tốt hơn hay không Hàm chi phí còn tùy thuộc vào mức độ và yêu cầu tối ưu của từng bài toán cụ thể
Bước chuyển
Trong tìm kiếm cục bộ, bước chuyển là cách thức thay đổi lời giải hiện hành để đi đến lời giải kế tiếp Cách định nghĩa bước chuyển thông thường dựa vào sự thay đổi các thuộc tính xây dựng nên lời giải, vì khi thay đổi một trong các thuộc tính này sẽ xây dựng nên một lời giải mới Tùy thuộc vào từng bài toán cụ thể mà định nghĩa
Trang 40bước chuyển cho phù hợp sao cho chúng di chuyển và khám phá tốt nhất không gian lời giải
Lời giải láng giềng
Lời giải láng giềng được quy định bởi bước chuyển trong không gian lời giải, việc thay đổi các thuộc tính của lời giải hiện hành theo bước chuyển đã định nghĩa sẽ hình thành nên tập lời giải láng giềng
Trong tabu search, lời giải láng giềng được chọn để xem xét được chọn lọc bằng danh sách tabu và tiêu chuẩn kỳ vọng Nghĩa là tabu search chỉ xem xét các lời giải láng giềng nào không bị cấm bởi danh sách tabu hoặc phải thỏa mãn tiêu chuẩn kỳ vọng
Danh sách tabu
Danh sách tabu là danh sách được sử dụng để giới hạn sự di chuyển trong không gian lời giải của giải thuật tabu search Danh sách tabu là yếu tố quan trọng nhất trong tabu search được sử dụng như là công cụ để điều chỉnh chất lượng lời giải, giúp thoát khỏi tối ưu cục bộ và tìm thấy các lời giải có chất lượng tốt hơn
Kỹ thuật sử dụng danh sách tabu giúp tránh được vòng lặp
Danh sách tabu thường được xây dựng dựa trên các yếu tố:
− Nội dung trong danh sách tabu
− Chiều dài danh sách tabu
− Thời gian xuất hiện
− Số lần lặp lại
Nội dung của danh sách tabu thường là một trạng thái của bước chuyển hoặc một thuộc tính của lời giải trong không gian tìm kiếm Thuộc tính được ghi nhận trong danh sách tabu còn được gọi là thuộc tính tabu