Tải bản đầy đủ (.pdf) (40 trang)

Lập trình ràng buộc và ứng dụng vào bài toán lập lịch giảng dạy đại học

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.79 MB, 40 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
LẬP TRÌNH RÀNG BUỘC VÀ ỬNG DỤNG VÀO BÀI TOÁN
LẬP LỊCH GIẢNG DẠY ĐẠI HỌC
Mã sổ: QC.09.26
Chú nhiệm đề tài: ThS. Lê Hồng Hài
DAI H O C Q U Ố C GIA H À NỘI_
Ĩ RUN b I Â M I H Ũ N G u n IHƯ VIỆN
0 0 0 6 0 0 0 0 0 4 4 -
Hà Nội -2010
MỤC LỤC
GIẢI THÍCH CÁC CHŨ VIÉT T Ắ T 3
DANH SÁCH NHỮNG NGƯỜI THAM G IA 4
THỰC HIỆN ĐẺ T À I 4
TÓM TẮT NHỪNG KẾT QUÀ CHÍNH CỬA ĐỀ T À I 6
BÁO C ÁOTÓ NG K ẾT 7
1. Đặt vấn đề 7
2. Lập trình ràng buộc và hệ thống lập trình ràng buộc Comet 7
2.1 Lập trinh ràng b u ộc 7
2.2 Hệ thống lập trình ràng buộc Comet 10
3. Áp dụng hệ lập trình ràng buộc Comet vào bài toán lập lịch giảng d ạ y
11
4. Kết luận 17
5. Địa điềm, thời gian và phương pháp nghiên cứ u 17
6. Kết quả nghiên c ứ u 17
6.1 Ket quả khoa học 17
6.2 Kết quả đào tạo 17
7. Tài liệu tham khảo 19
PHỤ LỤC 21
2
GIẢI THÍCH CÁC CHỮ VIÉT TÁT
ACM A ssociation for C om p uting A chinery


CP Constraint Programming
CSP
Constraint Satisfaction Problem
CLP Constraint Logic Programming
CHIP Constraint Handling in Prolog
CBLS
Constraint Based Local Search
DFS Depth First Search
IP
Integer Programming
LDS Limitted Discrepancy Search
LP Linear Programming
NP
Node Consistency
AC Arc Consistency
PC Path Consistency
FF First Fail
3
DANH SÁCH NHỮNG NGƯỜI THAM GIA
TH ựC HIỆN ĐÈ TÀI
STT
Họ Tên Học hàm, Học
vi
Vai trò Đơn vị công tác
1 Lê Hồng Hải ThS Chù trì Khoa CNTT, ĐHCN
2
Nguyễn Ngọc Hóa TS Cộng tác viên Khoa CNTT, ĐHCN
3 Nguyễn Hà Nam
TS
Cộng tác viên Khoa CNTT, ĐHCN

4 Dư Phương Hạnh
ThS Cộng tác viên Khoa CNTT, ĐHCN
5 Nguyễn Thu Trang
ThS
Cộng tác viên Khoa CNTT, ĐHCN
6
Đặng Thu Hiền ThS Thư ký Khoa CNTT, ĐHCN
7 Vũ Tiến Thành HVCV
Cộng tác viên Khoa CNTT, ĐHCN
8 Trần Nam Khánh HVCH Cộng tác viên Khoa CNTT, ĐHCN
4
DANH MỤC HÌNH VẼ
Hình 1. Một nhánh trong cây tìm kiếm cùa bài toán 4-Hậu 8
Hinh 2. Cây tìm kiếm duyệt tổ hợp giá trị các biế n 11
Hình 3. Kiến trúc các module của chương trình 14
Hình 4. Giao diện cập nhật thời gian giảng dạy cùa giảng viên
15
Hình 5. Giao diện nhập thông tin về các phòng h ọ c

.
15
Hình 6 .Ket quả xếp lịch giảng dạy cho một lớp học 16
Hinh 7. Kết quả xếp lịch cho một phòng học 16
5
TÓM TÁT NHỬNG KÉT QUẢ CHÍNH CỦA ĐÈ TÀI
1. Tên đề tài:
LẬP TRÌNH RÀNG BUỘC VÀ ỦNG DỤ NG VÀO BÀI TO ÁN
LẬP LỊC H GIANG DẠ Y Đ ẠI H ỌC
Mã số: Q C .09.26
2. Chủ trì đề tài: Lê Hồng Hải

3. Những kết quả chính:
a. Kết quá về khoa học (những đỏng góp của đề tài, các công trinh khoa học công bố):
• Đóng góp cliính cùa dề tài:
- Nghiên cứu tồng quan về phương pháp lập trinh ràng buộc.
- Tìm hiểu, đánh giá các hệ thống iập trình ràng buộc.
- Xây dựng ứng dụng lập lịch giăng dạy đại học sứ dụng hệ thống lập trình ràng
buộc Comet.
• Các cóng trình khoa học:
“ứng dụng Hệ thống lập trình ràng buộc Comet vào bài toán lập lịch giàng dạy đại học"
đã gửi cho Tạp chí Khoa học và Công nghệ - Đại học Quốc Gia Hà Nội tháng 10/2010.
b. Kết quả dào tạo (số lượng sinh viên, học viên cao học làm việc trong đề tài):
• I khóa luận đại học :
Nguyễn Thị Thùy: "ứng dụng Hệ thống lập trình ròng buộc Comet vào bài toán
tập lịch giáng dạy đại học", 20 ] 0.
c. Kết quà nàng cao tiềm lực khoa học:
• Các thành viên tham gia hướng nghiên cứu cùa đề tài đã tích luỹ thêm được
những kiến thức liên quan dcn phương pháp lập trình ràng buộc và hệ thống lập
trình ràng buộc Comet.
6
BÁO CÁO TỎNG KÉT
1. Đặt vấn đề
Lập trình ràng buộc (CP) đang nổi iên như một công nghệ giải quyết hiệu quà các bài toán tồ
họp. Lập trình ràng buộc mô tả các ràng buộc cúa bài toán cần thỏa mãn thay vi xác định tuân tự
các bước cần thực hiện như trong lập trình truyền thống. Điều đó mang đến tính linh động trong
việc diễn đạt và giải quyết hiệu quà các bài toán, đặc biệt trong các bài toán gồm nhiều ràng buộc
đa dạng, biến đổi.
Xu hướng hiện nay, các ngành công nghiệp, các lĩnh vực hoạt động sản xuất ứng dụng công
nghệ CP ngày càng tăng lên nhanh chóng, số lượng các công ty ứng dụng thành công công nghệ
này tăng lên hàng năm, có thể kể tên một số còng ty, tồ chức điển hình: sân bay Quốc tế Hong
Kong, British Airway, SAS, Swissair, cảng Quốc tế Hong Kong, Michelin, Dassault, Ericsson

[17] Đoi với lĩnh vực hàng không, CP được ứng dụng để lập lịch các chuyến bay, hoạt động
chuyền phát nhanh Trong công nghiệp sản xuất, CP ứng dụng trong việc quản lý chuỗi cung
ứng sàn xuất, lập lịch, phẩn bồ tài nguyên, nguồn lực. Lĩnh vực sinh học: phân tích phân tử sinh
học (chuồi DNA-protein) [16].
Lập lịch giảng dạy là bài toán không mới, đã được giãi quyết theo nhiều phương pháp
khác nhau như giài thuật di truyền, tìm kiếm cục bộ như leo lúi, luyện thép, Tabu [1, 2, 3], Các
phương pháp này được sử dụng rộng rãi và cho các kết quà tốt. Tuy nhiên các phương pháp này
thường viết cho các đơn vị cụ thể và không dỗ sửa đổi thích nghi (thay đổi dữ liệu hoặc yêu cầu trong
bài toán có thể yêu cầu phải xem xét lại toàn bộ chương trinh). Lập trình ràng buộc cũng được áp dụng
thành công trong bài toán lập lịch giàng dạy tại các trường đại học [10,11].
Nội dung đề tài sỗ tập trung vào tìm hiểu phương pháp lập trinh ràng buộc, và áp dụng hệ thống lập
trình ràng buộc mới hiện nay là Comet vào bài toán ỉập lịch giảng dạy tại Trường Đại học Công nghệ.
Cấu trúc báo cáo như sau: Phần 2 sẽ mô tả về lập trinh ràng buộc và hệ thống lập trình ràng buộc
Comet. Phần 3 sẽ mô tà áp dụng hệ thống Comet vào giải quyết bài toán lập lịch giảng dạy tại Trường
Đại học Công nghệ.
2. Lập trình ràng buộc và hệ thống lập trình ràng buộc Comet
2.1 Lập trình ràng buộc
Trước khi đi vào phương pháp lập trình ràng buộc, chúng ta đề cập tới phương pháp lập trình
truyên thống qua ví dụ minh họa.
Ví dụ: xem xét bài toán 4-queens (4 hậu): vêu cầu đặt 4 quân hậu trên bàn cờ vua kích
thước 4*4 sao cho không có quân hậu nào có thề “ăn" được quân hậu khác. Ta xét bài toán này
trong môi trường lập trinh truyền thống (bủng ngôn ngữ lập trình C/C++ hoặc Java ) với giải
thuật vét cạn, quay lui (backtracking). Tư tướng cơ bàn cùa giải thuật vét cạn, quay lui là ta thừ
đặt một quân cờ vào một ô trong bàn cơ, sau đó lần lượt đặt từng quân cơ tiếp theo vào các ô cờ
khác. Trong trường hợp không thỏa mãn điều kiện ràng buộc cùa bài toán (Không có hai quân cờ
nào “ăn” dược nhau) thì quay lui trớ lại bước trước đó và đặt lại quân cờ sao cho thỏa mãn điều
7
kiện bài toán. Giải thuật này được mô tà trực quan hơn trong một nhánh cùa cây tìm kiếm bài
toán 4-Queens trong Hình ì .
Hình 1. M ột nhánh trong cây tìm kiếm của bài toán 4-Hậu

Trong lập trình truyền thống không hỗ trợ tự động thù tục quay lui, người lập trình phải tự
viết chức năng thực hiện quay lui để tìm kiếm tất cả các lời giải thỏa mãn điều kiện bài toán.
Ý tường cùa lập trình ràng buộc là giải quyêt bài toán bằng cách khai báo các ràng buộc (các
yêu cẩu) cùa bài toán. Lập trình ràng buộc không xác định tuần tự các bước cần thực hiện như
trong lập trình truyền thống. Lập trình ràng buộc bắt đầu từ những năm 90 bằng việc tich họp xừ
lý ràng buộc vào ngôn ngữ logic. Hai mô hình này chia sẽ nhiều đặc điểm quan trọng như biến
logic và thù tục tự động quay lui. Ngày nay hầu hết các cài đặt Prolog phổ biến như Sisctus
Prolog, Eclipse đều tích hợp các thư viện cho lập trinh ràng buộc [4, 5]. Ngoài tích hợp vào ngôn
ngữ logic, lập trình ràng buộc sử dụng cách tiếp cận khác như tích họp với lập trình thủ tục, với
các hệ thống lập trình ràng buộc phổ biến như Gecode [6], Comet [7].
Mô hình lập trình ràng buộc có thể mô tả như sau: Lập trình ràng buộc = Mô hình ràng buộc
+ Tìm kiếm
Ví dụ sau minh họa một bài toán giải bằng phương pháp lập trình ràng buộc, chúng ta
hãy xét m ột bài toán chơi chừ cồ điển
Phưcmg trình cùa bài toán:
s END
+ M O R E
= M 0 N E Y
Mồi ký tự đại diện cho một con sổ khác sau. cầ n tìm ra giá trị số tương ứng cho từng ký
tự và thòa mãn phương trình trên.
8
Lời giùi sử dụng phương pháp lập trình ràng buộc
s en dm or e(Digits)
Digits = [S, E, N, D, M, 0, R, Y) ,
% Khới cạo biến
Digits : : [0 . .9] ,
% Xác định miền giá trị cùa biến
s #\- 0,
% Constraint: s, M phải khác 0
M #\ - 0,

al ldif feren t(D igi ts) ,
% giá trị của các biến là khác nhau
1000*s + 100*E +
10*N + D % ràng buộc theo biểu thức
+ 1000 *M + 100*0 +
10*R + E
#= 10000 *M + 1000*0 +
100*N +
10*E + Y,
l abe lin g(D igi ts) .
% Tìm kiếm
Cấu trúc của chương trình sử dụng phương pháp lập trình ràng buộc gồm ba phần:
- Khai báo các biến và miền giá trị cùa biến:
Các biến chính là các chữ cái tương ứng trong đề bài: s, E, N, D, M, o , R, Y. Các biến
này có miền giá trị thuộc vào đoạn [0 9],
- Ràng buộc giữa các biến
Mỗi chữ cái có giá trị là một số nhất đinh, các biến phải có giá trị khác nhau, s, M là hai
biến tương ứng với giá trị đứng đầu các số, vi vậy, s, M là phải là các chữ số khác 0. Bên
cạnh đó, tất cả các biến phải thóa mãn biểu thúc mà đầu bài đã đưa ra SEND + MORE =
MONEY.
- Tìm kiếm: labeling(Digits) / / Chương trình sẽ duyệt theo từng biến. Phần tìm kiếm dộc
lập với các ràng buộc giữa các biến.
Trong phương pháp lập trình ràng buộc, các ràng buộc được khai bảo độc lập vói quá trình
tìm kiếm. Các ràng buộc khai báo trong chương trinh sẽ được hệ thống kích cùng với tiến triển
cùa quá trình tìm kiếm. Với đặc điềm độc lập giữa khai báo ràng buộc và quá trình tìm kiếm, lập
trình ràng buộc mang lại ưu điểm phát triển ứng dụng nhanh chóng, dễ dàng thêm bớt và sửa đôi
các ràng buộc khi có yêu cầu. Dễ dàng tích hợp và thừ nghiệm các chiến lược tìm kiếm khác
nhau để tìm ra chiến lược tìm kiếm thích hợp, tối ưu.
Phía sau mỗi ràng buộc là một thuật toán lọc tia không gian tìm kiếm. Các ràng buộc hoạt
động trên miền giá trị của các biến để loại bỏ các giá trị không có khả năng tham gia ra vào giải

pháp. Một số thuật toán xừ lý ràng buộc được sứ dụng quen thuộc như nhất quán nút (NP), nhât
quán cung (AC), và nhất quán đưòng (PC). Các thuật toán xử lý ràng buộc được mô tà chi tiết
trong [8, 9], Ngay khi một miền trơ thành rỗng, có nghĩa không có khả năng có giải pháp với các
giá trị gán hiện tại. Quá trình tìm kiếm quay lui về trạng thái trước đó và thừ một quyết định
khác.
9
Mồi ràng buộc phải cài đặt hai chức năng chính là:
Kiêm tra sự nhất quán: xác định ràng có giải pháp đối với ràng buộc, nếu không ràng
buộc sẽ nói với bộ xừ lý ràng buộc (constraint solver) quay lui.
Lọc tia không gian miền giá trị: loại bo các giá trị không nhất quán, ví dụ: các giá trị
không tham gia vào bất cứ giải pháp nào.
Phần tim kiếm có nhiệm vụ tạo dáng cùa cây tìm kiếm và cách thức thăm dò trên cây tìm
kiếm. Khi giải quyết một bài toán sừ dụng phương pháp lập trình ràng buộc, mô hình hóa các
ràng buộc là thành phần chính để giải quyết thành công bài toán, tuy nhiên phần tìm kiếm cùng
đóng vai trò quan trọng trong việc nhanh chóng hướng tới và đưa ra các giải pháp.
2.2 Hệ thống lập trình ràng buộc Comet
Comet là công cụ được trao tặng giải thưởng bời khá năng giải quyết hiệu quả các bài toán tổ
hợp tôi ưu trong các lĩnh vực như phân phối tài nguyên và lập lịch. Comet là một hệ thống tối ưu
hóa lai, kết hợp lập trinh ràng buộc và tìm kiếm cục bộ dựa trên ràng buộc (CBLS), lập trình
tuyến tính (LP), nguyên (IP) [13]. Comet cùng hỗ trợ lập trình hướng đối tượng, tự động thu dọn
rác. Comet đưa vào các đặc tính như cung cấp cấu trúc điều khiển tìm kiếm, cho phép tích hợp
các chiến lược tim kiếm khác nhau dễ dàng [14], chuyển một chương trình xử lý tuần tự sang xừ
lý song song một cách trong suốt, dễ dàng [15].
Mô hình chung chương trình ràng buộc trong Comet như sau:
s o l v e r < cp>
{
/ / K h a i b á o c á c r à n g bu ôc
} u s in g
{
/ / T ìm k i ế m

}
Các ràng buộc được đưa vào trong khối G o lv e r< cp > . Ví dụ c p . p o s t (x ! = y ), đưa vào
ràng buộc biến X và biến y phải có giá trị khác nhau. Trong quá trình gán giá trị, khi biến X gán
g iá trị 1, c á c r à n g b u ộ c liê n q u a n đ ế n b iế n X sẽ đ ư ợc k íc h h o ạ t, tro n g v í d ụ tr ê n g iá trị 1 sẽ đ ư ợ c
loại ra khỏi miền giá trị của biến y.
Comet cũng cho phép đưa vào các ràng buộc số học phức tạp và các biêu thức logic, ví dụ:
c p . p o s t ( x > y => a < b )
ràng buộc trên đàm bao ràng nếu giá trị biến X lớn hơn giá trị biến y thi giá trị biến a phài
nhỏ hơn giá trị biến b.
Bèn cạnh đó, Comet cũng cung cấp nhiều ràng buộc có sẵn như:
A l l d i f f e r e n t : ràng buộc các biến phái có giá trị khác nhau.
10
B in a r y K n a p s a c k : ràng buộc về tổng trọni’ lượng của các vật.
C ardin ality : ràng buộc số lần xuất hiện của mồi giá trị.
Tìm kiếm trong lập trình ràng buộc khám phá cây tìm kiếm sử dụng thuật toán quay lui.
Thuật toán ngẩm định là tìm kiếm theo độ sâu. Ví dụ tiếp theo sẽ thăm dò các tồ hụp của ba biến
x[l], X [ 2 ĩ , X [ 3 ] .
im p o r t cotfd;
S o lv e r< C P > c p {);
var<CP>{int} X[1. . 3] (cp ,0 1)
solv e all< c p > {
}u s in g {
l a b e l < x [ l ] );
l a b e l(X[2]);
l a b e l (X[3]);
}
Trong ví dụ trên la b el (X [ 1 ] ) sẽ duyệt lần lượt các giá trị trong miền cùa biến X [ 1 ]. Hình 2
thề hiện cây tìm kiếm được tạo ra trong ví dụ trên.
Hình 2. Cây tim kiếm duyệt tổ họp giá trị các biến
Bên cạnh đó Comet cho phép dễ dàng tích hợp các chiến lược tim kiếm khác nhau như BFS,

LDS [14]!
3. Ap dụng hệ lập trình ràng buộc Comet vào bài toán lập lịch giảng dạy
Một thực tế hiện nay tại Việt Nam, việc xếp lịch giảng dạy phần lớn là đều được thực hiện
thù công bằng tay. Phương pháp này vừa tốn nhiều chi phi, thời gian, công sức mà hiệu quà lại
không cao. Nhu cầu thực tiễn hiện nay là tin học hóa bài toán lập lịch giảng dạy với tính năng
xêp lịch chính xác, hiệu quả, giảm bớt thời gian, chi phí công sức của con người. Tính phức tạp
cũa bài toán lập lịch giảng dạy với các quy định, ràng buộc môn học chặt chẽ, các ràng buộc về
11
lịch dạy của giáo viên, lớp học hết sức da dạng. Chính vì vậy, bài toán lập lịch giàng dạy là
một bài toán khó, có ít phần mềm lập lịch giảng dạy được viết và sừ dụng tại Việt Nam.
Xuất phát từ nhu cầu thực tế, việc xây dựng một chương trình sắp xếp lịch giảng dạy là
giải pháp cấp bách và cần thiết. Trong phạm vi nghiên cứu của đề tài, bài toán xếp lịch giàng
dạy tại Trường Đại học Công nghệ được xcin xét. Lập lịch giảng dạy tại trường Đại học Công
Nghệ tại thời điềm tiến hành nghiên cứu được sắp xếp theo mô hình học theo niên chế, lịch học
được xếp theo tuần. Dữ liệu sừ dụng trong chương trình được cung cấp bởi Phòng Đạo tạo nhà
Trường cho kỳ học 2, năm học 2007-2008, với 20 lớp học, số phòng học là 26, hơn 100 giảng
viên tham gia giảng dạy và 210 bài giảng cần xếp lịch. Các yêu cầu trong bài toán xếp lịch cần
thỏa măn nhu sau:
- Các bài giảng được xếp lịch từ thứ hai đến thứ sáu. Trong một buổi sáng hoặc buổi chiều,
số tiết dạy cho một lớp không vượt quá 6.
- Đổi với một lớp, các bài giảng cùa lớp không được xếp chồng lẽn nhau. Cùng với đó, các
bài giảng cùng chù đề thì phải xếp vào các ngày khác nhau, ví dụ môn Tiếng Anh được
chia làm hai bài giàng, thì hai bài giáng đó cần được xếp vào hai ngày khác nhau.
- Đổi với giảng viên, các bài giảng của một giảng viên không được xếp chồng lên nhau.
Đồng thời có nhừng ràng buộc về thời gian giàng dạy, ví dụ không xếp bài giảng cùa giảng
viên vào những ngày giảng viên đó bận, hoặc giảng viên đó do điều kiện đi lại xa, không
thích hợp với giảng dạy vào tiết đầu trong ngày.
- Đối với các phòng học, không đuợc xếp hai bài giảng dùng chung phòng chồng lên nhau.
Phần tiếp theo của báo cáo sẽ đề cập đến mô hình hóa các ràng buộc của bài toán sử dụng hệ
thống lập trình ràng buộc Comet.

Trước hết cần xác định các biến tham gia vào cấc ràng buộc. Với mồi bài giảng hệ thống cần
tìm ra ngày học, tiết bẳt đầu và phòng học cho bài giáng đó. Các biến d a y . h o u r, ro o m chi
ngày, tiết học bắt đầu và phòng học cùa các bài giáng cần xếp.
Với lịch giảng dạy từ bắt đầu từ thứ 2 đến thứ 6, biến da y có miền giá trị: 2 . . 6
Các bài giảng được xếp vào buổi sáng hay buổi chiều, số tiết học trong mỗi buổi sáng hoặc
chiều nhiều nhất là 6, mồi bài giảng kéo dài ít nhất 2 tiết do đó biến h o u r có miền giá trị: 1 . . 4
Để tiện so sánh thời điềm bẳt đầu cùa các bài giảng trên trục thời gian trong tuần, chương
trình đưa vào biến s t a r t chi thời điềm bắt đầu của bài giảng trên trục thời gian. Liên kết giữa
biên s t a r t và các biến khác được duy trì bời ràng buộcC ,:
cp .p o s t(s ta rt[i]= = 2 4 * d a y [i]+ 8*session[i] + h o u r[i]).
T rongđó s ta r t [i] là thời điểm bat dầu cùa bài giảng i. s e s s i o n [ i ] =0 nếu bài giảng
b ắ t đ ầ u v à o b u ổ i sá n g , s e s s i o n [ ỉ ] = 1 n ếu b ài g iả n g b ắt đ ầ u vào b u ổi c h iều .
C ,: Ràng buộc về số tiết trong một buổi học khòng được vượt quả 6:
cp .p o st(h o u r[i] + d u ratio n [i] <=7)
12
C j: Ràng buộc về bài giảng cùa một lớp không được chồng lên nhau. Với i vả j hai bài
giảng bát kỳ của một lóp, bài giàng i cần kết thúc trước khi bài giảng j bắt đầu, hoặc ngược lại
bài giảng j cần kết thúc trước khi bài giảng i bắt đầu. Yêu cầu này được duy tri bời ràng buộc:
c p . p o s t ( ( ( s t a r t [i ]+d u ratio n [i ]< = sta rt[j ] ) I I (s ta r t[j] + d u r a tio n [
j ] < = s t a r t [ i ])))
Trong đó d u ration [ i ], duration [ j ] là số tiết học tương ứng của bài giảng i và bài giàng
j-
C4 : Ràng buộc về các bài giăng cùng môn cứa một lớp thì xếp vào hai ngày khác nhau. Với
i và j hai bài giảng cùng môn cùa một lóp:
c p .p o s c (day[i] != d ay[j ] ) ;
d a y [ i ] và d a y [ j ] là ngày bắt đầu của hai bài giảng cùng môn của một lóp.
C5: Ràng buộc về ngày nghi cùa giảng viên:
cp.p o s t (day[i]!= dayoff)
Với d a y o f f là ngày nghi của giáng viên
C5: Ràng buộc về giảng viên nghỉ tiết đầu:

c p .p o s t(h o u r [i ] !=1)
C7: Ràng buộc về các bài giảng của một giàng viên thì không chồng lên nhau. Với i và j là
hai bài giảng bất kỳ cùa một giảng viên:
c p .p o st ( ( ( s ta rt [i ] +duration [ i ] <=start [ j ] ) I I ( s ta rt [ j ] +duration [
j ]< = s ta r t [i ])));
c g: Ràng buộc nếu hai bài giảng sừ dụng cùng phòng hợc thì hai bài giảng đó không được
chồng lèn nhau:
c p . p o s t (room [ i ] ==room[ j ] => ( (s ta rt [ i ] +duration [ i ] < = start [ j ] ) I I (
s t a r t [j ]+d u ra t io n [j ]< = s t a r t [ i ] ) ) )
Trong đó ro o m [ i ] và ro o m [ j ] là phòng học của bài giàng i và j .
Chiến lưọ-c tìm kiếm
Mô hình hóa các ràng buộc là thành phần chính để giải quyết thành công bài toán, phần tìm
kiếm cũng đóng vai trò quan trọng trong việc nhanh chóng hướng tới và đưa ra giải pháp. Tại
mồi nút cùa cây tìm kiếm, quá trình tìm kiếm tuân theo hai bước sau:
1 - Chọn biến tiếp theo để khời tạo.
2. Thử các giá trị khác nhau cùa biến được chọn.
Thực tê việc chọn biến tiếp theo đê khới lạo và chọn giá trị của biến để gán có thể ành hường
đáng kể đến kích cỡ của cây tìm kiếm, do đó ảnh hường đến thời gian tìm kiếm.
13
Quá trình thư nghiệm được tiến hành trcn mảy tinh với bộ xừ iý Core 2 Duo [-4500 2*2.2GHz.
Trong thừ nghiệm thứ nhất cùa chúng tôi, nếu sử dụng phương pháp lựa chọn biến đê gán giá trị
theo trình tự tĩnh, tuần tự:
l a b e l ( s t a r t )
label(day)
label(hour)
l a b e l(room)
Chiến lược tìm kiếm này không trà lại kết quà sau nhiều giờ tính toán.
Trong thừ nghiệm tiếp theo cùa chúng tôi, các biến được chọn đề gán giá trị theo trình tự
động. Nguyên tắc First-fail được sừ dụng để lựa chọn biến để gán giá trị. Theo nguyên tắc First-
fa il chọn đầu tiên các biến chưa được gán giá trị có khá năng tạo cây con nhò nhất, do đó giảm

thời gian tim kiếm trên cây nếu lựa chọn biền eán là sai. Theo nguyên tắc này các biến có kích
thước miền giá trị nhò nhất sẽ được chọn.
la b elF F (start)
labelFF(day)
labelFF(hour)
la b elF F (room)
Kết quà khi sừ dụng chiến lược tìm kiếm First Fail, thời gian tính toán trả lại kết quả trong
vài giây. Do đó có thể kết luận việc chọn biến để gán theo trình tự động giúp quá trình tìm kiếm
đưa ra kết quà nhanh chóng hơn so với chọn biến theo trình tự tĩnh.
Kiến trúc cùa ứng dụng gồm 2 module: module hiển thị và module xừ lý. Module hiển thị
giao diện viết bàng ngôn ngữ lập trình C# sẽ truyền dữ liệu đầu vào vào module xừ lý viết băng
ngôn ngừ ràng buộc Comet. Sau khi xử lý, module xừ lý sẽ trả lại kết quà cho module hiển thị
giao diện. Hình 3 mô tả kiến trúc của ứng dụng.
Hình 3. Kiến trúc các module của chương trinh
Phân tiếp theo cua báo cáo mô tả hình ảnh một so giao diện cùa chương trình ứng dụng.
Hình 4 là giao diện cùa chức năng này đề quàn lý thông tin về giàng viên, đồng thời quàn lý lịch
nghi cùa từng giáng viên (ngày nghỉ, buổi nghỉ hay nghi tiết đầu) bàng cách click chuột vào
checkbox tương ứng.
14
+ TMm X * * * íjc » p n h * 4 Lip k h
Oanh M d i khoa
Ị Oanh á c ti tđp
Oa"h sách Qiang vựn
Dinh o c n môn học
O inh wcr< ph ỏng ^lX
Pb jn ĩór.Q oá^O 4«y
4. Giao diện cặp nhặt thời gian giảng dạy cùa giàng viên
Hình 5 mô tả chức năng về quản lý phòng học. Thông tin về phòng học bao gồm tên
phòng, số chỗ ngồi vào loại phòng (phòng thực hành hay phòng lý thuyết). Các thông tin này
được sừ dụng khi xếp các buổi dạy vào các phòng học.

4 ? Chuong trioh I.
*4* Thềm X x ỏ * R c * p n h * # l 4 p l k h -
Oi'ih och
Oírth ú c tì b o
D*nh t íc h QÓng 'rir\
Dítih s k h m òn học
D inh síc h phCfifl học
P hin CÔOQ g an g đay
■; ■ kaagJCM
Tẻn phóng
học
s ổ * i
nọù
Loai pMno học
m
ĩ
13 £4
103 >62
40

Thochẳnh
L ỹ*u*
ĩ
4
IM -G 2
105 G ỉ
48
41
Lýltiuya
lýthuy*

5
»07 G2 n
ly Vasytl
s
203 G02
90
7
204-G 02
60
s
X6 &Đ?
80 lỹihưrA
9
20 6G Đ 2
90
lýthưy*
1C 207-G 02 30
Lỹ thuyA
11 J GI «00 Lýtfw#l
'2
301 0 2 41
Lýlhur*
13
301-GC2
»
l> {*/)•«
u
X)2 G2

-


«
____
u<w y<t
13

XÌ2 G02
503G 2
56
«
lỷ ttu y *
1)
30} GỮ2
48
Lỹthuye
18 304 G2 95
L**uy«
11 X H G Đ2
48 lithuy *
X 305 G2
4
21
305 G02

22
30S G02
48
?330 7.G2 «8
l ý * * *
24 307 GĐ2

40
l ý t ív ^
Hình 5. Giao diện nhập thông tin về các phòng học
Hình 6 là giao diện xếp lịch học cho một lớp. Panel phía trên cùa giao diện dung để nhập thông
tin về các mòn học cần xếp lịch cùa lóp. Các thông tin liên quan đến mỗi môn học cần xếp bao
15
gồm: Tên môn học, ten giáo viên giảng dạv, mòn học được dạy vào buổi sáng hay buổi chiều, số
tiết học cùa môn học. Panel phía dưới cùa giao diện hiền thị kết quá xếp lịch giảng dạy cho lớp
học sau khi đã được xừ lý bời module Comet
j aỤ c h u o n g tr in h I « p l « h g ia n g d a y
+ '!* • XX4* ác*>nM< * Ketch •
O**'* s ic* kho*
D*nh sách \õo
Danf> á c h g tín g
D ín h s ic h rr ứ n h o c
D an h t á c h p h ô n g *10C
P h í r c ô n g Qi» n 0 ứ?v
tmmlhmo sn
QH 2 004 Í/C Q -C H M T
1 * "
T ề« m ôn G 4 o v * n L dp 1 Bo&
S ố
T i*
T h J
T 4I
BO

Đ ỏ M o * M «y T in h B ui T hé Du ^C NT T
Q M .x x u i a :
3

3 4
2
T u T JA-XJ h c m
1 « T h H Ô n o O ^ o C N T ?
O M T OO ^V C
S ^ÌO
ì 2

3 1* 0 w « b
O oA n P H o ^ v íN T T t> 4 J 0 04 -T C
s*r>0
3
I 1
ì
4
C * c V á n O è ù m CN T T ( N I ) HA O u* o g ĩln /y C N I T O H ?CO *-t/C $ én o
4

»
5 C o S đ O O U Ạ u N â n o C « o ■ N ®u y 4n T u * ÍN T I
1Q H 20 0* v c s * o o 3 u
t

TM CẠ c H &M U rm 4 Ur>u» < N 1 » o ồ r M « h ‘/41-CN T T
Q H 200 4 * 1 /0
C h iề u
ỉ 2
TM A n T o à n 0 0 u * u ( N J )
T iK N T Ĩ
Q H 2 00 4-I /C

C h ^ -
3 2 *
8 C * c v*r% €>ê M 4 « Đ » C N TT ( N 2 )
7 « n h N h * rT * v < N T T
Q** ỈOO *-i/C S é « g
4
5
1
9 »M c * c H O H U m & U n u i ( N 2 ) T« l« T T>«jy T ia nọC N TT ,O H Í 0 0 4 I /C C l - ỉk ,
J
1
10
T M A ^ T o * n W L 4 o ( N ? ) 1 ĩ f » fl T T hõ y T.j^ j CN TT QH 20 04 4/C C h 4 u
3
4
II
r H v.*p T * í i W « b ( H 2 , H è B*c#> D v o r v ^ N n
Q H ÍO O*-)/C C h * , J
4 1
1?
T H L á p TiW » W e b ( N I )
P N A l C h ỉ D ũ " ^ N T t
Q H ÍO IU -C t: O O w
J
4 4
u
8 T V * L ý I N 3 ) 0 * 0 T h u H AnọC N TT Q M -20 04 4/t;
3
$ 1
T u HCM

G V L ề T ht H8 0 0 o - l p
TdR Ì 5 - P 10 7 • G 2
1 * 0 w « b
G V O oA n M
T4» \ y t* 107 G ỉ
D ử Mo* M ầ y T ín*
Õ V B i - T h ể O v y
r ,« « 4 f r p J 0 7 G2
T h C * c h o m U n * & L * v a (
N ’ ì \
G V O Ỗ T KW *%V4«
T H A n T ạ é n DO 1 * 0 < N I )
Q V N ọưy ề n c t/ĩ í ỉ ù
T rft 4 1 p PM 3 1 E4
Thứ *
C * c Vén o a H 4 n Ùm
C NT T ( H I )
G V H« O j * ^ 0 Thuv
Cềc y*n o* H4n 0«.
C N rr ( H ỉ )
G V T n r* T 4o
T H C * c H O H U rt« 4 u « 0 < TM U i ' T|W » w « b ( H 2 )
N ỉ > GV Ha &♦<* CXitVM
G V T r io T T húy T -» r« T i * P M 2 ĩ E«
T H A n T o in W l * o < N ? ) ĨM Ịb » T »w * w * t o t N I )
G V TrBn T T K * T .an g G V P V in g C h l O ùn ợ
TÕ» 4 * *» PM 2 ' e * r * t * « - P PM 2 1 Ễ *
T h ứ * .

;

C ơ S d 0 0 U * u Nfcrx) Q*o
ơ / N g ự r ĩ n T o 4
T iá l l > t» 1 0 7 G 2
8 T V ậ l L ị ( N ì )
G V O ế o TH * M ẳno
T -B 1 - H » X M G G2
o L : : ■
ố .Kết quà xểp lịch giáng dạy cho một lớp học
Hình 7 tương tự như Hình 6 thể hiện kết quả xếp lịch cho các phòng học sau khi đã được xử lý
bời module Comet.
Eĩ ĩ IĩìlBBSB
ay> C l ' u o n q t n n h U p l« K g i« r v j d a y
+ ■ T h é m X * * » W c * p n h ệ l « f U p l íc h •
X a m T h * o P h ò n g S p c -•
O i n b s á c h k h o *
0 » r m s á c h \ d o
Din* 4ÍCti Qia^o v»én
D »n rs iĩ ct< m ô n h o c
D » n h M đ ì p h ô n g h o c
P h j n c ô n g o à n g IÍ4Y
ST7 T *0 &*OV1ÍO
Vòo \ BuA “
ThO
T *
8 0 _
jm n Oỗ Mo* Ma. Tinh
Sui Th4 OuyCNTT
QH-2004 l/C s»ng l í
.
4

[2 , rư Tiidoo HCM ỊL * i n Hông (M p CNTT ■ QH-Ĩ004-I/C
S*»B '3 2
3
3 l i o Trtnh w«t> Đoân M i* MSúOnơCNTT
I'q h S S v c
S ín g 3
3
t
4 C *cV4nD « M 4oO » C N TT {N I ) Kể Quotq Thựy<NTT
QH-2004-iyC
5 * 5 1 4 ?.
- 4
1
b C ơ SdO Ũ L 4 uN *n9 C *o
Ngưy*« TuèCNTT
QM-2004-I/C
s* ng | ĩ
6 Oô Ho# May T inh
] M i Thế OwrCNTT QH-2004-I/C S ế ns 3
l-u— .
7 XJ Lý Anh
ữ f i . Tnlí- r>i » r-^ . T k.il
ŨÌM ĩh ể Oưy-CNTT
D nh M#oh T Jd nợ<N T T
*.v>.,4 OW»CNTT
QH-2004-I/C $*oo 3
f M o 3
- -
0 >.*u 1 I\ic U l • 1 nw#i
9 Kỹ PKẠrt U 1 a

y ’ 4-WiTU I*
*0 * XX* ĩ c C M i. 3 s

10 T*»Q Anh CN2 ( N I >
! M » Ttwy OiOnọCNTT
o h ỉ o o ^ ì a : CK*U ~ j* " "
< 1 M»ng Máy Tinh Hỗ O ểc P»Hi»ì»CNTT QH 200VI/C Chd u 3
12 (u oK SỬ DAog
Nợuyío T M » HoaCNTT QH-2005-I/C C N tu 3
T ~ 4
ĩ i T o * r R f tfU e 2
Oổ Ovic GUoCNTT
QH-200SI/C CN»U 2
l.
T T ]
1 I k #. Thd 2 Thd 3 Thú 4 T W 5
THJ
*
_________
____
i
ĨỈ,MUJ
l* p TÒ.U. v /« b
QV D o*n M-rh Phưoog
T 4t I I P 107 cư
C4c Vấn ồ ề Đ »
CMTT( Nt )
GVH * Qu*«g Thụy
DỖ Hq» M*y Tlnh
i GV Boi T M Ouy

| r i » i W> i0 7 G 2
ICƠ s<? DO Nắoo C*o
• GV Ngu»*n Tb*
Ị T4 i i ' y p >07 G2
Tư Todng MCM
GV Lể IN Hông 0 ^ 0
T 4l 3 54» 107 G2
w Ho* w*y Tinh
GV 8 Ui T hé Dưy
T « 4 f i P ì Õ ? G2
XJLyA nh
GV 0i» Thé Dwy
T414€ -P 107 G2
T 4 n o Anh 3 < N2 >
GV Tiln T TOJ M«n
T 4 J 4 S P 1 07-G2
M* g Méy T ln 6
C h iA u G v H ô o ể c P N - « o
T rftV 3-> ìO ? 0 2
M n g A n hC N 2 (N 1 )
GV Ma. r*>ùy D«iOf»0
T4t 1 4 9 107 G 2
r* n g Anh C N ỈÍ N t )
GV M » Tl*ừ, Dùơnộ
Tét 14 p 1Ó: *G2
í K ) H g ht Ph *n Mfcn
GV Ngu>4n Nffoc
T 4i U P 107 G2
Toén R « R# c 2
GVĐỒ DOcGAo

T 4 1 1 2 > 107- G2
^ . C íu Trũc OL t G * TKuél
C h i* u GV.Đrti Tuaoo
T rf í4 < -P 107 G2
L»ch SO O*og
G v Nguy4n T Mat Ho«
T«*i 4-6-P 107 G2
N M Co Sđ D Ũ L^ v
GV Nooy io M* N«m
, T iA 3V P -107-G 2
1
Hình 7. Két quà xép lịch cho một phòng học
16
4. Kết luận
Việc áp dụng phương pháp lập trình ràng buộc vào các bài toán tồ hợp giúp xây dựng các giải
pháp cho bài toán một cách nhanh chóng và linh dộng. Trong đề tài này chúng tôi đã áp dụng hệ
thống lập trình ràng buộc Comet vào bài toán lập lịch giáng dạy tại Trường Đại học Công nghệ
và cho kết quà tốt. Hướng nghiên cứu tiếp sẽ phát triển hệ thống cho mô hình giảng dạy dựa theo
tin chi, trong đó quan tâm đến việc đăng ký khóa học cùa sinh viên. Mô hình ràng buộc bao gồm
các ràng buộc mềm, có tính toán đến trọng số của các ràng buộc.
5. Địa điểm, thời gian và phương pháp nghiên cứu
Đe tài được tiến hành tại bộ môn Các hệ thống thông tin, thuộc khoa CNTT, trường
ĐHCN, ĐHQG HN.
- Thời gian: 6/2009 đến 6/2010
Ket nối Internet cùa trường: dùng vào việc tải các phần mềm, dữ liệu thử, bài báo khoa
học.
- 01 máy trạm HP CPU Intel Core 2 Duo E4500 2*2.2GHz/ 2MB Cache/ Chipset Intel /
2GB DDR2/ 80GB SATA H DD/ 16 inl CardReader /Intel GMA 3100 upto 128MB/
DVD-RW/ Gigabit NIC/ lx PCI Ex - dùng làm thực nghiệm. Máy trạm này được trang bị
theo dự án Tăng cường năng lực nghiên cứu cho Phòng thí nghiệm chuyên đề Các Hệ

thống Thông tin Tích hợp và Công nghệ Phần mềm năm 2008-2009.
Phương pháp nghiên cứu: nghiên cứu lý thuyết kết hợp thực nghiệm.
6. Kết quả nghiên cứu
6.1 Ket quả khoa học
Trong khuôn khồ thực hiện đề tài này, nhóm thực hiện đã thu được những kết quả chính
sau:
- Nghiên cứu tồng quan phương pháp lập trình ràng buộc (CP) và các kỹ thuật xừ lý ràng
buộc. Tìm hiểu các hệ thống lập trinh ràng buộc và cụ thể là hệ thống lập trình ràng buộc
Comet.
- Nghiên cứu bài toán lập lịch giảng đạy đại học tại Trường Đại học Công nghệ và áp dụng
hệ thống lập trình ràng buộc Comet vào giải quyết bài toán. Ket quà đã xây dựng được
ứng dụng giải quyết tốt bài toán.
Những kết quà khoa học thu được trong đề tài này được thể hiện qua hai báo cáo khoa học đã
được tiến hành:
a. "ứ n g dụng Hệ thống lập trình ràng buộc Comet vào bài toán lập lịch giảng dạy đại
học" đã gừi cho Tạp chí Khoa học và Công nghệ - Đại học Quốc Gia Hà Nội tháng 10/2010.
6.2 Ket quả đào tạo
Một luận văn đại học đă được hoàn thành trong quá trình thực hiện đề tài:
ĐAi HỌC G U ỐC GIA HA NỘI
TRUNG I ẦM THÕNG TIN IhUVIẺN
n n o f e 0 0 ổ 0 0 4 4 ~
a. ứng dụng Hệ thống lập trình rùng buộc Comet vào bài toán lập lịch giàng dạy
đại học
Luận văn này được học viên Nguyền Thị Thùy hoàn thành trong tháng 06/2010 với những
nội dung chinh sau:
CHƯƠNG 1: MỞ Đ À U 7
1.1. Lập trình ràng buộc vào giải quyết các vấ dề tối ưu hóa tồ h ợ p 7
1.2. C ấ u tr ú c k h ó a l u ậ n 10
CHƯƠNG 2: LẬP TRÌNH RÀNG BUỘC 11
2.1. Lập trình ràng buộc là g i? 11

2.2. Nguồn gốc lập trình ràng buộc 11
2.3. Mô hình lập trình ràng b u ộ c 12
2.4. ử n g dụng cùa ngôn ngữ lập trình ràng buộc (C P)
14
CHƯƠNG 3: NGÔN NGỮ LẬP TRÌNH COMET 16
3.1. COMET là g ì? 16
3.2. Lập trình C om et 17
3.2.1. Mô hình lập trình Com et 17
3.2.2. Ví dụ 20
3.3. Ưu điểm cùa Comet 23
CHƯƠNG 4: ỬNG DỤNG COMET VÀO BÀI TOÁN LẬP THỜI KHÓA B IÊ U 26
4.1. Đặt vấn đề xây dựng bài toán
26
4.2. Giải quyết bài to á n 28
4.3. Thực nghiệm 30
4.3.1. Các chức năng quản lý giảng viên, môn học, phòng học, khoa

31
4.3.2. Chức năng phân công giảng d ạy
36
4.3.3. Chức năng xếp Thời khóa biểu 37
4.3.4. Chức năng xem thời khóa biểu theo tên lóp, tên giảng viên, tên phòng học

.

.7.
38
CHƯƠNG 5: KÉT LUẬN VÀ HƯỚNG PHÁT TRIỂN 41
TÀI LIỆU THAM KHÀ O 42
18

7. Tài liệu tham khảo
[1] Hai, L. H., Tam, V. H. and Anh, D. T., 2005, Course Timetabling o f an Entire University
with Local Search Method, Proceedings o f International School on Computational Sciences
and Engineering: Theory and Applications (COSCI2005), March 2-4, 2004, Ho Chi Minh
City University o f Technology, pp. 19-28N.
[2] Nguyen Quoc Viet Hung, Ta Quang Binh, Duong Tuan Anh, 2005, A Memetic Algorithm
for Timetabling, Proceedings o f 3nd hit. Con/. RIVF'05 Research Informatics Vietnam-
Francophony, Feb. 2-5, Can Tho, Vietnam, pp. 289 - 2946.
[3] D. Ross and D.Come, Comparing genctic algorithms, simulated annealing and stochastic
hillclimbing on timetabling problems, Proceeding o f the AISB Workshop on Evolu ionary
Computing, 1995.
[4] Sicstus Prolog, />[5] Eclipse, hllp://eclipseclp.ortì/
[6] Gecode, http:/Avww. uecode.org/
[7] Comet,
[8] Dechter, Rina (2003). Const r a i n Í process in s . Morgan Kaufmann, ISBN 1-55860-890-7.
[9] Lecoutre, Christophe (2009). Constraint Networks: Techniques and Algorithms.
ISTE/W iley. ISBN 978-1-84821-106-3.
[10] Hana Rudová and Keith Murray. University course timetabling with soft constraints.//!
Edm und Burke and Patrick D e Causmaecker, editors, Practice A nd Theory o f
Automated Timetabling, Selected Revised Papers,. Springer-Verlag LNCS 2740, 2003,
pages 310-328.
[11] Li-Yen Shue, Pei-Chun Lin, Chia-Yin Tsai Constraint Programming Approach for a
University Timetabling Decision Support System with Hard and Soft Constraints,
Opportunities and Challenges fo r Next-Generation Applied Intelligence, Studies in
Computational Intelligence, 2009, Volume 214/2009,93-98.
[12] Philippe Baptiste, Philippe Laborie, Claude Le Pape, Wim Nuijten Constraint-based
Scheduling and Planning. H andbook o f Constraint programming, pages 761-799, Elsevier,
2006.
[13] P. Van Hentenryck, L. M ichel Constraint-Based Local Search. MIT Press, Cambridge,
London. MIT, 2005

[14] L. Michel and p. Van Hentenryck. Non Deterministic Control, Hybrid Search
Constraints. 11(4), 2006.
[15] Laurent D.M icheal, Pascal Van Hentenryck Transparent Parallelization o f Constraint
Programming, INFO RMS Journal on Computing Volume 21, pages: 363-382, 2009.
19
[16] Martin Mann, Sebastian Will, and Rolf Backofen CPSP-tooIs - Exact and Complete
Algorithms for High-throughput 3D Lattice Protein Studies. In BMC Bioinfomiatics, 9,
230, 2008.
[ 17] Roman Barták, Constraint propagation and backtracking-based search, Charles
University, Faculty o f Mathematics and Plysics, Department of Theoretical Computer
Science, February, 2005.
20
PHỤ LỤC
- Danh mục các bài báo và báo cáo chuyên đề hoàn thành trong khuôn khô đê tài:
1. "ứng dụng Hệ thống lập trình ràng buộc Comet vào bài toán lập lịch giáng dạy đại
học", đã gừi cho Tạp chí Khoa học và Công nghệ - Đại học Quốc Gia Hà Nội tháng
10/ 2 0 1 0 .
- Bàn sao Đề cương và Hợp đồng thực hiện đề tài nghiên cứu đã được phê duyệt.
- Báo cáo tóm tắt kết quả nghiên cứu cùa đề tài bàng Tiếng Anh.
- Phiếu đăng k ỷ kết quả n g h iê n cứu KHCN.
21
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỰC CÔNG NGHỆ
Nguyễn Thị Thùy
ỨNG DỤNG HỆ THỐNG LẬP TRÌNH RÀNG BUỘC
COMET VÀO BÀI TOÁN LẬP LỊCH GIẢNG DẠY
ĐẠI HỌC
KHOÁ LUẬN TÓT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Các hệ thống thông tin
Cán bộ hướng dẫn: Ths Lê Hồng Hải

HÀ NỘI-2010
Tạp chí Khoa học ĐHQGHN, Khoa hục Tự nhiên vá Công nghệ
ư ng dụng Hệ thồng lập trình ràng buộc Comet vào bài toán
lập lịch giảng dạy đại học
Lê H ồng H ải*, Vũ Tiến T hành, Trần N am K hánh
Khoa Công nghệ Thông tin, Trường Đai học Công nghệ. Đại học Quốc gia Hà Nội
144 Xuân Thủy, Hà Nội, Việt Nam
Tóm tắt. Lập lịch giảng dạy là một công việc tiêu tốn thời gian, các chưcmg trinh sừ dụng phương
pháp lập trinh truyền thống thường xây dựng cho mội dcm vị cụ thể và khó sửa đổi thích nghi do
sự đa dạng cúa các ràng buộc. Phương pháp lặp trinh ràng buộc hướng tới diễn đạt các ràng buộc
của bài toán theo cách khai báo, giúp đưa ra giải pháp nhanh chóng và hiệu quà. Com et là một hệ
thống lập trình ràng buộc đã đạt giải thưởng trong việc giải quyết các vấn đề tố họp tối ưu trong
các lĩnh vực như phân phối tài nguyên và lập lịch. Bài báo này mô tà áp dụng hệ thống lập trình
ràng buộc Comet vào bài toán lặp lịch giáng dạy tại Truờng Đại học Còng nghệ.
Từ khóa: tổ hợp, lập trình ràng buộc, mô tả, mô hinh, tim kiếm, lập lịch.
1. Giới thiệu
Lập lịch giảng dạy là bài toán không mới,
đã được giài quyết theo nhiều phương pháp
khác nhau như giải thuật di truyền, tìm kiếm cục
bộ như leo lúi, luyện thép, Tabu [1, 2, 3]. Các
phưong pháp này được sử dụng rộng rãi và cho các
kết quả tốt. Tuy nhiên các phương pháp này
thường viết cho các đon vj cụ thể và không dễ sừa
đổi thích nghi (thay đổi dữ liệu hoặc yêu cầu trong
bài toán có thể yêu cầu phải xem xét lại toàn bộ
chương tình).
Lập trình ràng buộc mô tả các ràng buộc của
bài toán cằn thỏa mãn thay vì xác định tuần tự các
bước cần thực hiện như trong lập trình truyền
thống. Điều đó mang đến tính linh động trong việc

diễn đạt và giải quyết hiệu quả các bài toán, đặc
biệt trong các bài toán gồm nhiều ràng buộc đa
dạng, biến đồi.
Lập trinh ràng buộc đang nổi lên như một công
nghệ giải quyết hiệu quà các bài toán tổ họp trong
các lĩnh vực như lập kế hoạch, lập lịch [12]. Lập
trình ràng buộc cũng được áp dụng thành công
trong bài toán lập lịch giảng dạy tại các trường đại
học [10, 11].
Bài báo này sẽ mô tà áp dụng hệ thống lập
trinh ràng buộc mcri hiện nay là Comet vào bài toán
lập lịch giảng dạy tại Trường Đại học Công nghệ.
Cấu trúc bài báo như sau: Phần 2 sẽ mô tả về lập
trinh ràng buộc và hệ thống lập trình ràng buộc
Comet. Phàn 3 sẽ mô tả áp dụng hệ thống Comet
!
2
L.H.Hải và ìììik. / Tạp chí Khoa học ĐH QGHN, Khoa học Tự Nhiên và Công nỵhệ tập (năm) sô'trang
vào giải quyết bài toán lặp lịch giảng dạy tại
Trường Đại học Công nghệ.
2. Lập trình ràng buộc và hệ thống lập trình
ràng buộc Comet
2.1. Lộp trình ràng buộc
Ỷ tường cùa lập trình ràng buộc là giải
q uy ết bài toá n b ằn g c á ch khai b á o cá c ràn g
buộc (các yêu cẩu) của bài toán. Lập trình ràng
buộc không xác định tuần tự các bước cần thực
hiện như trong lập trình truyền thống. Lập trình
ràng buộc bắt đầu từ những năm 90 bằng việc
tích hợp xừ lý ràng buộc vào ngôn ngữ logic.

Hai mô hình này chia sẽ nhiều đặc điểm quan
trọng như biến logic và thủ tục tự động quay
lui. Ngày nay hầu hết các cài đặt Prolog phổ
biển đều tích hợp các thư viện cho lập trình
ràng buộc. [4, 5]. Ngoài tích hợp vào ngôn ngữ
logic, lập trình ràng buộc sử dụng cách tiếp cận
khác như lập trinh thủ tục, với các hệ thống lập
trình ràng buộc phổ biến như Gecode, Comet
[6, 7].
Mô hình lập trình ràng buộc có thể mô tả
như sau: Lập trình ràng buộc = Mô hình ràng
buộc + Tim kiếm
Phía sau mỗi ràng buộc là một thuật toán
lọc tia không gian tìm kiếm. Các ràng buộc hoạt
động trên miền giá ừị của các biến để loại bò
các giá trị không cỏ khả năng tham gia ra vào
giải pháp. Một số thuật toán xử lý ràng buộc
được sử dụng quen thuộc như nhất quán nút,
nhất quán cung, và nhất quán đường. Các thuật
toá n x ử lý ràn g b uộ c đư ợ c m ô tả ch i tiết tron g
[8, 9], Ngay khi một miền trở thành rỗng, có
nghĩa không có khà năng có giải pháp với các
giá trị gán hiện tại. Quá trình tìm kiếm quay lui
về trạng thái trước đó và thử một quyết định
khác. Phần tim kiếm có nhiệm vụ tạo dáng của
cáy tìm kiếm và cách thức thăm dò trên câ y tìm
kiếm.
Khi giải quyết một bài toán sừ dụng phương
pháp lập trinh ràng buộc, mô hình hóa các ràng
buộc là th ành phân chín h để g iải q uyèt thành

công bài toán, tuy nhiên phần tìm kiếm cũng
đóng vai trò quan trọng ừong việc nhanh chóng
hướng ten và đưa ra giãi pháp.
Do các ràng buộc được khai báo độc lập với
quá trình tìm kiếm. Lập trình ràng buộc mang lại
iru điểm phát triền úng dụng nhanh chóng, dễ dàng
thèm bớt và sừa đổi các ràng buộc khi có yêu cầu.
De dàng tich họp và thứ nghiệm các chiến lược tìm
kiếm khác nhau để tim ra chiến lược tìm kiếm thích
họp, tối ưu.
2.2. Hệ thống lập trinh ràng buộc Comet
Comet là một hệ thống tối ưu hóa lai, kết
hợp lập trinh ràng buộc và tìm kiếm cục bộ, lập
trình tuyến tính, nguyên [13]. Comet cũng hỗ
trợ lập trình hướng đối tượng, tự động thu dọn
rác. Comet đưa vào các đặc tính như cung cấp
cấu trúc điều khiến tìm kiếm, cho phép tich hợp
các chiến lược tìm kiếm khác nhau dễ dàng
[14], chuyến một chương trình xử lý tuần tự
sang xử lý song song một cách trong suốt, dễ
dàng [15].
Comet là công cụ được trao tặng giải
thường bởi kh à năn g giải q u yế t h iệu quả các bài
toán tồ hợp tối iru trong các lĩnh vực như phân
phối tài nguyên và lập lịch. Mô hình chung
chương trinh ràng buộc ữong Comet như sau:
so lv e r <cp>
í
// Khai báo các ràng buộc
} using

{
/ / T ìm k iế m
}
L.H .l lài và link. / Tap chí Khoa học DHQGHN, Khoa học Tự Nhiên và Cóng nghệ lặp (nãm) sô'trang 3
Các ràng buộc được đưa vào trong khối
s o l v e r < c p > . V i d ụ c p .p o s t (x!=y), đưa
vào ràng bu ộc b iến X và biến y phải có g iá trị
khác n hau. T ro ng quá trinh g án g iá trị, khi b iến
X gán giá trị 1, các ràng b uộ c liên qu an đến biến
X sẽ dược kích hoạt, trong ví dụ trẽn giá trị 1 sẽ
được loại ra khói miền giá trị cùa biến y.
Comet cho phép đưa vào các ràng buộc số
học phức tạp và các biểu thức logic, ví dụ:
cp.po st(x>y => a<b)
ràng buộc trên đảm bảo ràng nếu giá trị biến
X lớn hơn giá trị bién y thì g iá trị b iến a phài
nhò hơn giá trị biến b.
Comet cũng cung cấp nhiều ràng buộc có
sẵn như:
A lldif f e r e n t : ràn g buộc cá c b iến ph ải có
giá trị khác nhau.
B in a r y K n a p s a c k : rà ng bu ộc về tổ n g trọn g
lư ợng củ a các vật.
Cardinality: ràng buộc số lần xuất hiện
củ a m ỗi g iá trị.
Tìm kiếm trong lập trình ràng buộc khám
phá cày tìm kiểm sử dụng thuật toán quay lui.
Thuật toán ngầm định lã tìm kiếm theo độ sâu.
Ví dụ tiếp theo sẽ thăm dò các tồ họp cùa ba
biến x[l], x[2J, X[3 J.

import cotfd;
Solver<CP> cp();
v ar < CP > {i nt ) X [ 1 3] (cp,0 1)
solveall<cp>{
}us in g{
label(x[l));
labe l(x[2));
labe l(X[3]);
}
la b e l (X [ 1 ]) sẽ duyệt lẩn lượt các giá trị
trong miền cùa biến X [ 1).
Bén cạnh đó Comet cho phép dễ dàng tích
họp các chiến lược tìm kiếm khác nhau [14],
3. Ấp dụng hệ lặp trình ràng buộc Comet
vào bài toán lập lịch giảng dạy
Lập lịch giảng dạy tại trường Đại học Công
Nghệ xếp theo mô hình học theo niên chế, lịch
học được xếp theo tuần. Dữ liệu sử dụng ừong
chương trinh được cung cấp bởi Phòng Đạo tạo
nhà T rường c ho k ỳ h ọc 2, n ăm học 2007-2008,
với 20 lóp học, số phòng học là 26, hơn 100
giàng viên th am g ia giảng d ạy và 2 10 bài giảng
cần xếp lịch. Các yêu cầu trong bài toán xếp
lịch cần thòa mãn như sau:
- Các bài giảng được xếp lịch từ thứ hai
đến thứ sáu. Trong một buổi sáng hoặc
buổi chiều, số tiết dạy cho một lớp không
vượt quá 6.
* Đối với một lớp, các bài giảng cùa lóp
không được xếp chồng lên nhau. Cùng

với đó, các bài giảng cùng chủ đề thì phải
xếp vào các ngày khác nhau, ví dụ môn
Tiếng Anh được chia làm hai bài giảng,
thỉ hai bài giảng đó cần được xếp vào hai
ngày khác nhau.
- Đối với giảng viên, các bài giảng cùa một
giàng viên không được xếp chồng lên
nhau. Đồng thời có những ràng buộc về
thời gian giảng dạy, ví dụ không xếp bài
giảng của giảng viên vào những ngày
giàng viên đó bận, hoặc giảng viên đó đo
điều kiện đi lại xa, không thích hợp với
giảng dạy vào tiết đầu trong ngày.
- Đổi với các phòng học, không đuợc xếp
hai bài giảng dùng chung phòng chồng
lên nhau.
P hần tiếp th e o củ a b ài báo sẽ đ ề cậ p đến m ô
hình hóa các ràng buộc cùa bài toán sử dụng hệ
thống lập trinh ràng buộc Comet.

×