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

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 tóan xếp thời khóa biểu trường phổ thông

99 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 99
Dung lượng 2,09 MB

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

Nội dung

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 1

KHOA 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 2

Tô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 3

Trang 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 4

Trang 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 5

Trang 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 6

Trang 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 7

Trang 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

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 8

Trang 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 9

Trang 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 10

Trang 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 11

Trang 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 12

Trang 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 13

kiế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 14

Trang 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 15

Trang 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 17

Trang 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 18

Trang 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 19

Mộ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

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 20

Trang 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 21

Trang 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 22

Trang 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 23

Trang 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 24

Trang 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 25

Trang 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 26

Trang 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 27

3.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 28

Trang 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 29

Trang 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 30

Trang 30

Kí hiệu sm 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 31

Trang 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 32

Trang 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 33

Trang 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 34

Trang 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 35

Trang 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 36

Mô 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 37

Trang 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 38

Trang 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 39

Trang 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 40

4.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

Ngày đăng: 08/03/2021, 23:44

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w