Ngoài ra luận văn còn nghiên cứu vận dụng một số kỹ thuật tăng độ hữu hiệu của giải thuật mô phỏng luyện kim như cơ chế “Kempe chain” để tìm lời giải láng giềng, cơ chế xác định nhiệt độ
Trang 1Đại Học Quốc Gia Tp Hồ Chí Minh TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
LÂM KIM HÒA
XẾP LỊCH THI HỌC KỲ BẰNG CÁCH KẾT HỢP LẬP TRÌNH RÀNG BUỘC VÀ GIẢI THUẬT MÔ PHỎNG LUYỆN KIM
(Generating University Examination Timetables by Combining
Constraint Programming and Simulated Annealing)
Chuyên ngành : Công nghệ thông tin Mã số ngành : 01.02.10
LUẬN VĂN THẠC SĨ
Trang 2Mục Lục
Lời cảm ơn i
Tóm tắt ii
Mục lục iv
Danh mục hình vi
Danh mục bảng viii
Chương 1 - Giới Thiệu 1.1 - Mục Tiêu Nghiên Cứu 1
1.2 - Giới Thiệu Nhiệm Vụ Của Bài Toán 1
1.2.1 Mục Đích Của Chương Trình Xếp Lịch Thi 2
1.2.2 Các Yêu Cầu Đặt Ra 2
1.3 - Những Kết Quả Chính của Luận văn 4
1.4 - Sơ Lược Cấu Trúc Luận Văn 4
Chương 2 - Các Công Trình Liên Quan 2.1 - Các Nghiên Cứu Liên Quan 6
2.1.1 Phương Pháp Xây Dựng Tuần Tự 6
2.1.2 Lập Trình Ràng Buộc 7
2.1.3 Tìm Kiếm Cục Bộ 7
2.2 - Các Công Trình Liên Quan Về Giải Thuật Mô phỏng luyện kim 8
2.3 - Phương Hướng Giải Quyết Bài Toán 11
Chương 3 - Cơ Sở Lý Thuyết và Phương Pháp 3.1 - Giới Thiệu 13
3.2 - Lập Trình Ràng Buộc 13
3.2.1 Các Ưùng Dụng của Lập Trình Ràng Buộc 16
3.2.2 Phân Loại Các Bài Toán Giải Hệ Ràng Buộc 16
3.2.3 Các Tiêu Chuẩn để Phân Loại Ràng Buộc 17
3.2.4 Một Số Giải Thuật giải Bài Toán Hệ Ràng Buộc 18
3.3 - Mô Phỏng Luyện Kim 23
3.3.1 Giới Thiệu 13
3.3.2 So Sánh Mô Phỏng Luyện Kim và Hill-Climbing 23
3.3.3 Tiêu Chuẩn Để Chấp Nhận 24
Trang 33.3.8 Aùp Dụng 33
3.3.9 Điều Kiện Dừng 34
3.3.10 Hàm Thu Giảm Nhiệt Độ 35
3.2.11 Kỹ Thuật Xác Định Trước Thời Gian Chạy 37
3.2.12 Số Lần Lặp Lại Ơû Mỗi Nhiệt Độ 38
3.2.13 Các Vấn Đề Chuyên Biệt Khác 40
3.4 - Kết Luận 42
Chương 4 - Xây Dựng Chương Trình Giải Quyết Bài Toán Xếp Lịch
Thi 4.1 - Giới Thiệu 43
4.2 - Mô Tả Bài Toán 43
4.2.1 Nhiệm Vu ï Của Chương Trình Xếp Lịch Thi 44
4.2.2 Các Đặc Điểm của Trường và Các Yêu Cầu của Bài Toánï 44
4.3 - Hiện Thực Chương Trình 46
4.3.1 Tìm Lời Giải Khả Thi Ban Đầu 46
4.3.2 D ùng Giải Thuật Mô Phỏng Luyện Kim để Cải Tiến Lời Giải 60
4.3.3 Xác Định Nhiệt Độ ban Đầu 63
4.3.4 Hàm Chi Phí 66
4.3.5 Hàm Delta 69
4.3.6 Kết Quả Thực Nghiệm 71
4.4 - Kết Luận 76
Chương 5 - Kết Luận Và Hướng Phát Triển 5.1 - Các Kết Luận 77
5.2 - Hướng Phát Triển 79
Thư Mục Tham Khảo 81
Phụ Lục A A1
Phụ Lục B B1
Phụ Lục C C1
Trang 4Danh Mục Bảng
Bảng 3.1 : Bảng thử nghiệm nhiệt độ cuối cùng 35 Bảng 3.2 : Bảng thống kê các kết quả với các giá trị khác nhau của số lần lặp 39 Bảng 4.1 : Bảng quy định điểm phạt 66 Bảng 4.2 : Bảng kết quả thử nghiệm thời gian chạy kiếm lời giải ban đầu 71 Bảng 4.3 : Bảng kết quả thử nghiệm giải thuật SA 72
Trang 5Danh Mục Hình
Hình 3.1 : Ví dụ về bài toán CSP 15
Hình 3.2 : Bài toán tô màu bản đồ 16
Hình 3.3 : Giải thuật Backtracking căn bản 20
Hình 3.4 : Giải thuật Backtracking có kiểm tra hướng tới 22
Hình 3.5 : Giải thuật mô phỏng luyện kim cho tối thiểu hoá 26
Hình 3.6 : Giải thuật mô phỏng luyện kim với nhiệt độ ước lượng 31
Hình 3.7 : Các hàm sử dụng trong mô phỏng luyện kim với nhiệt độ ước lượng 32
Hình 3.8 : Mối quan hệ giữa nhiệt độ và số bước di chuyển SA 36
Hình 4.1 : Giải thuật Backtracking có kiểm tra hướng tới 47
Hình 4.2 : Bảng truy vấn LayKhoa 50
Hình 4.3 : Một mẫu tin từ bảng DataSource 50
Hình 4.4 : Bảng dữ liệu phòng học 51
Hình 4.5 : Lưu đồ giải thuật Backtracking-Kiểm tra hướng tới 53
Hình 4.6 : Cấu trúc dữ liệu dùng để lưu trạng thái miền trị của môn 54
Hình 4.7 : Bảng đụng độ 55
Hình 4.8 : Bảng truy vấn BangDungDoQuery 56
Hình 4.9 : Bảng đụng độ dùng ma trận 56
Hình 4.10 : Bảng DungDoQuery 57
Hình 4.11 : Giải thuật tạo ma trận đụng độä 57
Hình 4.12 : Giải thuật xếp phòng cho một môn thi 59
Hình 4.13 : Giải thuật mô phỏng luyện kim áp dụng cho chương trình 60
Hình 4.14 : Lưu đồ giải thuật SA 61
Hình 4.15 : Giải thuật tìm lời giải láng giềng 62
Hình 4.16 : Giải thuật xác định nhiệt độ đầu tiên 64
Hình 4.17 : Lưu đồ xác định nhiệt độ ban đầu 65
Hình 4.18 : Giải thuật của hàm chi phí 67
Hình 4.19 : Lưu đồ của Hàm chi phí 68
Trang 6Hình 4.20 : Giải thuật tính Delta 69 Hình 4.21 : Đồ thị biểu diễn mối quan hệ giữa chi phí nghiệm với số bước SA tương
ứng (từ 0 đến 70000 bước SA) 73 Hình 4.22 : Đồ thị biểu diễn mối quan hệ giữa chi phí nghiệm với số bước SA tương
ứng (từ 0 đến 30000 bước SA) 74 Hình 4.23 : Đồ thị biểu diễn mối quan hệ giữa chi phí nghiệm với số bước SA tương
ứng (từ 0 đến 1000 bước SA) 75
Trang 7Lời Cảm Ơn
Xin cảm ơn hai Thầy TS Nguyễn Văn Hiệp và Thầy TS Dương Tuấn Anh đã hướng dẫn em hoàn thành luận văn này
Luận văn này không thể hoàn thành tốt nếu không có sự tận tình hướng dẫn và sự giúp đỡ hết sức quý báu của Thầy TS Nguyễn Văn Hiệp và Thầy TS Dương Tuấn Anh
Trong suốt quá trình hoàn thành luận văn, các Thầy không những truyền đạt về kiến thức chuyên môn mà còn để lại trong tôi nhiều bài học về phong cách sống và làm việc của các Thầy Xin cho phép tôi được bày tỏ lòng biết ơn sâu sắc nhất đến hai Thầy
Xin được cảm ơn tập thể các Thầy Cô nơi đào tạo đã giảng dạy và truyền đạt nhiều kiến thức quý báu cho tôi trong quá trình học tập ở trường
Xin cám ơn Phòng Quản lý sau Đại học về sự hỗ trợ và tạo mọi điều kiện thuận lợi cho tôi trong suốt quá trình đào tạo
Cuối cùng, xin cảm ơn gia đình, những người thân, bạn bè và đồng nghiệp đã động viên, giúp đỡ tôi trong quá trình làm luận văn này
Tp Hồ Chí Minh, tháng 9 năm 2003
Lâm Kim Hòa
Trang 8Tóm Tắt
Xếp lịch thi học kỳ là một bài toán tối ưu tổ hợp Luận văn này trình bày một phương pháp lai tạo mới, kết hợp 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ìm một lịch biểu thi tối ưu Phương pháp này gồm hai giai đoạn: giai đoạn một dùng lập trình ràng buộc để 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, giai đoạn hai dùng giải thuật mô phỏng luyện kim, để 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
Trong giai đoạn một, luận văn trình bày các cơ sở lý thuyết và các giải thuật của lập trình ràng buộc trong việc tìm lời giải khả thi, giai đoạn hai luận văn trình bày cách ứng dụng giải thuật mô phỏng luyện kim trong việc tìm lời giải tối ưu Ngoài ra luận văn còn nghiên cứu vận dụng một số kỹ thuật tăng độ hữu hiệu của giải thuật mô phỏng luyện kim như cơ chế “Kempe chain” để tìm lời giải láng giềng, cơ chế xác định nhiệt độ khởi đầu dựa trên xác suất chấp nhận ban đầu và kỹ thuật định trước thời gian chạy của giải thuật mô phỏng luyện kim được công bố gần đây vào việc giải quyết bài toán xếp lịch thi Cuối cùng ngôn ngữ Visual C++ được dùng để viết một chương trình xếp lịch thi cho trường Đại học Bách Khoa T.p Hồ Chí Minh
Trang 9Abstract
Examination timetabling is a well – studied combinatorial optimization problem In a thesis, we’d like to present a new hybrid algorithm that combines the strengths of a constraint programming and a local search to find the best solution It consists of two phases : the constraint programming phase and the simulated annealing one
In the former phase, we use the constraint programming to produce an initial solution that satisfies all hard constraints without taking the soft ones into account
In the latter phase, we use the simulated annealing that bases on the soft constraints to improve the quality of solution Further, in the thesis, we not only present the application of simulated annealing searching the near optimum solution but also apply some specific techniques to increase its efficiency such as the current Kempe Chain neighborhood, starting temperature selection based on initial acceptance, and time - predefined local search approach Finally, we use the Visual C++ language to implement examination timetabling program for HCMC University of Technology
Trang 10Chương 1
Giới thiệu
1.1 - Mục Tiêu Nghiên Cứu
Trường Đại Học Bách Khoa Tp HCM, cũng như nhiều trường đại học khác trong thành phố, trong những năm gần đây đã liên tục phát triển về số lượng các khoa cũng như số lượng sinh viên vào học Vấn đề xếp lịch thi học kỳ ngày càng trở nên phức tạp Các chương trình phần mềm hiện đang tạm sử dụng còn tuỳ thuộc khá nặng nề vào thao tác thủ công của nhân viên phòng giáo vụ Do đó cần có một chương trình xếp lịch thi hoàn toàn tự động, chạy nhanh, ổn định và đồng thời có khả năng mở rộng, dễ thêm/bớt những ràng buộc do các thay đổi trong cấu trúc quản lý học vụ của nhà trường
Xếp lịch thi học kỳ là vốn một bài toán tối ưu tổ hợp (combinatorical optimization) thuộc loại khó Đã có tồn tại nhiều phương pháp khác nhau trên thế giới để 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 mà 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
Trang 11Annealing), 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 của giải thuật mô phỏng luyện kim (Simulated Annealing) được công bố gần đây vào việc giải quyết bài toán xếp lịch thi
1.2 - Giới Thiệu Nhiệm Vụ của Bài Toá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 nghiên cứu 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 thành phố 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 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
1.2.2 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)
Thời gian thi
• Sinh viên không thể tham dự nhiều môn thi ở cùng một thời điểm (C)
• Ngày bắt đầu thi và ngày kết thúc thi có thể xác định trước (M)
Trang 12• Thời gian thi của một môn thi bất kỳ phải được xếp trọn trong cùng một buổi (C)
Phòng thi và sức chứa
• Khi có nhiều nhóm sinh viên thi cùng một môn , các phòng thi cho môn đó nên được sắp xếp gần nhau (M)
• Không có 2 môn thi được xếp trong cùng một phòng trong cùng một thời gian thi (C)
• Các phòng được dùng cho các môn thi nên được tận dụng tối đa , sao cho tối thiểu hóa số phòng trống (M)
• Tổng số sinh viên tham dự tất cả các môn thi trong cùng một buổi phải nhỏ hơn tổng sức chứa của các phòng được sắp xếp thi trong buổi đó (C)
• Tổng các sinh viên tham dự tất cả các môn thi trong cùng một buổi, trong cùng một phòng phải nhỏ hơn sức chứa của phòng đó (C)
Khoảng cách giữa các buổi thi
• Khoảng cách giữa các buổi thi là cực kỳ quan trọng đối với người thi Khoảng cách giữa các môn thi của cùng một sinh viên không nên quá sát nhau, trong một buổi mỗi sinh viên chỉ nên thi tối đa một môn (M) 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 thoả mãn ràng buộc (constraint satisfaction problem) và đối với các ràng buộc mềm, đây là bài toán tối ưu hoá (optimization problem)
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, dựa vào khoảng 64000 đăng ký môn học
Trang 131.3 - Những Kết Quả Chính của Luận Văn
1 Lựa chọn và áp dụng được các giải thuật thích hợp của lập trình ràng buộc cho việc tìm kiếm lịch thi khả thi ban đầu
2 Aùp dụng được kỹ thuật định trước thời gian chạy cho giải thuật Mô phỏng luyện kim trong bài toán xếp lịch thi học kỳ Giúp người sử dụng có thể xác định trước thời gian chạy của chương trình
3 Xác định được không gian lời giải láng giềng trong bài toán xếp lịch thi, dẫn tới việc xây dựng được giải thuật xác định nhiệt độ ban đầu tương đối chính xác trong việc áp dụng giải thuật Mô phỏng luyện kim
4 Xây dựng được hàm chi phí, bảng các điểm phạt để đo lường chất lượng của các lời giải
5 Aùp dụng thành công giải thuật Mô phỏng luyện kim trong việc tìm lịch biểu thi tối ưu cho trường Đại học Bách Khoa Tp Hồ Chí Minh với tốc độ thực thi chấp nhận được
6 Kết hợp được lập trình ràng buộc và giải thuật Mô phỏng luyện kim tạo thành một phương pháp lai cho các bài toán tìm lịch biểu tối ưu
1.4 - Sơ Lược Cấu Trúc Luận Văn
Luận văn này được chia thành 5 chương và một phụ lục Sau chương 1, các chương còn lại được tổ chức như sau :
Chương 2 trình bày Các công trình liên quan Trong mục 2.1 sẽ điểm qua các phương pháp và giải thuật quan trọng được dùng trong các nghiên cứu giải bài toán xếp lịch thi đã có Tổng kết các bài toán về các phương pháp xếp lịch thi khác nhau trên thế giới Trong mục 2.2 trình bày các công trình có liên quan về giải thuật mô phỏng luyện kim Trong mục 2.3 sẽ nêu ra phương hướng giải quyết bài toán xếp lịch thi
Chương 3 trình bày các cơ sở lý thuyết, một số các giải thuật quan trọng để làm cơ sở cho việc xây dựng một chương trình tìm lời giải tối ưu cho bài
Trang 14toán xếp lịch thi Phần mục 3.1 Lập trình ràng buộc sẽ giới thiệu các khái niệm cơ bản nhất của lý thuyết giải hệ ràng buộc, nêu ra các giải thuật quan trọng và các heuristic đi kèm với các giải thuật để tìm ra lời giải thõa mãn các ràng buộc Mục tiếp theo 3.2 là Mô phỏng luyện kim sẽ trình bày các đặc trưng của giải thuật, các đặc trưng và phương pháp áp dụng giải thuật vào các bài toán tìm lời giải tối ưu
Chương 4 trình bày cách xây dựng chương trình giải quyết bài toán xếp lịch thi Chương này gồm các phần sau : phần mục 4.2 sẽ mô tả bài toán, nhiệm vụ của chương trình và các đặc điểm của trường Đại học Bách Khoa Tp.Hồ Chí MInh cùng với các yêu cầu của bài toán xếp lịch thi, phần mục 4.3 sẽ trình bày các chi tiết hiện thực và giải thuật của chương trình Phần mục cuối cùng 4.3 sẽ trình bày các kết quả thực nghiệm đạt được của chương trình xếp lịch thi
Mỗi chương, từ chương 2 đến chương 4 có một phần giới thiệu và một phần kết luận chương Chương 5 gồm có hai phần là các kết luận và hướng phát triển, nghiên cứu trong tương lai Phần phụ lục trình bày giao diện và các hàm thực hiện của chương trình xếp lịch thi
Trang 15Chương 2
Các Công Trình Liên Quan
2.1 - Các Nghiên Cứu Liên Quan
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 ([9]) và Carter et al., 1996 ([10]) Carter et al ([10]) 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 và (c) tìm kiếm cục bộ (local search)
2.1.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 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 ([9]), Brelaz ([4]) đã 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 16Nhượ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.1.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 Programing) hay dựa vào các giải thuật giải hệ ràng buộc ([13]) 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 ([5]) xếp lịch thi cho trường đại học Catholique de l’Ouest ở Angers, 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 ([16]) đã 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 sắp lịch thi vấn đáp cho kỳ thi tuyển vào trường Eùcole des Miné de Nantes, Pháp Đây là một giải thụâ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
2.1.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, tìm kiếm tabu và mô phỏng luyện kim (Simulated Annealing)
Burke, 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 ([8]) 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 được tiến hành
bằng cách sắp xếp lại cá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
Trang 17Tìm kiếm tabu là một giải thuật tương tự như giải thuật mô phỏng luyện kim (simulated annealing) 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, thay vì chọn một cách ngẫu nhiên,
phương pháp duy trì một danh sách những bước chuyển tabu Những bước
chuyển này diễn tả những lời giải mà đã từng xem xét trước đó, và giải thuật bị bắt buộc phải quay sang các lời giải ngoài danh sách đó Do ràng buộc này, giải thuật tìm kiếm những bước đi cải thiện nhiều nhất mà nó có thể tìm thấy Bước chuyển mới sẽ được chấp nhận ngay cả khi nó dẫn tới một lời giải tệ hơn Di Gaspero & Schaerf, 2000 đã dùng tìm kiếm tabu vào bài toán xếp lịch thi ([12]) Boufflet & Negre, 1996 ([6]) đã áp dụng tìm kiếm tabu để giải bài toán xếp lịch thi cho trường Đại Học kỹ thuật Compiègne ở Pháp
Mô phỏng luyện kim cũng là một giải thuật được dùng nhiều trong việc giải bài toán xếp lịch thi Thompson & Dowsland, 1996 ([15] ) dùng giải thuật mô phỏng luyện kim vào bài toán xếp lịch thi tại trường Đại Học Swansea, ở Anh Thompson & Dowsland 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ẽ dựa vào các ràng buộc thứ yếu để tối ưu hoá 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, ([7]) đã đư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)
Ưu điểm chung của nhóm phương pháp tìm kiếm cụ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 qủa thường tùy thuộc vào việc chọn những lời giải khởi đầu
2.2 - Các Công Trình Liên Quan về Giải Thuật Mô Phỏng Luyện Kim
Trong những năm gần đây, giải thuật mô phỏng luyện kim được áp dụng trong rất nhiều lĩnh vực khác Sau đây là một số công trình có dùng giải thuật mô phỏng luyện kim để giải quyết bài toán trong từng lĩnh vực của mình
Trang 18Bài toán xếp lịch bay tối ưu do Danuta Sosnowska và Geneva trình bày
trong công trình “Fleet Scheduling Optimization: A Simulated Annealing
Approach” [17] : trong đó lời giải ban đầu được tìm bằng phương pháp đơn
giản first-in/first-out (FIFO) , các lời giải láng giềng được tìm bằng kỹ thuật tráo đổi (swap), lời giải tối ưu được tìm bằng giải thuật SA Nhiệt độ ban đầu được sử dụng trong giải thuật mô phỏng luyện kim là 5x106 Các hàm thu giảm nhiệt độ được thử là :
Bài toán Xây dựng thời khóa biểu trường học do Abramson D trình bày
trong bài “Constructing School Timetables using Simulated Annealing:
Sequential and Parallel Algorithms “ [1] trong đó kết hợp giải thuật SA với các
giải thuật song song để cải tiến tốc độ của chương trình Giải thuật có thể cho lời giải nhanh hơn các giải thuật tuần tự khác Giải thuật song song được thi
hành trên một bộ nhớ dùng chung có nhiều bộ xử lý, lịch biểu (timetable) được giữ trong bộ nhớ chung cùng với các “ lock variable ” Một khi lịch biểu được khởi tạo , tiến trình chính (master process) có thể sinh ra các tiến trình con (child process) trong một chừng mực cần thiết nào đó Mỗi tiến trình con hoán
vị lịch biểu cho đến khi hệ thống bị đóng băng hoặc lịch biểu được tìm ra
Công trình Simulated Annealing with estimated temperature [20] do
Poupaert, E., và Deville, Y., trình bày về cách xác định nhiệt độ theo xác suất chấp nhận và không gian lời giải láng giềng, trong đó nhiệt độ không còn là một thông số điều khiển trực tiếp của giải thuật mô phỏng luyện kim, lịch biểu nhiệt độ được dẫn xuất từ một lịch biểu xác suất chấp nhận lời giải láng giềng Xác suất chấp nhận lời giải láng giềng được định nghĩa như sau:
Trang 19với δ = f(s’) - f(s)
f(s) là hàm chi phí của lời giải s
s là lời giải hiện hành
s’ là lời giải láng giềng của s
thông thường theo các giải thuật mô phỏng luyện kim thì ứng với một nhiệt độ
ta xác định được một xác suất chấp nhận, trong công trình này thì xác suất chấp nhận được ấn định trước và nhiệt độ T được xác định theo xác suất này
Độ thu giảm của xác suất chấp nhận qua mỗi bước di chuyển của giải thuật mô phỏng luyện kim được thể hiện qua công thức
χ = 2-s/hl
trong đó
χ là xác suất chấp nhận
s là số bước thứ tự của giải thuật mô phỏng luyện kim
hl (haft-life) là số bước sao cho xác suất chấp nhận bị chia cho 2, hl một
hằng số
Công trình General Cooling Schedules for a Simulated Annealing Based
Timetabling System [15] do Thompson, J and Dowsland, K A., trình bày một
số dạng lịch biểu làm nguội trong giải thuật mô phỏng luyện kim và các ý kiến về các lịch biểu đó cũng như các thử nghiệm thu được Công trình được áp dụng trong việc xếp lịch thi và có thể được xem là một trong các công trình cơ sở nhất của giải thuật mô phỏng luyện kim
Ngoài ra giải thuật SA còn được áp dụng trong nhiều lĩnh vực khác nhau như việc tìm lời giải tối ưu trong các bài toán tổ hợp, các bài toán tìm đường đi v.v…
Các vấn đề đặc trưng của giải thuật mô phỏng luyện kim vẫn còn đang được nghiên cứu và còn nhiều ý kiến khác nhau như số lần lặp lại ở mỗi nhiệt độ, là hằng số hay thay đổi theo các điểm nhiệt độ khác nhau và nếu thay đổi thì thay đổi theo tiêu chuẩn nào Số lần lặp ở mỗi nhiệt độ lúc nào là dư thừa, lúc nào là thiếu, cách xác định nhiệt độ ở mỗi bước SA
Trang 20• Xu Hướng Mới
Ngoài ba nhóm phương pháp nói trên, một khuyng 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 Thí dụ
như sự kếp hợp giữa lập trình ràng buộc và tìm kiếm tabu ( Di Gaspero & Schaef [12]) hay sự kết hợp giữa tô màu đồ thị với mô phỏng luyện kim, hay giữa lập trình ràng buộc với mô phỏng luyện kim (Merlot et al.,2002 [14]) Trong công trình của Merlot và các cộng sự, họ dùng một phần mềm thương mại ILOG chuyên dụng cho lập trình ràng buộc để tạo ra lời giải khả thi khởi đầu và rồi sử dụng giải thuật mô phỏng luyện kim để hòan thiện lời giải khả thi thành lời giải xấp xỉ tối ưu Giải thuật mô phỏng luyện kim của công trình này bám sát các cách thức được cho bởi Thompson & Dowsland, 1996 [15] 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
Đề tài nghiên cứu của đề cương này cũng dự định đề xuất một giải thuật thuộc về nhóm lai ghép này
2.3 - 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à sự phối hợp lập
trình ràng buộc với giải thuật mô phỏng luyện kim Sự phối hợp là 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 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 giải thuật mô phỏng luyện kim để 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 là nhằm đạt được một lịch biểu ban đầu, thoả 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
Trang 21này chính là kỹ thuật tối ưu hoá, 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 (Đề 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 của giải thuật mô phỏng luyện kim được công bố gần đây, thí dụ như kỹ thuật
mô phỏng luyện kim định trước thời gian chạy – time predefined Simulated
Annealing, đề xuất bởi Burke et al., 2001 [7])
Ghi chú: Chúng ta cũng có thể chỉ dùng đơn thuần giải thuật mô phỏng luyện kim để 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 ra một cách ngẫu nhiên Nhưng thực nghiệm 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 22Phần lập trình ràng buộc giới thiệu các khái niệm cơ bản nhất của lý thuyết giải hệ ràng buộc, nêu ra các giải thuật quan trọng và các heuristic đi kèm với các giải thuật để tìm ra lời giải thõa mãn các ràng buộc
Phần tiếp theo là mô phỏng luyện kim trình bày các đặc trưng của giải thuật mô phỏng luyện kim và các phương pháp áp dụng giải thuật vào các bài toán tìm lời giải tối ưu
3.2 - Lập Trình Ràng Buộc ([19])
Giống như lập trình logic, lập trình ràng buộc thuộc về phương thức lập trình mô tả (declarative programming)
Trang 23bài toán ứng dụng bằng các phát biểu những ràng buộc của bài toán và sau đó, tìm kiếm lời giải thoả mãn một phần hoặc tất cả những ràng buộc đó
So sánh với các phương pháp cổ điển hơn, lập trình ràng buộc có những
ưu điểm:
− thời gian phát triển phần mềm nhanh
− mềm dẻo, linh hoạt, dễ thích ứng với những thay đổi
− dễ đưa vào những tương tác với người sử dụng
Những ưu điểm trên được tạo ra mà không hề giảm suy giảm tính hữu hiệu của chương trình
Lập trình ràng buộc có liên quan đến một lãnh vực của AI là lãnh vực giải
các hệ ràng buộc (constraint satisfaction problems)
Một bài toán giải hệ ràng buộc (Constraint Satisfaction Problem - CSP)
bao gồm một bộ ba P = (V, D, C), trong đó:
− V = {V1, V2, …, Vn}, là một tập các biến
− D = {Dv1, DV2,…,DVn}, là tập hợp các miền trị của các biến
− C = {C1, C2,…, Cm}, là tập hợp các ràng buộc trên các biến, nó giới hạn khả năng lựa chọn giá trị cho biến
Biến là đại lượng cần được gán giá trị, trong bài toán này mỗi môn là 1
biến và trị của môn học là thời điểm thi của môn học (tiết bắt đầu thi của môn học)
Miền trị là tập hợp các giá trị có thể gán được cho một biến, ví dụ như tập
các tiết trong thời gian thi
Nếu các miền trị là những tập trị hữu hạn và rời thì bài toán giải hệ ràng buộc sẽ được gọi là bài toán giải hệ ràng buộc trên miền trị hữu hạn
Ràng buộc là điều kiện mà một hay nhiều biến cần phải thỏa, ví dụ hai
môn học của cùng một sinh viên không được xếp thi cùng một buổi
Lời giải của bài toán giải hệ ràng buộc là một bộ các giá trị của các biến sao cho nó thõa mãn tất cả các ràng buộc (xem [23], [26], [28], [30],[31], [32])
Các ví dụ về bài toán giải hệ ràng buộc (xem [19])
Trang 24Ví dụ 1: Bài toán có 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 :
Tập biến là: {C, D, E}
Ví dụ 2: Bài toán tô màu bản đồ: các vùng giáp nhau phải có màu khác nhau ([19])
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
Trang 253.2.1 Các Ứng Dụng của Lập Trình Ràng Buộc :
Một số lớn các bài toán trong AI và một số lĩnh vực của khoa học máy tính có thể được xem như là các trường hợp riêng biệt của bài toán giải hệ ràng buộc
Ví dụ như :
Các bài toán tìm đường, bán hàng …
Các bài toán xếp lịch như xếp lịch công tác, thời khóa biểu, lịch thi, lịch bay
Các bài toán phân phối như phân phối tài nguyên cho các chương trình trong một hệ điều hành đa chương trình
Các bài toán tô màu như tô màu bản đồ
Máy ảo
Temporal reasoning (Suy luận thời gian)
Xử lý ngôn ngữ
Chẩn đoán mạch điện tử
Lập kế hoạch tài chính
Thiết kế các ràng buộc kỹ thuật
(Xem [26], [33])
3.2.2 Phân Loại Các Bài Toán Giải Hệ Ràng Buộc ([19])
Các bài toán hệ ràng buộc có thể chia làm hai loại chính:
• Bài toán thỏa mãn ràng buộc (Satisfiability problems)
V1{đỏ, xanh, vàng}
{đỏ, xanh, vàng}
{đỏ, xanh, vàng}
Trang 26Là tìm một phép gán các giá trị cho các biến sao cho phép gán đó thỏa mãn tất cả các ràng buộc
• Bài toán tối ưu (Optimization problems):
Mỗi phép gán các giá trị cho các biến đều có một giá chi phí hay giá trị mục tiêu Mục đích của bài toán là tìm ra lời giải có giá chi phí thấp nhất hoặc giá trị mục tiêu lớn nhất
3.2.3 Các Tiêu Chuẩn để Phân Loại Các Ràng Buộc ([32])
Có nhiều tiêu chuẩn để phân loại các ràng buộc :
Theo sự 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
• 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 không được 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 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
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
Bài toán xếp lịch thi thuộc loại miền trị hữu hạn, 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
Trang 27Theo số ràng buộc:
• Ràng buộc đơn biến, ví dụ : A>0
• Ràng buộc song biến, ví du ï: A>B
…
• Ràng buộc n 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
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 có số biến cố định là số môn cần phải xếp lịch thi
3.2.4 Một Số Giải Thuật giải Bài Toán Hệ Ràng Buộc
Một bài toán hệ ràng buộc có thể được giải bằng một trong hai hướng sau: ([30], [32])
• 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 giá trị có thể cho các biến
• Tìm kiếm bất hệ thống (non-systematic search): 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 đó
Giải thuật vét cạn (Generate-and-test) ([19])
Mọi bài toán hệ ràng buộc theo lý thuyết đều có thể được giải quyết bằng giải thuật vét cạn (generate-and-test)
Các đặc điểm của giải thuật:
• Mọi tổ hợp sinh ra sẽ lần lượt được rà soát xem có thoả mãn tất cả các ràng buộc hay không Tổ hợp thỏa mãn tất cả ràng buộc là lời giải của bài toán
• Không gian tìm kiếm bằng tích kích thước miền trị của tất cả các biến
Trang 28Ví dụ: Xếp lịch thi cho 4 môn A, B, C, D Miền trị của mỗi môn là tập
Nhận xét : giải thuật đơn giản, dễ thực hiện nhất, rất thích hợp với những bài
toán có không gian tìm kiếm rất nhỏ Đối với những bài toán có không gian tương đối lớn, do không có sự nhìn trước trong việc gán trị cho biến , giải thuật dễ gặp hiện tượng bùng nổ tổ hợp hoặc bị tràn bộ nhớ
Giải thuật Backtracking Căn Bản
Một giải thuật căn bản để giải các CSP 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 qúa 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 backtrack về biến trước đó Giải thuật backtracking căn bản được cho ở hình 3.3
Trang 29procedure BACKTRACKING
/* from Decter & Frost ([11]) */
i := 1
Di’ := Di /* Di’ là miền trị hiện hành của biến i,
Di là miền trị ban đầu của biến i */
while 1 ≤ i ≤ n
vi := SELECTVALUE /* Chọn trị cho biến i */
if vi là null then
while Di’ không rỗng
chọn một trị tùy ý a ∈ Di’ và gỡ bỏ a ra khỏi Di’
if trị a cho vi là tương thích với <a1, ,ai> then
return a
end while
return null
end procedure
Hình 3.3 Giải thuật Backtracking căn bản
Giải thuật Backtracking có kiểm tra hướng tới (forward checking)
Giải thuật backtracking căn bản có một nhược điểm chính là bị thrashing ([11], [11]), 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 số thất bại cũ Do vậy nhiều nỗ lực để cải thiện giải thuật backtracking đã được đề ra
Trang 30Theo 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 (dead end) phải quay lui lại biến trước đó
Các kỹ thuật nhìn-tới thường được ưa chuộng hơn các giải thuật nhìn-lui
vì dễ kết hợp với các heuristic 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 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à 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
Giải thuật backtracking với kiểm tra hướng tới được cho trong hình 3.4
Trang 31procedure BACKTRACKING-WITH-LOOK-AHEAD
/* from Decter & Frost ([11] ) */
D i ’ := D i for 1 ≤ i ≤ n /* Di’ là miền trị hiện hành của biến i,
D i là miền trị ban đầu của biến i, n là số biến */
i := 1
while 1 ≤ i ≤ n
v i := SELECTVALUE-FORWARD-CHECING /* Chọn trị cho biến i */
if vi là null then
while Di ’ không rỗng
chọn một trị a tùy ý ∈ D i ’ và gỡ bỏ a ra khỏi D i ’
miền_trị_rỗng := false
for tất cả k, với i <k ≤ n
for tất cả các trị b trong Dk ’
if trị b cho vk là không tương thích với <a 1 , ,a i-1 > và v i = a then
gỡ bỏ b ra khỏi Dk ’
Trang 32Giải thuật này sẽ được chọn sử dụng trong giai đoạn 1 của quá trình xếp lịch thi để tạo ra một lời giải khả thi (tức là lời giải thoả mọi ràng buộc bắt buộc của bài toán)
Tóm lại, trong phần lập trình ràng buộc một số khái niệm cơ bản nhất
của bài toán giải hệ ràng buộc đã được giới thiệu Một số giải thuật cũng được trình bày để làm cơ sở cho việc tìm lời giải của các bài toán CSP, trong các giải thuật đó thì giải thuật Bachtracking có kiểm tra hướng tới sẽ được sử dụng để tìm lời giải khả thi cho bài toán xếp lịch thi Sau đó, lời giải này sẽ được chọn làm lời giải khởi đầu cho giải thuật mô phỏng luyện kim trong quá trình tìm lịch biểu thi tối ưu
3.3 - Mô Phỏng Luyện Kim (Simulated Annealing)
3.3.1 Giới Thiệu
Mô phỏng luyện kim là một kỹ thuật tối ưu hoá được đề xuất bởi S
Kirkpatrick và các đồng sự năm 1983 Kỹ thuật này là một dạng của phương
pháp tìm kiếm cục bộ (local search) cho phép ta tạo ra những bước chuyển
trạng thái tốt hơn theo một kiểu cách có kiểm soát
Kỹ thuật này mô phỏng việc nung nóng kim loại trong một lò nhiệt rồi làm nguội đi Trong ngành kỹ thuật luyện kim, quá trình này còn được gọi 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ác tính chất tốt hơn như sắt sau khi được tôi sẽ thành thép cứng hơn nhưng độ giòn lại thấp hơn sắt ban đấu rất nhiều
Thực chất của quá trình luyện kim là nung nóng kim loại vượt qua điểm ngưỡng nhiệt độ của nó (mỗi kim loại có một ngưỡng nhiệt độ khác nhau), rồi làm nguội nó dần dần cho đến môt trạng thái ổn định Tốc độ làm nguội kim loại sẽ quyết định rất lớn đến các tính chất của kim loại sau này Aùp dụng vào bài toán tối ưu hoá, giải thuật mô phỏng luyện kim sẽ tìm kiếm những lời giải khả thi và rồi hội tụ về lời giải tối ưu
3.3.2 So Sánh Mô Phỏng Luyện Kim và Hill-Climbing
Trang 33sẽ chọn một bước chuyển ngẫu nhiên Nếu bước chuyển này có hàm chi phí tốt hơn so với trạng thái hiện hành, thì giải thuật luôn luôn chọn nó Nếu bước chuyển có hàm chi phí dở hơn thì bước chuyển này có thể được chấp nhận với một xác suất nào đó
3.3.3 Tiêu Chuẩn để Chấp Nhận
Luật của nhiệt động học phát biểu rằng tại nhiệt độ t, xác suất cho một sự gia tăng về mức năng lượng là:
trong đó k là hằng số Boltzmann
Sự mô phỏng trong giải thuật SA tính một mức năng lượng mới cho hệ thống Nếu năng lượng đã giảm thì hệ thống đi vào trạng thái năng lượng đó Nếu năng lượng đã gia tăng thì trạng thái mới được chấp nhận bằng cách dùng một xác suất cho ở công thức trên
Một số bước lặp sẽ được thực hiện ở mỗi giá trị nhiệt độ và rồi thì nhiệt độ được giảm đi Điều này sẽ được lặp nhiều lần cho đến khi hệ thống ngưng tụ vào một trạng thái ổn định
Phương trình (1) được dùng trực tiếp trong giải thuật SA, mặc dù hằng số k thường được bỏ đi Do đó xác suất để chấp nhận một trạng thái dở hơn được cho bởi phương trình:
trong đó
c = mức thay đổi trong hàm chi phí
t = nhiệt độ hiện thời
r = một số ngẫu nhiên trong khoảng giữa 0 và 1
ta thấy xác suất chấp nhận một trạng thái dở hơn là hàm của nhiệt độ của hệ thống và mức thay đổi trong hàm chi phí
Từ biểu thức (3.2) ta rút ra một nhận xét sau : khi nhiệt độ giảm thì xác suất chấp nhận một trạng thái dở hơn cũng bị giảm, khi nhiệt độ bằng 0 thì xác suất chấp nhận một trạng thái dở hơn cũng bằng 0, khi đó chỉ có các
Trang 34trạng thái tốt hơn mới được chấp nhận, giải thuật mô phỏng luyện kim lúc đó hành động giống như giải thuật Hilll Climbing
3.3.4 Mối liên hệ giữa Luyện Kim Thực Sự và Mô Phỏng Luyện Kim
Mối liên hệ giữa luyện kim thực sự và giải thuật mô phỏng luyện kim như là một phương pháp giải bài toán tối ưu tổ hợp được cho trong bảng sau đây :
Mô phỏng nhiệt động học Tối ưu tổ hợp
-
Các trạng thái của hệ thống Các lời giải khả thi
Chuyển trạng thái Các lời giải lân cận
Dùng ánh xạ này, bất cứ bài toán tối ưu tổ hợp nào cũng có thể chuyển thành giải thuật SA
3.3.5 Giải Thuật Mô Phỏng Luyện Kim (SA)
Để có thể áp dụng được giải thuật SA, 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 giải bài toán (solution space)
- một cơ cấu xác định vùng lân cận (neighbourhood structure)
- 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.5 trình
bày cấu trúc tổng quát của giải thuật căn bản của SA (from Thompson & Dowsland [15]):
Trang 35Chọn lời giải ban đầu s0;
Chọn nhiệt độ khỏi đầu t0 > 0;
Chọn hàm thu giảm nhiệt độ α;
repeat
repeat
Chọn ngẫu nhiên s ∈ N(s0); /* s là lời giải láng giềng của s0 */
δ = f(s) – f(s0); /* tính sự thay đổi của hàm chi phí */
until điều_kiện_dừng = true
/* cuối cùng s0 là một lời giải gần như là lời giải tối ưu */
Hình 3.5 Giải thuật mô phỏng luyện kim cho tối thiểu hoá
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.3.6 Lịch Biểu Làm Nguội (The Cooling Schedule)
Chú ý rằng chất lượng của các lời giải thì nhạy cảm đối với cách thức
thông số nhiệt độ t được điều chỉnh – còn được gọi là lịch biểu làm nguội
(cooling schedule) Lịch biểu làm nguội được định nghĩa bằng:
- một nhiệt độ khởi đầu t0,
- các điều kiện dừng,
- hàm giảm thiểu α và
- số lần lặp tại mỗi nhiệt độ, nrep
Trang 36Tất cả những giá trị trên tùy thuộc vào từng bài toán ứng dụng vì chúng phải được chọn theo dạng của không gian lời giải ([1], [2], [15])
Chọn lịch biểu làm nguội tương ứng cho bài toán xếp lịch thi học kỳ là
một vấn đề không đơn giản, phải nghiên cứu, trước khi ta có thể dùng kỹ thuật
SA ở giai đoạn 2 nhằm hoàn thiện một lời giải khả thi
3.3.7 Xác Định Nhiệt Độ Khởi Đầu t 0
với f là hàm chi phí, s là lời giải hiện hành, s’ là lời giải láng giềng của s
Khi δ < 0 xác suất chấp nhận lời giải mới là 1, khi δ > 0 xác suất chấp nhận
lời giải mới dựa vào biểu thức Boltzmann:
trong đó t là nhiệt độ hiện hành của hệ thống
Biểu thức (3.4) có giá trị tăng khi t tăng, ngược lại có giá trị giảm khi δtăng Từ biểu thức (3.4) trên ta thấy :
Để cho phép hệ thống di chuyển tới được hầu hết các trạng thái láng giềng bất kỳ nào thì nhiệt độ ban đầu phải đủ nóng Nếu nhiệt độ ban đầu quá thấp thì lời giải cuối cùng có thể sẽ giống như lời giải ban đầu hoặc giải thuật
SA sẽ hành động giống như giải thuật leo đồi Nhưng nếu nhiệt độ ban đầu quá cao thì sự chuyển dịch lời giải quá ngẫu nhiên, không theo một định hướng nào nhất định dễ dẫn tới việc tốn quá nhiều thời gian vô ích trong giai đoạn đầu của giải thuật SA
Từ những nhận xét trên ta thấy giải thuật mô phỏng luyện kim chỉ hoạt động hiệu quả trong một khoảng nhiệt độ nào đó thôi, khoảng nhiệt độ không cao quá cũng không thấp quá
Vậy vấn đề ở đây là xác định chính xác nhiệt độ bắt đầu Hiện nay,
Trang 37ban đầu Để có thể xác định nhiệt độ ban đầu chúng ta cần phải tham khảo các ý kiến khác nhau
Phương pháp dự đoán (theo Ray Woard-Simth, 1996), là bắt đầu với một
nhiệt độ cao và sau đó làm nguội nhanh nó cho đến khi khoảng 60% các lời giải dở hơn được chấp nhận Nhiệt độ khi đó sẽ được chọn làm nhiệt độ bắt đầu và sau đó nhiệt độ sẽ được làm nguội một cách chậm hơn
Một ý kiến tương tự khác (Dowsland, 1995), là nung nóng nhanh hệ
thống cho đến một tỷ lệ nào đó của các lời giải dở hơn được chấp nhận và quá trình làm nguội bắt đầu Điều này dường như tương tự quá trình nung vật lý Trong đó vật liệu được nung nóng đến một nhiệt độ giới hạn nào đó thì quá trình làm nguội mới bắt đầu
Ngoài ra nếu chúng ta biết chính xác khoảng cách lớn nhất (sự khác nhau của hàm chi phi) giữa một lời giải láng giềng này với một lời giải láng giềng khác thì dựa vào thông tin đó ta có thể tính được nhiệt độ khởi đầu
Nhưng những cách trên, nếu muốn có một nhiệt độ bắt đầu tốt, thì phải kết hợp với quá trình thử nghiệm
Trong các công trình có liên quan đến giải thuật SA (như đã nêu ở mục 2.2) thì hầu hết các nhiệt độ ban đầu đều được xác định bằng số và là một hằng số cố định, như bài toán xếp lịch bay tối ưu do Danuta Sosnowska và
Geneva trình bày trong công trình “Fleet Scheduling Optimization: A Simulated
hoặc trong bài toán xếp lịch thi cho trường Đại học Melbourne do Liam T.G
Merlot cùng các đồng sự trình bày trong công trình “ A Hybrid Algorithm for the
Examination Timetabling Problem” [25] thì nhiệt độ ban đầu là 30000
Đối với những lời giải khả thi ban đầu được kiếm bằng những giải thuật đơn giản như trong bài toán xếp lịch bay tối ưu [17] : trong đó lời giải ban đầu được tìm bằng phương pháp first-in/first-out (FIFO), lời giải ban đầu đạt đựoc thì khả thi nhưng chất lượng không được tốt lắm, do đó khi áp dụng giải thuật mô phỏng luyện kim tác giả có thể chấp nhận tiêu tốn thời gian ban đầu để xác suất chấp nhận các lời giải bằng 1 bằng cách nâng nhiệt độ lên rất cao tới
5000000 (5x106), chấp nhận hao phí thời gian nhưng bù lại được một lịch biểu
Trang 38bay tối ưu (đối với các hãng hàng không thì các hao phí về thời gian chạy chương trình để đạt được lịch bay tối ưu thật là không đáng kể)
Nhiệt độ thử nghiệm ban đầu là một hằng số (30000) trong bài toán xếp lịch thi cho trường Đại học Melbourne được áp dụng cho các lần xếp lịch thi của trường Chúng ta biết rằng mỗi lần xếp lịch thi là mỗi lần tạo nên các lịch biểu thi khác nhau, số môn thi và thời gian thi cũng khác nhau, các ràng buộc về ngày thi, tiết thi và phòng thi cũng khác nhau nên nhiệt độ ban đầu là một hằng số (30000) được áp dụng cho tất cả các lần xếp lịch thi không thể là một nhiệt độ ban đầu chính xác hoặc gần chính xác trong mọi trường hợp, 30000 là một nhiệt độ rất cao hoặc tương đối cao trong một số trường hợp, có thể các tác giả cũng chấp nhận hao phí thời gian ban đầu để đạt được một lịch thi tối
ưu hoặc gần như tối ưu trong hầu hết các lần xếp lịch thi (một học kỳ chỉ xếp lịch thi chừng vài lần)
Đối với việc tìm lời giải tối ưu cho những bài toán tối ưu tổ hợp bằng cách kết hợp lập trình ràng buộc với giải thuật mô phỏng luyện kim Nếu trong giai đoạn đầu ta dùng các giải thuật của lập trình ràng buộc kết hợp với các heuristic để tìm được lời giải khả thi ban đầu có chất lương tương đối tốt Sang giai đoạn mô phỏng luyện kim ta dùng nhiệt độ ban đầu rất cao để có thể tìm được lời giải tối ưu trong hầu hết các trường hợp, chấp nhận hao phí thời gian ban đầu và cả chất lượng tương đối tốt của lời giải ban đầu đạt được nhờ các các heuristic kết hợp với giải thuật lập trình ràng buộc thì thật là lãng phí Đối với những bài toán có không gian tương đối nhỏ hoặc đủ thời gian để chạy thì còn chấp nhận được, đối với các bài toán có không gian rất lớn hoặc đòi hỏi sự cấp thiết về mặt thời gian thì sự hao phí trên là không chấp nhận được
Bài toán xếp lịch thi không phải là một bài toán có yêu cầu cao về mặt thời gian, nhưng thông qua bài toán xếp lịch thi bằng cách kết hợp giữa lập trình ràng buộc và mô phỏng luyện kim để đề một phương pháp lai tạo mới, có thể áp dụng cho các bài toán xếp lịch khác
Mục đích của việc xác định nhiệt độ ban đầu là để xác định xác suất chấp nhận ban đầu cho phù hợp với chất lượng của lời giải ban đầu và không
bị mất quá nhiều thời gian cho những di chuyển quá ngẫu nhiên (do nhiệt độ ban đầu quá cao) Một hướng xác dịnh nhiệt độ ban đầu tương đối chính xác
Trang 39Trong công trình Simulated Annealing with estimated temperature [20] do Poupaert, E., và Deville, Y., “Mô phỏng luyện kim với nhiệt độ đã ước lượng”
có trình bày về cách xác định nhiệt độ theo xác suất chấp nhận và không gian lời giải láng giềng
Xác suất chấp nhận theo E Poupaert [20] được định nghĩa như sau:
với δ = f(s’) - f(s)
f(s) là hàm chi phí của lời giải s
s là lời giải hiện hành
s’ là lời giải láng giềng của s
Cũng theo E Poupaert [20], ở một nhiệt độ T, xác suất trung bình để
chấp nhận một lời giải láng giềng là :
với δi = f(s i ) – f(s)
s i là lời giải láng giềng thứ i của s
s là lời giải hiện hành
δi > 0 và i ∈ {1, , n}
δj = f(s j ) – f(s)
δj ≤ 0 và j ∈ {n+1, , m}
m ở đây là kích thước của không gian lời giải láng giềng
Trong công trình Simulated Annealing with estimated temperature [20] giải
thuật mô phỏng luyện kim với nhiệt độ đã ước lượng được trình bày trong hình 3.6 :
Algorithm SA with estimated temperature
= +
−+
−
i
i m
n n
m
n m T m
T
1 1
1, ,δ ,δ , ,δ , 1 exp( δ )
δ
Trang 40algorithm final = SAET(initial)
If χ L stop ≤ ½ then T=0 (dòng 9): khi xác suất χ quá thấp thì T bằng 0, lúc
đó giải thuật sẽ hoạt động như giải thuật leo đồi