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

NGHIÊN cứu một số THUẬT TOÁN xếp LỊCH xây DỰNG ỨNG DỤNG xếp THỜI KHÓA BIỂU CHO TRƯỜNG THPT

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 (1.38 MB, 73 trang )

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

KHÓA LUẬN TỐT NGHIỆP

NGHIÊN CỨU MỘT SỐ THUẬT TOÁN XẾP LỊCH
XÂY DỰNG ỨNG DỤNG XẾP THỜI KHÓA BIỂU
CHO TRƢỜNG THPT
Giảng viên hƣớng dẫn: PGS. TS VŨ THANH NGUYÊN
THS NGUYỄN ĐĂNG KHOA

Sinh viên thực hiện : KHƢƠNG SĨ TOÀN

07520363

LÊ NGUYỄN TẤN ĐẠT 07520076
Lớp: CÔNG NGHỆ PHẦN MỀM 02
Khóa: 2007-2012

TP. Hồ Chí Minh, tháng 7 năm 2012


MỞ ĐẦU

Trong bối cảnh hiện nay, nhu cầu sử dụng Internet cũng nhƣ việc kinh doanh, trao
đổi, mua bán, học tập, làm việc, nghiên cứu, giải trí...v...v…trên máy tính là vô hạn.
Việc sử dụng các ứng dụng cho nhu cầu thực tế là rất nhiều. Các ứng dụng CNTT
đã trnên rất phổ biến trong công việc học tập.
Hiện nay các trƣờng THPT việc ứng dụng các ứng dụng CNTT để quản lý, sắp


xếp đã trở nên phổ biến. Với việc các trƣờng ngày càng đông học sinh thì việc cơ sở vật
chất của mỗi trƣờng đều phải tăng lên tƣơng ứng. Công việc xếp lịch học và giảng dạy
cho học sinh và giáo viên trở nên nặng nề rắc rối đối với ngƣời xếp lịch bằng tay.
Tại trƣờng THPT Tam Phú KP5 Phƣờng Tam Phú Quận Thủ Đức cũng gặp
trƣờng hợp nhƣ vậy. Việc có nhiều lớp học, học sinh, giáo viên…đã làm nhân viên gặp
khó khăn. Vì vậy việc cấp thiết xây dựng một phần mềm có khả năng tự động xếp thời
khóa biểu, phân công giảng dạy cho toàn trƣờng.
Chính vì vậy nhóm đề tài luận văn tốt nghiệp chúng tôi xin đƣợc trình bày báo cáo
luận văn tốt nghiệp : Nghiên cứu một số thuật toán xếp lịch và xây dựng chƣơng trình
xếp thời khóa biểu ứng dụng cho trƣờng THPT Tam Phú.


LỜI CẢM ƠN

Chúng tôi xin chân thành cảm ơn Khoa Công nghệ Phần Mềm, trƣờng Đại học
Công Nghệ Thông Tin, Đại học Quốc gia Tp. Hồ Chí Minh đã tạo điều kiện thuận lợi và
tốt nhất cho chúng tôi học tập trong suốt 5 năm qua và thực hiện đề tài tốt nghiệp này.
Chúng tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy Vũ Thanh Nguyên và thầy
Nguyễn Đăng Khoa đã tận tình, nhiệt tình hƣớng dẫn, chỉ bảo chúng tôi trong suốt quá
trình thực hiện đề tài.
Chúng tôi xin chân thành cám ơn quý Thầy Cô trong Khoa Công nghệ Phần Mềm đã tận
tình giảng dạy, trang bị cho chúng tôi những kiến thức quý báu trong những năm học vừa
qua.
Chúng tôi cũng xin chân thành cảm ơn phòng kế hoạch trƣờng THPT Tam Phú đã
cung cấp cho chúng tôi nhiều thông tin quý báu để chúng tôi thực hiện xây dựng đề tài
này
Chúng con xin chân thành cảm ơn Cha Mẹ đã luôn động viên, ủng hộ vật chất lẫn
tinh thần trong suốt quãng đƣờng đại học của chúng con.
Chúng tôi xin cảm ơn sự quan tâm, giúp đỡ và ủng hộ của anh chị, bạn bè trong
quá trình thực hiện khóa luận.

Mặc dù đã cố gắng hoàn thành khóa luận trong phạm vi và khả năng cho phép
nhƣng chắc chắn sẽ không tránh khỏi những thiếu sót. Chúng tôi rất mong nhận đƣợc sự
thông cảm, góp ý và tận tình chỉ bảo của quý Thầy Cô và các bạn.


NHẬN XÉT
(Của giảng viên hƣớng dẫn)
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
TpHCM, ngày ….. tháng …… năm ……
Giảng viên hƣớng dẫn
[Ký tên và ghi rõ họ tên]



NHẬN XÉT
(Của giảng viên phản biện)

………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
TpHCM, ngày ….. tháng …… năm ……
Giảng viên phản biện
[Ký tên và ghi rõ họ tên]


ĐỀ CƢƠNG CHI TIẾT


Tên Đề Tài: Nghiên cứu một số thuật toán xếp lịch. Ứng dụng xây dựng chƣơng trình
xếp thời khóa biểu cho trƣờng THPT
Giáo viên hƣớng dẫn:
PGS. Ts Vũ Thanh Nguyên
Ths. Nguyễn Đăng Khoa
Thời gian thực hiện: (từ ngày nhận đề tài đến ngày 20/8/2012 )
Sinh viên thực hiện:
Khƣơng Sĩ Toàn 07520363
Lê Nguyễn Tấn Đạt 07520076
Loại đề tài: Tìm hiểu nghiên cứu thuật toán và xây dựng ứng dụng

Nội Dung Đề Tài:
Nghiên cứu một số thuật toán về xếp thời khóa biểu. Xây dựng phần mềm xếp thời khóa
biểu cho trƣờng TPHP Tam Phú.
Có thể áp dụng cho các trƣờng THPT khác

Kế Hoạch Thực Hiện:
 15/03/2012 – 15/4/2012: Xây dựng ý tƣởng và tìm hiểu thuật toán tô màu.
o Khƣơng Sĩ Toàn: Tìm hiểu thông tin về THPT Tam Phú và mô hình hóa
ứng dụng xếp thời khóa biểu


o Lê Nguyễn Tấn Đạt: Nghiên cứu thuật toán tô màu
 Mục tiêu và kế hoạch chi tiết cho đề tài.
 15/4/2012 – 15/05/2012: Thiết kế dữ liệu và xây dựng xếp lịch bán tự động
o Khƣơng Sĩ Toàn : Thiết kế dữ liệu, xây dựng bán tự động
o Lê Nguyễn Tấn Đạt: Nghiên cứu giải thuật di truyền
 15/05/2012 – 15/06/2012: phát triển thêm cho chƣơng trình.
o Khƣơng Sĩ Toàn : Áp dụng tự động xếp lịch
o Lê Nguyễn Tấn Đạt: Áp dụng tự động xếp lịch

 15/06/2012 – 15/07/2012: sửa lỗi và phát triển phần mềm
o Khƣơng Sĩ Toàn : sửa lỗi và phát triển phần mềm
o Lê Nguyễn Tấn Đạt: sửa lỗi và phát triển


5 07 20 2 – 5 08 20 2: viết báo cáo và hoàn thiện.
o Khƣơng Sĩ Toàn : viết báo cáo và hoàn thiện
o Lê Nguyễn Tấn Đạt: viết báo cáo và hoàn thiện
Xác nhận của GVHD

Ngày tháng năm 2012
SV Thực hiện


MỤC LỤC
MỞ ĐẦU
Trang
Chƣơng 1

TỔNG QUAN

1

1.1

Giới thiệu đề tài

1

1.2


Mục tiêu đề tài

1

1.3

Yêu cầu

1

Chƣơng 2 THUẬT TOÁN TÔ MÀU VÀ GIẢI THUẬT DI TRUYỀN

3

2.1

Giới thiệu thuật toán tô màu

3

2.2

Thuật toán tô màu trong xếp thời khóa biểu

7

2.3

Giới thiệu giải thuật di truyền


10

2.4

Giải thuật di truyền trong xếp thời khóa biểu

11

Chƣơng 3

PHẦN MỀM TỰ ĐỘNG SẮP XẾP THỜI KHÓA BIỂU

15

3.1

Giới thiệu trƣờng THPT Tam Phú

15

3.2

Môi trƣờng ứng dụng phần mềm

17

3.3

Mô hình hóa


17

3.3.1 Mô hình 1-tier, 3-layers

17

3.3.2 Sơ đồ luồng dữ liệu

19

3.3.3 Sơ đồ lớp ở mức phân tích

27

3.3.4 Thiết kế dữ liệu

27

3.4

Các ràng buộc của phần mềm

33

3.4.1 Các ràng buộc cứng

33



3.4.2 Các ràng buộc mềm

35

3.5

Các chức năng của chƣơng trình

35

3.6

Một số thuật toán quan trọng của phần mềm

36

3.6.1 Thuật toán phân công giáo viên

36

3.6.2 Thuật toán phân phòng dùng chung

38

3.6.3 Thuật toán xếp thời khóa biểu

39

3.7


Một số hình ảnh của phần mềm

Chƣơng 4

CÁC VẤN ĐỀ XẢY RA VÀ HƢỚNG GIẢI QUYẾT

39
47

4.1

Các vấn đề xảy ra trong quá trình phát triển

47

4.2

Hƣớng giải quyết

47

Chƣơng 5

KẾT LUẬN, ĐÁNH GIÁ

49

5.1

Ƣu điểm


49

5.2

Khuyết điểm

49

5.3

Hƣớng phát triển

50

5.4

Nhận xét chung về kết quả đạt đƣợc

50

5.5
So sánh giữa phần mềm xắp sếp thời khóa biểu cho trƣờng THPT Tam Phú
(Smart Schedule) và phần mềm TKB APPLICATION SYSTEM 6.5
50
PHỤ LỤC

53

TÀI LIỆU THAM KHẢO


61


DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH

BẢNG 3.1 Thuật giải di truyền mẫu
BẢNG 3.1 Tình hình học sinh trƣờng Tam Phú
BẢNG 3.2 Tình hình giáo viên trƣờng Tam Phú
BẢNG 3.3 Table School
BẢNG 3.4 Table Class
BẢNG 3.5 Table Teacher
BẢNG 3.6 Table Teacher_Busy
BẢNG 3.7 Table Subject
BẢNG 3.8 Table Subject_Property
BẢNG 3.9 Table Faculty
BẢNG 3.10 Table Charge
BẢNG 3.11 Table Division
BẢNG 3.12 Table Class_Schedule
BẢNG 3.13 Table Room
BẢNG 3.14 Table Public_Room
BẢNG 3.15 Table Public_Room_Division
BẢNG 3.16 Table Special_Subject
BẢNG 3.17 Table Parameter
BẢNG 5.1 Bảng so sánh giữa Smart Schedule và TKB APPLICATION SYSTEM 6.5
BẢNG PHỤ LỤC 1 Các toán tử chung cho thuật giải di truyền


SƠ ĐỒ 3.1 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách lớp học


SƠ ĐỒ 3.2 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách môn học
SƠ ĐỒ 3.3 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách giáo viên
SƠ ĐỒ 3.4 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách khối lớp
SƠ ĐỒ 3.5 Sơ đồ luồng dữ liệu yêu cầu Phân công học tập
SƠ ĐỒ 3.6 Sơ đồ luồng dữ liệu yêu cầu Sắp xếp thời khóa biểu
SƠ ĐỒ 3.7 Sơ đồ lớp ở mức phân tích
SƠ ĐỒ 3.8 Thiết kế dữ liệu
HÌNH 3.1 Mô hình 1-tier, 3-layers
HÌNH 3.2 Việc trao đổi liên lạc giữa các layer
HÌNH 3.3 Sự phụ thuộc giữa các layer
HÌNH 3.4 Form nhập lớp học
HÌNH 3.5 Form phân các phòng dùng chung
HÌNH 3.6 Form tự động phân phòng dùng chung
HÌNH 3.7 Form phân công giảng dạy cho giáo viên
HÌNH 3.8 Form tự động phân công giảng dạy
HÌNH 3.9 Form xếp thời khóa biểu
HÌNH 3.10 Form tự động xếp thời khóa biểu
HÌNH 3.11 Form thời khóa biểu lớp học
HÌNH 3.12 Form thời khóa biểu giáo viên


Chƣơng 1: TỔNG QUAN

1.1 Giới thiệu đề tài
Hiện nay trong các trƣờng học bao gồm các cấp bậc phổ thông và chuyên nghiệp
việc quản lý phân công giảng dạy và học tập đã trở nên khó khăn khi con ngƣời sử dụng
bằng các phƣơng thức thông thƣờng. Do các trƣờng đã có nhiều học sinh, sinh viên và cơ
sở vật chất của mỗi trƣờng đã tăng lên tƣơng ứng. Nhu cầu cấp thiết hiện tại là chúng ta
cần xây dựng một ứng dụng có thể tự động phân công và sắp xếp lịch học, lịch giảng dạy
sao cho hợp lý và tiết kiệm thời gian và công sức nhiều nhất có thể mà vẫn đảm bảo đƣợc

tính đúng đắn nhƣ làm bằng tay.
Vì vậy nhóm luận văn tốt nghiệp chúng tôi đã xây dựng phần mềm sắp xếp thời
khóa biểu cho trƣờng THPT(cụ thể là THPT Tam Phú). Dựa trên các thuật toán xếp lịch
nhƣ tô màu, di truyền và một số thuật toán khác.
1.2 Mục tiêu của đề tài
Mục tiêu của đề tài là tìm hiểu, nghiên cứu các thuật toán xếp lịch và ứng dụng
nó để xây dựng phần mềm có khả năng xếp thời khóa biểu tự động và bán tự động. Phần
mềm phải đảm bảo các yêu cầu sau:
 Lƣu trữ các thông tin lớp học, môn học, giáo viên, khối lớp. Cho phép sửa
xóa..
 Lƣu trữ thông tin trƣờng học, học kỳ…
 Lƣu trữ thông tin về lịch rảnh của giáo viên: rảnh bận …
 Phân công giảng dạy cho giáo viên bao gồm tự động và bán tự động.
 Sắp xếp thời khóa biểu bao gồm tự động và bán tự động.
 Hiện thị thời khóa biểu lớp học, lịch dạy của giáo viên.
 Lƣu dữ liệu ở dạng excel.
1.3 Yêu cầu
 Phần mềm cần đảm bảo các yêu cầu tối thiểu của luận văn là thực hiên phân
công xếp lịch tự động mà vẫn thỏa mãn các ràng buộc.


 Phần mềm có thể linh hoạt thích ứng với những thay đổi của trƣờng.
 Phần mềm cần có tính tiện dụng và trực quan.
 Phần mềm có thể tích hợp với các ứng dụng văn phòng.


Chƣơng 2: THUẬT TOÁN TÔ MÀU VÀ GIẢI THUẬT DI TRUYỀN

2.1


Giới thiệu thuật toán tô màu

Bài toán tô màu đồ thị và sắc số đồ thị: cho trƣớc một số nguyên dƣơng P, ta nói
rằng đồ thị G có P sắc có nghĩa là: chỉ bằng P màu khác nhau ta có thể tô màu tất cả các
đỉnh sao cho 2 đỉnh liền kề bất kỳ có màu khác nhau. Khi số p nhỏ nhất thì ta gọi P là sắc
số của đồ thị và việc tìm cách tô P màu lên đồ thị chính là bài toán tô màu đồ thị.
Bậc của một đỉnh bằng số đỉnh có liên hệ với nó (liền kề với nó).
* Thuật toán:
Lặp lại các bƣớc sau cho đến khi nào tô màu hết các đỉnh:
 Bƣớc 1: chọn đỉnh có bậc cao nhất tô màu i.
 Bƣớc 2: hạ bậc:
o Đỉnh đã tô màu: bậc = 0.
o Những đỉnh có liên hệ: bâc:= bậc – 1.
 Bƣớc 3: đánh dấu những đỉnh có liên hệ (bậc vừa trừ đi ) cấm tô màu i.
2.2

Thuật toán tô màu trong bài toán xếp thời khóa biểu

Việc xếp thời khóa biểu trƣớc hết phải thỏa mãn các yêu cầu tối thiểu, đó là không
bị trùng và không bị quá tiết trong tuần . Hay nói cách khác là phải thỏa mãn các ràng
buộc sau:
 Một lớp không đƣợc học hơn một môn trong cùng một tiết.
 Một giáo viên không đƣợc dạy hơn một lớp trong cùng một tiết.
 Một phòng chỉ có thể dùng cho một lớp trong một tiết.
 Số tiết học trong tuần của một lớp không đƣợc lớn hơn số tiết học qui định
trong tuần.


Vì phòng học ở trƣờng THPT là cố định với mỗi lớp nên ta chỉ cần quan tâm đến
các phòng dùng chung (nhƣ phòng vi tính, thực hành…) trong thuật toán.

Để thỏa mãn các yêu cầu trên. Ta cần dùng thuật toán tô màu để phân nhóm cho
các phân công (mỗi phân công là một bộ “lớp-môn-giáo viên”). Sau khi phân nhóm, các
phân công cùng một nhóm phải xếp chung một tiết, các phân công khác nhóm phải xếp ở
những tiết khác nhau, và số nhóm phải là nhỏ nhất để tốn ít tiết nhất có thể. Sẽ có một số
môn học mà học nhiều hơn tiết trong tuần, vì vậy sẽ có một số phân công mà có lớp,
môn, giáo viên giống nhau và tất nhiên là không đƣợc xếp cùng một tiết.
*Thuật toán:
Xem mỗi phân công là một đỉnh. Bậc của một phân công là số phân công khác
không đƣợc xếp cùng một tiết với nó (có cùng lớp hoặc cùng giáo viên hoặc cùng phòng
dùng chung), hay nói cách khác là có liên hệ với nó.
Mỗi phân công có một danh sách các nhóm trùng (không đƣợc xếp phân công đó
vào các nhóm thuộc danh sách), ban đầu rỗng.
Lặp lại các bƣớc sau cho đến khi tất cả các phân công đều đƣợc xếp nhóm:
 Bƣớc 1: Chọn phân công có bậc cao nhất xếp vào nhóm đầu tiên không có
trong danh sách các nhóm trùng của nó.
 Bƣớc 2: hạ bậc:
o Phân công đã xếp nhóm: bậc = 0.
o Những phân công có liên hệ: bâc:= bậc – 1.
 Bƣớc 3: Thêm nhóm tiết vừa chọn vào danh sách các nhóm trùng của các
phân công có liên hệ.
Ví dụ:
Có 8 phân công (PC) sau:
 PC1: 10A-Toán-GV01
 PC2: 10A-Văn-GV02
 PC3: 10B-Vật lý-GV01
 PC4: 10B-Hóa học-GV03


 PC5: 10C-Toán-GV01
 PC6: 10C-Sinh vật-GV03

 PC7: 10D-Ngoại ngữ-GV04
 PC8: 10D-Văn-GV02
Lúc này bậc của các phân công này sẽ là:
 PC1: bậc=3 (max), có liên hệ với PC2(cùng lớp), PC3(cùng GV), PC5(cùng
GV)
 PC2: bậc=2, có liên hệ với PC1(cùng lớp), PC8(cùng GV)
 PC3: bậc=3, có liên hệ với PC4(cùng lớp), PC1(cùng GV), PC5(cùng GV)
 PC4: bậc=2, có liên hệ với PC3(cùng lớp), PC8(cùng GV)
 PC5: bậc=3, có liên hệ với PC6(cùng lớp), PC1(cùng GV), PC3(cùng GV)
 PC6: bậc=2, có liên hệ với PC5(cùng lớp), PC4(cùng GV)
 PC7: bậc=1, có liên hệ với PC8(cùng lớp)
 PC8: bậc=2, có liên hệ với PC7(cùng lớp), PC2(cùng GV)
Danh sách các nhóm trùng (DST) của các PC ban đầu rỗng.
Lần lặp 1:
Chọn PC có bậc cao nhất (PC1), xếp vào nhóm 1.
 PC1: bậc=0, nhóm= ,đã xếp
 PC2: bậc=1, DST2={1}
 PC3: bậc=2(max),DST3={1}
 PC4: bậc=2, DST4={}
 PC5: bậc=2,DST5={1}
 PC6: bậc=2, DST6={}


 PC7: bậc=1, DST7={}
 PC8: bậc=2, DST8={}
Lần lặp 2:
Chọn PC có bậc cao nhất (PC3), xếp vào nhóm 2(không xếp vào nhóm 1 vì
1 thuộc DST3).
 PC1: bậc=0, nhóm= ,đã xếp
 PC2: bậc=1, DST2={1}

 PC3: bậc=0,nhóm=2,đã xếp
 PC4: bậc=1, DST4={2}
 PC5: bậc=1,DST5={1,2}
 PC6: bậc=2(max), DST6={}
 PC7: bậc=1, DST7={}
 PC8: bậc=2, DST8={}
Lần lặp 3:
Chọn PC có bậc cao nhất (PC6), xếp vào nhóm 1(vì DST6={}).
 PC1: bậc=0, nhóm= ,đã xếp
 PC2: bậc=1, DST2={1}
 PC3: bậc=0,nhóm=2,đã xếp
 PC4: bậc=0, DST4={1,2}
 PC5: bậc=0,DST5={1,2}
 PC6: bậc=0, nhóm= ,đã xếp
 PC7: bậc=1, DST7={}
 PC8: bậc=2(max), DST8={}
Lần lặp 4:


Chọn PC có bậc cao nhất (PC8), xếp vào nhóm 1(vì DST8={}).
 PC1: bậc=0, nhóm= ,đã xếp
 PC2: bậc=0(max), DST2={1}
 PC3: bậc=0,nhóm=2,đã xếp
 PC4: bậc=0, DST4={1,2}
 PC5: bậc=0,DST5={1,2}
 PC6: bậc=0, nhóm= ,đã xếp
 PC7: bậc=0, DST7={1}
 PC8: bậc=0, nhóm= ,đã xếp
Lần lặp 5:
Chọn PC có bậc cao nhất (PC2), xếp vào nhóm 2(vì DST2={1}).

 PC1: bậc=0, nhóm= ,đã xếp
 PC2: bậc=0, nhóm=2,đã xếp
 PC3: bậc=0,nhóm=2, đã xếp
 PC4: bậc=0(max), DST4={1,2}
 PC5: bậc=0,DST5={1,2}
 PC6: bậc=0, nhóm= ,đã xếp
 PC7: bậc=0, DST7={1}
 PC8: bậc=0, nhóm= ,đã xếp
Lần lặp 6:
Chọn PC có bậc cao nhất (PC4), xếp vào nhóm 3(vì DST2={1,2}).
 PC1: bậc=0, nhóm= ,đã xếp
 PC2: bậc=0, nhóm=2,đã xếp


 PC3: bậc=0,nhóm=2, đã xếp
 PC4: bậc=0, nhóm=3,đã xếp
 PC5: bậc=0(max),DST5={1,2}
 PC6: bậc=0, nhóm= ,đã xếp
 PC7: bậc=0, DST7={1}
 PC8: bậc=0, nhóm= ,đã xếp
Lần lặp 7:
Chọn PC có bậc cao nhất (PC5), xếp vào nhóm 3(vì DST5={1,2}).
 PC1: bậc=0, nhóm= ,đã xếp
 PC2: bậc=0, nhóm=2,đã xếp
 PC3: bậc=0,nhóm=2, đã xếp
 PC4: bậc=0, nhóm=3,đã xếp
 PC5: bậc=0,nhóm=3,đã xếp
 PC6: bậc=0, nhóm= ,đã xếp
 PC7: bậc=0(max), DST7={1}
 PC8: bậc=0, nhóm= ,đã xếp

Lần lặp 8:
Chọn PC có bậc cao nhất (PC7), xếp vào nhóm 2(vì DST5={1}).
 PC1: bậc=0, nhóm= ,đã xếp
 PC2: bậc=0, nhóm=2,đã xếp
 PC3: bậc=0,nhóm=2, đã xếp
 PC4: bậc=0, nhóm=3,đã xếp
 PC5: bậc=0,nhóm=3,đã xếp


 PC6: bậc=0, nhóm= , đã xếp
 PC7: bậc=0,nhóm=2,đã xếp
 PC8: bậc=0, nhóm= , đã xếp
Thoát khỏi vòng lặp
Sau khi kết thúc thuật toán ta có đƣợc 3 nhóm phân công:
 Nhóm 1: PC1,PC6,PC8
 Nhóm 2: PC2,PC3,PC7
 Nhóm 3: PC4,PC5

2.3

Giới thiệu giải thuật di truyền (Genetic Algorithm - GA)
Các thuật giải di truyền đƣợc thực hiện thay đổi theo bài toán cụ thể, nhƣng chúng

chia sẻ chung cấu trúc tiêu biểu sau: Thuật giải hoạt động bằng cách cập nhật liên tục tập
giả thuyết – đƣợc gọi là quần thể. Ở mỗi lần lặp, tất cả các cá thể trong quần thể đƣợc
ƣớc lƣợng tƣơng ứng với hàm thích nghi. Rồi quần thể mới đƣợc tạo ra bằng cách lựa
chọn có xác suất các cá thể thích nghi tốt nhất từ quần thể hiện tại. Một số trong những cá
thể đƣợc chọn đƣợc đƣa nguyên vẹn vào quần thể kế tiếp. Những cá thể khác đƣợc dùng
làm cơ sở để tạo ra các cá thể con bằng cách áp dụng các tác động di truyền: lai ghép và
đột biến.

GA( Fitness, Fitness_threshold, p, r, m)
{
// Fitness: hàm gán thang điểm ước lượng cho một giả thuyết
// Fitness_threshold: Ngưỡng xác định tiêu chuẩn dừng giài thuật tìm kiếm
// p: Số cá thể trong quần thể giả thuyết
// r: Phân số cá thể trong quần thể đƣợc áp dụng toán tử lai ghép ở mỗi
bƣớc


// m: Tỉ lệ cá thể bị đột biến
 Khởi tạo quần thể: P  Tạo ngẫu nhiên p cá thể giả thuyết
 Ƣớc lƣợng: Ứng với mỗi h trong P, tính Fitness(h)
 while [max Fitness(h)] < Fitness_threshold do
Tạo thế hệ mới, PS
1. Chọn cá thể: chọn theo xác suất (1 – r)p cá thể trong quần thể P
thêm vào PS. Xác suất Pr(hi) của giả thuyết hi thuộc P đƣợc tính
bởi công thức:
Pr(hi ) 



Fitness(hi )
p
j 1

Fitness(h j )

2. Lai ghép: chọn lọc theo xác suất

r p

2

cặp giả thuyết từ quần thể

P, theo Pr(hi) đã tính ở bƣớc trên. Ứng với mỗi cặp , tạo
ra hai con bằng cách áp dụng toán tử lai ghép. Thêm tất các các
con vào PS.
3. Đột biến: Chọn m% cá thể của PS với xác suất cho mỗi cá thể là
nhƣ nhau. Ứng với mỗi cá thể biến đổi một bit đƣợc chọn ngẫu
nhiên trong cách thể hiện của nó.
4. Cãp nhật: P  PS.
5. Ước lượng: Ứng với mỗi h trong P, tính Fitness(h)
 Trả về giả thuyết trong P có độ thích nghi cao nhất.
}
Bảng 3.1 Thuật giải di truyền mẫu
Chi tiết về thuật giải di truyền xem ở phần phụ lục.
2.4

Giải thuật di truyền trong việc xếp thời khóa biểu

Mục đích của việc xếp thời khóa biểu là xếp các phân công (các bộ “lớp-môn-giáo
viên”) vào các tiết trong tuần. Ví dụ 27 tiết (tất nhiên số tiết này là linh động tùy thuộc
vào lúc khởi tạo dữ liệu học kỳ).
Sau khi sử dụng thuật toán tô màu, ta có đƣợc 27 nhóm phân công, mỗi nhóm
chứa các phân công phải xếp cùng một tiết, các phân công thuộc các nhóm khác nhau
phải xếp vào các tiết khác nhau. Nếu xếp 27 nhóm này vào 27 tiết thì sẽ đáp ứng đƣợc
không bị trùng(trùng lớp, trùng giáo viên).


Vấn đề là xếp các nhóm phân công này vào các tiết theo thứ tự nhƣ thế nào để thời

khóa biểu hợp lý hơn.Ví dụ 5 tiết toán cùng 1 lớp mà xếp vào 5 tiết liên tiếp thì khó cho
học sinh. Nói cách khác ta cần phải tìm cách xếp thỏa mãn nhiều nhất các ràng buộc mềm
sau:
 Các môn học 2,3 tiết trong tuần thì một ngày chỉ có một tiết đối với một lớp,
các ngày có các tiết này cách nhau ít nhất 2 ngày.
 Các môn học 4 tiết trở lên trong tuần thì một ngày tối đa 3 tiết, các tiết cùng
ngày liền nhau, các tiết khác ngày cách nhau ít nhất 2 ngày.
Càng nhiều ràng buộc mềm đƣợc thỏa mãn thì cách xếp càng hợp lý.
Xếp 27 nhóm phân công vào 27 tiết trong tuần, nghĩa là sẽ có tất cả 27! cách xếp.
Đây là một con số vô cùng lớn. Nếu dùng phƣơng pháp vét cạn xét hết tất cả các trƣờng
hợp để tìm cách xếp hợp lý nhất thì sẽ tốn kém tài nguyên và thời gian.
Vì vậy nhóm sử dụng giải thuật di truyền để tìm ra thứ tự xếp hợp lý. Kết quả tìm
đƣợc không phải là kết quả tối ƣu nhƣng sẽ là kết quả tốt và không cần xét hết các trƣờng
hợp.
Mỗi cá thể sẽ là một cách xếp, là một thứ tự thể hiện cách sắp xếp 27 nhóm phân
công vào 27 tiết trong tuần. Đƣợc biểu diễn bằng một danh sách có 27 vị trí lƣu các
tiết.Ví dụ:
2

5

3

11 20 16 … …

19

Đối với cá thể này thì nhóm phân công 1 xếp vào tiết 2, nhóm 2 xếp vào tiết 5,
nhóm 3 xếp vào tiết 3, nhóm 4 xếp vào tiết …. Nhóm 27 xếp vào tiết 19.
Độ thích nghi của 1 cá thể đƣợc tính bằng số ràng buộc mềm thỏa mãn nếu xếp

theo cá thể đó.
Mục đích của giải thuật di truyền là tìm ra cá thể có độ thích nghi cao (thỏa mãn
nhiều ràng buộc mềm), và xếp TKB theo biểu diễn của cá thể đó.
Lai ghép 2 cá thể:
 Chọn ngẫu nhiên 1 vị trí a trong 27 vị trí.
 Tìm vị trí a1 = h1.indexOf(h2[a]).


 Tìm vị trí a2 = h2.indexOf(h1[a]).
 Đổi chổ h1[a] và h2[a].
 Đổi chỗ h1[a1] và h2[a2].

H1
1

9

3

4

5

7

2

8

6




4

3

2

1



H2
9

8

7

6

5

2 cá thể con:
1

9

3


6

5

7

2

8

4



9

8

7

4

5

6

3

2


1



Đột biến 1 cá thể:
 Chọn ngẫu nhiên 1 vị trí a và 1 vị trí b trong 27 vị trí.
 Đổi chổ h[a] và h[b].
H trƣớc khi đột biến:
1

2

3

4

5

6

7

8

9





H sau khi đột biến:
1

2

3

7

5

6

4

8

9



adaptive: hàm tính độ thích nghi của 1 cá thể
maxAdaptive: độ thích nghi tối đa. Đƣợc tính bằng cách giả sử không có vi phạm
ràng buộc mềm nào ở tất cả các tiết trong tuần.
adaptive_threshold = 0.8 * maxAdaptive: Ngƣỡng xác định tiêu chuẩn dừng giài
thuật tìm kiếm.
highestAdaptive: độ thích nghi cao nhất trong quần thể hiện tại.
m: Tỉ lệ cá thể bị đột biến
*Thuật toán:
 Khởi tạo quần thể: P  Tạo ngẫu nhiên 27 cá thể

 Ƣớc lƣợng: Ứng với mỗi h trong P, tính adaptive(h)
 while highestAdaptive < adaptive_threshold do
Tạo thế hệ mới, PS
1. Chọn cá thể: chọn theo xác suất các cá thể trong quần thể P thêm
vào PS. Xác suất chọn Pr(hi) của cá thể hi thuộc P đƣợc tính bởi
công thức:
Pr(hi)=adaptive(hi)/maxAdaptive()
2. Lai ghép: chọn lọc theo xác suất các cặp giả thuyết từ quần thể P,
theo Pr(hi) đã tính ở bƣớc trên. Ứng với mỗi cặp , tạo ra hai
con bằng cách áp dụng toán tử lai ghép. Thêm tất các các con vào
PS.
3. Đột biến: Chọn m% cá thể của PS với xác suất cho mỗi cá thể là
nhƣ nhau. Ứng với mỗi cá thể đƣợc chọn áp dụng toán tử đột biến
cho nó.
4. Cãp nhật: P  PS.


 Trả về cá thể trong P có độ thích nghi cao nhất.


×