TÓM TẮT
Việc xếp thời khóa biểu hợp lý là bài toán tối ưu có nhiều ứng dụng trong thực tế. Được phân loại thuộc
lớp NP-complete và đã được nghiên cứu rộng rãi trong hàng chục năm qua với các hướng tiếp cận như
quy hoạch toán học, tối ưu dựa trên ràng buộc, tối ưu đa mục tiêu, giải thuật tham lam, giải thuật
metaheuristic.v.v. Nghiên cứu này đề xuất sử dụng giải thuật di truyền để giải bài toán xếp thời khóa
biểu trường phổ thông, một loại bài toán xếp thời khóa biểu phổ biến. Nghiên cứu đã cài đặt và thí
nghiệm giải thuật đề xuất trên một số bộ dữ liệu thực tế. Kết quả thực nghiệm cho thấy giải thuật đề
xuất cho kết quả tốt hơn một số phần mềm hỗ trợ xếp thời khóa biểu cho các trường phổ thông hiện nay
trên dựa trên trọng số một số ràng buộc của bài toán.
10 trang |
Chia sẻ: thanhle95 | Lượt xem: 530 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Đề xuất giải thuật di truyền giải bài toán xếp thời khóa biểu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC SÀI GÒN SAIGON UNIVERSITY
TẠP CHÍ KHOA HỌC SCIENTIFIC JOURNAL
ĐẠI HỌC SÀI GÒN OF SAIGON UNIVERSITY
Số 71 (05/2020) No. 71 (05/2020)
Email: tcdhsg@sgu.edu.vn ; Website:
87
ĐỀ XUẤT GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN
XẾP THỜI KHÓA BIỂU
Proposing a genetic algorithm to solve timetabling problem
Nguyễn Hồ Thiên Đăng(1), Nguyễn Thị Hồng Bích(2),
Thái Minh Tân(3), TS. Phan Tấn Quốc(4)
(1)Học viên cao học Trường Đại học Sài Gòn
(2)Trường THPT Ngô Quyền, Q.7, TP.HCM
(3)Công ty TMA Solutions, TP.HCM
(4) Trường Đại học Sài Gòn
TÓM TẮT
Việc xếp thời khóa biểu hợp lý là bài toán tối ưu có nhiều ứng dụng trong thực tế. Được phân loại thuộc
lớp NP-complete và đã được nghiên cứu rộng rãi trong hàng chục năm qua với các hướng tiếp cận như
quy hoạch toán học, tối ưu dựa trên ràng buộc, tối ưu đa mục tiêu, giải thuật tham lam, giải thuật
metaheuristic.v.v. Nghiên cứu này đề xuất sử dụng giải thuật di truyền để giải bài toán xếp thời khóa
biểu trường phổ thông, một loại bài toán xếp thời khóa biểu phổ biến. Nghiên cứu đã cài đặt và thí
nghiệm giải thuật đề xuất trên một số bộ dữ liệu thực tế. Kết quả thực nghiệm cho thấy giải thuật đề
xuất cho kết quả tốt hơn một số phần mềm hỗ trợ xếp thời khóa biểu cho các trường phổ thông hiện nay
trên dựa trên trọng số một số ràng buộc của bài toán.
Từ khóa: thời khóa biểu, thời khóa biểu trường phổ thông, giải thuật di truyền
ABSTRACT
Timetabling problem is optimization problems that have many practical applications; this is the problem
of class NP-complete. Timetabling problem has been widely studied over the past decades with
approaches such as mathematical programming, constraint-based approaches, multiobjective
optimization, greedy algorithms, metaheuristic algorithms, etc. In this study, we propose a genetic
algorithm to solve a form of Timetabling problem that is the School Timetabling problem. The proposed
algorithm was conducted on some real data sets. Experimental results claim that our algorithm results in
better results than some of the current school Timetabling software based on some constraints of the
problem.
Keywords: genetic algorithm, timetabling problem, school timetabling
1. Giới thiệu
Bài toán xếp thời khóa biểu trường học
(timetabling problem) là tạo ra một lịch
phân công giảng dạy giữa người dạy và
người học trong một chu kỳ thời gian cố
định (thường là theo tuần) sao cho thỏa
mãn được nhiều ràng buộc nhất có thể của
bài toán. Bài toán xếp thời khóa biểu thuộc
lớp bài toán tối ưu NP-complete [1].
Bài toán xếp thời khóa biểu được biết
Email: quocpt@sgu.edu.vn
SCIENTIFIC JOURNAL OF SAIGON UNIVERSITY No. 71 (05/2020)
88
đến rộng rãi với 3 dạng sau: bài toán xếp
thời khóa biểu trường phổ thông (school
timetabling-STTP); bài toán xếp thời khóa
biểu trường đại học (course timetabling-
CTTP); bài toán xếp lịch thi (examination
timetabling-ETTP) [1].
Đã có nhiều công trình nghiên cứu về
bài toán xếp thời khóa biểu dựa trên các
hướng tiếp cận như giải thuật tô màu đồ thị,
tiếp cận dựa trên ràng buộc, quy hoạch toán
học, tối ưu đa mục tiêu, giải thuật tham lam
[2], giải thuật metaheuristic [3], [4], [5],
[6], [7].
Trong nghiên cứu này, chúng tôi đề
xuất một giải thuật metaheuristic dạng
quần thể là giải thuật di truyền để giải bài
toán xếp thời khóa biểu trường phổ thông
với hy vọng có thể khắc phục được bẩy tối
ưu cục bộ so với các metaheuristic dạng cá
thể khác.
2. Bài toán xếp thời khóa biểu phổ
thông
2.1. Một số khái niệm
Chu kỳ thời khóa biểu: chu kỳ thời
khóa biểu là số ngày mà thời khóa biểu cần
xếp lịch, tính từ thứ Hai đến thứ Bảy.
Nhóm thời gian: nhóm thời gian là
tập hợp nhóm các tiết trong một chu kỳ
thời khóa biểu; buổi sáng từ tiết 1 đến tiết
5, buổi chiều từ tiết 6 đến tiết 8, sau 2 tiết
đầu của mỗi buổi học sẽ có giờ giải lao.
Định dạng khuôn mẫu các buổi học thông
thường ở trường phổ thông hiện như sau:
từ thứ Hai đến thứ Sáu, mỗi buổi các lớp
học đủ 5 tiết; riêng thứ Bảy có thể học ít
hơn tuỳ theo tổng số tiết các môn cả tuần,
tổng số tiết này thay đổi tuỳ học kỳ và tuỳ
khối lớp.
Giáo viên: các giáo viên có thể được
phân công làm công tác chủ nhiệm lớp,
giáo viên chủ nhiệm lớp nào thì phải được
phân công giảng dạy ít nhất một môn học
của lớp đó; các giáo viên có thể dạy môn
học ngoài chuyên môn chính, gọi là công
tác kiêm nhiệm.
Lớp học: lớp học gồm tập các học
sinh học chung với nhau ở tất cả các môn
học.
Phạm vi bài toán xếp thời khóa biểu đề
cập trong nghiên cứu này là các khối lớp
10, 11 và 12.
Phòng học: với bài toán xếp thời khóa
biểu ở trường phổ thông, mỗi lớp được cấp
cố định một phòng học lý thuyết trong suốt
năm học; mỗi phòng học có thêm thông tin
là phòng học lý thuyết hay phòng thực
hành, thực nghiệm.
Môn học: có thể gọi là môn, mỗi khối
lớp trong một học kỳ có từ 13 đến 17 môn;
Môn ngữ văn, thể dục, quốc phòng phải
xếp tiết cặp và không xếp tiết 2-3 vì sau
tiết 2 là giờ giải lao; Môn toán, tiếng Anh,
Tin học cũng khuyến khích xếp tiết cặp.
Các môn đã xếp tiết cặp thì một buổi
không xếp quá một cặp.
Bảng phân công: bảng phân công
giảng dạy gồm một tập các phân công; mỗi
phân công bao gồm các thông tin về giáo
viên, lớp học, môn học, tổng số tiết môn
học trong tuần.
2.2. Ràng buộc của bài toán xếp thời
khóa biểu
Ràng buộc của bài toán xếp thời khóa
biểu được phân làm hai loại: ràng buộc
cứng (hard constraints) và ràng buộc mềm
(soft constraints).
Ràng buộc cứng là các ràng buộc đã
được quy định trong các văn bản của ngành.
Ví dụ môn học cần xếp có tiếp cặp, buổi
học của các lớp không có tiết lủng.v.v. Ràng
buộc cứng là loại ràng buộc, không thể vi
phạm, trừ trường hợp bất khả kháng.
Ràng buộc mềm là các ràng buộc
thường do giáo viên hoặc lớp học yêu cầu
NGUYỄN HỒ THIÊN ĐĂNG và cộng sự TẠP CHÍ KHOA HỌC ĐẠI HỌC SÀI GÒN
89
để làm tăng chất lượng thời khóa biểu. Các
ràng buộc mềm cần được xếp thỏa mãn
càng nhiều càng tốt. Khi có nhiều ràng
buộc mềm thì độ ưu tiên giữa chúng cũng
là yếu tố cần xem xét.
Ràng buộc cứng của bài toán xếp
thời khóa biểu phổ thông
Ràng buộc đụng độ giáo viên (1): các
phân công đối với cùng giáo viên thì không
xếp vào cùng vị trí tiết học.
Ràng buộc đụng độ lớp học (2): các
phân công đối với cùng lớp học thì không
xếp vào cùng vị trí tiết học.
Ràng buộc đụng độ phòng học (3):
mỗi phòng học chỉ được xếp vào nhiều
nhất một phân công tại một vị trí tiết học.
Việc đụng độ phòng học chỉ có thể xảy ra ở
các phòng thí nghiệm, thực hành, sân tập
thể dục.
Ràng buộc về số tiết học liên tiếp tối
thiểu và số tiết học liên tiếp tối đa (4):
thông số này là (1,2) đối với bài toán STTP
và đây cũng là điểm khác biệt so với bài
toán CTTP. Ở bài toán CTTP, số tiết học
liên tiếp tối thiểu, tối đa có thể là (2,k) với
2 ≤ k ≤ 6.
Ràng buộc thời gian rảnh của giáo
viên, lớp học, phòng học (5): các phân
công không được vi phạm thời gian rảnh
của giáo viên, của lớp học, của phòng học.
Ràng buộc về tính đầy đủ của phân
công (6): tất cả các phân công đều phải
được xếp thời khóa biểu. Nếu giải thuật
không xếp được tất cả phân công thì cần gỡ
dần các ràng buộc mềm và tiến hành lại việc
xếp thời khóa biểu. Một giải thuật xếp được
tất cả các phân công không đồng nghĩa giải
thuật đó sẽ tạo ra thời khóa biểu tốt.
Ràng buộc về phân công xếp sẵn (7):
tiết xếp sẵn là tiết được ưu tiên xếp trước
và mọi tiết khác xếp sau sẽ tránh các tiết
xếp sẵn này.
Ràng buộc về các môn học có tiết cặp
(8): một số môn học theo quy định bắt
buộc phải có ít nhất một tiết cặp để đáp
ứng yêu cầu về chuyên môn.
Ràng buộc về mỗi môn học chỉ học
một lần trong một buổi tại mỗi lớp (9):
trong một buổi học, một môn học chỉ có
thể xuất hiện nhiều nhất một lần (một tiết
lẻ hoặc tiết cặp).
Ràng buộc tiết trống của lớp theo buổi
(10): tiết trống là tiết không bố trí dạy học
xen giữa các tiết học khác; thực tế thì thời
khóa biểu các lớp ở trường phổ thông cần
được xếp sao cho không có hiện tượng
trống tiết.
Ràng buộc về tiết không xếp của giáo
viên (11): tiết không xếp là tiết theo quy
định của ngành, của cơ sở giáo dục; thời
khóa biểu của giáo viên cần xếp tránh các
tiết không xếp này, ví dụ ngày sinh hoạt
chuyên môn của giáo viên được xem là các
tiết không xếp.
Ràng buộc mềm của bài toán xếp
thời khóa biểu phổ thông
Ràng buộc về lịch bận của giáo viên
(1): mỗi giáo viên có lịch bận riêng.
Ràng buộc về học cách ngày (2): nên
xếp các môn học học cách ngày trong tuần.
Ràng buộc về độ nén lịch dạy của giáo
viên (3): nên xếp lịch dạy của giáo viên sao
cho số buổi mà giáo viên đi dạy là ít nhất
có thể; gọi n là số buổi dạy của giáo viên
thì: n ≤ số tiết trong tuần của giáo viên/5
+1.
Ràng buộc về tiết trống của giáo viên
(4): mỗi buổi giáo viên có thể trống tiết tối
đa 1 lần (trống 1 tiết hoặc 2 tiết liên tục);
trong một tuần số tiết trống của mỗi giáo
viên không vượt quá 3.
Ràng buộc về số tiết dạy tối thiểu
trong một buổi của giáo viên (5): mỗi giáo
viên dạy ít nhất 2 tiết trong một buổi.
SCIENTIFIC JOURNAL OF SAIGON UNIVERSITY No. 71 (05/2020)
90
Ràng buộc về số tiết học tối thiểu
trong một buổi học của một lớp (6): số tiết
tối thiểu trong mỗi buổi học của một lớp là
2 tiết.
Ràng buộc về số môn học tối đa
trong mỗi buổi (7): số môn học tối đa
trong mỗi buổi là 4; trường hợp bất khả
kháng có 5 môn trong một buổi học thì 5
môn học đó không cùng thuộc nhóm môn
học xã hội (Văn, Sử, Địa, Giáo dục công
dân, Tiếng Anh).
Ràng buộc về số tiết tối đa của một
giáo viên trong một lớp trong mỗi buổi (8):
tránh xếp một giáo viên dạy một lớp nhiều
hơn 2 tiết/buổi học (không tính tiết sinh
hoạt chủ nhiệm). Trường hợp này có thể
xảy ra đối với các môn học có nhiều hơn 2
tiết hoặc các giáo viên dạy lớp đó 2 môn
học.
2.3. Mô hình hóa bài toán xếp thời
khóa biểu
Bài toán xếp thời khóa biểu gồm các
yếu tố sau:
Tập P ={p1, p2,,pm} gồm m tiết học,
tập T ={t1, t2,,tn} gồm n giáo viên, ma
trận PT cho biết tiết rảnh của mỗi giáo
viên, trong đó PTij=1 nếu giáo viên ti rảnh
tiết pj và PTij=0 nếu ngược lại.
Tập C ={c1, c2,,ch} gồm h lớp học,
ma trận PC cho biết tiết rảnh của lớp học,
trong đó PCij=1 nếu lớp học ci rảnh tiết pj
và PCij=0 nếu ngược lại.
Tập R ={r1, r2,...,rk} gồm k phòng học,
ma trận PR cho biết tiết rảnh của phòng
học, trong đó PRij=1 nếu phòng học ri rảnh
tiết pj và PRij=0 nếu ngược lại.
Tập M ={m1, m2,, my} gồm y môn
học, tập PM gồm y tổng số tiết học trong
tuần của các môn học tương ứng trong tập
M tức PM={pm1, pm2,, pmy}.
Tập MR gồm các môn học được phân
công vào các phòng học, trong đó MRij=1
nếu môn học mi có thể xếp vào phòng rj và
ngược lại.
Tập A ={A1, A2,..., Aq} gồm q phân
công, tập Ai cho biết chi tiết của phân công
giáo viên tj giảng dạy môn mf cho lớp Cv:
Ai={tj, Cv, mf}.
Tập lời giải S của bài toán gồm x phân
công được gán tiết học và phòng học
S={S1, S2,...,Sx}, trong đó tập Si gồm phân
công Ai được xếp vào tiết học Pj với số tiết
liên tiếp là kv (với k=1,2) và tại phòng học
rm: Si={Ai, pj, kv, rm}.
Để đánh giá được chất lượng của một
lời giải thì ta sử dụng một hàm mục tiêu
biểu diễn tổng trọng số các vi phạm của
các ràng buộc của bài toán; trong đó các
ràng buộc cứng đã được chuyển thành các
ràng buộc mềm có trọng số cao.
Trong đó: S là lời giải - là thời khóa
biểu toàn trường, n là tổng số các ràng
buộc của bài toán, wi là trọng số vi phạm
của ràng buộc thứ i (wi ≥ 0, với i=1..n), di
là số lần vi phạm ràng buộc thứ i (di ≥ 0,
với i=1..n) [4].
Ký hiệu f(S) là giá trị hàm mục tiêu của
lời giải S, giá trị hàm mục tiêu càng cao thì
độ thích nghi càng thấp và ngược lại.
2.4. Tiêu chí đánh giá chất lượng thời
khóa biểu
Chất lượng của một thời khóa biểu thể
hiện qua thời khóa biểu của các lớp học và
thời khóa biểu của mỗi giáo viên. Việc đánh
giá chất lượng một thời khóa biểu là công
việc khó khăn và thông thường giáo viên sẽ
đánh giá dựa vào thông tin thời khóa biểu có
vi phạm các ràng buộc của bài toán.
3. Giải thuật di truyền giải bài toán
xếp thời khóa biểu
Trong phần này, chúng tôi sẽ đề xuất
NGUYỄN HỒ THIÊN ĐĂNG và cộng sự TẠP CHÍ KHOA HỌC ĐẠI HỌC SÀI GÒN
91
một giải thuật metaheuristic, cụ thể là giải
thuật di truyền [5], [7], [8] để giải bài toán
xếp thời khóa biểu ở trường phổ thông.
3.1. Tạo quần thể ban đầu
Quần thể ban đầu được tạo gồm N cá
thể T1, T2,...,TN, trong đó mỗi cá thể là một
lời giải của bài toán, tức là một thời khóa
biểu toàn trường. Mỗi cá thể gồm nhiều
gen, mỗi gen được khởi tạo ngẫu nhiên từ
tập các phân công đã cho sao cho trước hết
phải thỏa mãn được các ràng buộc cứng
của bài toán.
Chất lượng các cá thể của quần thể ban
đầu được khởi tạo ngẫu nhiên thường có
chất lượng kém hơn so với chất lượng của
các cá thể được khởi tạo bằng các heuristic
của bài toán. Tuy nhiên do sự đa dạng của
các cá thể khi khởi tạo ngẫu nhiên, nên lúc
kết thúc quá trình tiến hóa, giải thuật di
truyền ứng với quần thể ban đầu (được
khởi tạo ngẫu nhiên) thường cho chất
lượng lời giải tốt hơn.
3.2. Độ thích nghi của cá thể
Độ thích nghi của mỗi cá thể thời khóa
biểu được xác định là giá trị của hàm mục
tiêu. Giá trị hàm mục tiêu càng nhỏ thì cá
thể thời khóa biểu có chất lượng càng cao.
3.3. Phép lai
Mục này trình bày cách chọn các cá
thể và cách thực hiện phép lai, cách xử lý
các cá thể con sinh ra từ phép lai.
Chọn các cá thể thời khóa biểu tham
gia phép lai
Cho xác xuất lai là pc, đối với mỗi cá
thể trong quần thể P, ta phát sinh ngẫu
nhiên một số thực r [0..1]. Nếu r ≤ pc, thì
chọn cá thể đó để tham gia phép lai. Ta sẽ
tiến hành thực hiện phép lai từng cặp các
cá thể thời khóa biểu theo thứ tự mà chúng
được chọn.
Phép lai hai cá thể thời khóa biểu cha-
mẹ T1,T2 để sinh ra hai cá thể thời khóa
biểu T1’ và T2’. T1’ và và T2’ ban đầu được
gán bằng T1 và T2.
Lấy ngẫu nhiên một đoạn các gen
trong mỗi cặp cá thể cha-mẹ thỏa mãn ràng
buộc về tính chất gen của bài toán – ở đây
là cùng một lớp nào đó, giả sử đó là đoạn
(p1,p2). Duyệt các đoạn gen từ (p1,p2) trong
cá thể cha-mẹ T1, nếu có gen nào làm cho
cá thể T2’ tốt hơn thì cập nhật T2’. Công
đoạn này kết thúc ta được cá thể con T2’.
Tương tự, duyệt các đoạn gen từ
(p1,p2) trong cá thể cha-mẹ T2, nếu có gen
nào làm cho cá thể T1’ tốt hơn thì cập nhật
T1’. Công đoạn này kết thúc ta được cá thể
con T1’.
Các cá thể gốc T1 và T2 không thay đổi
trong quá trình này; các cá thể T1’ và T2’
sinh ra từ phép lai phải thỏa mãn các ràng
buộc của bài toán.
Phép lai hai cá thể T1 và T2 để được hai
cá thể con T1’ và T2’. Ta đưa 2 cá thể con
này vào quần thể mới - nghĩa là sau khi
thực hiện phép lai, số cá thể của quần thể sẽ
lớn hơn N, giả sử đó là N’. Phép chọn ở
cuối mỗi thế hệ có nhiệm vụ loại bớt một số
cá thể có độ thích nghi kém hơn để đảm
bảo kích thước quần thể không đổi trong
mỗi lần bắt đầu thế hệ tiến hóa tiếp theo.
3.4. Phép đột biến
Mục này trình bày cách chọn các phân
công trong các cá thể để thực hiện phép đột
biến, cách thực hiện phép đột biến và cách
xử lý các cá thể con sinh ra từ phép đột
biến.
Phép đột biến được tiến hành sau khi
thực hiện phép lai (trước khi thực hiện
phép chọn). Kích thước của quần thể lúc
thực hiện phép đột biến là N’.
Chọn ngẫu nhiên một phân công, giả
sử đó là phân công X (tức 1 cụm tiết gồm
các thông tin: giáo viên, môn học, lớp, số
tiết, vị trí tiết đầu đã bố trí cụm tiết.v.v.).
SCIENTIFIC JOURNAL OF SAIGON UNIVERSITY No. 71 (05/2020)
92
Thực hiện di chuyển cụm tiết đó từ vị trí u
đến vị trí v trong cùng lớp hoặc qua một
lớp khác mà vẫn đảm bảo lớp khác ở đây
cũng có giáo viên, môn học phù hợp với
phân công X. Nếu không tìm được vị trí v
phù hợp thì phép đột biến đó không được
thực hiện.
Theo nguyên tắc đột biến, cá thể sau
đột biến không nhất thiết phải tốt hơn trước
đột biến. Vì xét về cả quá trình tiến hóa,
một cá thể chưa tốt ở thế hệ này vẫn sẽ có
khả năng giúp quá trình tiến hóa sinh ra các
cá thể tốt ở những thế hệ tiếp theo.
Xử lý các cá thể con sinh ra
Giả sử cá thể T sau đột biến sinh ra cá
thể T’, khi đó ta có hai cách xử lý sau đây:
Cách thứ nhất là nếu T’ tốt hơn T thì
thay T bằng T’, nếu T’ kém hơn T thì xem
như phép đột biến không thực hiện gì cả.
Cách thứ hai là thay T bằng T’ mà
không quan tâm đến chất lượng lời giải của
T’. Trong bài báo này, chúng tôi chọn thực
hiện phép đột biến thứ hai.
3.5. Phép chọn lọc
Chúng tôi sử dụng phép chọn lọc các
cá thể dựa trên độ thích nghi xếp hạng
bằng cách bố trí chung theo độ thích nghi
giảm dần (tức theo chiều tăng dần của giá
trị hàm mục tiêu), sau đó chọn N cá thể có
độ thích nghi cao nhất.
Để không làm mất đi cá thể tốt nhất
được khai phá trong suốt quá trình tiến
hóa, giải thuật của chúng tôi luôn cập nhật
cá thể tốt nhất cho đến thời điểm hiện tại
(cá thể ưu tú).
3.6. Điều kiện dừng
Thường các giải thuật di truyền chọn
các điều kiện dừng sau đây: thứ nhất là lời
giải tốt nhất tìm được của bài toán không
được cải thiện sau một số lần lặp định
trước ; thứ hai là số lần lặp của giải thuật
đạt đến một giá trị định trước ; thứ ba là
giải thuật chạy hết một lượng thời gian
định trước. Trong bài toán xếp thời khóa
biểu trường phổ thông đang xét, chúng tôi
chọn điều kiện dừng đầu tiên.
3.7. Giải thuật di truyền giải bài toán
xếp thời khóa biểu
Chúng tôi gọi giải thuật này là STTGA
(School Timetabling Problem Genetic
algorithm).
Dữ liệu đầu vào: danh sách các phân
công, danh sách các ràng buộc, bộ trọng số
vi phạm ứng với mỗi ràng buộc
Dữ liệu đầu ra: thời khóa biểu của
mỗi lớp, thời khóa biểu của mỗi giáo viên
Giải thuật di truyền giải bài toán xếp
thời khóa biểu - STTGA
1: Khởi tạo quần thể ban đầu với N cá thể
ngẫu nhiên, trong đó mỗi lời giải là một
thời khóa biểu toàn trường, mỗi gen của
cá thể ứng với một phân công;
2: Xác suất lai là pc, xác suất đột biến là pm;
3: Đánh giá độ thích nghi mỗi cá thể trong
quần thể, cá thể T có giá trị hàm mục là
C(T), cá thể T càng tốt nếu C(T) có giá
trị càng bé và ngược lại;
4: while (điều kiện dừng chưa thỏa)
{
a) Chọn ngẫu nhiên một cặp cá thể
cha-mẹ từ quần thể;
b) Phép lai (crossover): nếu xảy ra xác
suất lai ghép pc thì lai ghép hai cá
thể cha-mẹ để tạo thành các cá thể
con, ngược lại, các cá thể con giống
cá thể cha-mẹ;
c) Đột biến (Mutation): nếu xảy ra xác
suất đột biến pm thì đột biến bằng
cách cho thay đổi nhỏ trong cá thể;
d) Đánh giá lại độ thích nghi của các
cá thể, tức tính lại giá trị của hàm
mục tiêu;
e) Chọn lọc (Selection): thay thế các
NGUYỄN HỒ THIÊN ĐĂNG và cộng sự TẠP CHÍ KHOA HỌC ĐẠI HỌC SÀI GÒN
93
cá thể có độ thích nghi ít hơn;
}
5: Cá thể tốt nhất của thế hệ sau cùng là
lời giải của bài toán.
4. Thực nghiệm và đánh giá
4.1. Dữ liệu thực nghiệm
Chúng tôi thực nghiệm giải thuật di
truyền STTGA trên 2 bộ dữ liệu thực tế tại
Trường Trung học phổ thông Giồng Ông
Tố, Quận 2, Thành phố Hồ Chí Minh. Bộ
thứ nhất có tên gọi là HK11920, bộ thứ hai
có tên gọi là HK21920.
Bảng 1. Thông số các bộ dữ liệu thực nghiệm
STT Loại dữ liệu
HK11920
(Số lượng)
HK21920
(Số lượng)
1 Số giáo viên có phân công 76 73
2 Số phòng học 36 36
3 Số môn học 45 44
4 Số phân công 485 475
5 Số ràng buộc cứng 11 11
6 Số ràng buộc mềm 8 8
7 Số buổi học trong tuần 6 6
8 Số tiết tối đa trên mỗi buổi học 5 5
Các ràng buộc cứng 1, 2, 3, 9, 10, 11 ở
trên được mềm hóa với trọng số cao (các
giá trị này được đề xuất qua quá trình thực
nghiệm thực tế), các ràng buộc cứng 4, 5,
6, 7, 8 còn lại luôn được thỏa mãn khi cài
đặt. Do đó, bài toán có 6