You are on page 1of 13

-1- -2-

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


Công trình ñược hoàn thành tại
ĐẠI HỌC ĐÀ NẴNG
ĐẠI HỌC ĐÀ NẴNG

PHẠM ANH TUẤN


Người hướng dẫn khoa học: TS.Nguyễn Tấn Khôi

Phản biện 1: TS.Nguyễn Thanh Bình


ỨNG DỤNG GIẢI THUẬT DI TRUYỀN
ĐỂ XẾP THỜI KHÓA BIỂU HỆ TÍN CHỈ
CHO TRƯỜNG ĐẠI HỌC Phản biện 2: TS.Trương Công Tuấn

Chuyên ngành: KHOA HỌC MÁY TÍNH


Mã số: 60.48.01
Luận văn ñược bảo vệ trước Hội ñồng chấm Luận văn tốt nghiệp
thạc sĩ kỹ thuật họp tại Đại học Đà Nẵng vào ngày 21 tháng 7
năm 2012.

TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT

Có thể tìm hiểu luận văn tại:


Đà Nẵng - Năm 2012
- Trung tâm Thông tin - Học liệu, Đại học Đà Nẵng
- Trung tâm Học liệu, Đại học Đà Nẵng.
-3- -4-
MỞ ĐẦU Ở Việt Nam hiện nay, các trường Đại học ñang dần chuyển
1. Lý do chọn ñề tài sang hình thức ñào tạo tín chỉ. Mặc dầu hình thức ñào tạo này có
nhiều ưu ñiểm hơn so với ñào tạo niên chế tuy nhiên việc xếp thời
Trong cuộc sống ta thường gặp các bài toán liên quan ñến xếp
khóa biểu vẫn là một gánh nặng thực sự cho các trường, ñặc biệt là
lịch như xếp lịch vận hành máy móc, xếp lịch biểu cho việc thực hiện
các trường có quy mô ñào tạo lớn. Vả lại trên thị trường cũng chưa
một dự án, xếp lịch làm việc, xếp lịch thi ñấu thể thao,… Đối với loại
có sản phẩm phần mềm nào giải quyết hiệu quả bài toán trên.
bài toán này cần phải tìm ra một phương án xếp lịch thỏa mãn tất cả
các ràng buộc cũng như khai thác hiệu quả các nguồn tài nguyên hiện Trong những năm gần ñây, phương pháp tiếp cận di truyền ñã
có, giảm thời gian và chi phí thực hiện. thu hút rất nhiều sự chú ý trong các lĩnh vực nghiên cứu khác nhau
trong ñó có khoa học máy tính. Phương pháp này có nhiều ñặc ñiểm
Bài toán xếp thời khóa biểu trong trường học nói chung và
nổi trội như không ñòi hỏi tri thức, tránh tối ưu cục bộ, thực hiện tốt
trong trường Đại học nói riêng là một trong những bài toán như vậy.
với các bài toán có không gian lời giải lớn và có thể áp dụng cho
Có rất nhiều các ràng buộc ñược ñặt ra trong bài toán này như ràng
nhiều loại bài toán tối ưu khác nhau. Trên thế giới hiện nay, giải thuật
buộc về ñối tượng tham gia (giảng viên, lớp học, sinh viên), ràng
di truyền kết hợp với tin học ñược ứng dụng ñể giải quyết những bài
buộc về tài nguyên phục vụ giảng dạy (phòng học lý thuyết, phòng
toán tối ưu một cách rất hiệu quả.
thực hành,…), ràng buộc về thời gian (số tiết học, số lần học, số tiết
mỗi lần), ràng buộc về chuyên môn và rất nhiều các ràng buộc khác Vì vậy, việc nghiên cứu và ứng dụng giải thuật di truyền
tùy thuộc vào từng trường. Vấn ñề ñặt ra là cần xây dựng một thời (Genetic Algorithm - GA) ñể giải quyết hiệu quả bài toán xếp thời
khóa biểu thỏa mãn tất cả các ràng buộc trên ñồng thời khai thác hiệu khóa biểu nói trên là việc làm cần thiết.
quả các nguồn tài nguyên phục vụ giảng dạy. 2. Mục tiêu và nhiệm vụ nghiên cứu

Bài toán xếp thời khóa biểu thuộc lớp các bài toán NP-ñầy ñủ Đề tài tập trung nghiên cứu và ứng dụng giải thuật di truyền
vì vậy có thể không tìm ra ñược lời giải tối ưu. Đây là một bài toán vào bài toán xếp thời khóa biểu cho hệ tín chỉ tại một trường ñại học
không mới và ñã có nhiều giải thuật ñược ñưa ra ñể giải quyết như ña ngành nhằm ñưa ra phương án xếp thời khóa biểu thỏa mãn tất cả
giải thuật nhánh cận, giải thuật leo ñồi, giải thuật luyện thép, giải các ràng buộc ñặt ra ñồng thời khai thác hiệu quả các nguồn lực ñào
thuật tô màu ñồ thị, giải thuật xấp xỉ,… Tuy nhiên các giải thuật này tạo của nhà trường với thời gian ngắn.
thường không có tính tổng quát và chỉ áp dụng hiệu quả ñối với các
Để ñạt ñược các mục tiêu trên, ñề tài tập trung vào các nhiệm
trường học có quy mô nhỏ, ít ràng buộc về mặt dữ liệu.
vụ cụ thể sau:
-5- -6-
- Phân tích ñặc ñiểm của bài toán xếp thời khóa biểu hệ tín chỉ  Phương pháp nghiên cứu thực nghiệm
trong trường ñại học ñể từ ñó ñề ra các giải pháp hợp lý trong việc - Phân tích và thiết kế hệ thống xếp thời khóa biểu hệ tín chỉ
xây dựng và triển khai hệ thống. theo quy trình xây dựng ứng dụng phần mềm.
- Tìm hiểu giải thuật di truyền và ứng dụng của nó trong việc - Xây dựng hệ thống xếp thời khóa biểu hệ tín chỉ sử dụng giải
giải quyết hiệu quả các bài toán tối ưu. thuật di truyền.

- Ứng dụng giải thuật di truyền vào bài toán xếp thời khóa biểu - Thử nghiệm hệ thống và ñánh giá kết quả ñạt ñược dựa trên
hệ tín chỉ trong trường Đại học. bộ dữ liệu thử và dữ liệu thực tế tại một trường ñại học.
5. Kết quả dự kiến
- Phân tích và ñánh giá kết quả ñạt ñược khi thực hiện hệ thống
ñối với các bộ dữ liệu thử ñơn giản. - Nhận thức ñầy ñủ về thế mạnh của giải thuật di truyền trong
việc giải các bài toán tối ưu.
- Triển khai thực nghiệm với bộ dữ liệu xếp thời khóa biểu của
- Đề ra ñược giải pháp và ứng dụng các vấn ñề của giải thuật
một số ngành tại Trường Đại học Bách khoa – Đại học Đà Nẵng.
di truyền vào việc giải quyết bài toán xếp thời khóa biểu hệ tín chỉ.
3. Đối tượng và phạm vi nghiên cứu
- Xây dựng hệ thống phần mềm uniScheGA nhằm phục vụ
- Nghiên cứu các ñặc ñiểm, ñặc trưng của giải thuật di truyền,
cho việc xếp thời khóa biểu hệ tín chỉ tại một số trường Đại học.
các thành phần cơ bản của giải thuật di truyền như khởi ñộng quần
6. Ý nghĩa khoa học và thực tiễn của luận văn
thể ban ñầu, ñánh giá ñộ thích nghi của cá thể, các toán tử di truyền
(chọn lọc, lai ghép, ñột biến), ñiều kiện dừng.  Về mặt lý thuyết

- Ứng dụng giải thuật di truyền vào bài toán xếp thời khóa - Áp dụng giải thuật di truyền vào máy tính là phương pháp áp
biểu tại một trường ñại học ña ngành ñào tạo theo học chế tín chỉ với dụng các quy luật của quá trình tiến hóa tự nhiên vào việc giải quyết
các ràng buộc và những yêu cầu cơ bản. các bài toán phức tạp mà các giải thuật trước ñó không ñáp ứng ñược.

4. Phương pháp nghiên cứu - Việc xếp thời khoá biểu hệ tín chỉ sử dụng giải thuật di
truyền là một vấn ñề tuy không mới nhưng lại chưa ñược áp dụng
 Phương pháp nghiên cứu lý thuyết
hiệu quả trong thực tế.
- Nghiên cứu tài liệu, ngôn ngữ và công nghệ liên quan.
- Ngoài bài toán xếp thời khoá biểu, giải thuật di truyền còn có
- Tổng hợp các tài liệu lý thuyết về giải thuật di truyền.
thể ñược ứng dụng trong nhiều bài toán tối ưu khác. Vì vậy kết quả
- Biểu diễn bài toán xếp thời khóa biểu hệ tín chỉ trong trường nghiên cứu của ñề tài sẽ tạo nền tảng và cơ sở ñể tiếp tục nghiên cứu
ñại học sử dụng mô hình giải thuật di truyền. về sau.
-7- -8-
CHƯƠNG 1: BÀI TOÁN XẾP THỜI KHÓA BIỂU HỆ TÍN
 Về mặt thực tiễn CHỈ VÀ CÁC PHƯƠNG PHÁP GIẢI QUYẾT

- Kết quả của ñề tài là hệ thống phần mềm uniScheGA dùng Chương này trình bày tổng quan về bài toán xếp thời khóa biểu
ñể xếp thời khóa biểu hệ tín chỉ dễ sử dụng, có tính tùy biến cao, ñáp hệ tín chỉ trong trường ñại học và các phương pháp giải quyết.
ứng tốt nhu cầu của người dùng. 1.1. BÀI TOÁN XẾP THỜI KHÓA BIỂU HỆ TÍN CHỈ
- Hệ thống có thể chạy tốt với bộ dữ liệu thực tế tại các trường 1.1.1. Các quy trình xếp thời khóa biểu hệ tín chỉ
ñại học giúp giảm ñáng kể thời gian và công sức trong việc xếp thời Trình bày các quy trình xếp thời khóa biểu hệ tín chỉ, ñánh giá
khóa biểu. ưu nhược ñiểm của mỗi quy trình.
7. Bố cục luận văn 1.1.2. Bài toán xếp thời khóa biểu hệ tín chỉ
Nội dung chính của luận văn ñược chia thành 4 chương sau: Trình bày chi tiết bài toán xếp thời khóa biểu hệ tín chỉ, các
Chương 1: Bài toán xếp thời khóa biểu hệ tín chỉ và các thông tin, các ràng buộc và các yêu cầu của bài toán.
phương pháp giải quyết 1.1.2.1. Các thông tin của bài toán
Chương 2: Giải thuật di truyền 1.1.2.2. Các ràng buộc của bài toán
Chương 3: Ứng dụng giải thuật di truyền ñể xếp thời khóa 1.1.3. Các mô hình xếp thời khóa biểu hệ tín chỉ
biểu hệ tín chỉ
Trình bày các mô hình xếp thời khóa biểu thông dụng hiện
Chương 4: Triển khai hệ thống xếp thời khóa biểu hệ tín chỉ ñang ñược sử dụng trong thực tế.
1.1.3.1. Thời khóa biểu tuần
1.1.3.2. Thời khóa biểu học kỳ
1.1.3.3. Thời khóa biểu (k) tuần/học kỳ
1.1.3.4. Thời khóa biểu cho mỗi tuần
1.1.4. Mục tiêu của bài toán xếp thời khóa biểu hệ tín chỉ
1.2. CÁC PHẦN MỀM XẾP THỜI KHÓA BIỂU HIỆN NAY
1.2.1. Phần mềm thời khóa biểu tại Việt Nam
1.2.2. Phần mềm thời khóa biểu trên thế giới
-9- - 10 -
1.3. CÁC PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN CHƯƠNG 2: GIẢI THUẬT DI TRUYỀN
Trình bày các phương pháp giải quyết bài toán xếp thời khóa Chương này trình bày các khái niệm về giải thuật di truyền và
biểu hệ tín chỉ, ñánh giá ưu nhược ñiểm của các phương pháp, lý do cách ứng dụng nó vào giải quyết một số bài toán trong thực tế.
chọn giải thuật di truyền ñể giải quyết bài toán. 2.1. TỔNG QUAN VỀ GIẢI THUẬT DI TRUYỀN
1.3.1. Các phương pháp truyền thống 2.1.1. Lịch sử giải thuật di truyền
1.3.1.1. Giải thuật vét cạn 2.1.2. Tổng quan
1.3.1.2. Giải thuật leo ñồi
1.3.2. Các phương pháp hiện nay
1.3.2.1. Giải thuật luyện kim
1.3.2.2. Giải thuật di truyền
1.3.2.3. Giải thuật tối ưu ñàn kiến
1.3.3. Đánh giá phương pháp
Các giải thuật leo ñồi và luyện kim có rất nhiều nhược ñiểm và
thường không trả về ñược kết quả như mong ñợi. Các giải thuật di
truyền và tối ưu ñàn kiến có nhiều ưu ñiểm hơn vì thế hiện nay hai
phương pháp này ñược sử dụng nhiều nhất ñể giải quyết các bài toán
tối ưu trong ñó có bài toán xếp thời khóa biểu. Xét về thời gian thực
hiện, chi phí thực hiện thì giải thuật tối ưu ñàn kiến tốt hơn nhưng
cũng phức tạp hơn so với giải thuật di truyền. Trên thực tế công việc
lập thời khóa biểu tại các trường ñại học chỉ diễn ra khoảng hai ñến
Hình 2.2. Sơ ñồ tổng quan của giải thuật di truyền
ba lần trong một năm nên thời gian và chi phí cũng không ảnh hưởng
nhiều. Vì vậy trong luận văn này ñể ñơn giản tôi sử dụng giải thuật di 2.1.3. Các thao tác cơ bản
truyền ñể giải quyết bài toán xếp thời khóa biểu hệ ñào tạo tín chỉ cho 2.1.3.1. Biểu diễn mô hình cá thể
trường ñại học. 2.1.3.2. Khởi tạo quần thể ban ñầu
2.1.3.3. Xây dựng hàm thích nghi
2.1.3.4. Xây dựng các toán tử di truyền
- 11 - - 12 -
2.1.3.5. Xác ñịnh các tham số cho giải thuật 2.2.3.1. Đột biến ñảo ngược
2.1.3.6. Xác ñịnh ñiều kiện dừng 2.2.3.2. Đột biến chèn
2.1.4. Sự khác biệt giữa giải thuật di truyền so với các giải 2.2.3.3. Đột biến thay thế
thuật khác 2.2.3.4. Đột biến chuyển dịch
Trình bày sự khác biệt giữa giải thuật di truyền so với các giải 2.3. CÁC THAM SỐ CỦA GIẢI THUẬT DI TRUYỀN
thuật tìm kiếm và tối ưu bình thường.
Giải thuật di truyền có các tham số quan trọng như kích thước
2.2. CÁC TOÁN TỬ DI TRUYỀN quần thể (popsize), xác suất lai ghép (pc), xác suất ñột biến (pm). Việc
2.2.1. Toán tử chọn lọc lựa chọn các tham số phù hợp sẽ tăng tính hiệu quả của giải thuật.
Chọn lọc là quá trình chọn ra các NST có ñộ thích nghi cao Trong các tham số trên thì popsize là quan trọng nhất, nếu
trong quần thể hiện tại ñể ñưa vào quần thể ở thế hệ tiếp theo. chọn kích thước quần thể quá nhỏ thì tính ña dạng của quần thể bị
2.2.1.1. Toán tử chọn lọc tỷ lệ hạn chế và ảnh hưởng ñến kết quả còn nếu quá lớn sẽ làm hao phí tài
2.2.1.2. Toán tử chọn lọc cạnh tranh nguyên của máy tính và làm chậm quá trình tiến hóa.

2.2.1.3. Toán tử chọn lọc xếp hạng 2.4. ỨNG DỤNG GIẢI THUẬT DI TRUYỀN

2.2.2. Toán tử lai ghép Để ứng dụng giải thuật di truyền vào việc giải quyết một bài
Toán tử lai ghép nhằm tạo ra NST con mới trên cơ sở cặp NST toán nào ñó cần phải thực hiện một số công việc quan trọng sau:
cha - mẹ bằng cách ghép các ñoạn gen trong NST cha - mẹ lại với 1. Lựa chọn cách biểu diễn mô hình NST sao cho mỗi NST có
nhau. Toán tử lai ghép ñược thực hiện với một xác suất pc nào ñó. thể chứa ñựng ñược một lời giải của bài toán.
2.2.2.1. Lai ghép một ñiểm
2. Xây dựng hàm ñánh giá ñộ thích nghi cho từng NST. Đây là
2.2.2.2. Lai ghép ña ñiểm bước khó khăn và ảnh hưởng lớn ñến tính hiệu quả của giải thuật.
2.2.2.3. Lai ghép ñồng nhất
3. Lựa chọn các toán tử di truyền phù hợp, trong ñó tập trung
2.2.3. Toán tử ñột biến cho ba toán tử chính là chọn lọc, lai ghép và ñột biến.
Đột biến là hiện tượng NST con mang một số ñặc tính không
4. Xác ñịnh các tham số của giải thuật di truyền như kích thước
có trong NST của cha và mẹ. Toán tử ñột biến ñược thực hiện với
quần thể, xác suất lai ghép, xác suất ñột biến.
một xác suất pm nhỏ hơn nhiều so với xác suất lai ghép pc bởi vì trong
tự nhiên ñột biến gen thường ít xảy ra. 5. Xác ñịnh ñiều kiện dừng cho quá trình tiến hóa.
- 13 - - 14 -
CHƯƠNG 3: ỨNG DỤNG GIẢI THUẬT DI TRUYỀN ĐỂ XẾP Mỗi NST có thể xem là một mảng 3 chiều: Chiều thứ nhất biểu
THỜI KHÓA BIỂU HỆ TÍN CHỈ diễn các tiết học trong ngày, chiều thứ hai biểu diễn các ngày trong
Chương này vận dụng các kiến thức về giải thuật di truyền ñể tuần, chiều thứ ba biểu diễn các phòng học.
áp dụng vào bài toán xếp thời khóa biểu hệ tín chỉ.
3.1. QUY TRÌNH XẾP THỜI KHÓA BIỂU

Hình 3.5. Cấu trúc của một nhiễm sắc thể


3.3. BIỂU DIỄN MÔ HÌNH QUẦN THỂ
Hình 3.1. Quy trình xếp thời khóa biểu ñề xuất
Quần thể là tập hợp các NST. Ngoài việc lưu trữ danh sách các
3.2. BIỂU DIỄN MÔ HÌNH CÁ THỂ
NST, quần thể còn chứa thêm các thông tin khác như kích thước
3.2.1. Biểu diễn thời gian biểu quần thể, ñộ thích nghi của quần thể, …
3.2.2. Biểu diễn mô hình cá thể 3.4. KHỞI TẠO QUẦN THỂ
Mỗi NST dùng ñể chứa một phương án xếp thời khóa biểu. Trước khi thực hiện quá trình tiến hóa cần phải khởi tạo quần
thể bằng cách gán cho các gen trong NST bởi các giá trị ngẫu nhiên.
3.5. BIỂU DIỄN RÀNG BUỘC THỜI GIAN
Mã lớp 3.6. CÁC TOÁN TỬ DI TRUYỀN
3.6.1. Toán tử chọn lọc
Ta sử dụng toán tử chọn lọc xếp hạng ñể giải quyết bài toán.
Với cách làm này các NST trong quần thể ñược sắp xếp giảm dần
theo ñộ thích nghi của chúng.
Hình 3.4. Biểu diễn một nhiễm sắc thể
- 15 - - 16 -
3.6.2. Toán tử lai ghép Trong ñào tạo theo tín chỉ thì sinh viên ñược xem là trung tâm
Do bài toán có cấu trúc NST khá phức tạp, vì vậy ta chọn toán của quá trình ñào tạo. Với hình thức ñào tạo này ngoài các ràng buộc
tử lai ghép ña ñiểm ñể áp dụng với các ñiểm ñược tạo ngẫu nhiên. cơ bản về giảng viên, phòng học, chuyên môn,… thì sinh viên cũng

Chọn hai NST ngẫu nhiên cần lai ghép: N1 (cha), N2 (mẹ)
có thể chủ ñộng lựa chọn chương trình học phù hợp với ñiều kiện và
Gọi hai NST con ñược sinh ra: C1, C2 năng lực của mình.
Tạo mặt nạ lai ghép M (mảng 1 chiều) với các ñiểm lai ghép ngẫu nhiên
For each gen in NST: Tuy nhiên, số lượng sinh viên thường rất lớn, mỗi sinh viên lại
Begin có một yêu cầu về thời khóa biểu khác nhau. Vì vậy chắc chắn không
If (M[i] = 1) Then
thể thỏa mãn ñồng thời cho tất cả các sinh viên ñược mà chỉ thỏa mãn
C1 nhận gen từ NST cha N1
C2 nhận gen từ NST mẹ N2 tối ña trong ñiều kiện cho phép.
If (M[i] = 0) Then
C1 nhận gen từ NST mẹ N2
3.8.2. Phương pháp giải quyết
C2 nhận gen từ NST cha N1 Đầu mỗi học kỳ, nhà trường lập danh sách các lớp học phần dự
End
kiến mở, phân công GV giảng dạy rồi cho sinh viên ñăng ký học.
3.6.3. Toán tử ñột biến Dựa vào số liệu ñăng ký học ta sẽ phân thành các nhóm. Mỗi
Toán tử ñột biến ñược thực hiện ñối với các NST con sinh ra nhóm là tập hợp các sinh viên ñăng ký các lớp học phần giống nhau.
bởi toán tử lai ghép, ta áp dụng toán tử ñột biến thay thế. Kết hợp các nhóm lại với nhau sao cho các lớp học phần không
Gọi pm là xác suất ñột biến bị trùng lặp và tổng số lớp học phần bằng với tổng số lớp cần xếp
For each gen in NST:
thời khóa biểu.
Begin
x = Số nguyên ngẫu nhiên trong khoảng từ 1 ñến 1000 Chọn phương án kết hợp các nhóm sao cho tổng số sinh viên
If (x < pm*1000) Then
ñăng ký học ñược thỏa mãn yêu cầu là lớn nhất.
Begin
rangen = Là một gen ngẫu nhiên trong NST Áp dụng giải thuật di truyền ñể xếp thời khóa biểu cho các
gen = rangen
End
nhóm lớp ñược chọn ở trên.
End 3.9. TÍNH ĐỘ THÍCH NGHI CỦA CÁ THỂ
3.7. PHÂN NHÓM LỚP HỌC PHẦN 3.9.1. Tính ñộ thích nghi của cá thể
3.8. XẾP TKB HỆ TÍN CHỈ THEO YÊU CẦU CỦA SV Việc ñánh giá ñộ thích nghi của cá thể ñược căn cứ vào số lần
3.8.1. Yêu cầu của sinh viên trong bài toán xếp TKB hệ tín chỉ vi phạm các ràng buộc. Để thực hiện, ñầu tiên ta tính ñộ thích nghi
- 17 - - 18 -
của cá thể dựa trên từng ràng buộc, sau ñó cộng tất cả ñộ thích nghi 3.9.3. Tính ñộ thích nghi dựa vào ràng buộc trùng giờ GV
dựa trên từng ràng buộc ñó lại ta sẽ thu ñược ñộ thích nghi của cá thể. Vi phạm ràng buộc trùng giờ giảng viên xảy ra khi một giảng
Để tăng tính hiệu quả của giải thuật, tùy thuộc vào từng loại viên ñược phân công giảng dạy nhiều hơn một lớp tại một thời ñiểm.
ràng buộc mà ta nhân số lần vi phạm với một trọng số thích hợp. Function Độ_thích_nghi_LDB (Cathe)
Begin
Function Độ_thích_nghi_RB (Cathe)
Count = 0 {Biến ñếm số lần vi phạm ràng buộc}
Begin
For each gv:
Count = 0 {Biến ñếm số lần vi phạm}
Begin
For each gen in Cathe
For each ngày, tiết học:
Begin
Begin
If (gen vi phạm ràng buộc RB) Then Count = Count + 1
C = 0 {Khởi tạo biến ñếm số lần ñặt lịch của giảng viên}
End
For each phòng:
Return 1/(Count * Trọng số)
Begin
End
lớp = Cathe [phòng, ngày, tiết]
3.9.2. Tính ñộ thích nghi dựa vào ràng buộc về nhóm lớp If (Giảng_dạy (lớp) = gv) Then C = C + 1
End
Để thuận lợi cho sinh viên ñăng ký học người ta thường tạo ra If (C > 1) Then Count = Count + (C-1)
End
các nhóm lớp. Các lớp trong cùng nhóm không ñược trùng lịch học.
End
Function Độ_thích_nghi_RCC (Cathe) Return 1/ (Count * Trọng số)
Begin End
For each nhóm:
Begin 3.9.4. Tính ñộ thích nghi dựa vào ràng buộc giờ bận của GV
For each ngày, tiết học:
Begin
Khi xếp thời khóa biểu mỗi giảng viên có thể có những tiết
C = 0 {Khởi tạo biến ñếm số lần ñặt lịch của nhóm} không thể lên lớp vì lý do riêng hoặc bận sinh hoạt chuyên môn.
For each phòng:
Function Độ_thích_nghi_LUA (Cathe)
Begin
Begin
lop = Cathe [phòng, ngày, tiết]
Count = 0 {Biến ñếm số lần vi phạm ràng buộc}
If (lop ∈ nhóm) Then C = C + 1
For each phòng:
End
Begin
If (C > 1) Then Count = Count + (C-1)
For each ngày, tiết học:
End
Begin
End
lớp = Cathe [phòng, ngày, tiết]
Return 1/ (Count * Trọng số)
gv = Giảng_dạy (lớp)
End
If (Gv_bận_giờ (gv, ngày, tiết)) Then Count = Count + 1
End
- 19 - - 20 -
End Begin
Return 1/ (Count * Trọng số) For each ngày, tiết học:
End Begin
If (lớp = Cathe [phòng, ngày, tiết]) Then C = C + 1
3.9.5. Tính ñộ thích nghi dựa vào ràng buộc sức chứa phòng End
End
Vi phạm sức chứa của phòng xảy ra khi một lớp ñược xếp lịch
Count = Count + Abs (Số tiết tuần quy ñịnh - C)
học tại phòng có sức chứa nhỏ hơn số lượng sinh viên của lớp ñó. End
Return 1/ (Count * Trọng số)
Function Độ_thích_nghi_RTS (Cathe)
End
Begin
Count = 0 {Biến ñếm số lần vi phạm ràng buộc} 3.9.8. Tính ñộ thích nghi dựa vào ràng buộc số lần học
For each phòng:
Begin Dựa vào số tiết học trong tuần của mỗi lớp cũng như ñặc thù
For each ngày, tiết học:
của từng học phần mà người ta quy ñịnh số lần học tối thiểu, tối ña.
Begin
lớp = Cathe [phòng, ngày, tiết] Function Độ_thích_nghi_NSW (Cathe)
If (Số_SV (lớp) > Số_chỗ_ngồi (phòng)) Then Count = Count+1 Begin
End For each phòng:
End Begin
Return 1/ (Count * Trọng số) For each ngày, buổi học:
End Begin
PreClass = -1 {Biến chứa tên lớp ñặt lịch ở tiết trước ñó }
3.9.6. Tính ñộ thích nghi dựa vào ràng buộc giờ bận của phòng For each tiết học:
Begin
Tương tự như giảng viên, mỗi phòng học cũng có những tiết Class = Cathe [phòng, ngày, tiết]
bận không thể sử dụng ñược. If (Class <> PreClass) Then
arrCount[Class] = arrCount[Class] +1
3.9.7. Tính ñộ thích nghi dựa vào ràng buộc số tiết trong tuần PreClass = Class
Để ñảm bảo tiến ñộ, ñối với các lớp học phần thì tổng số tiết End
End
trong tuần phải ñúng với quy ñịnh. End
Function Độ_thích_nghi_NHW (Cathe) For each lớp:
Begin Begin
Count = 0 {Biến ñếm số lần vi phạm ràng buộc} If ((arrCount[i] < Số lần min) or (arrCount[i] > Số lần max)) Then
For each lớp: Count=Count+Min(Abs(arrCount[i]-min), Abs(arrCount[i]-max))
Begin End
C = 0 {Biến ñếm số tiết trong tuần} Return 1/ (Count * Trọng số)
For each phòng End
- 21 - - 22 -
3.9.9. Tính ñộ thích nghi dựa vào ràng buộc số tiết học mỗi lần phạm nào cần xử lý sau, ñiều này dẫn ñến việc có thể không tìm ra
Thông thường mỗi lần xếp lịch phải ñảm bảo số tiết từ 2 trở ñược phương án xếp thời khóa biểu thỏa mãn yêu cầu.
lên, ngoại trừ một số lớp học phần ñặc thù ñòi hỏi thời gian nhiều Nguyên tắc 1: Ràng buộc nào cần ñạt ñược trước thì ñặt trọng
như thực hành, thí nghiệm thì số tiết học mỗi lần có thể nhiều hơn. số thấp, ràng buộc nào cần ñạt ñược sau thì ñặt trọng số cao.
3.9.10. Tính ñộ thích nghi dựa vào ràng buộc loại phòng Nguyên tắc 2: Ràng buộc nào khó ñạt ñược hơn thì ñặt trọng
Tùy theo tính chất của học phần mà mỗi lớp sẽ yêu cầu một số thấp, dễ ñạt ñược hơn thì ñặt trọng số cao.
loại phòng khác nhau như lý thuyết, thực hành, thí nghiệm,… Nguyên tắc 3: Ràng buộc mềm nên ñặt trọng số cao hơn so
3.9.11. Tính ñộ thích nghi dựa vào số buổi lên lớp của GV với ràng buộc cứng. Vì các ràng buộc mềm là những ràng buộc thêm,
nếu ñạt ñược thì càng tốt còn không thì cũng có thể chấp nhận ñược.
Hầu hết các giảng viên ñều mong muốn giảm thiểu số buổi lên
lớp của họ trên cơ sở vẫn ñảm bảo số lượng tiết giảng dạy. Đây là 3.10. THAM SỐ CỦA GIẢI THUẬT DI TRUYỀN
một yêu cầu rất chính ñáng, vì vậy cần phải ñưa tiêu chí này vào ñể Trong luận văn này tôi lựa chọn các tham số của giải thuật di
ñánh giá ñộ thích nghi của cá thể. truyền như sau: pc = 0.5, pm = 0.015, popsize = số lượng lớp × 50. Sau
3.9.12. Tính ñộ thích nghi dựa vào khoảng cách di chuyển của mỗi thế hệ popsize tăng lên khoảng 0.02%.
giảng viên
Trong một buổi giảng viên phải di chuyển ñến nhiều phòng ñể
CHƯƠNG 4: TRIỂN KHAI HỆ THỐNG XẾP THỜI KHÓA
giảng dạy các lớp khác nhau. Đối với các trường có khuôn viên rộng
BIỂU HỆ TÍN CHỈ
lớn, các phòng học có thể nằm cách xa nhau thì khoảng thời gian
Dựa trên kết quả nghiên cứu của các chương trước tôi ñã cài
nghỉ giữa các tiết học không ñủ ñể giảng viên di chuyển và ít nhiều
ñặt thành công hệ thống uniScheGA dùng ñể xếp thời khóa biểu hệ
ảnh hưởng ñến sức khỏe. Vì vậy cần thiết phải giảm thiểu khoảng
tín chỉ cho trường ñại học.
cách di chuyển của giảng viên trong quá trình giảng dạy.
4.1. CÁC CHỨC NĂNG CỦA HỆ THỐNG
3.9.13. Trọng số của các loại vi phạm ràng buộc
4.1.1. Nhập các danh mục dữ liệu hệ thống
Trong các loại ràng buộc, mỗi loại ràng buộc có một tính chất
riêng. Có loại vi phạm ràng buộc thường xuyên xảy ra và có loại ít 4.1.2. Nhập danh sách lớp học phần

xảy ra hơn. Có loại dễ ñạt ñược và có loại khó ñạt ñược hơn. Vì vậy, 4.1.3. Nhập ràng buộc thời gian bận
nếu xem xét các ràng buộc này một cách bình ñẳng thì chắc chắn hệ 4.1.4. Xếp thời khóa biểu
thống sẽ không xác ñịnh ñược vi phạm nào cần xử lý trước và vi
- 23 - - 24 -
4.2.1.5. Kết quả thử nghiệm

Qua quá trình thử nghiệm ta thấy các ràng buộc NHW, NHS,
NSW khó ñạt ñược hơn so với các ràng buộc còn lại. Thời gian thực
hiện chương trình khoảng từ 2 ñến 4 phút.

1 Tổng vi phạm
1 2 Vi phạm NHW
3 Vi phạm NHS
4 Vi phạm NSW
2 5 Vi phạm LUA

...

4
5
Hình 4.4. Giao diện xếp thời khóa biểu
4.1.5. Tra cứu thời khóa biểu Hình 4.7. Biểu ñồ minh họa kết quả thử nghiệm lần 1
Hệ thống cho phép xem thời khóa biểu của từng lớp học phần, 4.2.2. Kịch bản thử nghiệm 2
nhóm lớp, giảng viên, sinh viên và lịch sử dụng từng phòng. Phần này trình bày quá trình thử nghiệm hệ thống uniScheGA
4.2. KẾT QUẢ THỬ NGHIỆM HỆ THỐNG XẾP TKB với bộ dữ liệu thực tế tại Trường Đại học Bách khoa - ĐHĐN.
4.2.1. Kịch bản thử nghiệm 1 4.2.2.1. Mô tả dữ liệu
4.2.1.1. Dữ liệu ñầu vào 4.2.2.2. Kết quả thử nghiệm
Dữ liệu thử nghiệm gồm có 8 lớp học phần, tổng số tiết cần 4.2.3. Nhận xét
xếp là 48, số giảng viên là 3 và số phòng học là 4 (trong ñó có 1 Quá trình thử nghiệm hệ thống thực tế cho thấy nếu số lớp cần
phòng thực hành). xếp tăng lên thì thời gian thực hiện sẽ tăng nhanh theo hàm mũ.
4.2.1.2. Các ràng buộc Trong quá trình thử nghiệm tác giả nhận thấy nếu chia nhỏ dữ liệu ñể
4.2.1.3. Các tham số xếp thời khóa biểu nhiều lần thì tổng thời gian của các lần sẽ nhỏ hơn
4.2.1.4. Cấu hình thử nghiệm rất nhiều so với thời gian ñể xếp khi không chia nhỏ.
- 25 - - 26 -
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN - Thực thi hệ thống trên các bộ dữ liệu lớn (khoảng 100 lớp
1. KẾT QUẢ ĐẠT ĐƯỢC học phần, khoảng từ 300 ñến 500 tiết / tuần) thường khá chậm. Khi
ñó phải chia nhỏ dữ liệu ñể thực hiện nhiều lần.
Qua quá trình thực hiện luận văn, tôi ñã có kiến thức ñầy ñủ về
2. PHẠM VI ỨNG DỤNG
giải thuật di truyền, biết cách vận dụng giải thuật di truyền vào việc
giải quyết một số bài toán tối ưu, ñặc biệt là các bài toán tối ưu có Hệ thống có thể ứng dụng tốt ñối với các trường ñại học, cao
không gian tìm kiếm lớn. ñẳng ñào tạo theo tín chỉ.

Vận dụng ñược giải thuật di truyền ñể xây dựng hệ thống phần Đối với các trường xếp thời khóa biểu theo quy trình ngược lại
mềm uniScheGA xếp thời khóa biểu hệ tín chỉ cho trường ñại học: tức là cho sinh viên ñăng ký học rồi mới xếp thời khóa biểu thì trong
- Hệ thống ñáp ứng tốt tất cả các ràng buộc ñược nêu ra trong nhiều trường hợp hệ thống chưa cho ra ñược kết quả mong muốn.
luận văn bao gồm các ràng buộc cứng và mềm. Hệ thống có thể ứng dụng ñể xếp thời khóa biểu cho những
- Hệ thống chạy ổn ñịnh, có giao diện ñẹp, có biểu ñồ minh trường có quy mô ñào tạo lớn, khi ñó ñể thực hiện hiệu quả ta nên
họa trực quan trong quá trình xếp thời khóa biểu. chia nhỏ dữ liệu rồi tiến hành xếp thời khóa biểu nhiều lần.
- Cho phép xếp thời khóa biểu từ một tuần bất kỳ trong học kỳ 3. HƯỚNG PHÁT TRIỂN
trên cơ sở có tính ñến các ñiều kiện ràng buộc về giảng viên, về
Để hệ thống ngày càng hoàn thiện hơn và chạy nhanh hơn cần
phòng học ở tuần hiện tại.
phải tiếp tục nghiên cứu và phát triển hệ thống theo các hướng sau:
- Kết quả xếp thời khóa biểu ñược trình bày ña dạng bao gồm
- Tích hợp thêm các ràng buộc xếp thời khóa biểu ngoài các
thời khóa biểu của từng lớp, từng giảng viên, từng sinh viên, từng
ràng buộc cơ bản ñược ñề cập trong luận văn. Khi thực hiện người sử
nhóm và lịch sử dụng từng phòng học.
dụng có thể tùy ý lựa chọn các ràng buộc mà mình cần ñáp ứng.
- Dữ liệu thời khóa biểu có thể dễ dàng xuất sang Acrobat
- Song song hóa giải thuật GA ñể xử lý ñồng thời trên nhiều
Reader, Microsoft Excel và có thể tra cứu từ website.
máy tính nhằm tăng tốc ñộ thực hiện chương trình.
Tuy nhiên, hệ thống cũng còn có một số tồn tại sau: - Tiếp tục hoàn thiện hàm ñánh giá ñộ thích nghi ñể tùy theo
- Yêu cầu của bài toán xếp thời khóa biểu trong thực tế khá ña ngữ cảnh có thể tự ñiều chỉnh các trọng số sao cho phù hợp nhất.
dạng trong khi hệ thống hiện tại chỉ ñáp ứng ñược các yêu cầu cơ bản - Nghiên cứu kết hợp giải thuật di truyền với các kỹ thuật khác
ñược nêu ra. như mạng Nơron, lôgic mờ,… ñể nâng cao hiệu quả cho hệ thống.

You might also like