Trang 3TÓM TẮT Tìm kiếm cục bộ là một kỹ thuật để giải các bài toán thỏa mãn ràng buộc đã được nghiên cứu cách đây từ hơn bốn thập niên và các thành tựu trong lãnh vực này đã cung cấp m
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
WX
LƯU MINH TÙNG
MỘT KHUNG THỨC GIẢI HỆ PHÂN CẤP RÀNG BUỘC BẰNG TÌM KIẾM CỤC BỘ - ỨNG DỤNG VÀO BÀI TOÁN XẾP THỜI KHÓA
BIỂU TRƯỜNG PHỔ THÔNG
LUẬN VĂN THẠC SĨ
– TP HỒ CHÍ MINH, THÁNG 3 NĂM 2007 –
Trang 2Tôi xin chân thành cảm ơn các thầy cô hướng dẫn trong quá trình học cao học: P.GS TS Phan Thị Tươi, TS Cao Hoàng Trụ, TS Phạm Tường Hải, TS Dương Tuấn Anh, TS Nguyễn Văn Hiệp, TS Lê Văn Trung, TS Lê Ngọc Minh, Th.S Nguyễn Trung Trực
Tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy TS Dương Tuấn Anh người đã tận tình hướng dẫn và giúp đỡ trực tiếp trong quá trình làm luận văn tốt nhiệp
Tp Hồ Chí Minh, Tháng 3 Năm 2007
Lưu Minh Tùng
Trang 3Trang 3
TÓM TẮT
Tìm kiếm cục bộ là một kỹ thuật để giải các bài toán thỏa mãn ràng buộc đã được nghiên cứu cách đây từ hơn bốn thập niên và các thành tựu trong lãnh vực này đã cung cấp một phương pháp tiếp cận quan trọng để mô tả và giải các bài toán trong thực tế Năm 1992, Alan Borning đã đưa ra một cách tiếp cận mới cho việc mô tả bài toán thỏa mãn ràng buộc trong đó các ràng buộc được phân cấp thành các mức đi từ các mức ràng buộc quan trong nhất đến những ràng buộc yếu nhất
Năm 2004, tác giả Thân Văn Sử đề xuất một khung thức giải hệ phân cấp ràng buộc trên miền trị hữu hạn bằng tìm kiếm cục bộ dựa trên giải thuật tìm kiếm với bước đi ngẫu nhiên (WSAT) với hai bước: Đầu tiên tìm một lời giải ban đầu thỏa mãn các ràng buộc cứng mức 0 Sau đó, tinh chế lời giải ban đầu để có được lời giải chất lượng cao hơn với mức thỏa mãn của phân cấp được nâng cao dần nhưng vẫn bảo tồn tính đơn vị của mỗi mức trong phân cấp
Luận văn này, tiếp tục nghiên cứu và ứng dụng khung thức giải thuật đã được
đề xuất của tác giả Thân Văn Sử cho lớp bài toán xếp lịch nhằm xác định khả năng
áp dụng khung thức giải thuật trên cho các lớp bài toán khác nhau đồng thời đánh giá tính đúng đắn của khung thức trên
Với khung thức đã được đề xuất như trên, nghiên cứu này xây dụng một bộ giải hướng đối tượng cho hệ phân cấp ràng buộc trên miền trị hữu hạn bằng tìm kiếm cục bộ và áp dụng bộ giải này vào bài toán cụ thể là xếp thời khóa biểu cho trường phổ thông
Trang 4Trang 4
MỤC LỤC
Chương 1 Giới thiệu 7
1.1 Hệ phân cấp ràng buộc 7
1.2 Tìm kiếm cục bộ 7
1.3 Phạm vi và mục tiêu của đề tài 8
1.4 Đóng góp của luận văn 8
1.5 Tổ chức luận văn 9
Chương 2 Cơ sở lý thuyết 10
2.1 Tìm kiếm cục bộ và những giải thuật 10
2.1.1 – Giải thuật tìm kiếm cục bộ cơ bản 10
2.1.2 – Các vấn đề cơ bản của kỹ thuật tìm kiếm cục bộ 11
2.1.3 – Lời giải ban đầu 11
2.1.4 – Mô tả tập lời giải kế cận và cơ chế chọn bước chuyển 12
2.1.5 – Vấn đề ngưng lặp trong các giải thuật tìm kiếm cục bộ 13
2.1.6 – Các giải thuật tìm kiếm cục bộ 13
2.2 Hệ phân cấp ràng buộc 19
2.2.1 Các khái niệm 19
2.2.2 Các công trình nghiên cứu liên quan đến hệ phân cấp ràng buộc 23
- Các giải thuật giải hệ phân cấp ràng buộc bằng phương pháp chính xác 23
- Công trình của tác giả Lee Sheet Chong 25
- Công trình của tác giả Thân Văn Sử 26
2.3 Kết chương 26
Chương 3 Khung thức giải hệ phân cấp ràng buộc bằng tìm kiếm cục bộ 27
3.1 Nhận xét chung về bài toán ràng buộc có phân cấp 27
3.2 Một số vần đề khi giải hệ ràng buộc có phân cấp 28
3.3 Khung thức giải thuật 29
3.4 Các bước chọn lựa 31
3.4.1 Cơ chế ràng buộc được cải thiện 31
3.4.2 Cơ chế chọn bước chuyển và đa dạng hóa vùng tiềm kiếm 32
3.5 Tiêu chuẩn ngưng lặp 34
3.6 Sơ lược về bộ giải 34
Chương 4 Ứng dụng bộ giải vào bài toán xếp lịch trường phổ thông 40
4.1 Bài toán thời khóa biểu trường phổ thông 40
4.1.1 Mô tả 40
4.1.2 Các ràng buộc trong việc lập thời biểu: 40
4.1.3 Tổ chức trường học: 42
4.1.4 Tính tương đối của lời giải: 42
4.1.5 Sắp thời khoá biểu bằng tay: 43
4.2 Mã hóa bài toán 43
4.2.1 Nhận diện biến, miền trị 43
4.2.2 Cách xác định bước chuyển và heuristic 45
4.2.3 Nhận diện và phân cấp ràng buộc 47
4.3 Cơ sở dữ liệu bài toán xếp lịch 49
4.4 Cấu trúc dữ liệu hỗ trợ lập trình 51
4.5 Xây dựng lời giải ban đầu 63
4.6 Mô hình cụ thể của bài toán 68
4.6.1 Thiết kế lớp cho bài toán 68
4.6.2 Một số giải thuật chính sử dụng trong chương trình 75
4.7 Kết quả thực nghiệm 81
Trang 5Trang 5
4.8 Kết chương 85
Chương 5 Kết luận 86
Tài liệu tham khảo 89
Phụ lục A: Giải thuật tô màu đồ thị 91
1 Khái niệm đồ thị 91
2 Bài toán tô màu đỉnh đồ thị 91
3 Giải thuật tô màu đồ thị 92
Phụ lục B: Demo sử dụng chương trình 95
Bảng thuật ngữ Anh-Việt đối chiếu 98
Trang 6Trang 6
Danh mục bảng
Bảng 4.1 Kết quả tối ưu ràng buộc mềm……… 85 Bảng 4.2 Kết quả tối ưu ràng buộc mềm (nguồn [14])……….85
Trang 7Trang 7
Chương 1 Giới thiệu
Chương này giới thiệu chung về đề tài Bao gồm nội dung nghiên cứu của đề tài, phạm vi và giới hạn của đề tài, đóng góp của luận văn và cấu trúc của luận
văn
1.1 Hệ phân cấp ràng buộc
Hệ phân cấp ràng buộc (constraint hierarchy) được là một nhóm tập hợp của các
ràng buộc đã được gán nhãn Cho một phân cấp H, các tập H 0 , H 1 , H 2 … trong đó
H 0 là tập chứa các ràng buộc cứng, tập H i là tập chứa các ràng buộc có nhãn mức i
Vì n là mức cuối nên hiển nhiên H k =∅ với k>n
Hệ phân cấp ràng buộc Borning và cộng sự đưa ra năm 1992 [2] Đến nay đã có rất nhiều bài toán ở rất nhiều lĩnh vực cả ở mức lý thuyết cũng như mức ứng dụng đã được nhiều tác giả nghiên cứu và áp dụng
Hệ phân cấp ràng buộc rất tiện lợi cho việc giải các bài toán ràng buộc quá mức (over-constrained), bên cạnh đó hướng tiếp cận PCSP (bài toán thỏa mãn ràng
buộc riêng phần) để giải quyết cho bài toán ràng buộc quá mức cũng được nhiều công trình nghiên cứu
Hệ phân cấp ràng buộc trên miền trị hữu hạn đã từng được giải bằng phương pháp chính xác (tìm kiếm theo hệ thống) nhưng có rất ít công trình nghiên cứu giải chúng bằng tìm kiếm cục bộ Việc nghiên cứu và áp dụng chúng vào các bài toán ứng dụng thực tế là rất cần thiết
1.2 Tìm kiếm cục bộ
Tìm kiếm cục bộ (local search) là tên gọi được đặt cho một họ các kỹ thuật để giải
các bài toán tìm kiếm và bài toán tối tưu, được phát triển từ đầu những năm 1960, xuất phát từ những nghiên cứu trong các lĩnh vực lập trình máy tính, nghiên cứu tác vụ, trí tuệ nhân tạo
Trang 8Trang 8
Các giải thuật tìm kiếm cục bộ là các giải thuật tìm kiếm không-hệ thống theo
nghĩa “không bảo đảm được lời giải tối ưu” và việc tìm kiếm sẽ kết thức khi phát
hiện một tiêu chuẩn thỏa mãn được định trước Tìm kiếm cục bộ đặt biệt thích hợp với các bài toán quy mô lớn, tập ràng buộc nhiều và phức tạp Mặc dù tìm kiếm cục bộ chỉ đưa lại lời giải cận tối ưu nhưng các kỹ thuật này vẫn thu hút nhà nghiên cứu quan tâm vì tính hữu hiệu và khả năng áp dụng vào thực tế của chúng
1.3 Phạm vi và mục tiêu của đề tài
Với mục đích phát triển và ứng dụng khung thức giải hệ phân cấp ràng buộc bằng tìm kiếm cục bộ với các mục tiêu như sau:
1 Tìm hiểu hệ phân cấp ràng buộc
2 Tìm hiểu kỹ thuật tìm kiếm cục bộ (cụ thể là giải thuật WSAT) để áp dụng vào việc giải hệ phân cấp ràng buộc trên miền trị hữu hạn
3 Tìm hiểu bài toán xếp lịch trường phổ thông
4 Hiệu chỉnh khung thức giải thuật giải hệ phân cấp ràng buộc bằng tìm kiếm cục bộ (Thân Văn Sử, 2004 [11]) để giải bài toán xếp lịch trường phổ thông
5 Thực nghiệm bộ giải ứng dụng vào bài toán xếp lịch trường phổ thông nhằm đánh giá khả năng áp dụng và tính đúng đắn của khung thức giải thuật đã đề xuất
1.4 Đóng góp của luận văn
Từ những mục tiêu đưa ra qua quá trình nghiên cứu những kết quả chính của đề tài bao gồm:
1 Đánh giá một số giải thuật giải hệ phân cấp ràng buộc, cũng như các giải thuật tìm kiếm cục bộ
2 Cải tiến khung thức giải thuật giải hệ phân cấp ràng buộc bằng tìm kiếm cục bộ
3 Hiện thực bộ giải hệ phân cấp ràng buộc, sử dụng môi trường VC++
4 Áp dụng thành công bộ giải vào việc giải bài toán xếp lịch trường phổ thông với kết quả khả quan và thời gian chạy giải thuật tương đối nhanh
so với giải thuật tìm kiếm Tabu và giả thuật mô phỏng luyện kim
Trang 9Trang 9
5 Đánh giá khả năng áp dụng của khung thức giải thuật vào lớp bài toán xếp lịch với các hạn chế và ưu điểm
1.5 Tổ chức luận văn
Với các mục tiêu đề ra, luận văn được tổ chức bao gồm các chương sau:
Chương 2: Cơ sở lý thuyết: Trình bày các lý thuyết sơ sở sử dụng trong luận văn bao gồm: các giải thuật tìm kiếm cục bộ và hệ phân cấp ràng buộc
Chương 3: Đưa ra nhận xét và các yêu cầu của bộ giải hệ phân cấp ràng buộc Phân tích khung thức giải thuật giải hệ phân cấp ràng buộc bằng tìm kiếm cục bộ trên miền trị hữu hạn (Thân Văn Sử, 2004 [11]) và đưa ra bộ giải phù hợp với bài toán xếp lịch trường phổ thông
Chương 4: Ứng dụng bộ giải vào bài toán xếp lịch trường phổ thông
Chương 5: Trình bày đánh giá, kết luận và hướng phát triển của đề tài
Trang 10Trang 10
Chương 2 Cơ sở lý thuyết
Trong chương này trình bày nội dung cơ sở lý thuyết để giải quyết bài toán bao gồm các khái niệm và các giải thuật tìm kiếm cục bộ cơ bản Định nghĩa hệ phân cấp ràng buộc, các giải giải thuật hệ phân cấp ràng buộc, phần cuối là các công trình liên quan đến hệ phân cấp ràng buộc
2.1 Tìm kiếm cục bộ và những giải thuật
2.1.1 – Giải thuật tìm kiếm cục bộ cơ bản
Ý tưởng của giải thuật tìm kiếm cục bộ có thể được mô tả như sau: tìm lời
giải ban đầu s trên không gian tìm kiếm S (tác vụ InitSolution), rồi tiến hành lặp tinh chỉnh chất lượng lời giải Tại mỗi bước lặp, gọi M là tập tất cả các bước chuyển từ lời giải hiện hành s, chọn một bước chuyển khả thi m trong tập con
M’⊆M dựa vào hàm chi phí f và tập lời giải kế cận N rồi thực hiện bước chuyển m
để chuyển lời giải s thành lời giải s 0 Hình 2.1.1 minh họa mã giả của giải thuật tìm kiếm cục bộ tổng quát Giải thuật thường được điều khiển bằng hai tham số: (1)
MaxCost: Chi phí lớn nhất có thể chấp nhận được và (2) MaxMoves: Số bước
chuyển lớn nhất cho phép
Hình 2.1 Giải thuật tìm kiếm cục bộ cơ bản
Procedure LocalSearch (S,f,MaxCost,MaxMoves)
Đầu vào: không gian tìm kiếm S, hàm chi phí f,
Chi phí tối đa MaxCost, số bước chuyển tối đa MaxMoves
Đầu ra: Lời giải cận tối ưu
Trang 11Trang 11
Cơ chế xác định tập con M’⊆M (thủ tục GenerateLocalMoves) và cơ chế
chọn bước chuyển m (thủ tục MakeLocalMove) sẽ ấn định phương pháp tìm kiếm
cục bộ cụ thể để có các tên gọi khác nhau như: Giải thuật leo đồi (Hill-Climbing),
giải thuật tìm kiếm Tabu (Tabu Search), giải thuật tìm kiếm với bước đi ngẫu nhiên
(Walk Search, WSAT),… Chi tiết về các giải thuật này sẽ được trình bày ở các đoạn sau
Trong giải thuật GenerateLocalMoves, các cơ chế khác nhau được dùng
nhằm đa dạng hoá vùng tìm kiếm để tránh các trạng thái tối ưu cục bộ có thể rất phức tạp
Trong giải thuật MakeLocalMove, việc chọn một bước chuyển thường áp
dụng cách chọn ngẫu nhiên một bước chuyển trong tập các bước chuyển khả thi
(kết quả của thủ tục GenerateLocalMoves)
2.1.2 – Các vấn đề cơ bản của kỹ thuật tìm kiếm cục bộ
Một trong những vấn đề chính được quan tâm đối với các kỹ thuật tìm kiếm
cục bộ là cách thoát khỏi những tình huống tối ưu cục bộ (local optimal) của hàm
chi phí vì lời giải tốt nhất có thể không nằm trong vùng lân cận của lời giải đang được xem xét Tuy nhiên, ngay cả việc sử dụng các cơ chế đặc biệt nhất để thoát
khỏi chúng (như kỹ thuật giả lập luyện kim, kỹ thuật tìm kiếm Tabu,…) cũng
không đem lại kết quả tối ưu cho mọi bài toán Do vậy các thủ tục tìm kiếm cần
phải dùngmột số chiến lược đa dạng hóa vùng tìm kiếm để không những chỉ cho
phép thoát khỏi tình huống tối ưu cục bộ, mà còn có thể tránh xa sang vùng khác nhằm tránh được các bẫy quanh trạng thái tối ưu cục bộ
Các vấn đề cơ bản của kỹ thuật cơ bản mà giải thuật nào cũng phải xét đến bao gồm:
(1) Phương pháp tìm lời giải ban đầu
(2) Cơ chế xác định tập bước chuyển khả thi và cơ chế chọn bước chuyển (3) Điều kiện ngưng quá trình lặp tối ưu lời giải
2.1.3 – Lời giải ban đầu
Lời giải ban đầu trong giải thuật tìm kiếm cục bộ đóng vai trò khởi tạo trị ban đầu cho các biến để từ đó tinh chỉnh chất lượng lời giải Tuy nhiên, chất lượng của lời giải ban đầu có thể ảnh hưởng lên hiệu suất của một giải thuật tìm kiếm cục
Trang 12Trang 12
bộ Một lời giải ban đầu có chất lượng càng cao thì chi phí cho việc tinh chỉnh lời giải càng thấp vì số bước chuyển cần thiết trên lời giải này sẽ nhỏ hơn Tuy nhiên chi phí cho việc tìm một lời giải ban đầu có chất lựơng khá tốt có thể quá cao so với chi phí chu của cả giải thuật Do vậy, việc chọn giải thuật tìm lời giải bài toán
là một yếu tố thường được cân nhắc cho mỗi bài toán
Các cách thông dụng để tìm lời giải ban đầu:
1) Gán trị ngẫu nhiên cho các biến của bài toán
2) Gán giá trị cho các biến theo một khuôn mẫu (pattern) phụ thuộc bài toán
3) Dùng một giải thuật tham lam hay một giải thuật tìm kiếm có hệ thống để tạo lời giải ban đầu
2.1.4 – Mô tả tập lời giải kế cận và cơ chế chọn bước chuyển
Từ lời giải s, tập lời giải “lân cận” N(s) của s là những lời giải trong đó gán một vài biến vào các trị khác với trị đã được gán cho chúng trong s Như thế, một bước chuyển là khả năng gán lại một trị mới NewValue vào một biến x i sao cho lời
giải có chất lượng cao hơn (sai số nhỏ hơn lời giải trước ) và tập lời giải kế cận có thể được mô tả bằng:
xét tại mỗi bước lặp bằng hai bước:
Bước 1: Chọn trước một ràng buộc c đang bị xung đột có thể có kết hợp với các
yếu tố như: lấy ngẫu nhiên, xác suất, độ ưa thích, trọng số… Chính xác yếu tố được xem xét này đóng vai trò tạo ra một khả năng đa dạng hóa vùng tìm kiếm và tránh trạng thái tối ưu cục bộ
Bước 2: Gọi Vars(c) là tập các biến bị ảnh hưởng bởi ràng buộc c Chọn một cặp
<biến, trị> trong tập Var-Varlues(c) dựa trên hàm mục tiêu (ở đây mang ý nghĩa
sai số) Cách chọn cặp <biến, trị> thường được dùng là cơ chế ngẫu nhiên hoặc
phép so sánh dựa trên sai số
Var value c− = x NewValue> ∈x Vars c NewValue D x∈
Trang 13kiếm Tabu, giải thuật HSAT, giải thuật Novelty…)
2.1.5 – Vấn đề ngưng lặp trong các giải thuật tìm kiếm cục bộ
Chất lượng của lời giải cuối cùng tỉ lệ thuận với số bước lặp, rất khó xây dựng một tiêu chuẩn ngưng lặp chung cho mọi bài toán Do vậy tiêu chuẩn ngưng lập thường là các tham số mang tính thực nghiệm phụ thuộc bài toán Tuy nhiên, các tiêu chuẩn ngưng lặp thường được chọn là tổ hợp của các yếu tố sau:
(1) Ấn định trước chi phí của lời giải
(2) Ấn định trước số bước lặp
(3) Một trạng thái biết trước của bài toán hoặc một yêu cầu của người sử dụng
Từ giải thuật tìm kiếm cục bộ cơ bản nêu trên, nhiều nghiên cứu đã được tiến hành và một số họ giải thuật đã được đề xuất Một số họ thông dụng được đề cập ở mức cơ bản bao gồm:
Giải thuật leo đồi (Hill - Climbing)
Giải thuật tìm kiếm tabu (Tabu Search)
Giải thuật tìm kiếm với bước đi ngẫu nhiên (WSAT)
Giải thuật mô phỏng luyện kim (Simulated Annealing)
2.1.6 – Các giải thuật tìm kiếm cục bộ
2.1.6.1 Giải thuật leo đồi
Giải thuật leo đồi (Hill – Climbing algorithm) là giải thuật cơ bản nhất
trong các kỹ thuật tìm kiếm cục bộ dựa trên ý tưởng chỉ xem xét các bước chuyển
có cải thiện được hàm mục tiêu Đây là một giải thuật đơn giản nhưng lại rất mạnh
và hiệu quả trong việc giải rất nhiều bài toán thỏa mãn ràng buộc Trong quá trình tinh chế lời giải, nếu không thể tìm được một bước chuyển có cải thiện được hàm mục tiêu, giải thuật sẽ dừng dù lời giải hiện hành chưa phải là lời giải tối ưu toàn cục Hình 2.2 minh họa khung thức chung cho hai thủ tục chính của giải thuật leo đồi với bước chuyển ngẫn nhiên, giải thuật cơ bản nhất của họ kỹ thuật này
Trang 14Trang 14
2.1.6.2 Giải thuật tìm kiếm Tabu
Chiến lược của kỹ thuật tìm kiếm Tabu là lưu trữ các bước chuyển đã đi qua
trong một danh sách và cấm không cho phép quay lại một bước chuyển cũ sau một
số bước chuyển cho trước được quyết định bởi kích thước của danh sách Một bước chuyển được chọn phải là một bước chuyển không bị cấm hoặc là một bước chuyển bị cấm nhưng tại thời điểm đang xét lại tạo ra được một cải thiện đáng kể trên hàm mục tiêu (tiêu chuẩn kỳ vọng) Hình 2.3 trình bày khung thức chung của
kỹ thuật này
Sự khác biệt của kỹ thuật tìm kiếm Tabu so với giải thuật LocalSearch cơ bản ở chỗ cần đến một danh sách tabu gọi là TabuList, danh sách này đựơc khởi tạo ngay sau khi tìm được lời giải ban đầu
Giải thuật tabu phản ứng (RTS – reactive tabu search)
Một nguyên tắc thường được đồng ý là: Nếu càng nhiều lần phải xem xét lại cùng một lời giải thì càng cần đa dạng hoá vùng tìm kiếm và nếu càng ít phải xem xét lại một lời giải thì càng cần nhiều bước tìm kiếm tập trung để không bỏ sót lời
giải hứa hẹn Dựa vào nguyên tắc này, giải thuật Tabu phản ứng sử dụng danh
sách Tabu có kích thước thay đổi động cùng với sự kết hợp của hai cơ chế tìm
kiếm
(1) Tìm kiếm tập trung: Được áp dụng khi các bước chuyển cũ ít được viếng, kích thước danh sách Tabu cần có trị nhỏ để giảm xác suất tìm kiếm rộng
(tăng xác suất tìm kiếm tập trung)
(2) Tìm kiếm rộng: Được áp dụng khi những bước chuyển cũ được viếng lại
nhiều lần, số bước chuyển bị cấm cần lớn để đa dạng hóa vùng tìm kiếm
Điểm then chốt trong giải thuật Tabu phản ứng là cơ chế xác định lúc nào cần tìm kiếm tập trung và lúc nào cần tìm kiếm rộng Hertz và công cụ ([2]) đề
xuất cơ chế cập nhật động hàm mục tiêu để thưởng hoặc phạt tùy thuộc vào tần
suất một bước chuyển cũ được thực hiện lại, còn R Battiti và G Tecchiollli ([3]) lại quản lý cơ chế tìm kiếm bằng chu kỳ T thay đổi động theo số chứng cứ dựa trên
số bước chuyển cũ được sử dụng lại
Trang 15Trang 15
Procedure GenerateLocalMoves (s, f, Totalmoves, MaxMoves)
Đầu vào: Lời giải hiện hành s, , hàm chi phí f,
Tổng số bước chuyển hiện hành TotalMoves,
Số bước chuyển tối đa MaxMoves
Đầu ra: Tập bước chuyển khả thi M’ từ s
Dcur ← Miền trị hiện hành của v
dcur ←Trị hiện hành của biến v
for all d Dcur do if d ≠ dcur then Begin
m←{vi,d}
if f(s m) ≤ BestCost then Begin
if f(s m)< BestCost then Begin
Trang 17Trang 17
2.1.6.3 Giải thuật tìm kiếm với bước đi ngẫu nhiên
Giải thuật tìm kiếm với bước đi ngẫu nhiên (WSAT) là một cải tiến của giải
thuật leo đồi dựa trên xác suất để chọn một biến hoặc xem xét tất cả các biến của ràng buộc đang được cải thiện Khung thức của giải thuật này (hình 2.4)
Hình 2.4 Giải thuật tìm kiếm với bước đi ngẫu nhiên (Nguồn [1])
Trang 18Trang 18
2.1.6.4 Giải thuật mô phỏng luyện kim
Giải thuật giả lập luyện kim (SA, Simulated Annealing), đúng như tên gọi,
là một ánh xạ của kỹ thuật luyện kim vật lý thành một giải thuật tìm kiếm lời giải tối ưu và các ý tưởng chính của giải thuật này đã được trình bày như Hình 2.5
Procedure SimulatedAnnealing (S, f, T0, α, nrep)
Đầu vào: Không gian tìm kiếm S, nhiệt độ ban đầu T0, hệ số giảm nhiệt α hàm chi
phí f, tập lời giải kế cận N, số bước lặp nrep với T0>0, 0< α <1, nrep>0
Đầu ra: Lời giải tối ưu cục bộ s0
Trang 19Một ràng buộc (constraint) là một quan hệ trên một số miền trị D nào đó
Miền trị xác định tập ký hiệu vị từ ràng buộc ΠD mà có chứa đựng kí hiệu =
Một ràng buộc là một biểu thức có dạng p (t 1 ,t 2 ,…, t n ) trong đó p là một ký hiệu
n-ngôi (n-ary) trong tập ΠD và mỗi t i là một toán hạng (term)
– Ràng buộc được gán nhãn
Ràng buộc được gán nhãn (labeled constraint) là một ràng buộc được gán
một gía trị mô tả mức độ cần phải thỏa mãn, ký hiệu là sc (strength constraint)
Nhãn của ràng buộc thường được gán bằng một số nguyên 0,1,2 … theo thứ tự:
Nhãn càng bé, yêu cầu cần phải thỏa mãn càng cao Một ràng buộc có nhãn i được gọi là ràng buộc mức i Bản chất của việc gán nhãn cho ràng buộc này là ấn định
mức độ ưu tiên cần thỏa mãn cho từng ràng buộc
– Hệ phân cấp ràng buộc
Hệ phân cấp ràng buộc là một nhóm tập hợp của các ràng buộc đã được gán
nhãn Cho một phân cấp H, các tập H 0 , H 1 , H 2 … trong đó H 0 là tập chứa các ràng
buộc cứng, tập H i là tập chứa các ràng buộc có nhãn mức i
Vì n là mức cuối nên hiển nhiên H k =∅ với k>n
– Lời giải và tập lời giải của hệ phân cấp ràng buộc
- Lời giải trong phân cấp H là một phép gán trị cho các biến tự do trong phân cấp H, nghĩa là ánh xạ các biến tự do trong H vào miền D
Gọi S là tập các lời giải của H Rõ ràng mỗi lời giải trong S sau khi được áp
dụng thì các ràng buộc cứng phải được thỏa và các ràng buộc mềm cũng cần được thỏa mãn càng nhiều càng tốt theo mức ưu tiên đã định trước
– Phép so sánh tốt hơn
Better ( , , )σ θ H cho kết quả true nếu phép gán trị σ tốt hơn phép gán trị θtrong phân cấp H
Trang 20Trang 20
– Tìm tập lời giải S
Gọi S 0 là tập các lời giải để tập các ràng buộc H 0 thỏa mãn Sử dụng S 0, định
nghĩa tập các lời giải cĩ cải thiện S bằng cách loại bỏ tất cả các lời giải kém hơn một số phép tính tốn khác nhờ vào vị trí từ better
Tuy nhiên, vị từ better khơng cung cấp một thứ tự tồn phần trong tập các
lời giải Cĩ thể tồn tại hai lời giải σ θ và chúng khơng tốt hơn so với nhau ,
Vị từ better vẫn tơn trọng phân cấp, nghĩa là nếu một số lời giải trong S 0 thỏa mãn hồn tồn tất cả các ràng buộc trong H k thì các lời giải trong S cũng thỏa mãn hồn tồn các ràng buộc trong H k Hiển nhiên vì nếu cĩ một lời giải trong S khơng thỏa mãn một ràng buộc trong H k thì lời giải này kém hơn các lời giải cịn
lại và qua vị từ better, lời giải này đã bị loại ra khỏi S
Nếu ∃ ∈θ S ∧ ∃ >k để i 1, ,k p H∀ ∈ ∀ ∈ pθ =true
1, , i,thì ∀ ∈ ∀ ∈σ S i k ∀ ∈p H pσ =true
– So sánh hai lời giải:
Với hai lời giải θ, và σ trên hệ phân cấp H, hiển nhiên lời giải θ tốt hơn lời giải σ nếu mức thỏa mãn của θ cao hơn mức mà σ thỏa mãn hay số ràng buộc mà θ thỏa mãn ở bước i nhiều hơn số ràng buộc mà σ thỏa mãn Một tình huống mà các chỉ số so sánh này bằng nhau thì làm sao so sánh chúng?
Giải pháp cho tình huống này là xây dựng sai số e(cθ) trên ràng buộc c khi
áp dụng lời giải θ, Hàm sai số này trả về một số thực mơ tả mức độ “gần
Trang 21Trang 21
thỏa mãn” đối với ràng buộc c khi áp dụng lời giải θ Hàm sai số này phải có tính chất
e(cθ) = 0 nếu và chỉ nếu cθ thỏa mãn
Với mọi miền D, chúng ta có thể sử dụng các hàm tính sai số thông dụng trả trị 0 nếu ràng buộc được thỏa mãn và trả trị 1 nếu hàm không được thỏa mãn Một
phép so sánh (comparator) sử dụng hàm sai số này gọi là phép so sánh vị từ
(predicate comparator)
Với miền D là một không gian đo (metric space), chúng ta có thể dùng
chính giá trị của không gian này để tính toán sai số thay vì các hàm sai số thông thường Thí dụ: Sai số cho ràng buộc X=Y chính là khoảng cách giữa X và Y,
<X,Y> là tọa độ trong không gian đo với phép tính sai số này, ta gọi là phép so
sánh số đo (metric comparator)
– Định nghĩa lời giải tốt – hơn cục bộ
Một phép gán trị θ là tốt hơn cục bộ ( locally-better) so với phép gán trị σnếu:
(i) Với mọi mức từ 1 đến k-1, sai số cho từng ràng buộc khi áp dụng lần
lượt hai phép gán trị này đều bằng nhau và
(ii) Ở mức k, có ít nhất một ràng buộc q là cho e(qθ )< e(qσ ) và các ràng
buộc r còn lại trong mức này e r( )θ ≤e r( σ)
H
∀
∧
Với vị từ này, hai lời giải được so sánh có nhìn trước một mức
– Định nghĩa lời giải tốt hơn toàn cục
Trang 22Trang 22
Một phép gán trị θ là tốt hơn toàn cục (globally-better) so với phép gán trị
σ nếu:
(i) Với mọi mức từ 1 đến k-1, sai số kết hợp cho từng mức khi áp dụng lần
lượt hai phép gán trị này đều bằng nhau và
(ii) Ở mức k, sai số kết hợp khi áp dụng phép gán trị θ nhỏ hơn khi áp dụng
Từ các hình thức của hàm sai số e(cθ) ở trên, có thể sử dụng hàm dạng đơn
giảm (hàm sai số trả trị 0/1 ứng với phép so sánh vị từ) hoặc dùng dạng đo đạc được của không gian đo (hàm sai số trả trị số thực ứng với phép so sánh số đo) để
có các biến thể của các phép so sánh:
locally-predicate-better xuất phát từ locallly-better
locally-metric-better xuất phát từ locallly-better
Trang 23Trang 23
globally-predicate-better xuất phát từ globally-better
globally-metric-better xuất phát từ globally-better
weighted-sum-predicate-better xuất phát từ globally-better
weighted-sum-metric-better xuất phát từ globally-better
worst -case-predicate-better xuất phát từ globally-better
worst -case-metric-better xuất phát từ globally-better
least-squares-predicate-better xuất phát từ globally-better
least-squares-metric-better xuất phát từ globally-better
Phép so sánh unsatisfied-count better là một trường hợp đặc biệt của
weighted-sum-predicate-better khi chọn trọng số cho mỗi ràng buộc là 1 phép so sánh này
sẽ đi đếm số ràng buộc được thỏa mãn
Các phiên bản vị từ của phép so sánh toàn cục đặc biệt không hữu ích vì
worst-case-predicate-better có tính chất là được tất cả hoặc không gì hết (all-or-nothing)
không giúp ích tốt cho việc trích các lời giải như các vị từ khác và vị từ
lease-squares-predicate-better luôn cho cùng kết quả với weighted-sum-predicate-better
vì l2 = 1
Ngoài ra, có thể định nghĩa phép so sánh locally-error-better xuất phát từ
locally-better nhưng dựa trên sai số dùng cho các hệ ràng buộc bất đẳng thức ([5])
2.2.2 – Các công trình nghiên cứu liên quan đến hệ phân cấp ràng buộc
- Các giải thuật giải hệ phân cấp ràng buộc bằng phương pháp chính xác
+ Giải thuật Blue và DeltaBlue
Do Alan Borning cùng các cộng sự giới thiệu khi đưa ra lý thuyết về hệ
phân cấp ràng buộc ([2]) dùng để giải các phân cấp ràng buộc đẳng thức không
chu trình dựa trên kỹ thuật lan truyền cục bộ (local propagation) : Một ràng buộc
có thể được dùng để xác định trị cho một trong các biến bất cứ khi nào các biến còn lại của ràng buộc đã được xác định Điều này lại làm cho một số ràng buộc khác xác định được trị cho các biến khác của hệ thống, và cứ như thế Sự lan
truyền cục bộ tương tự như sự lan truyền trị thông qua một mạng luồng dữ liệu
(dataflow network) Điểm khác biệt giữa chúng là : Trong khi mạng dữ liệu có một
Trang 24Trang 24
đường lan truyền riêng duy nhất thì một tập các ràng buộc đa chiều có nhiều
đường lan truyền (propagation paths) Vì vậy, bộ giải ràng buộc (constraint
solver) phải quyết định hướng lan truyền tốt nhất sẽ được dùng
+ Nhóm giải thuật Orange
Cũng do Alan Borning và các cộng sự giới thiệu ([2]) dùng để giải hệ ràng
buộc đẳng thức và bất đẳng thức tuyến tính Một bất lợi của các giải thuật lan truyền cục bộ là : Chúng không tin cậy trong các trường hợp có ràng buộc vòng trên đồ thị ràng buộc Trong một số trường hợp, các giải thuật này tìm được lời giải không có vòng đối với một đồ thị có vòng, nhưng lời giải này không đáng tin cậy Giải thuật thường treo với đồ thị vòng cùng với một thông báo lỗi Hơn nữa, nếu các ràng buộc thực sự đồng thời thì giải thuật lan truyền cục bộ không thể tìm
ra lời giải Do vậy, các tác giả thiết kế tập giải thuật khác có thể giải các phân cấp ràng buộc trên không gian do (metric space) chứa một số lượng tùy ý các ràng
buộc đẳng thức và bất đẳng thức tuyến tính, sử dụng các phép so sánh
weighted-sum-metric-better, worst-case-metric-better, locally- metric-better Các giải thuật
này thuộc nhóm giải thuật được đặt tên là Orange
- Bộ giải gia tăng hệ ràng buộc có phân cấp
Francisco Menezes và các cộng sự ([8]) giới thiệu bộ giải hệ phân cấp ràng
buộc có tính gia tăng (IHCS-Incremental Hierarchical Constraint Solver) được viết
bằng ngôn ngữ C, cho phép tích hợp vào nhiều môi trường lập trình khác nhau, đặc biệt cho phép tích hợp vào ngữ lập trình logic Prolog để có được một ngôn ngữ lập
trình logic ràng buộc phân cấp (HCLP-Hierachical Constraint Logic Programming
Language) Bộ giải gia tăng này được các tác giả xây dựng với mục tiêu làm nhân
(kernel) cho các hệ hỗ trợ quyết định dựa trên phép so sánh tốt hơn cục bộ
(locally-predicate-better) tiến hành với hai pha : Pha tới (forward phase) và pha lui
(backward phase) khi gặp xung đột Có thể nói giải thuật mà tác giả đưa là chắc chắn cho ra lời giải tối ưu Tuy nhiên giải thuật này là giải thuật mang tính hệ thống, khó hiểu và khá phức tạp để áp dụng
Trang 25Trang 25
- Giải thuật chuyển phân cấp ràng buộc hệ ràng buộc thông thường
Armin Wolf ([12]) giới thiệu phương pháp chuyển một hệ phân cấp ràng
buộc thành một hệ ràng buộc thông thường tương đương nhằm có thể áp dụng các phương pháp giải đã biết, và có thể giải các hệ ràng buộc quá mức (over-
constrained)- một hệ không có lời giải khi giải bằng lập trình logic có ràng buộc
(CLP-Constraint Logic Programming) Các ràng buộc quá mức thường do các ràng buộc tương phản nhau như : (X<Y, Y<Z, Z<X) hoặc (H0={S<T, S<>100},
H1={S=100}) Phép so sánh được tác giả sử dụng để đánh giá các lời giải là phép
so sánh dựa trên sai số Tuy nhiên, giải thuật chuyển đổi của tác giả đưa ra khá khó hiểu và khó hiệu lực
-Giải thuật tạo khung cho hệ phân cấp ràng buộc
Hiroshi Hosobe ([7]) và các cộng sự lại nghiên cứu khả năng lan truyền cục
bộ và tổng quát hóa thành một khung thức (framework) cho bộ giải hệ phân cấp ràng buộc dạng đẳng thức nhiều biến (multi-way equality constraint) Các tác giả giới thiệu giải thuật DETAIL với độ phức tạp đa thức sau đó mở rộng cho hệ ràng
buộc bất đẳng thức với độ phức tạp hàm mũ
Giải thuật DETAIL ban đầu là giải thuật sử dụng kỹ thuật gia tăng để giải hệ
phân cấp ràng buộc nhiều biến dạng đẳng thức dựa trên lan truyền cục bộ có xét đến khả năng thỏa mãn đồng thời cũng như nới lỏng đồng thời các ràng buộc dựa
trên cơ chế : Đóng khối các ràng buộc và biến lại với nhau (gọi là constraint cell),
không có biến dùng chung giữa các khối và xử lý chung theo từng khối Mỗi khói
có các biến nhập và biến xuất, các khối được phân thứ tự (walkabout strengths) và các biến xuất được truyền từ khối này sang khối khác theo thứ tự Như vậy các ràng buộc trong một khối cùng liên quan đến một biến có thể cùng được thu giảm hoặc cùng nới lỏng
- Công trình của tác giả Lee Sheet Chong
Năm 2001, Lua Seet Chong ([3]) trong luận văn thạc sĩ của mình đã áp
dụng lý thuyết về phân cấp ràng buộc kết hợp với tìm kiếm cục bộ WSAT để giải hai bài toán tối ưu trên miền trị hữu hạn gồm bài toán cấp phát cổng của phi trường (Gate Allocation Problem) và bài toán lập lịch thi đáu thể thao (Sports Scheduling
Trang 26Trang 26
Problem) Tác giả đã dựa trên giải thuật WSAT để đưa ra một khung thức cho việc giải hệ ràng buộc có phân cấp cùng với một số cơ chế chọn ràng buộc sẽ được cải thiện dựa trên xác suất Tuy nhiên, tác giả không đưa ra một công cụ phần mềm tổng quát chung cho việc giải hệ phân cấp ràng buộc bằng tìm kiếm cục bộ
- Công trình của tác giả Thân Văn Sử
Năm 2004, Thân Văn Sử [11] trong luận văn thạc sĩ của mình đã nghiên cứu
và xây dựng một khung thức chung để giải quyết bài toán giải hệ phân cấp ràng buộc trên miền trị hữu hạn bằng tìm kiếm cục bộ và đã áp dụng thành công cho bài toán phân phối sóng vô tuyến FAP (Frequency Assigment Problem) Tác giả đã
xây dựng giải thuật lấy giải thuật WSAT làm cơ sở đồng thời cải tiến việc chọn
lựa các ràng buộc xung đột dựa trên sác xuất Tuy nhiên giải thuật chỉ được áp dụng trên một bài toán nên việc đánh giá và hoàn thiện cần phải có thời gian nghiên cứu thêm
2.3 Kết chương
Chương này đề cập đến những khái niệm lý thuyết cơ bản của đề tài đi từ các dạng của bài toán tổ hợp đến hệ ràng buộc có phân cấp, từ các giải thuật cơ bản để giải hệ ràng buộc đến bốn khung thức của giải thuật tìm kiếm cục bộ thông dụng để giải các bài toán ràng Mỗi giải thuật tìm kiếm cục bộ đều có những đặc điểm riêng nhiều khi rất phức tạp Một số nhận xét khác được rút ra:
Giải thuật leo đồi là giải thuật đơn giản nhất nhưng đủ mạnh và hiệu quả để tìm được lời giải tối ưu cục bộ nếu như bài toán có lời giải
Giải thuật tìm kiếm Tabu cần một cấu trúc dữ liệu mô tả danh sách Tabu
chứa các bước chuyển bị cấm Nếu danh sách này có kích thước là 0 thì giải thuật trở thành giải thuật leo đồi và trong trường hợp trị của một biến lại là một tập hợp,
có thể phải cần đến một tập các danh sách Tabu Do vậy cần có một cấu trúc dữ
liệu mô tả danh sách tabu hiệu quả để giảm thời gian tìm kiếm bước chuyển bị cấm
Cơ chế chọn biến sẽ xử lý bằng hai bước kết hợp với xác suất của giải thuật tìm kiếm với bước đi ngẫu nhiên rõ ràng cố tình thu hẹp vùng tìm kiếm tại mỗi bước lặp nhằm giảm chi phí trên mỗi bước chuyển
Trang 273.1 Nhận xét chung về bài toán ràng buộc có phân cấp
Như chương trước đã trình bày, một đặc điểm quan trọng về mặt lý thuyết
của hệ ràng buộc có phân cấp là "tính đơn vị" của mỗi cấp ràng buộc được xem xét
trong quá trình giải và việc so sánh chất lượng của hai lời giải khả thi dựa trên sai
số của chúng cũng dựa trên cấp của mỗi ràng buộc
Ràng buộc là một mối quan hệ giữa một nhóm biến của bai toán Một ràng buộc được gọi là thỏa mãn nếu các trị của các biến thỏa biểu thức quan hệ, ngược
lại, ràng buộc không được thỏa mãn Như thế, ràng buộc c có thể được kiểm tra
mức độ thỏa mãn thông qua một hàm sai số và nếu thực hiện một bước chuyển làm giảm được sai số của ràng buộc thì ràng buộc này được cải thiện
Số lượng biến bị khống chế bởi ràng buộc có thể bao gồm tàn bộ các biến của bai một ràng buộc tại một bước lặp, trong trường hợp xấu nhất, có thể rơi và tình huống phải quyét toàn bộ không gian trạng thái Để tránh tình huống này,
những heuristic phù hợp cần được xem xét để nâng cao hiệu quả của giải thuật khi
xem xét một ràng buộc
Mỗi ràng buộc có cách tính sai số khác nhau, có thể cần những heuristic
được kết hợp khác nhau Như vậy cơ chế chọn bước chuyển cũng khác nhau tùy thuộc vào ràng buộc hiện đang được xem xét
Một số cách tính sai số cho ràng buộc
Mỗi bài toán có những ràng buộc đặc thù riêng , có thể tóm tắt một số dạng tính toán sai số của các ràng buộc thành những hình thức cơ bản
(1) Sai số của các ràng buộc được định nghĩa bởi các quan hệ so sánh
(2) Sai số của các ràng buộc khác trị
Trang 28Trang 28
Sai số của ràng buộc so sánh
Gọi là < v1,v2, ,vk> tập biến liên quan của ràng buộc c
Gọi S = f(v1,v2, ,vk) là giá trị của quan hệ giữa các biến nếu các biến này
lần lượt được gán các trị <a1,a2, ,ak>
Gọi op là toán tử so sánh của biểu thức quan hệ
Gọi Rhs là vế bên phải của phép so sánh
Quan hệ định nghĩa ràng buộc : S op Rhs
Bảng sau đây đưa ra một cách tính sai số của ràng buộc tùy thuộc vào toán
tử so sánh :
Error = max (0,S-Rhs+1) Error = max (0,S-Rhs) Error = max (0,⏐S-Rhs⏐)
S >= Rhs S > Rhs S != Rhs
Error = max (0,Rhs-S) Error = max (0, Rhs-S+1) Error =⏐S-Rhs⏐≠0?0:1)
Sai số của ràng buộc khác trị
Một số bài toán lại đòi hỏi các trị của các biến liên quan của ràng buộc phải
khác trị nhau Cách tính sai số của ràng buộc trong trường hợp này có thể được
định nghĩa như sau:
error = Σ max (0,occurance (c, value)-1)
p∈ DC
Trong đó :
error : sai số
DC : hội các miền trị của các biến bị ảnh hưởng bởi ràng buộc c
Occurance (c, value) : Hàm trả về số biến bị ràng buộc bởi c cùng mang trị value
3.2 Một số vấn đề khi giải hệ ràng buộc có phân cấp
Vì đặc điểm phân cấp, một giải thuật cho bộ giải hệ phân cấp ràng buộc bằng tìm kiếm tục bộ phải thỏa các yêu cầu sau:
Trang 29Trang 29
(1) Lời giải phải thỏa mãn các ràng buộc cứng (các ràng buộc mức 0) Đây là yêu cầu tự nhiên và tất yếu của bài toán
(2) Chất lượng lời giải phải tính theo mức của hệ
(3) Giải thuật tìm kiếm cục bộ nhằm tinh chỉnh lời giải cần phải đáp ứng các yêu cầu :
(3.1) Có cơ chế để luôn ưu tiên thỏa mãn các ràng buộc có mức ưu tiên cao nhưng cũng có chiếu cố vốn mức độ nhất định đến các ràng buộc ở
mức yếu hơn Chính cơ chế này tạo ra tính "mịn" trong việc xem xét các
ràng buộc của hệ đồng thời tạo ra một phương cách đa dạng hóa vùng tìm kiếm
(3.2) Có cơ chế để tăng "tính tham" của giải thuật nhằm thoát các
trạng thái tối ưu cực bộ
3.3 Khung thức giải thuật
Một khung thức giải thuật chung, CH-solver cho việc giải quyết bài toán
phân cấp ràng buộc được tác giả Thân Văn Sử đề xuất [11] Giải thuật dựa vào giải
thuật WSAT (được đưa ra bởi Selman et al., 1994 [4]) làm cơ sở Giải thuật được
mô tả trong hình 3.1
Hình 3.1 Giải thuật CH-Solver
Procedure CH-Solver (H, X, p, Max_moves)
Đầu vào: cho H là phân cấp, X là là tập biến, p là sác xuất, Max_moves là số bước
chuyển tối đa
Khởi tạo s0// s0 lời giải ban đầu thỏa mãn tất cả ràng buộc cứng của bài toán
if (kiểm tra sác xuất p) then
chọn ngẫu nhiên 1 bước chuyển m từ V
Trang 30Trang 30
Kí hiệu s⊕m là áp dụng bước chuyển m trên nghiệm s Các tham số đầu vào
cho giải thuật CH-Solver gồn có Max_moves và một số thủ tục khác CH-Solver áp dụng đầy đủ sự gán trị cho tất cả các biến Ban đầu s 0 là nghiệm ban đầu của bài toán thỏa mãn tất cả các ràng buộc cứng (level0) Vòng lặp bắt đầu tìm kiếm cục
bộ bởi việc chọn ra một ràng buộc c với thủ tục select-unsatisfied-constraint Tìm
kiếm cục bộ tiếp tục tìm kiếm đến khi thỏa mãn tất cả ràng buộc của bài toán hoặc
số lần chuyển lớn hơn Max_Moves Để thoát khỏi điểm tối ưu cục bộ sác xuất p
được sử dụng Giải thuật trả về nghiệm tối ưu bằng việc sử dụng thủ tục
improve(s,s best ,p)
Giải thuật CH-Solver sử dụng 3 thủ tục con là improve,
select-unsatisfied-constraint, get-valid-moves Thủ tục selec-unsatisfied-constraint(H,X,s) trả về một
ràng buộc xung đột từ phân cấp ràng buộc với tập biến X và nghiệm hiện thời s Thủ tục get-valid-moves(c,s) trả về tập các bước chuyển hợp lệ từ nghiệm hiện thời
s bởi việc xem xét miền trị của các biến liên quan đến ràng buộc c Thủ tục improve(s,s’,H) trả về giá trị true nếu s tốt hơn s’ hoặc false cho các trường hợp
khác
Trong giải thuật CH-Solver việc chọn ràng buộc xung đột được cải tiến
bằng cách quét tất cả các ràng buộc xung đột từ tất cả các mức khác nhau trong
phân cấp ràng buộc H
Việc chọn một ràng buộc bị xung đột thông qua 2 bước:
- Bước 1: Chọn mức cao nhất có ràng buộc bị xung đột
- Bước 2: Lựa chọn một ràng buộc xung đột từ mức cao nhất và các mức khác có ràng buộc bị xung đột
Trong bước 2: nếu tại mức được chọn ràng buộc xung đột sẽ được chọn ở mức này nếu có 50% ràng buộc được thỏa mãn Nếu không các mức khác trong hệ phân cấp
sẽ được xem xét
Trang 31Trang 31
Hình 3.2 Thủ tục select-unsastified-constraint
Với khung thức giải thuật đã được đề xuất như trên, đề tài sẽ tiếp tục hoàn thiện khung thức trên tiến hành hiệu chỉnh một số bước trong giải thuật nếu có Đồng thời áp dụng khung thức trên để giải quyết cho bài toán xếp lịch thời khóa biểu trường phô thông Vì với khung thức đã đưa ra nhưng việc ứng dụng cho nhiều bài toán thực tế để kiểm chứng và đánh giá giải thuật là hết sức cần thiết
3.4 Các bước chọn lựa
3.4.1 Cơ chế ràng buộc được cải thiện
Cơ chế chọn ràng buộc sẽ được cải thiện được thực hiện làm hai bước : (1) chọn mức thấp nhất chưa thỏa mãn, (2) chọn một ràng buộc sẽ được cải thiện dựa trên mức có kết hợp với bước đi ngẫu nhiên và xác suất Tác vụ chọn mức
(MinUnSatisfiedLevel) là một tác vụ đơn giản nên được bỏ qua vì các ràng buộc
được lưu trữ thành một danh sách
Tại mức Level i, mức nhỏ nhất chưa được thỏa mãn, chỉ xem xét các ràng
buộc ở mức (mức > Level i ) khi số ràng buộc thuộc mức Level i đã thỏa mãn trên
50% và khi số ràng buộc đã thỏa mãn ở mức này càng nhiều thì hệ số xem xét đến
các ràng buộc ở mức dưới càng cao (hệ số 50% này theo chúng tôi là phù hợp theo
cơ chế cân bằng tự nhiên) Cơ chế này tạo ra được tín "mịn " trong việc cải thiện
các ràng buộc đồng thời lại tạo ra được khả năng da dạng hóa vùng tìm kiến Hình 3.2 minh họa giải thuật cho việc chọn ràng buộc
Procedure select-unsatisfied-constraint(H,X,s)
n là số mức của H
chọn mức nhỏ nhất l trong đó có ràng buộc bị xung đột
if l≥n then CH-Solver dừng và chấp nhập lời giải s, trả về nghiệm s
Trang 32Trang 32
3.4.2 Cơ chế chọn bước chuyển và đa dạng hóa vùng tm kiếm
Một bước chuyển được mô tả bằng bộ ba <v, NewValue, Delta> mang ý nghĩa : Biến v khi được gán trị mới NewValue sẽ tạo ra một biến đổi sai số so với
lời giải hiện hành
Hình 3.3 Giải thuật chọn một ràng buộc sẽ được làm thỏa mãn
Như thế delta chính là tổng chênh lệch sai số của các ràng buộc đang thỏa mãn từ mức 0 đến mức Level i đang được xét chi phối biến v bao gồm cả ràng buộc c đang
chọn mức nhỏ nhất l trong đó có ràng buộc bị xung đột
if l≥n then CH-Solver dừng và chấp nhập lời giải s, trả về nghiệm s
Trang 33Trang 33
Tác vụ xác định tập bước chuyển tốt nhất phụ thuộc vào những đặc điểm
của bài toán cụ thể nhưng phải tuân thủ nguyên tắc "Một trị mới sẽ gán cho một
biến không được làm tăng xung đột ở mức nhỏ hơn mức đang xét (mức ưu tiên cao hơn) và không phá vỡ sự thỏa mãn của một số ràng buộc đã thỏa mãn ở mức hiện hành"
Procedure Valid (Level, c, Var, OldValue, NewValue)
Đầu vào : Mức được xem xét Level, ràng buộc được xem xét c
Biến được xem xét Var, trị hiện hành OldValue Trị mới được thử thay NewValue
Đầu ra : True : Nếu có thể thay OldValue bằng NewValue
False : Không thể thay OldValue bằng NewValue
Begin
if (OldValue = NewValue) return false;
C v := Tập các ràng buộc liên quan đến biến Var
forall ci C v do
Begin
c_Level := mức của ràng buộc c i
if (c_level < Level And DeltaError (ci)Var, OldValue, NewValude)>0)) then
return false;
if (c_level=Level And Satisfied (ci) And
DeltaError (c i, Var, OldValue, Newvalue)>0)) thenm return false;
End
if DeltaError (c, Var, OldValue, NewValue)>0 then return false;
return true
End
Hình 3.4 Giải thuật kiểm tra tính hợp lệ của trị mới khi thế trị cũ của một biến
Hình 3.4 mô tả giải thuật Valid sẽ kiểm tra một trị mới NewValue có thể
dùng để thay thế cho trị hiện hành OldValue của biến Var hay không khi đang xem xét mức Leveli và ràng buộc c
Nhờ tác vụ Valid cùng với giá trị Delta, tác vụ GetBestMoves xác định tập
các bước chuyển tốt nhất được tiến hành dễ dàng tại mỗi bước lặp Tuy nhiên, tác
vụ này cùng với tác vụ tính chênh lệch sai số DeltaError cũng như cơ chế đa dạng hóa vùng tìm kiếm được lồng vào tác vụ GetBestMoves thường phụ thuộc vào ràng
buộc cụ thể của bài toán cụ thể Do vậy các cơ chế này được dành cho các ràng buộc của bài toán cụ thể
Trang 34Trang 34
3.5 Tiêu chuẩn ngưng lặp
Các tiêu chuẩn ngưng tìm kiếm cục bộ được xây dựng gồm :
(1) Ngưng khi lời giải đã thỏa mãn toàn bộ các ràng buộc trong mọi mức
(2) Ngưng sau khi đã thực thi xong MaxMoves bước chuyển
(3) Ngưng sau một số lần không tìm được một bước chuyển nào
(4) Ngưng do người dùng muốn
3.6 Sơ lược về bộ giải
Cấp ràng buộc được khái quát hóa thành các lớp trong môi trường C++ với các nét chính sau:
Trang 35Trang 35
Khái niệm Lớp mô tả
Tập hợp CObjArray: Quản lý một tập các dữ liệu có kiểu bất kỳ cùng
với các thao tác cơ bản trên danh sách
Miền trị hữu
hạn
CDomain: Quản lý một tập trị nguyên Mỗi miền trị được mô tả
bằng một chận dưới và một chuỗi bit mo tả miền trị
Biến CAvailable: Mỗi biến được mô tả bằng trị đã gán hiện hành,
miền trị mà biến thuộc về, tập các ràng buộc mà biến này có liên quan Các tác vụ cơ bản bao gồm: Cập nhật trị đã gán, cùng với các tác vụ liên quan đến miền trị của biến, tập các ràng buộc gây ảnh hưởng lên biến
Ràng buộc CConstraint: Đây là lớp trừu tượng và được mô tả bằng tập các
biến bị liên quan bởi ràng buộc này Các tác vụ ảo như kiểm tra
ràng buộc này đã thỏa mãn chưa (Satisfied), tác vụ lấy sai số hiện tại của ràng buộc (GetError), tác vụ tìm chênh lệch sai số khi thay trị cho một biến (DeltaError), tác vụ tìm tập bước
chuyển tốt nhất khi ràng buộc này được chọn để cải thiện
GetBestMoves) Các tác vụ này được dùng trong khung thức giải
thuật đã được đề xuất Tuy nhiên, các tác vụ này lại phụ thuộc bài toán nên phải được hiện thực lại trong các lớp thừa kế
Bước chuyển CMove: Mô tả bằng bộ bốn: <biến, trị được thử gán, chênh lệch
sai số, bước chuyển sau> Nhờ cấu trúc này, một dánh sách tabu
có kích thước động dễ dàng hiện thực một cách có hiệu quả Bước chuyển CMoveEx: Mô tả bằng bộ bốn: <biến, trị được thử gán, chênh
lệch sai số, bước chuyển sau> Sự mở rộng lớp CMove để phục
vụ cho bài toán với biến là một bộ của nhiều biến đơn
Bài toán CProblem: Lớp trừu tượng mô tả bài toán được mô tả bằng một
hệ phân cấp các ràng buộc
Bộ giải CSolver: Bộ giải nhằm hiện thực giải thuật tìm kiếm cục bộ trên
hệ phân cấp ràng buộc đã được đề xuất
Đối tượng quan
sát bước giải
CViewer: Lớp trừu tượng chứa những khai báo cho phép tương
tác với lớp CProblem để truy xuất trạng thái của mỗi bước giải
Trang 36Mô tả miền trị nguyên hữu hạn, mỗi miền trị được mô tả bằng trị nhỏ nhất
(chặn dưới, LowerBound) và một chuỗi bit mô tả các trị cụ thể có trong miền trị
(lớp CBITSTRING)
Lớp CVARIABE
Mô tả biến, mỗi biến được mô tả bằng chỉ số miền trị của biến
(DomainIndex), trị hiện hành đã gán cho biến này (Value), tập chỉ số các ràng buộc liên quan đến biến này (AffectConstraints) Bài toán có một tập biến nên mỗi biến
được nhận diện bằng chỉ số của biến trong tập biến
Lớp CConstraint
Lớp trừu tượng mô tả cho ràng buộc Mỗi ràng buộc được mô tả bằng tập
biến liên quan (Affected Vars) Các hành vi ảo cơ bản của mỗi ràng buộc bao gồm:
Satisfied: Kiểm tra trạng thái thỏa mãn, GetError: tính sai số hiện hành,
GetBestMoves: tìm tập bước chuyển tốt nhất khi ràng buộc này được xem xét Đây
chính là các tác vụ quan trọng khi ràng buộc này được xem xét cải thiện và đã được đề cấp trong khung thức của giải thuật
Lớp CMove
Mô tả bước chuyển Mỗi bước chuyển được mô tả bằng bộ bốn <Var,
NewValue, Delta, * Next> (biến, trị, chênh lệch sai số, bước chuyển sau) giúp hiện
thực một danh sách động các bước chuyển một cách dễ dàng
Lớp CProblem
Lớp trừu tượng mô tả hệ phân cấp với bao gồm các thuộc tính: Tập miền trị
Domlist, tập biến Vset, tập ràng buộc Cset, tổ chức phân cấp Hier, bộ giải được kết
hợp pSolver, đối tượng quan sát pViewer giúp truy xuất trạng thái bộ giải thể hiện
ra giao diện của ứng dụng Các tác vụ cơ bản:
SetupProblem(…): Thiết lập số biến, số mức, số ràng buộc cho bài toán
Trang 37Trang 37
SetupConstraints(Level,c): Thêm một ràng buộc vào một mức, tác vụ
BindingConstraintsToVars(): Thiết lập mối quan hệ hai chiều giữa các ràng
buộc và các biến
SetupConstraints(): Tác vụ ảo giúp thiết lập toàn bộ các ràng buộc cho bài
toán và tác vụ này phải được hiện thực ở bài toán cụ thể
Initsolution(): Tác vụ ảo mặc định tìm lời giải ban đầu của bài toán dựa trên
giải thuật backtracking và có thể được hiện thực lại ở bài toán cụ thể
Valid (Var, NewValue): Kiểm tra tính hợp lệ của một trị có thể gán cho một
biến khi tìm lời giải ban đầu thỏa mãn các ràng buộc cứng
UpdateVar (Var, NewValue,DeltaError): Cập nhật trị cho một biến
Update(c, DeltaError, CurMove): Cập nhật trạng thái bài toán sau một
bước chuyển khi xem xét ràng buộc c để ở bài toán cụ thể có thể có những quyết định phù hợp ứng với một trạng thái của quá trình giải
Valid (Level,c,Var, OldValue, NewValue): Kiểm tra tính hợp lệ khi thay thế
trị OldValue bằng trị NewValue cho biến Var khi xem xét mức Level và ràng buộc
c Tác vụ này đã được giới thiệu trong hình 3.4.2.1
ExtraStopCriterion(): Tác vụ ngưng lặp đặc thù của bài toán
Lớp CSolver
Mô tả quá trình giải bài toán bằng kỹ thuật tìm kiếm cục bộ Một bộ giải
được mô tả bằng các thuộc tính: pProblem: bài toán kết hợp với bộ giải,
HierBitFlags: tập cờ đánh dấu sự thỏa mãn của các ràng buộc trong phân cấp,
CurLevel là mức đang xem xét hiện hành, MaxMoves,CurMoves: số bước chuyển
tối đa và hiện hành, SolutionError: sai số của lời giải Các tác vụ:
MinUpSatisfiedLevel() sẽ xác định mức nhỏ nhất chưa được thỏa mãn
RandomConstraint (Level) sẽ lấy ngẫu nhiên một ràng buộc chưa thỏa mãn
trong mức Level
RandomConstraintLower (Level) sẽ lấy ngẫu nhiên một ràng buộc chưa
thỏa mãn từ mức Level đến mức cuối
Trang 38Trang 38
GetBestMoves(…) sẽ gọi tác vụ GetBestMoves của ràng buộc đang xem xét
để tìm tập bước chuyển tốt nhất (tác vụ được giới thiệu trong khung thức)
LocalSearch(maxMoves): Tinh chế lời giải bằng kỹ thuật tìm kiếm cục bộ
Lớp CViewer
Lớp trừu tượng giúp truy xuất trạng thái hiện hành của bài toán với môi
trường ứng dụng Tác vụ SetupProblem giúp thiết lập bài toán từ giao diện của ứng dụng, tác vụ trừu tượng GetProblemState giúp truy cập trạng thái bài toán lên giao diện của ứng dụng phải được hiện thực ở lớp dẫn xuất, tác vụ ViewProblemState()
giúp vừa xem trạng thái của lời giải vừa nhận quyết định ngưng giải từ người sử dụng
Các bước giúp sử dụng bộ giải
(1) Cụ thể hóa bài toán thành một lớp con của lớp CProblem, cụ thể hóa các hành vi ảo lớp CTKB
(2) Cụ thể hóa các ràng buộc của bài toán thành các lớp con của lớp
(3) Xây dựng giao diện ứng dụng kế thừa lớp Cviewer có các công cụ
chuẩn bị dữ liệu đầu vào cho bài toán Lớp CSetupForm trong hình 3.5
(4) Định nghĩa một biến mô tả bài toán
Trang 39Trang 39
CViewer CSolver
CConstraint CObjArray
Hình 3.5 mô tả mối quan hệ giữa các lớp của nhân bộ giải cũng như cách
mở rộng bộ giải để giải một họ bài toán (cụ thể là bài toán xếp lịch trường phổ thông) Trong đó:
CFirmConstraint : Lớp mô tả ràng buộc cứng (mức 0)
CTKB : Lớp mô tả cho bài xếp lịch thời khóa biểu trường phổ thông
CSetupForm: Lớp mô tả cho giao diện ứng dụng của người dùng
Trang 404.1 Bài toán thời khóa biểu trường phổ thông
4.1.1 Mô tả
Xếp thời khoá biểu là một trong những việc quan trọng trong công tác tổ chức quản lý, giảng dạy và học tập tại các trường học từ phổ thông đến đại học Việc xếp thời khoá biểu là một bài toán thuộc dạng NP-đầy đủ (NP-Complete), các giải thuật thông thường hầu như không thể giải quyết
Thời khoá biểu là một lịch trình ấn định thứ tự tiến hành và thời gian của các bài giảng cho các lớp học trong tuần ở mỗi học kỳ Ngoài ra thời khoá biểu còn phải thỏa yêu cầu về việc sử dụng có hiệu quả cơ sở vật chất của nhà trường đồng thời tạo điều kiện thuận lợi nhất trong việc học tập và giảng dạy
4.1.2 Các ràng buộc trong việc lập thời biểu:
a Ràng buộc cứng :Là các ràng buộc bắt buộc phải thỏa
C1 Một lớp học không thể có nhiều hơn một giáo viên dạy tại cùng một tiết học
C2 Số tiết học của một môn học của một lớp học phải bằng số tiết học được phân công cho lớp đó
C3 Một lớp không học quá hai tiết một môn học trong một buổi học (sáng hoặc chiều)
C4 Nếu một lớp học học một môn học 2 tiết trong một buổi học thì 2
tiết học đó phải liên tục nhau và không có giờ ra chơi xen vào giữa
C5 Nếu một môn học có nhiều hơn 2 tiết học trong một tuần thì phải
sắp sao cho số tiết đôi là nhiều nhất, khi đó số tiết đơn là 1 hoặc 0