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

Nghiên cứu bài toán xếp thời khóa biểu của trường đại học theo tiếp cận bài toán thỏa mãn ràng buộc

68 177 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 68
Dung lượng 1,1 MB

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

Nội dung

Như vậy, bài toán xếp thời khóa biểu có thể được mô hình thành một bài toán thỏa mãn ràng buộc Constraint Satisfaction Problem - CSP và sử dụng phương pháp giải bài toán thỏa mãn ràng bu

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC VINH

_

TRẦN ANH TRUNG

NGHIÊN CỨU BÀI TOÁN XẾP THỜI KHÓA BIỂU CỦA TRƯỜNG ĐẠI HỌC THEO TIẾP CẬN BÀI TOÁN THỎA MÃN RÀNG BUỘC

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGHỆ AN, 2017

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC VINH

_

TRẦN ANH TRUNG

NGHIÊN CỨU BÀI TOÁN XẾP THỜI KHÓA BIỂU CỦA TRƯỜNG ĐẠI HỌC THEO TIẾP CẬN BÀI TOÁN THỎA MÃN RÀNG BUỘC

Chuyên ngành: CÔNG NGHỆ THÔNG TIN

Mã số: 60.48.02.01

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Người hướng dẫn khoa học: TS HOÀNG HỮU VIỆT

NGHỆ AN, 2017

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 1

CHƯƠNG 1 TỔNG QUAN 2

1.1 Đặt vấn đề 2

1.2 Tổng quan về bài toán xếp thời khóa biểu 2

1.2.1 Bài toán xếp thời khóa biểu cho trường đại học (University timetabling) 4

1.2.2 Bài toán xếp lịch thi (Examination timetabling) 4

1.3 Các hướng tiếp cận giải bài toán xếp thời khóa biểu 5

1.3.1 Hướng tiếp cận theo phương pháp quay lui (vét cạn) 5

1.3.2 Hướng tiếp cận theo phương pháp quy hoạch động 5

1.3.3 Hướng tiếp cận theo tìm kiếm heuristic 6

1.3.4 Hướng tiếp cận giải thuật leo đồi (Hill-climbing) 7

1.3.5 Hướng tiếp cận theo giải thuật di truyền 7

1.4 Hướng tiếp cận theo bài toán thỏa mãn ràng buộc 7

1.5 Mục tiêu, đối tượng và phạm vi nghiên cứu 8

1.5.1 Mục tiêu nghiên cứu 8

1.5.2 Đối tượng và phạm vi nghiên cứu 9

CHƯƠNG 2 BÀI TOÁN THỎA MÃN RÀNG BUỘC 11

2.1 Định nghĩa bài toán thỏa mãn ràng buộc 11

2.2 Phương pháp lan truyền cạnh 12

2.2.1 Biểu diễn bài toán thỏa mãn ràng buộc theo đồ thị 12

2.2.2 Nhất quán node (node consistency) 13

2.2.3 Nhất quán cung (arc-consistent) 13

2.2.4 Thuật toán AC-3 14

2.3 Phương pháp tìm kiếm quay lui 15

2.3.1 Thuật toán 17

2.3.2 Ví dụ minh họa 18

2.4 Phương pháp tìm kiếm quay lui kết hợp kiểm tra tiến (nhánh cận) 19

Trang 4

2.4.1 Thuật toán 20

2.4.2 Ví dụ minh họa 21

2.5 Tìm kiếm cục bộ cho bài toán ràng buộc (phương pháp tìm kiếm heuristic)22 2.5.1 Thuật toán 22

2.5.2 Ví dụ minh họa 23

CHƯƠNG 3 BÀI TOÁN XẾP THỜI KHÓA BIỂU 25

3.1 Đặc tả bài toán 25

3.2 Mô hình hoá bài toán theo dạng bài toán thỏa mãn ràng buộc 26

3.3 Thuật toán giải bài toán tổng quát 27

3.3.1 Các phương pháp nối tiếp (sequential methods) 27

3.3.2 Các phương pháp phân cụm (cluster method) 27

3.3.3 Các phương pháp dựa trên ràng buộc 28

3.3.4 Các phương pháp meta-heuristic 28

3.4 Bài toán xếp lịch thi của trường đại học 28

3.4.1 Mô tả bài toán 28

3.4.2 Đề xuất thuật toán XLT (Xếp Lịch Thi) 29

3.4.3 Các hàm chính trong thuật toán XLT 32

CHƯƠNG 4 CÀI ĐẶT THỬ NGHIỆM THUẬT TOÁN 36

4.1 Cài đặt thuật toán cho bài toán xếp lịch thi trường đại học 36

4.1.1 Các cấu trúc dữ liệu 36

4.1.2 Bộ dữ liệu thử nghiệm 37

4.1.3 Đánh giá thuật toán 42

4.1.4 Một số nhận xét và đề xuất 47

KẾT LUẬN 48

TÀI LIỆU THAM KHẢO 50

PHỤ LỤC 51

Trang 5

LỜI NÓI ĐẦU

Người đầu tiên mà tôi xin dành sự kính trọng và cảm ơn đặc biệt là

TS Hoàng Hữu Việt Thầy không chỉ là người giảng dạy chúng tôi các môn

học liên quan đến những kiến thức về các thuật toán và công nghệ hiện đại trên thế giới hiện nay mà còn là người trực tiếp hướng dẫn tận tình cho đề tài của tôi Chính Thầy là người đã tin tưởng, tạo điều kiện cũng như hỗ trợ tốt nhất cho tôi hoàn thành Luận văn tốt nghiệp này

Chắc chắn sẽ không thể nói hết được những tình cảm mà tôi muốn nói, muốn cảm ơn tới Thầy - người đầu tiên đưa ra ý tưởng và song hành cùng tôi hoàn thành luận văn này Mọi thắc mắc của tôi đều được Thầy giải đáp, tạo điều kiện tối đa và còn hơn thế nữa Thầy luôn coi chúng tôi như một người bạn và với tôi Thầy là một người bạn lớn

Tôi cũng rất muốn dành lời cảm ơn tới TS Phan Lê Na cùng các

Thầy cô trong khoa CNTT TS Phan Lê Na người đã trực tiếp giảng dạy

chúng tôi với tấm lòng yêu nghề và đầy tâm huyết ngoài ra với vai trò là Trưởng khoa, Cô rất cương quyết trong chỉ đạo cũng như quan tâm sát sao để chúng tôi hoàn thành đề tài kịp tiến độ

Tôi xin cảm ơn tới tất cả thành viên CH23-CNTT - thế hệ thạc sĩ đầu tiên của khoa CNTT trường Đại học Vinh, họ là những người bạn thân thiết, chân thành, là nguồn động viên rất lớn cho tôi!

Cuối cùng tôi xin chân thành cảm ơn tất cả những người đã quan tâm

và đồng hành cùng chúng tôi trong suốt thời gian qua!

Nghệ An, tháng 3 năm 2017

Trang 6

CHƯƠNG 1 TỔNG QUAN

1.1 Đặt vấn đề

Bài toán xếp thời khóa biểu là bài toán cổ điển và thuộc lớp bài toán tối

ưu ràng buộc, khó Bài toán từ lâu đã thu hút được sự quan tâm, nghiên cứu

và phát triển của nhiều tổ chức giáo dục, các nhà khoa học bởi tính ứng dụng cao và độ phức tạp của nó Đặc biệt, ở Việt Nam, từ lâu bài toán xếp thời khóa biểu đã trở thành một vấn đề có tính thời sự, một bài toán gây được sự chú ý, quan tâm của nhiều người

Trong nhiều thập niên qua đã có rất nhiều các phương pháp giải được đưa ra Tuy nhiên, tính hiệu quả của lời giải cho lớp bài toán vẫn còn nhiều bàn cãi Trong khi các thuật toán truyền thống tỏ ra kém hiệu quả thì các thuật toán của lĩnh vực trí tuệ nhân tạo lại tỏ ra là phương pháp hữu hiệu nhất để giải các bài toán như thuật toán tìm kiếm mô phỏng luyện kim, thuật toán di truyền,

Bài toán xếp thời khóa biểu cho trường đại học là bài toán lập lịch Có rất nhiều các ràng buộc được đưa ra trong bài toán này như ràng buộc về đối tượng tham gia (giảng viên, lớp học, sinh viên), ràng buộc về tài nguyên phục

vụ giảng dạy như (phòng lý thuyết, phòng thực hành,…), ràng buộc về thời gian (số tiết học), ràng buộc về chuyên môn và rất nhiều các ràng buộc khác nữa Như vậy, bài toán xếp thời khóa biểu có thể được mô hình thành một bài toán thỏa mãn ràng buộc (Constraint Satisfaction Problem - CSP) và sử dụng phương pháp giải bài toán thỏa mãn ràng buộc để giải quyết bài toán xếp thời

khóa biểu Từ nhận thức đó, chúng tôi đề xuất đề tài “Nghiên cứu bài toán

xếp thời khóa biểu của trường đại học theo tiếp cận bài toán thỏa mãn ràng buộc” làm luận văn cao học thạc sĩ

1.2 Tổng quan về bài toán xếp thời khóa biểu

Bài toán xếp thời khóa biểu là một trong những bài toán tính toán khó

Trang 7

trong lập lịch Mục đích là tìm các khoảng thời gian thích hợp cho một số nhiệm vụ có tài nguyên giới hạn Phụ thuộc vào bản chất bài toán, các ràng buộc trong bài toán có thể thay đổi và có nhiều mục đích khác nhau

Bài toán xếp thời khóa biểu có thể tồn tại trong nhiều tình huống khác nhau trong thực tiễn như: xếp lịch thi đấu thể thao, xếp lịch công việc và đặc biệt xếp thời khóa biểu cho các cơ sở giáo dục Nó quan trọng bởi vì nhu cầu cần thiết phải có một thời khóa biểu hợp lý phục vụ công việc của các tổ chức một cách thuận lợi nhưng để có được một thời khóa biểu tối ưu thỏa mãn tất

cả các ràng buộc là điều không dễ, thậm chí trong một số trường hợp rất khó

để tìm một giải pháp khả thi Thực tế cho thấy rất khó để hình thành một mô hình chung cho tất cả các trường hợp của bài toán xếp thời khóa biểu, vì mọi

cơ sở giáo dục có các ràng buộc và mục tiêu đặc biệt gắn với nó

Bài toán xếp thời khóa biểu có thể được nhóm thành 2 kiểu: bài toán lập lịch kỳ thi và bài toán lập lịch khóa học

Bài toán lập lịch kỳ thi là gán các kỳ thi qua một khoảng thời gian tương ứng với một vài ràng buộc Mục tiêu có thể là gán các kỳ thi cho một số khoảng thời gian tối thiểu mà không có xung đột Trong một số trường hợp khác, số lượng khoảng thời gian được cố định và mục tiêu là tối ưu một hàm

ưu tiên dựa trên số phòng, người coi thi và sinh viên

Ví dụ một số hàm ưu tiên có thể là:

● Tối đa khoảng thời gian giữa 2 kỳ thi liên tiếp của một sinh viên

● Lập lịch các kỳ thi mà có số lượng sinh viên tham gia đông trong các khoảng thời gian sớm

Đối với bài toán lập lịch khóa học, khoảng thời gian thường được cố định trước, ví dụ trong vòng 1 tuần Mục tiêu là tìm một lịch khóa học mà thỏa mãn một số ràng buộc liên quan đến giảng viên, số phòng Ví dụ lịch làm việc của giảng viên có thể phải xếp thích hợp trong nhiều tiết học của một ngày làm việc để tối thiểu số ngày giảng viên đi làm

Trang 8

Bài toán lập lịch khóa học và lập lịch kỳ thi có những đặc điểm giống

và khác nhau Ví dụ, trong cả 2 bài toán, một sinh viên không thể tham dự nhiều hơn một kỳ thi hoặc nhiều hơn một môn học tại một thời điểm

Mặc dù có sự khác biệt giữa các kiểu bài toán trên nhưng các phương pháp giải chúng là tương tự nhau Trong luận văn này, chúng tôi sẽ tập trung

xử lý bài toán lập lịch kỳ thi

1.2.1 Bài toán xếp thời khóa biểu cho trường đại học (University timetabling)

Bài toán xếp thời khóa biểu cho trường đại học là bài toán lập lịch cho các bài giảng (lectures) vào từng khóa học với một số lượng phòng học và tiết học cho trước Bài toán này được ràng buộc bởi số phòng học, giảng viên, sinh viên, môn học… Ở các trường đại học, hai khóa học khác nhau có thể có trùng sinh viên tham dự và điều đó có thể tạo ra xung đột và sẽ không thể lập lịch được trong cùng một tiết học Những trường đại học đào tạo theo hệ tín chỉ, mỗi sinh viên có thể tham gia nhiều môn học trong một học kỳ nên đòi hỏi có một thời khóa biểu hợp lý để tạo điều kiện lựa chọn môn học cho sinh viên cũng là điều cần thiết Tóm lại bài toán xếp thời khóa biểu cho trường đại học là một bài toán có nhiều ràng buộc và kích thước lớn nên ảnh hưởng đến thời gian thực hiện thuật toán và khó đưa ra được phương án tối ưu thỏa mãn tất cả mọi yêu cầu của đối tượng tham gia

1.2.2 Bài toán xếp lịch thi (Examination timetabling)

Bài toán xếp lịch thi tương tự như bài toán xếp thời khóa biểu cho trường đại học nhưng vẫn có sự khác nhau giữa hai bài toán này Bài toán xếp lịch thi có những đặc điểm sau đây:

• Chỉ có một kỳ thi cho mỗi một môn thi

• Mọi sinh viên đều phải tham gia kỳ thi

• Một sinh viên sẽ chỉ có một kỳ thi trong một ngày và không có nhiều quá các kỳ thi liên tiếp nhau với một sinh viên

• Thời gian của kỳ thi có thể khác nhau

Trang 9

• Có thể có nhiều hơn một kỳ thi trong một phòng thi (có nhiều môn thi được xếp trong một phòng thi)

1.3 Các hướng tiếp cận giải bài toán xếp thời khóa biểu

Bài toán thời khóa biểu nói riêng và các bài toán tối ưu tổ hợp nói chung là thuộc lớp các bài toán ràng buộc khó Sự khó khăn của chúng được thể hiện ở độ phức tạp tính toán vì vậy thời gian để giải thường tăng theo hàm mũ của kích thước bài toán và thường khó đạt được một kết quả tối ưu tuyệt đối

1.3.1 Hướng tiếp cận theo phương pháp quay lui (vét cạn)

Đặc trưng của vét cạn thường sử dụng phương pháp duyệt đệ quy để xét hết mọi khả năng có thể có nghiệm theo nguyên tắc "thử sai" và quay lui Quay lui là một trong các phương pháp vét cạn trong đó các giá trị nghiệm được chọn không thực hiện được bằng cách duyệt tuyến tính Điểm tốt của thuật toán quay lui so với vét cạn tuyến tính là hạn chế bớt các nhánh phải duyệt mà theo những nhánh đó không tìm được lời giải Tuy nhiên hạn chế của phương pháp này là phải duyệt qua nhiều khả năng nên độ phức tạp của chương trình thường ở mức giai thừa hay hàm mũ nên tốc độ tính toán khá lâu trong trường hợp kích thước của dữ liệu vào khá lớn Vì độ phức tạp là một hàm mũ nên phương pháp này thường khó giải quyết những bài toán có số phần tử lớn hơn 50 Vì vậy phương pháp đệ quy khó có thể áp dụng để giải quyết bài toán xếp thời khóa biểu vì ta phải phát triển một không gian trạng thái rất lớn, trước khi đi tới trạng thái đích, do những hạn chế về thời gian tính toán và dung lượng bộ nhớ, không cho phép chúng ta làm được điều đó

1.3.2 Hướng tiếp cận theo phương pháp quy hoạch động

Phương pháp này dùng để giải các “bài toán tối ưu” có bản chất đệ

qui, tức là tìm phương án tối ưu cho bài toán đó có thể đưa về tìm phương án tối ưu của một số hữu hạn các bài toán con Phương pháp quy hoạch động (Dynamic Programming) là một kỹ thuật nhằm đơn giản hóa việc tính toán

Trang 10

các công thức truy hồi bằng cách lưu toàn bộ hay một phần kết quả tính toán tại mỗi bước trước đó với mục đích sử dụng lại

Vì vậy, bài toán xếp thời khóa biểu rất khó tiếp cận theo phương pháp quy hoạch động vì đây không phải là bài toán có thể tìm được nghiệm tối ưu, cách xác định bài toán con nhỏ nhất và tìm công thức truy hồi cho nó gần như

là điều không thể Ngoài các ràng buộc cứng còn có các ràng buộc mềm nên

có quá nhiều tham số cho một công thức truy hồi để giải theo hướng quy hoạch động

1.3.3 Hướng tiếp cận theo tìm kiếm heuristic

Nhiều bài toán xếp lịch có dữ liệu vào lớn không thể áp dụng thuật toán cho lời giải tối ưu khi thời gian không cho phép, trong những trường hợp đó chúng thường được giải bằng phương pháp heuristic (một tìm kiếm hợp lý nào đó) để có lời giải tương đối tối ưu thực hiện trong thời gian cho phép

Bài toán xếp lịch thường có 2 yêu cầu:

- Yêu cầu loại 1 (ràng buộc cứng): gọi là yêu cầu bắt buộc (nội dung cụ thể tuỳ theo từng bài toán) là yêu cầu phải đạt được, nếu không đạt được thì coi như lời giải không được chấp nhận Ví dụ: yêu cầu phải xếp hết tất cả công việc, hoặc phải xếp xong trước một thời hạn cho trước nào đó, hoặc mỗi công việc phải tuân thủ yêu cầu về thời gian bắt đầu, thời gian kết thúc, thời gian hoàn thành của công việc ấy, hoặc công việc này phải được thực hiện trước công việc kia…

- Yêu cầu loại 2 (ràng buộc mềm): là yêu cầu có thể nhân nhượng phần nào đó (nội dung cụ thể tuỳ theo từng bài toán) Ví dụ: cho phép tổng chi phí (hoặc tổng thời gian) thực hiện xong các công việc đạt giá trị càng thấp càng tốt (hoặc xong càng sớm càng tốt) Chính nhờ sự nhân nhượng này mà ta có thể đề xuất ra những cách sắp xếp một hoặc một nhóm công việc tiếp theo dễ dàng hơn, đó chính là các "heuristic"

Giải thuật chứa các heuristic có những đặc điểm:

Trang 11

• Cho lời giải gần tối ưu, thời gian thực hiện chương trình là hợp lý và

có thể tổ chức dữ liệu để thực hiện chương trình

• Có thể thay đổi một vài heuristic trong quá trình giải để thích ứng với các loại bộ dữ liệu khác nhau, kết hợp so sánh kết quả thực hiện các heuristic khác nhau và giữ lại kết quả tốt hơn

1.3.4 Hướng tiếp cận giải thuật leo đồi (Hill-climbing)

Giải thuật leo đồi chính là nền tảng cơ sở của các kỹ thuật tìm kiếm cục

bộ Mặc dù đây là giải thuật đơn giản nhưng nó lại rất mạnh và hiệu quả trong việc giải quyết các bài toán thỏa mãn ràng buộc lớn Thuật toán leo đồi thực hiện bằng cách ở mỗi bước của việc tìm kiếm, chúng ta sẽ chọn một bước chuyển mà nó cải thiện giá trị hàm mục tiêu để thực hiện

Trong giải thuật leo đồi, chỉ những bước chuyển cải thiện được hàm chi phí hoặc không làm cho hàm chi phí thay đổi mới được chọn vì vậy việc tìm kiếm sẽ liên tục bước lên vị trí cao hơn cho đến khi nó gặp điều kiện dừng

1.3.5 Hướng tiếp cận theo giải thuật di truyền

Giải thuật di truyền (Genetic Algorithms) đã tỏ ra khá thành công trong một số áp dụng Giải thuật di truyền mượn ý tưởng trong quá trình tiến hóa của sinh vật Ý tưởng chính của giải thuật là duy trì một quần thể các lời giải ứng viên Các lời giải ứng viên này sẽ được cho cơ hội riêng lẻ để sản sinh ra con cái tùy thuộc vào độ thích nghi (fitness) của chúng Độ thích nghi được

đo bằng một hàm mục tiêu Giải thuật di truyền đã được áp dụng vào việc giải

hệ ràng buộc Việc dùng giải thuật di truyền vào các bài toán tối ưu hóa có ràng buộc làm phát sinh nhiều vấn đề mà các nhà nghiên cứu phải quan tâm giải quyết Một trong những vấn đề quan trọng là làm thế nào để đưa các ràng buộc vào các hàm thích nghi (fitness function) để điều khiển quá trình tìm kiếm một cách đúng đắn

1.4 Hướng tiếp cận theo bài toán thỏa mãn ràng buộc

Bài toán thỏa mãn ràng buộc (Constraint Satisfaction Problem - CSP)

Trang 12

đang ngày càng trở nên phổ biến trong cộng đồng khoa học máy tính cũng như trí tuệ nhân tạo CSP thực sự rất đáng quan tâm vì nó xuất hiện trong một

số lớn các ứng dụng Nó cũng có những đặc tính riêng cần được khám phá và phát triển bằng những thuật toán hiệu quả riêng Phương pháp thoả mãn ràng buộc hổ trợ cho phương pháp sinh và thử, khi chú ý tới một số ràng buộc áp đặt lên các nút trong không gian bài toán Mục đích đặt ra là xác định đường

đi trong đồ thị không gian bài toán, đường đi từ trạng thái đầu đến trạng thái cuối đáp ứng được các ràng buộc đó

Tổng quan các kỹ thuật giải CSP có thể phân thành 3 loại: Rút gọn bài toán, tìm kiếm và sự tổng hợp nghiệm Rút gọn bài toán tức là làm giảm được không gian trạng thái của bài toán nên nó dễ dàng hơn trong việc áp dụng được một số thuật toán truyền thống trong quá trình tìm kiếm nghiệm, cuối cùng là tổng hợp nghiệm tức là lựa chọn nghiệm tốt nhất trong tập nghiệm đã tìm kiếm được thõa mãn tất cả các ràng buộc nên đây là một hướng tiếp cận khả thi

1.5 Mục tiêu, đối tượng và phạm vi nghiên cứu

1.5.1 Mục tiêu nghiên cứu

* Mục tiêu tổng quát

Nghiên cứu bài toán xếp thời khóa biểu của trường đại học và giải quyết bài toán theo hướng tiếp cận giải bài toán thỏa mãn ràng buộc; áp dụng thử nghiệm cho bài toán xếp lịch thi của trường đại học

* Mục tiêu cụ thể

Đề tài tập trung vào các mục tiêu cụ thể sau:

(i) Nghiên cứu bài toán xếp thời khóa biểu của trường đại học và các hướng tiếp cận giải bài toán

(ii) Nghiên cứu bài toán thỏa mãn ràng buộc và các phương pháp giải bài toán thỏa mãn ràng buộc

(iii) Mô hình hóa bài toán xếp thời khóa biểu của trường đại học theo

Trang 13

dạng bài toán thỏa mãn ràng buộc

(iv) Tìm kiếm giải thuật phù hợp giải bài toán xếp thời khóa biểu theo tiếp cận bài toán thỏa mãn ràng buộc

(v) Áp dụng thử nghiệm cho bài toán xếp lịch thi của trường đại học

1.5.2 Đối tượng và phạm vi nghiên cứu

* Đối tượng nghiên cứu

(a) Nghiên cứu lý thuyết

- Nghiên cứu các tài liệu về bài toán xếp thời khóa biểu của trường đại học và các hướng tiếp cận giải bài toán

- Nghiên cứu các tài liệu về bài toán thỏa mãn ràng buộc và các phương pháp giải quyết bài toán thỏa mãn ràng buộc

- Nghiên cứu biểu diễn bài toán xếp thời khóa biểu dưới dạng một bài toán thỏa mãn ràng buộc

- Nghiên cứu, lựa chọn thuật toán phù hợp cho bài toán xếp thời khóa biểu

- Nghiên cứu bài toán xếp lịch thi của trường đại học

(b) Nghiên cứu thực nghiệm

- Nghiên cứu ngôn ngữ lập trình để cài đặt thử nghiệm bài toán xếp thời khóa biểu

- Đánh giá hiệu quả của các thuật toán

* Phạm vi nghiên cứu

Bài toán xếp thời khóa biểu của trường đại học có thể được giải quyết theo nhiều phương pháp khác nhau như đệ quy quay lui, tìm kiếm heuristic, giải thuật di truyền, Trong luận văn này chúng tôi nghiên cứu và giải quyết bài toán xếp thời khóa biểu của trường đại học theo tiếp cận bài toán thỏa mãn ràng buộc Dựa trên bài toán xếp thời khóa biểu tổng quát, chúng tôi áp dụng thử nghiệm giải bài toán xếp lịch thi cho trường đại học theo hệ tín chỉ

* Nội dung nghiên cứu

Trang 14

- Nghiên cứu tổng quan bài toán xếp thời khóa biểu của trường đại học

và các hướng tiếp cận giải bài toán

- Nghiên cứu bài toán thỏa mãn ràng buộc và các phương pháp giải bài toán thỏa mãn ràng buộc

- Mô hình hóa bài toán xếp thời khóa biểu của trường đại học theo dạng bài toán thỏa mãn ràng buộc

- Tìm kiếm giải thuật phù hợp giải bài toán xếp thời khóa biểu theo tiếp cận bài toán thỏa mãn ràng buộc

- Nghiên cứu ngôn ngữ lập trình và cài đặt thử nghiệm bài toán xếp thời khóa biểu

- Cài đặt thử nghiệm cho bài toán xếp lịch thi cho trường đại học

- Đánh giá thuật toán xếp thời khóa biểu

Trang 15

CHƯƠNG 2 BÀI TOÁN THỎA MÃN RÀNG BUỘC

2.1 Định nghĩa bài toán thỏa mãn ràng buộc

Một bài toán thỏa mãn ràng buộc gồm 3 thành phần, X, D và C:

- X là tập các biến {X1, X2, , Xn}

- D là tập miền giá trị của biến {D1, D2, , Dn}

- C là tập các ràng buộc cho các biến

Mỗi miền Di gồm tập các giá trị cho phép {v1, , vk} của biến Xi Mỗi ràng buộc Ci gồm 1 cặp <scope,rel>, trong đó scope là tập các biến (tuple) các biến tham gia trong ràng buộc và rel là mối quan hệ định nghĩa giá trị mà các biến có thể nhận Ví dụ, nếu X1 và X2 đều có miền giá trị là {A,B} thì ràng buộc cho rằng giá trị 2 biến phải khác nhau có thể biểu diễn như sau:

<(X1, X2), [(A, B), (B , A)]> hoặc <(X1, X2), X1 =! X2>

Để giải một CSP, ta cần định nghĩa không gian trạng thái và ký hiệu cho một giải pháp Mỗi trạng thái trong CSP được định nghĩa bằng việc gán các giá trị cho tập biến {Xi =vi, Xj = vj, }

Một phép gán không vi phạm bất cứ ràng buộc nào được gọi là phép gán nhất quán (consistent assignment) hoặc phép gán hợp lệ Một phép gán đầy đủ (complete assignment) là phép gán trong đó mọi biến đều được gán giá trị, và 1 giải pháp (solution) cho CSP là một phép gán đầy đủ, hợp lệ Một phép gán cục bộ (partial assignment) là phép gán mà chỉ gán các giá trị cho một số biến

Một số khái niệm trong CSP:

Ràng buộc đơn (unary constraint) giới hạn giá trị của một biến đơn

Ví dụ trong bài toán tô màu bản đồ trong trường hợp SA (South Australians) không được tô màu xanh, chúng ta có thể biễu diễn thành ràng buộc đơn như sau <(SA), SA != green>

Ràng buộc nhị phận (binary constraint) liên quan đến 2 biến Ví dụ,

Trang 16

SA != NSW (trong bài toán tô màu bản đồ) là một ràng buộc nhị phân

2.2 Phương pháp lan truyền cạnh

Trong các bài toán CSP, một thuật toán có thể tìm kiếm (chọn một phép

gán biến mới từ một tập miền giá trị) hoặc tạo một suy luận (inference) gọi là lan truyền cạnh (lan truyền ràng buộc - Constraint propagation): đó là sử dụng các ràng buộc để giảm số giá trị một biến có thể nhận, dựa vào đó có thể giảm miền giá trị gán cho một biến khác,… Lan truyền cạnh có thể thực hiện cùng quá trình tìm kiếm hoặc có thể xem như là một bước tiền xử lý, trước khi tìm kiếm được bắt đầu

Điểm chính là nhất quán cục bộ (local consistency) Nếu ta xem mỗi biến như 1 node trong 1 đồ thị và mỗi ràng buộc nhị phân là 1 cung, thì quá trình tạo ra nhất quán cục bộ trong mỗi phần đồ thị gây ra các giá trị node không nhất quán sẽ bị loại bỏ dần dần khỏi đồ thị Có những dạng nhất quán cục bộ khác nhau được trình bày trong 2.2.2 và 2.2.3 dưới đây

2.2.1 Biểu diễn bài toán thỏa mãn ràng buộc theo đồ thị

Có thể xem một CSP như một đồ thị ràng buộc (constraint graph) Các node của đồ thị ứng với các biến trong CSP và một cạnh kết nối bất kỳ 2 biến tham gia trong 1 ràng buộc

Hình 2.1 Tô màu bản đồ Hình 2.2 Đồ thị được chuyển từ bản đồ Trong hình trên là ví dụ xem một CSP như đồ thị ràng buộc Hình 1.1

là bài toán tô màu bản đồ Nhiệm vụ là cần tô màu mỗi vùng với một trong

Trang 17

các màu đỏ, xanh lá cây, xanh da trời; với ràng buộc là không có bất kỳ 2 vùng hàng xóm nào cùng màu Hình 1.2 biểu diễn bài toán trên như là một đồ thị ràng buộc

2.2.2 Nhất quán node (node consistency)

Một biến đơn (ứng với một node trong mạng CSP) là nhất quán node nếu tất cả giá trị trong miền giá trị của biến thoản mãn các ràng buộc đơn của biến (unary constraints) Ví dụ, trong bài toán tô màu bản đồ, miền giá trị khởi tạo của SA là {red, green, blue} Để biểu diễn SA không chọn lựa màu green, chúng ta có thể giảm miền giá trị của SA là {red, blue}

Lưu ý ràng buộc đơn của SA là <(SA), SA != green> Và tập giá trị của

SA là {red, blue} Vì mọi giá trị trong tập giá trị đều thỏa mãn ràng buộc đơn, trong trường hợp này, ta nói SA là nhất quán node

Ta nói rằng một mạng là nhất quán node nếu mọi biến trong mạng là nhất quán node

2.2.3 Nhất quán cung (arc-consistent)

Một biến trong một CSP là nhất quán cung nếu mọi giá trị trong miền giá trị của nó thỏa mãn các ràng buộc nhị phân của biến Xi là nhất quán cung với một biến khác Xj nếu với mọi giá trị trong miền Di, tồn tại một giá trị trong miền Dj mà thỏa mãn ràng buộc nhị phân trên cung (Xi, Xj) Một mạng

là nhất quán cung nếu mọi biến là nhất quán cung với mọi biến khác Ví dụ, xem xét ràng buộc Y = X2, với miền giá trị của X, Y là tập các chữ số Ta có thể biểu diễn ràng buộc trên như sau:

<(X,Y), {(0,0), (1,1), (2,4), (3,9))}>

Để X nhất quán cung với Y, ta có thể giảm miền giá trị của X thành {0,1,2,3} Có thể thấy rằng với mọi giá trị bất kỳ trong tập giá trị X, ta luôn tìm được một chữ số trong tập Y để thỏa mãn Y=X2

Để Y nhất quán cung với X, ta giảm miền giá trị của Y là {0,1,4,9} và

Trang 18

khi đó toàn bộ CSP là nhất quán cung

2.2.4 Thuật toán AC-3

Thuật toán phổ biến nhất để nhất quán cung là AC-3 Để tạo ra mọi biến nhất quán cung, AC-3 duy trì một hàng đợi các cung để kiểm tra Khởi tạo, hàng đợi chứa tất cả các cung trong CSP AC-3 lấy ra một cung ngẫu nhiên (Xi,Xj) từ hàng đợi và xử lý để Xi nhất quán cung với Xj Nếu sau phép

xử lý này Di không thay đổi, thuật toán chuyển tới cung tiếp theo Nhưng nếu phép xử lý giúp giảm miền giá trị Di, ta thêm vào hàng đợi tất cả các cung (Xk,Xi), trong đó Xk là một hàng xóm của Xi Lý do là vì miền giá trị Di là giảm, dựa vào đó ta hy vọng ràng buộc giữa (Xk,Xi) sẽ giúp giảm miền giá trị của Xk, tức giảm dần không gian tìm kiếm của các node Nếu sau phép xử lý

Di trở thành tập rỗng, tức là không có giá trị nào trong tập Di để thỏa mãn ràng buộc cung (Xi,Xj), thì ta kết luận bài toán CSP không có một giải pháp nhất quán, và do đó AC-3 trả lại false

Ngược lại, chúng ta tiếp tục kiểm tra, cố gắng giảm tập giá trị từ các miền giá trị các biến cho tới khi không còn cung nào trong hàng đợi

Sau khi áp dụng AC-3, ta có được một bài toán CSP tương đương với CSP gốc ban đầu (cả 2 đều có cùng lời giải), nhưng CSP đã được xử lý nhất quán cung sẽ hoạt động nhanh hơn trong không gian tìm kiếm vì miền biến của nó có tập giá trị ít hơn

Function AC-3(csp) return false nếu tìm thấy một kiểm tra không nhất quán

cung và true nếu mọi cung đều nhất quán

inputs: csp, CSP nhị phân với các thành phần (X, D, C)

local variables: queue - hàng đợi các cung, được khởi tạo từ tất cả các cung

trong csp

while queue không rỗng do

Trang 19

(Xi, Xj) <= Remove-First (queue) // lấy cung đầu tiên từ hàng đợi

If Revise(csp,Xi,Xj) then

If cỡ của Di = 0 then return false

For each Xk in Xi.neighbors-{Xj} do // tập hàng xóm X i , ngoại trừ Xj

For each x in Di do // Di là tập giá trị của X i

If không tồn tại giá trị y trong Dj để (x,y) thỏa mãn ràng buộc Xi và Xj

2.3 Phương pháp tìm kiếm quay lui

Quay lui (backtracking) là một chiến lược tìm kiếm lời giải cho các bài toán thỏa mãn ràng buộc Người đầu tiên đề ra thuật ngữ này (backtrack) là nhà toán học người Mỹ D H Lehmer vào những năm 1950

Các bài toán thỏa mãn ràng buộc là các bài toán có một lời giải đầy đủ, trong đó thứ tự của các phần tử không quan trọng Các bài toán này bao gồm một tập các biến mà mỗi biến cần được gán một giá trị tùy theo các ràng buộc

cụ thể của bài toán Việc quay lui là để thử tất cả các tổ hợp để tìm được một lời giải Thế mạnh của phương pháp này là nhiều cài đặt tránh được việc phải thử nhiều tổ hợp chưa hoàn chỉnh, và nhờ đó giảm thời gian chạy

Trang 20

Phương pháp quay lui có quan hệ chặt chẽ với tìm kiếm tổ hợp Về bản chất, tư tưởng của phương pháp là thử từng khả năng cho đến khi tìm thấy lời giải đúng Đó là một quá trình tìm kiếm theo chiều sâu trong một tập hợp các lời giải Trong quá trình tìm kiếm, nếu ta gặp một hướng lựa chọn không thỏa mãn, ta quay lui về điểm lựa chọn nơi có các hướng khác và thử hướng lựa chọn tiếp theo Khi đã thử hết các lựa chọn xuất phát từ điểm lựa chọn đó, ta quay lại điểm lựa chọn trước đó và thử hướng lựa chọn tiếp theo tại đó Quá trình tìm kiếm thất bại khi không còn điểm lựa chọn nào nữa

Quy trình đó thường được cài đặt bằng một hàm đệ quy mà trong đó mỗi thể hiện của hàm lấy thêm một biến và lần lượt gán tất cả các giá trị có thể cho biến đó, với mỗi lần gán trị lại gọi chuỗi đệ quy tiếp theo để thử các biến tiếp theo Chiến lược quay lui tương tự với tìm kiếm theo độ sâu nhưng

sử dụng ít không gian bộ nhớ hơn, nó chỉ lưu giữ trạng thái của một lời giải hiện tại và cập nhật nó

Để tăng tốc quá trình tìm kiếm, khi một giá trị được chọn, trước khi thực hiện lời gọi đệ quy, thuật toán thường xóa bỏ giá trị đó khỏi miền xác định của các biến có mâu thuẫn chưa được gán (kiểm tra tiến - forward checking) và kiểm tra tất cả các hằng số để tìm các giá trị khác đã bị loại trừ bởi giá trị vừa được gán (lan truyền ràng buộc - constraint propagation)

Người ta thường sử dụng một số phương pháp heuristic để tăng tốc cho quá trình quay lui Do các biến có thể được xử lý theo thứ tự bất kỳ, việc thử các biến bị ràng buộc chặt nhất (nghĩa là các biến có ít lựa chọn về giá trị nhất) thường có hiệu quả do nó tỉa cây tìm kiếm từ sớm (cực đại hóa ảnh hưởng của lựa chọn sớm hiện hành)

Các cài đặt quay lui phức tạp thường sử dụng một hàm biên, hàm này kiểm tra xem từ lời giải chưa đầy đủ hiện tại có thể thu được một lời giải hay không, nghĩa là nếu đi tiếp theo hướng hiện tại thì liệu có ích hay không Nhờ

đó, một kiểm tra biên phát hiện ra các lời giải dở dang chắc chắn thất bại có thể

Trang 21

nâng cao hiệu quả của tìm kiếm Do hàm này hay được chạy, có thể tại mỗi bước, nên chi phí tính toán các biên cần tối thiểu, nếu không, hiệu quả toàn cục của thuật toán sẽ không được cải tiến Các hàm kiểm tra biên được tạo theo kiểu gần như các hàm heuristic khác: nới lỏng một số điều kiện của bài toán

Function Backtrack(assignment, csp) return 1 CaThe hoặc failure

If assignment là đầy đủ then return assignment

Var <= Select-unssigned-variable(csp) // chọn lựa biến chưa được gán

For each value in Order-domain-values(var, assignment, csp) do

If value là nhất quán với assignment then //phép gán thỏa mãn các ràng buộc Add {var = value} to assignment

result <= Backtrack(assignment, csp) // đệ qui cho biến tiếp theo

if result != failure then

Trang 22

(arc-giá trị mới cho biến đang xét

Thuật ngữ tìm kiếm quay lui là dùng cho tìm kiếm theo chiều sâu, tức

là chọn các giá trị cho một biến tại một thời điểm và quay lui lại khi một biến không có giá trị hợp lệ

Trong thuật toán trên, nó chọn lặp lại một biến chưa được gán và thử tất

cả các giá trị trong miền của biến đó Nếu tìm thấy một sự kiểm tra không nhất quán (tức là vi phạm ràng buộc) thì hàm quay lui Backtrack trả lại false, vậy là lời gọi trước đó cần thử một giá trị khác

Thuật toán trên chứa dòng về chọn lựa biến chưa gán, Var <= unssigned-variable(csp)

Select-Chiến lược đơn giản nhất để chọn lựa biến chưa gán là chọn biến chưa được gán theo thứ tự {X1, X2, }

2.3.2 Ví dụ minh họa

Ví dụ sau mô tả bài toán tô màu bản đồ dựa trên thuật toán quay lui

Hình 2.3 Bản đồ các vùng được tô màu

Trang 23

Hình 2.4 Bản đồ và đồ thị được thể hiện bằng thuật toán quay lui

Tập biến cần gán là {WA, NT, Q, SA, NSW, V, T} Để đơn giản giả sử

ta chỉ xét phép gán cho tập 3 thành phố {WA, NT, Q}

Bước đầu tiên ta chọn biến chưa được gán là WA Biến này có thể được gán với 3 màu {red, green, blue} Giả sử biến được chọn cho giá trị đầu tiên với màu read Tại bước thứ 2, ta xét biến tiếp theo chưa được gán là NT

Vì NT có ràng buộc với WA là phải khác màu, nên NT chỉ có thể nhận tập màu {green, blue}

Tương tự ta xét tiếp cho biến Q và biến Q có thể thuộc tập màu {red, blue} Giả sử xét tại phép gán (assigment) hiện tại {WA=red, NT=green, Q=red}, ta thấy phép gán này thỏa mãn bài toán và có thể là 1 lời giải (CaThe) Tuy nhiên trong trường hợp phép gán này không thỏa mãn, ta quay lui kiểm tra giá trị biến Q cho một giá trị khác là blue và ta được phép gán mới {WA=red, NT=green, Q=blue}

2.4 Phương pháp tìm kiếm quay lui kết hợp kiểm tra tiến (nhánh cận)

Trong thuật toán quay lui trên, ta có thể thêm hàm suy luận (inference)

để giảm miền giá trị các biến khi tìm kiếm đệ quị theo chiều sâu Một trong những dạng suy luận đơn giản nhất gọi là kiểm tra tiến, hay còn gọi là nhánh

Trang 24

cận Thuật toán được trình bày như bên dưới

2.4.1 Thuật toán

Ý tưởng của kiểm tra nhánh cận là bất cứ khi nào gán giá trị cho một biến X, quá trình kiểm tra nhánh cận thành lập một nhất quán cung (arc-consistency) cho biến X: với mỗi biến Y chưa được gán giá trị mà kết nối với

X bởi một ràng buộc, ta xóa bất cứ giá trị nào thuộc miền giá trị của Y mà tạo

sự không nhất quán với giá trị đã được chọn từ X Vì kiểm tra nhánh cận chỉ thực hiện các suy luận về nhất quán cung, ta không cần thực hiện kiểm tra nhánh cận nếu ta đã thực hiện nhất quán cung (ví dụ bằng AC-3) trong bước tiền xử lý

Function Backtracking-search(csp) return 1 CaThe hoặc failure

Return Backtrack({}, csp)

Function Backtrack(assignment, csp) return 1 CaThe hoặc failure

If assignment là đầy đủ then return assignment

Var <= Select-unssigned-variable(csp) // chọn lựa biến chưa được gán

For each value in Order-domain-values(var, assignment, csp) do

If value là nhất quán với assignment then

Add {var = value} to assignment

inferences <= Inference(csp, var, value)

if inferences != false then

add interences tới assignment // thêm suy luận tới phép gán result <= Backtrack(assignment, csp)

if result != failure then

return result

Remove {var = value} và inferences from assigment

Return failure

Trang 25

SA không còn giá trị màu nào có thể gán

Có 2 điểm quan trọng cần lưu ý về ví dụ này:

Thứ nhất, sau khi WA=red và Q=green được gán, các miền giá trị của

NT và SA giảm xuống còn lại 1 giá trị đơn Bằng cách này ta loại bỏ việc kiểm tra phân nhiều nhánh trên NT và SA bằng cách lan truyền thông tin từ

WA và Q

Thứ hai, sau khi V=blue, miền của SA là trống Do đó kiểm tra nhánh cận phát hiện rằng phép gán cục bộ {WA=red, Q=green, B=blue} là không nhất quán với các ràng buộc của bài toán, do đó thuật toán sẽ quay lui lập tức

Trang 26

2.5 Tìm kiếm cục bộ cho bài toán ràng buộc (phương pháp tìm kiếm heuristic)

Các thuật toán tìm kiếm cục bộ (ví dụ thuật toán leo đồi, thuật toán di truyền) đã được chỉ ra tính hiệu quả trong việc giải nhiều bài toán ràng buộc Các thuật toán này sử dụng quá trình xây dựng các trạng thái Trạng thái khởi tạo gán một giá trị bất kỳ cho mọi biến, và quá trình tìm kiếm không gian trạng thái sẽ thay đổi giá trị của một biến tại một thời điểm Ví dụ trong bài toán 8 quân hậu (xem hình dưới), trạng thái khởi tạo có thể là một cấu hình ngẫu nhiên 8 con hậu trên 8 cột, và mỗi bước di chuyển một con hậu tới một

vị trí mới trong cột của nó Thông thường, trạng thái khởi tạo vi phạm một số ràng buộc Điểm chính của tìm kiếm cục bộ là tìm các trạng thái bài toán để loại bỏ các ràng buộc bị vi phạm tốt nhất có thể

Để chọn lựa một giá trị mới cho một biến, có thể dùng nhiều kỹ thuật tìm kiếm heuristic khác nhau Trong đó, heuristic hay dùng là chọn lựa giá trị

mà tạo ra số xung đột tối thiểu với các biến khác - heuristic này gọi là conflict

min-Trong phần dưới, ta sẽ mô phỏng thuật toán cho min-conflict heuristic

2.5.1 Thuật toán

Thuật toán Min-conflict giải các bài toán ràng buộc bằng tìm kiếm cục

bộ Trạng thái khởi tạo có thể được chọn ngẫu nhiên hoặc bằng một quá trình gán tham lam mà chọn giá trị xung đột tối thiểu cho mỗi biến

Function Min-conflict(csp, SoTheHe) returns một CaThe hoặc false

Inputs: csp, một bài toán thỏa mãn ràng buộc

SoTheHe, số lượng các bước được cho phép trước khi từ bỏ

Current <= phép gán đầy đủ cho csp

For i=1 to SoTheHe do

Trang 27

If current là một CaThe cho csp then return current

Var <= 1 biến xung đột được chọn ngẫu nhiên từ csp.Variables

Value <= giá trị v cho var mà tối thiểu hàm xung đột Conflicts(var,v,current, csp)

Set var = value trong current

Hình 2.5 Minh họa cách đặt 8 quân hậu trên bàn cờ bằng thuật toán Min-conflict

Ta thấy ở bước khởi tạo, vị trí các con hậu trong các cột được gán ngẫu nhiên Ví dụ vị trí hậu cột 1 là ở hàng 2, cột 2 là ở hàng 5 Giá trị số trong ô minh họa chính là giá trị xung đột nếu đặt con hậu tại vị trí đó Ở đây hàm tính độ xung đột tại một ví trí hậu sẽ bằng tổng số lần tấn công tới con hậu nếu con hậu đặt tại vị trí đó xét trên hàng ngang, hàng dọc, chéo trái và chéo phải

Lần xét đầu tiên, ta chọn ngẫu nhiên con hậu cột 8 Vị trí hiện tại của

nó là hàng 8 Tiếp theo ta cần di chuyển con hậu tới một hàng khác trong cột

Trang 28

8 Vì hàng 3 và 6 có xung đột nhỏ nhất là 1, ta đặt ngẫu nhiên hậu vào vị trí hàng 3

Trong lần xét thứ hai, con hậu ở cột 6 được chọn Tương tự ở trên, vì hàng 8 cột 6 có giá trị xung đột nhỏ nhất (bằng 0) nên ta di chuyển con hậu ở cột 6 hàng 3 tới vị trí cột 6 hàng 8

Sau bước trên tất cả con hậu đều không xung đột với vị trí của nhau, do

đó ta được 1 lời giải (solution) của bài toán

Trang 29

CHƯƠNG 3 BÀI TOÁN XẾP THỜI KHÓA BIỂU

3.1 Đặc tả bài toán

Bài toán lập lịch kỳ thi gồm có các thực thể sau

- Một tập các khoảng thời gian thi không bao trùng nhau là các ngày

trong tuần từ thứ 2 đến thứ 6

- Một tập các phòng thi Mỗi phòng thi có số chỗ ngồi được biết trước

- Một tập các kỳ thi Đối với một kỳ thi, thường có một danh sách các

sinh viên tham gia kỳ thi

- Có thể có tập các quyền ưu tiên Một quyền ưu tiên được thiết lập

giữa hai hoặc nhiều kỳ thi, có thể là yêu cầu hoặc là ưa thích Ví dụ các kỳ thi cùng phòng, các kỳ thi khác phòng, các kỳ thi diễn ra cùng thời điểm, các kỳ thi diễn ra khác thời điểm

Có 2 dạng ràng buộc là ràng buộc cứng (hard constraint) và ràng buộc mềm (soft constraint)

- Ràng buộc cứng: Cần gán các kỳ thi cho các khoảng thời gian thi và

các phòng thi để thỏa mãn những điều kiện sau

+ Chỉ một kỳ thi có thể diễn ra tại một phòng tại bất kỳ thời điểm nào + Một phòng thi không thể được sử dụng tại các khoảng thời gian mà

nó không trống

+ Một kỳ thi có thể được tổ chức ở một phòng thi thỏa mãn tổng số chỗ ngồi trong phòng lớn hơn hoặc bằng số sinh viên đăng ký dự thi

- Ràng buộc mềm (tiêu chuẩn tối ưu):

Trong quá trình tìm kiếm, bên cạnh tìm kiếm một giải pháp đầy đủ (tất

cả các kỳ thi đều được gán cho các khoảng thời gian và các phòng) mà thỏa mãn các ràng buộc cứng ở trên, các tiêu chí sau cần được tối ưu Mỗi tiêu chí

có một giá trị trọng số được gắn với nó (ví dụ xung đột trực tiếp - direct conflict, thường có giá trị trọng số cao hơn xung đột back-to-back) Cần tối

Trang 30

thiểu tổng trọng số của tất cả tiêu chí

+ Các xung đột về sinh viên

● Xung đột trực tiếp (direct conflict): một sinh viên tham gia 2 kỳ thi cùng thời điểm

● Xung đột nhiều hơn 2 kỳ thi trong một ngày: sinh viên tham gia nhiều hơn hoặc bằng 3 kỳ thi trong một ngày

● Xung đột back-to-back: một sinh viên tham dự các kỳ thi mà được lập lịch trong các khoảng thời gian kế tiếp nhau

● Xung đột back-to-back xa: một sinh viên tham dự các kỳ thi mà được lập lịch trong các khoảng thời gian kế tiếp nhau và ở các phòng xa nhau

+ Các xung đột về người coi thi

● Xung đột trực tiếp: một người coi thi được phân bố với 2 kỳ thi diễn

3.2 Mô hình hoá bài toán theo dạng bài toán thỏa mãn ràng buộc

Như đã thảo luận về bài toán ràng buộc, một bài toán thỏa mãn ràng buộc gồm 3 thành phần X, D và C:

- X là tập các biến {X1, X2, , Xn}

- D là tập miền giá trị của biến {D1, D2 , Dn}

- C là tập các ràng buộc cho các biến

Ở đây tập các biến (các sự kiện) là các môn thi

Tập các giá trị Di của biến là các slot thời gian sẽ được gán cho các

Trang 31

môn thi

Và tập ràng buộc C là ràng buộc về thời gian giữa các môn thi và liên quan đến số lượng phòng thi tốt đa có thể dùng Ví dụ 2 môn thi có chung sinh viên dự thi thì phải được gán vào các slot thời gian khác nhau

3.3 Thuật toán giải bài toán tổng quát

Trong phần này ta sẽ khảo sát một số phương pháp đã được sử dụng cho bài toán lập lịch thời khóa biểu nói chung (bao gồm cả lập lịch khóa học

và lập lịch kỳ thi)

3.3.1 Các phương pháp nối tiếp (sequential methods)

Những phương pháp này sắp xếp các sự kiện (event) sử dụng các heuristics và gán các sự kiện nối tiếp theo chuỗi trong những khoảng thời gian hợp lệ với điều kiện không có sự kiện nào trong một khoảng thời gian có xung đột với sự kiện khác Trong phương pháp này, các bài toán lập thời khóa biểu thường được biểu diễn như các đồ thị trong đó các sự kiện được biểu diễn như các đỉnh, các xung đột giữa các sự kiện được biểu diễn như các cạnh Ví dụ, nếu một số sinh viên phải tham dự 2 sự kiện, thì có 1 cạnh giữa 2 đỉnh dùng để biểu diễn xung đột giữa 2 sự kiện đó Việc xây dựng một bài toán thời khóa biểu không có xung đột có thể được mô hình như 1 bài toán tô màu đồ thị Ở đây mỗi khoảng thời gian trong bài toán lập khóa biểu tương ứng với 1 màu trong bài toán tô màu đồ thị 2 đỉnh trên cùng một cạnh không được cùng màu, và cần số màu tô nhỏ nhất

3.3.2 Các phương pháp phân cụm (cluster method)

Trong những phương pháp này tập các sự kiện được chia vào các nhóm mà thỏa mãn các ràng buộc cứng và sau đó các nhóm này được gán tới các khoảng thời gian để thỏa mãn các ràng buộc mềm Phương pháp này sử dụng các kỹ thuật tối ưu khác nhau để gán các nhóm sự kiện tới các khoảng thời gian Nhược điểm của phương pháp này là các cụm sự kiện được hình

Trang 32

thành và cố định khi bắt đầu chạy thuật toán, điều ấy có thể tạo ra một lập lịch thời khóa biểu chất lượng thấp

3.3.3 Các phương pháp dựa trên ràng buộc

Trong những phương pháp này, bài toán thời khóa biểu được mô hình như là tập các biến (các sự kiện) được gán tới các giá trị (ví dụ tài nguyên như phòng học và thời gian) để thỏa mã một số ràng buộc Thông thường để gán các tài nguyên cho các sự kiện, ta sử dụng một số qui tắc (rule), ví dụ qui tắc về xung đột tối thiểu trong thuật toán min-conflict Nếu không có qui tắc nào có thể áp dụng, thuật toán đệ qui quay lui được áp dụng cho tới khi tìm được 1 lời giải thích hợp

3.3.4 Các phương pháp meta-heuristic

Có nhiều phương pháp meta-heuristic như mô phỏng luyện thép (simulated annealing), tìm kiếm tabu, các thuật toán di truyền và các phương pháp lai đã được xem xét để áp dụng cho bài toán lập thời khóa biểu Các phương pháp meta-heuristic bắt đầu với một hoặc nhiều lời giải khởi tạo và sử dụng các chiến thuật tìm kiếm để tìm nghiệm tối ưu cục bộ Tất cả những thuật toán tìm kiếm này có thể tạo ra các lời giải chất lượng tốt nhưng thường

có chi phí tính toán cao (ví dụ thời gian xử lý lâu)

3.4 Bài toán xếp lịch thi của trường đại học

Luận văn này có động lực từ việc cần tìm cách lập lịch thời gian biểu hiệu quả cho các kỳ thi cuối học kỳ tại trường đại học Phần dưới sẽ mô tả bài toán và thuật toán được đề xuất của chúng tôi

3.4.1 Mô tả bài toán

Đối với bài toán lập lịch kỳ thi, mặc dù có rất nhiều ràng buộc cứng và ràng buộc mềm như được đề cập ở phần 3.1, tuy nhiên để đơn giản cho việc

mô tả thuật toán sau đây ta chỉ xem xét một số ràng buộc Việc áp dụng nhiều ràng buộc không làm thay đổi thuật toán được đề xuất dưới đây Có nghĩa

Trang 33

rằng thuật toán vẫn hoạt động tốt nếu ta thêm nhiều ràng buộc trong thuật toán Việc giảm số ràng buộc khi mô tả bài toán giúp việc diễn giải thuật toán

dễ hiểu hơn

Ta chọn tập biến là các môn thi ví dụ Toán, Triết học, Tin học

X ={X1= Toán, X2 = Triết học, X3 = Tin học, …}

Miền giá trị của các biến Di là các giá trị nguyên biểu diễn các slot thời gian Ví dụ D1={0,1,2,3,4,5} có thể xem tương đương với các đơn vị thời gian

là các ngày trong tuần làm việc D1={thứ 2, thứ 3, thứ 4, thứ 5, thứ 6, thứ 7}

Về ràng buộc C, ta có 2 ràng buộc như sau:

Thứ nhất, ràng buộc về thời gian thi Nếu 2 môn thi có chung số sinh viên cùng tham dự (ít nhất là 1 sinh viên) thì 2 môn thi đó không được tổ chức cùng ngày thi, tức là slot thời gian cho 2 môn thi đó phải khác nhau

Thứ hai, ràng buộc về phòng thi Trong một ngày thi, số môn thi được

tổ chức trong ngày đó không được vượt quá số lượng phòng thi

Ví dụ về ràng buộc thời gian thi khi Toán và Triết học phải tổ chức khác ngày thi, Toán và Tin học cũng phải khác ngày có thể biểu diễn như sau:

C={(X1, X2, X3), X1 =! X2, X1 =! X3}

Yêu cầu bài toán lập lịch kỳ thi được cho như sau:

Cho đầu vào là các môn thi cần tổ chức thi, và tập các ràng buộc giữa các môn thi Yêu cầu là cần tìm một lịch sắp xếp các kỳ thi để tối thiểu số ngày thi mà thỏa mãn tập ràng buộc đã cho

3.4.2 Đề xuất thuật toán XLT (Xếp Lịch Thi)

Thuật toán đề xuất thuộc phương pháp meta-heuristic như đã thảo luận trong 3.3.4 Thuật toán này là một thuật toán lai, trong đó có sự kết hợp giữa thuật toán di truyền (generic algorithm) và thuật toán leo đồi (hill climbing)

Phần dưới biểu diễn giả code cho phần chính của thuật toán được đề xuất, được gọi là XLT (Xếp Lịch Thi) XLT là một thuật toán di truyền qua

Trang 34

SoTheHe thế hệ, với mỗi cá thể của thế hệ đang xét, nó sử dụng thuật toán leo đồi để cải thiện chất lượng của cá thể ấy

Một cá thể trong dân số được định nghĩa là một phép gán đầy đủ slot thời gian cho cho tất cả các môn thi

Để so sánh giữa các cá thể tốt của dân số, XLT sử dụng hàm fitness (sẽ được mô tả chi tiết trong chương 4) đo số slot thời gian được sử dụng trong một cá thể Đây chính là hàm tối ưu theo yêu cầu bài toán lập kỳ thi đã đề cập

ở phân 3.4.1 Tức là sắp xếp kỳ thi để được tối thiểu số ngày thi thỏa mãn ràng buộc đầu vào Theo đó một cá thể (một phép gán đầy đủ) sẽ tốt nếu nó

có tổng số slot time được sử dụng là nhỏ

Đầu tiên, dân số được khởi tạo bằng hàm TaoDanSo (được mô tả chi tiết trong chương 4)

Hàm này khởi tạo PopSize cá thể của dân số Ở đây mỗi cá thể khởi tạo được đảm bảo tính chất nhất quán cung (arc-consistency) như đề cập trong 2.2.3 Có nghĩa rằng các slot thời gian được gán ngẫu nhiên cho các môn thi trong cá thể đó để đảm bảo không vi phạm ràng buộc

Function XepLichThi(csp, SoTheHe) returns cá thể tốt nhất sau SoTheHe

thế hệ di truyền

Inputs: csp, bài toán thỏa mãn ràng buộc về lập lịch kỳ thi

SoTheHe, số lượng các bước được cho phép trước khi từ bỏ

DanSo = TaoDanSo() // tạo dân số khởi tạo

For i=1 to SoTheHe do // xem xét tại thế hệ i

{

CaThe best = bestCaThe() // tìm cá thể tốt nhất trong dân số hiện tại

// tạo ra một dân số mới từ việc chọn lọc ngẫu nhiên các cá thể tốt của dân số hiện tại DanSo = ChonLocDanSo()

For j = 1 to SoCaTheDanSo - 1 do // SoCaTheDanSo là số các cá thể trong dân số

Ngày đăng: 10/02/2021, 21:58

TỪ KHÓA LIÊN QUAN

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