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

Phương pháp ứng dụng giải thuật di truyền cho bài toán xếp thời khóa biểu tín chỉ

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.3 MB, 70 trang )

DƢƠNG CHÍ BẰNG

BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

CÔNG NGHỆ THÔNG TIN

LUẬN VĂN THẠC SĨ
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN

PHƢƠNG PHÁP ỨNG DỤNG GIẢI THUẬT DI TRUYỀN
CHO BÀI TOÁN XẾP THỜI KHÓA BIỂU TÍN CHỈ

DƢƠNG CHÍ BẰNG
2013-2015

HÀ NỘI – 2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

LUẬN VĂN THẠC SĨ

PHƢƠNG PHÁP ỨNG DỤNG GIẢI THUẬT DI
TRUYỀN CHO BÀI TOÁN XẾP THỜI KHÓA BIỂU
TÍN CHỈ

DƢƠNG CHÍ BẰNG
CHUYÊN NGÀNH:


CÔNG NGHỆ THÔNG TIN

MÃ SỐ:

60480201

HƢỚNG DẪN KHOA HỌC: PGS.TSKH. NGUYỄN CÁT HỒ

HÀ NỘI - 2015


LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả phân tích, đánh giá và hiện thực hóa nêu trong luận văn
là trung thực và chƣa từng đƣợc ai công bố trong bất kỳ công trình nào khác.
Tác giả luận văn

Dương Chí Bằng

i


LỜI CẢM ƠN
Để thành công trong cuộc sống ngoài sự nỗ lực, cố gắng của bản thân thì
cũng không thể thiếu những sự hỗ trợ, giúp đỡ của ngƣời khác dù ít hay nhiều dù
trực tiếp hay gián tiếp. Trong suốt thời gian từ khi bắt đầu học tập cho đến khi hoàn
thành luận văn, em đã nhận đƣợc rất nhiều sự quan tâm giúp đỡ của quý thầy cô, gia
đình và bạn bè.
Với lòng biết ơn sâu sắc nhất, em xin gửi lời cảm ơn đến thầy PGS.TSKH.
Nguyễn Cát Hồ, ngƣời đã truyền đạt những kiến thức cũng nhƣtận tình chỉ bảo,

hƣớng dẫn và giúp đỡ em để hoàn thành đề tài luận văn.
Em cũng xin gửi cảm ơn chân thành nhất tới các thầy cô giáo ở khoa Sau đại
học và khoa Công nghệ thông tin – Viện đại học Mở Hà Nội đã cho em những kiến
thức quý báu và tạo điều kiện tốt nhất cho em trong quá trình học tập cũng nhƣ
hoàn thành luận văn
Em xin chân thành cảm ơn gia đình, ngƣời thân và bạn bè đã động viên, giúp
đỡ em trong quá trình học tập và thực hiện luận văn này.
Trong quá trình thực hiện luận văn, mặc dù em đã rất nỗ lực và cố gắng
nhƣng chắc chắn khó tránh đƣợc những sai sót, rất mong đƣợc sự thông cảm và chỉ
bảo của các thầy, cô và các bạn để luận văn này đƣợc hoàn thiện hơn.
Cuối cùng em xin kính chúc các thầy, cô sức khỏe, thành công và hạnh phúc.
Chân thành cảm ơn!

ii


MỤC LỤC
LỜI CAM ĐOAN ......................................................................................................1
LỜI CẢM ƠN .......................................................................................................... II
MỤC LỤC ............................................................................................................... III
DANH MỤC CÁC TỪ VIẾT TẮT ......................................................................... V
DANH MỤC CÁC BẢNG BIỂU .......................................................................... VI
DANH MỤC CÁC HÌNH VẼ...............................................................................VII
MỞ ĐẦU ....................................................................................................................1
1.1. Tính cấp thiết của đề tài ....................................................................................1
1.2. Mục tiêu nghiên cứu...........................................................................................1
1.3. Đối tƣợng và phƣơng pháp nghiên cứu............................................................2
1.3.1. Đối tƣợng nghiên cứu ....................................................................................2
1.3.2. Phƣơng pháp nghiên cứu ...............................................................................2
CHƢƠNG 1. GIỚI THIỆU BÀI TOÁN XẾP LỊCH .............................................3

1.1. Bài toán xếp lịch học tín chỉ ..............................................................................3
1.2. Một số cách tiếp cận bài toán ............................................................................5
1.3. Ràng buộc trong bài toán ..................................................................................8
CHƢƠNG 2. KIẾN THỨC CƠ SỞ .......................................................................11
2.1. Giải thuật di truyền (GA) ................................................................................11
2.1.1. Giới thiệu giải thuật di truyền ......................................................................11
2.1.2. Các vấn đề trong giải thuật di truyền ...........................................................14
2.1.2.1. Biểu diễn cá thể .....................................................................................14
2.1.2.2. Đánh giá cá thể ......................................................................................17
2.1.2.3. Khởi tạo quần thể ban đầu .....................................................................18
2.1.2.4. Phép chọn lọc (selection) ......................................................................18
2.1.2.5. Phép lai ghép (crossover) ......................................................................21
2.1.2.6. Phép đột biến (mutation) .......................................................................23
2.1.2.7. Điều kiện dừng ......................................................................................24
2.1.3. Ứng dụng của giải thuật di truyền ...............................................................25
2.2. Khái niệm cơ bản về đại số gia tử ...................................................................26
2.2.1. Đại số gia tử .................................................................................................26
iii


2.2.2. Định lƣợng ngữ nghĩa trong đại số gia tử ....................................................27
CHƢƠNG 3. PHƢƠNG PHÁP XẾP THỜI KHÓA BIỂU TÍN CHỈ DỰA
TRÊN GIẢI THUẬT DI TRUYỀN .......................................................................33
3.1. Mô tả ràng buộc dƣới hạng mô hình bài toán ...............................................33
3.2. Ứng dụng giải thuật di truyền vào trong bài toán ........................................38
3.2.1. Phƣơng pháp biểu diễn – mã hóa cá thể ......................................................39
3.2.2. Đánh giá độ phù hợp ....................................................................................39
3.2.3. Các phép toán di truyền áp dụng .................................................................41
3.2.3.1 Phép chọn lọc (selection) .......................................................................41
3.2.3.2. Phép lai ghép (crossover) ...................................................................41

3.2.3.3. Phép đột biến (mutation): ......................................................................42
3.2.3.4. Phép thay thế (replacement) ..................................................................43
3.2.3.5. Điều kiện dừng thuật toán .....................................................................43
CHƢƠNG 4. XÂY DỰNG ỨNG DỤNG VÀ THỬ NGHIỆM ............................44
4.1. Chƣơng trình thử nghiệm ...............................................................................44
4.2. Thử nghiệm với bài toán ví dụ mẫu ...............................................................46
4.3. Thử nghiệm với bài toán thực thế ..................................................................50
KẾT LUẬN ..............................................................................................................60
5.1. Kết quả đạt đƣợc ..............................................................................................60
5.2. Hạn chế và định hƣớng phát triển ..................................................................60
TÀI LIỆU THAM KHẢO ......................................................................................61

iv


DANH MỤC CÁC TỪ VIẾT TẮT
Viết tắt

Tiếng Anh

Tiếng Việt

GA

Genetic Algorithm

Giải thuật di truyền

SA


Simulated Anualing

Giải thuật mô phỏng tôi luyện

LISP

Locator/Identifier

Ngôn ngữ lập trình

Separation Protocol
CTP

Course timetabling

Bài toán lập lịch cho lớp học tín chỉ

problemd
R

Room

Phòng học

C

Course

Lớp học tín chỉ


L

Lecture

Giảng viên

S

Student

Sinh viên

T

Timeslot

Khe thời gian cho xếp lịch

LT

Lecture-Time

Ma trận giảng viên và thời gian

CC

Course-Course

Ma trận ràng buộc giữa các lớp môn
học


SC

Student-Course

Ma trận ràng buộc giữa sinh viên và
lớp tín chỉ

TC

Time-Course

Ma trận ràng buộc giữa lớp tín chỉ và
thời gian

GV

Giảng viên

ĐSGT

Đại số gia tử

v


DANH MỤC CÁC BẢNG BIỂU
Bảng 3. 1: Biểu diễn lịch của các lớp tín chỉ

34


Bảng 4. 1: Các tham số của dữ liệu ví dụ thử nghiệm

46

Bảng 4. 2: Xác định giảng viên vào giảng các lớp tín chỉ

46

Bảng 4. 3: Ràng buộc giữa lớp tín chỉ và phòng học (CR)

46

Bảng 4. 4: Ràng buộc giữa giảng viên và thời gian (LT)

47

Bảng 4. 5: Ràng buộc giữa sinh viên và các lớp tín chỉ (S×C)

47

Bảng 4. 6: Các tham số chạy thuật toán xếp lịch

48

Bảng 4. 7: Kết quả lịch đƣợc xếp theo thuật toán

49

Bảng 4. 8: Kết quả lịch theo trọng số hàm fitness (w 1=0.9, w2=0.01, w4=0.09) 49

Bảng 4. 9: Xác định trƣớc các giảng viên vào các lớp tín chỉ

50

Bảng 4. 10: Các tham số chạy thuật toán trên dữ liệu thực

55

Bảng 4. 11: Lịch học đƣợc xếp bởi thuật toán

56

vi


DANH MỤC CÁC HÌNH VẼ
Hình 1. 1. Ví dụ thời khóa biểu của một trƣờng phổ thông

4

Hình 1. 2. Ví dụ lịch học của một trƣờng đại học

4

Hình 1. 3. Ví dụ lịch thi của một trƣờng học

5

Hình 1. 4. Bài toán tìm kiếm cục bộ với không gian trạng thái và hàm mục tiêu 7
Hình 2. 1. Sơ đồ giải thuật di truyền


13

Hình 2. 2. Minh họa kiểu mã hóa nhị phân của hai chuỗi gen

15

Hình 2. 3. Minh họa phƣơng pháp mã hóa hoán vị

15

Hình 2. 4. Minh họa phƣơng pháp mã hóa giá trị

16

Hình 2. 5. Minh họa phƣơng pháp mã hóa dạng cây

16

Hình 2. 6. Minh họa sơ đồ chọn theo bánh xe Roulette

19

Hình 2. 7. Sơ đồ minh họa phép chọn lọc xếp hạng

20

Hình 2. 8. Minh họa lai ghép một điểm cắt trên chuỗi nhị phân

22


Hình 2. 9. Minh họa phép lai ghép đều

22

Hình 2. 10. Độ đo tính mờ của biến TRUTH

28

Hình 2. 11. Khoảng tính mờ của các hạng từ của biến TRUTH

30

Hình 2. 12. Thiết kế hàm định lƣợng dựa trên hệ khoảng tƣơng tự

31

Hình 2. 13. Thiết kế hàm định lƣợng tam giác dựa trên khoảng tính mờ ở mức1,2,3 32
Hình 3. 1: Biểu diễn lựa chọn mức độ ƣu tiên của giảng viên theo thời gian

36

Hình 3. 2: Biểu diễn đánh giá mức độ thỏa mãn của giảng viên

37

Hình 3. 3: Sơ đồ chuỗi gen mã hóa lời giải (bảng lịch)

39


Hình 4. 1. Sơ đồ lớp thiết kế trong chƣơng trình

45

Hình 4. 2: Biểu đồ sự biến đổi độ phù hợp cá thể (fitness) qua các lần tiến hóa 59
Hình 4. 3: Biểu đồ sự biến đổi số vi phạm ràng buộc cứng qua các lần tiến hóa 59

vii


MỞ ĐẦU
1.1. Tính cấp thiết của đề tài
Bài toán xếp lịch là một bài toán kinh điển và là một trong những bài toán rất
có ý nghĩa trong thực tiễn hiện nay. Tuy nhiên đây là một bài toán khó với nhiều
loại đầu vào khác nhau, các ràng buộc giữa các yếu tố và thƣờng có nhiều mục tiêu,
yêu cầu đặt ra. Hiện nay, trong các cơ sở đào tạo và đặc biệt là đào tạo đại học, cao
đẳng công tác xếp lịch còn gặp nhiều khó khăn, đôi khi chúng ta rất khó để kiểm
soát hết các trƣờng hợp của bài toán, vì thế hiệu quả mang mại chƣa cao. Bên cạnh
đó, đã có nhiều tác giả nghiên cứu và đƣa ra các phƣơng pháp để giải quyết vấn đề
này và trong đó, phƣơng pháp tìm kiếm tối ƣu dựa trên giải thuật di truyền đã chứng
tỏ đƣợc hiệu quả tốt hơn.
Xếp lịch học theo tín chỉ trong trƣờng đại học có rất nhiều yếu tố phức tạp
hơn so với dạng bài toán lập lịch thông thƣờng, nhƣ giáo viên, sinh viên, thời gian,
phòng học, các lớp tín chỉ và đặc biệt là các ràng buộc giữa các yếu tố này. Tổng
quát hơn, bài toán xếp lịch học gồm nhiều yếu tố đƣợc xem xét liên quan, chẳng hạn
nhƣ việc thi cử, thực hành, giảng đƣờng, vv….Thông thƣờng, bài toán lập lịch đƣợc
tiến hành theo cách truyền thống, bằng trực quan và tính toán trực tiếp của con
ngƣời. Nhƣng hiện nay, do sự đa dạng và nhiều thay đổi của các ràng buộc giữa các
yếu tố, đó là những hạn chế về nguồn lực và sự phức tạp của các yếu tố, giải bài
toán lập lịch thƣờng mất rất nhiều thời gian và nhân lực, kết quả do đó dẫn đến các

ràng buộc mềm hầu nhƣ không đạt đƣợc, thậm chí không thể thỏa mãn hết các ràng
buộc cứng mà phải chấp nhận sự thỏa hiệp.
Cũng vì lý do đó nên tôi lựa chọn đề tài: ―Phƣơng pháp ứng dụng giải
thuật di truyền cho bài toán xếp thời khóa biểu tín chỉ‖ với mong muốn giải
quyết đƣợc các vấn đề về nhân lực, thời gian thực hiện và giải quyết đƣợc các ràng
buộc cứng và thõa mãn các ràng buộc mềm đƣợc đặt ra.

1.2. Mục tiêu nghiên cứu
Nghiên cứu áp dụng phƣơng pháp tính toán mềm mà ở đây là giải thuật di
truyền để giải quyết bài toán lập lịch và ứng dụng cho công tác xếp lịch học theo tín

1


chỉ trong các cơ sở đào tạo đại học, cao đẳngđể đáp ứng đƣợc các nhu cầu cần thiết
thực tế hiện nay.

1.3. Đối tƣợng và phƣơng pháp nghiên cứu
1.3.1. Đối tượng nghiên cứu
Nghiên cứu giải thuật di truyền, các vấn đề liên nhƣ phƣơng pháp mã hóa cá
thể, phƣơng pháp đánh giá độ phù hợp cá thể theo mục tiêu của bài toán, các phép
toán di truyền. Ở đây, đề tài nghiên cứu sử dụng tham số nhiệt tôi luyện để tác động
vào quá trình tiến hóa nhằm đem lại hiệu quả cao cho phƣơng pháp.
Nghiên cứu về bài toán lập lịch nói chung, các trƣờng hợp áp dụng trong
thực tế, phƣơng pháp hay giải thuật đã đƣợc nghiên cứu và công bố. Phân tích và áp
dụng một số ràng buộc dựa trên tham số mờ gia tử nhằm làm phù hợp hơn yêu cầu
thực tế của bài toán ứng dụng.

1.3.2. Phương pháp nghiên cứu
Thu thập, khảo sát và hệ thống hóa các kết quả nghiên cứu đã có về vấn đề

ứng dụng giải thuật di truyền cho bài toán lập lịch.
Nghiên cứu các mô hình lý thuyết, các thuật toán kết hợp lập trình thử
nghiệm trên máy tính. Đƣa vào ứng dụng trong thực tế để so sánh và đánh giá hiệu
quả của phƣơng pháp.

2


CHƢƠNG 1. GIỚI THIỆU BÀI TOÁN XẾP LỊCH
1.1. Bài toán xếp lịch học tín chỉ
Bài toán lập lịch nói chung trong các trƣờng đại học, cao đẳng (course
timetabling problem - CTP) bao gồm việc tìm kiếm việc phân bổ thời gian chính
xác trong một khoảng thời gian giới hạn cho một số sự kiện (nhƣ lớp tín chỉ, thi học
kỳ) và gán chúng vào một số tài nguyên (giáo viên, sinh viên và phòng học) để đảm
bảo rằng các ràng buộc đƣợc thỏa mãn. Tuy nhiên, trong đào tạo tín chỉ, tùy theo
đặc thù của từng trƣờng, bài toán xếp lịch đƣợc triển khai có sự khác nhau nhất
định. Trong luận văn này, tôi sử dụng tài nguyên gồm các giảng viên và phòng học.
Còn yếu tố sinh viên sẽ tham gia trong tính toán hàm mục tiêu (đƣợc đề cập ở phần
sau). Điều này sẽ thích hợp cho trƣờng hợp lịch tín chỉ sẽ đƣợc triển khai trƣớc khi
sinh viên đăng ký học.
Theo đặc thù của từng trƣờng đại học, cao đẳng và công tác tổ chức đào tạo
tín chỉ, để cho thuận tiện trong việc thiết kế thuật toán, trong luận văn này tôi giả
định cách thức tổ chức nhƣ sau: đầu mỗi học kỳ dựa vào khả năng đăng ký học tập
của sinh viên, chúng ta dự kiến các lớp tín chỉ để lập lịch và công bố cho sinh viên
đăng ký. Mỗi lớp tín chỉ gồm ký hiệu lớp, môn học, phân loại (lớp học phòng lý
thuyết nhỏ hoặc phòng hội trƣờng hoặc thực hành phòng máy). Bài toán lập lịch bây
giờ sẽ trở thành công việc phân công giảng viên, thời gian, phòng học cho mỗi lớp
tín chỉ đã dự kiến này sao cho thỏa mãn các yêu cầu, ràng buộc đặt ra.
Trong thực tế hiện nay đã có rất nhiều bài toán lập lịch đã đƣợc xây dựng và
đƣa vào ứng dụng thực tiễn:

(i) Bài toán xếp thời khóa biểu cho trƣờng phổ thông: là bài toán phân chia
giáo viên, lớp học trong một tuần với tất cả các môn học của một trƣờng học, với
một ma trận ràng buộc số bài giảng một giáo viên đƣợc phân công dạy một lớp.

3


Hình 1. 1. Ví dụ thời khóa biểu của một trƣờng phổ thông

(ii) Bài toán xếp lịch thi: là bài toán có nhiều thành phần tham gia sinh viên,
môn thi, phòng thi,… từ những thành phần đó ta phân bổ số sinh viên, môn thi vào
một phòng thi sao cho phù hợp với các yêu cầu nhƣ: mỗi môn thi chỉ có 1 lần thi,
sinh viên không đƣợc bỏ qua một thì, trong một thời gian không thể có quá nhiều
môn thi liên tiếp nhau,…

Hình 1. 2. Ví dụ lịch học của một trƣờng đại học

4


(iii) Bài toán lập lịch trực cho bệnh viên: là bài toán phân công cán bộ trực
vào một thời điểm để làm sao thỏa mãn các điều kiện: nhiều cán bộ đƣợc phân công
trực, mỗi ngƣời tại một thời điểm chỉ thực hiện duy nhất một nhiệm vụ, thời gian
trực của các cán bộ phải tƣơng đƣơng nhau.

Hình 1. 3. Ví dụ lịch thi của một trƣờng học

1.2. Một số cách tiếp cận bài toán
Các bài toán tối ƣu nói chung và bài toán xếp lịch nói riêng là bài toán rất
khó giải, sự khó khăn của nó thể hiện ở độ phức tạp tính toán và là những bài toán

thuộc lớp NP-khó nhƣ vậy tƣơng ứng với thời gian để giải sẽ tăng lên theo kích
thƣớc của bài toán. Trong những thời gian gần đây để giải quyết bài toán, các nhà
nghiên cứu đã đƣa ra một số phƣơng pháp giải quyết nhƣ sau:
(i) Phƣơng pháp tìm kiếm cục bộ:là phƣơng pháp tìm kiếm sẽ duyệt qua các
lời giải trong không tin tìm kiếm cho đến khi tìm ra lời giải đƣợc cho là tối ƣu hoặc

5


vƣợt quá thời gian tìm kiếm cho phép. Thuật toán có thể đƣợc sử dụng cho bài toán
tìm kiếm lời giải gần đúng tối ƣu trong một loạt các lời giải ứng viên. Gọi P là một
bài toán tối ƣu tổ hợp cần giải, và s là lời giải hiện hành giả sử là một lời giải khả
thi của P, và có hàm chi phí f(s). Miền lân cận N(s) đƣợc định nghĩa cho s là tập
những lời giải láng giềng khả thi s’ của s sao cho từ s ta có thể đạt tới s’ nhờ vào
một bƣớc chuyển m. Thao tác biến đổi này đƣợc lặp cho đến khi hội tụ về một lời
giải tốt. Lời giải này là lời giải cận tối ƣu, mà trong một số bài toán thực tế không
sai biệt gì nhiều với lời giải tối ƣu. Tìm kiếm cục bộ thƣờng đƣợc sử dụng cho
những bài toán tối ƣu hóa tổ hợp hoặc tối ƣu hóa rời rạc, tức là những bài toán trong
đó cần tìm trạng thái tối ƣu hoặc tổ hợp tối ƣu trong không gian rời rạc các trạng
thái, và không quan tâm tới đƣờng đi dẫn tới trạng thái đó.
(ii) Phƣơng pháp dùng thuật giải mô phỏng luyện kim (simulated annealing):
là một kỹ thuật tìm kiếm ngẫu nhiên mà tỏ ra rất hữu kiệu cho các bài toán tối ƣu
hóa quy mô lớn. Trong kỹ thuật này, ta sử dụng tham số nhiệt độ để điều khiển tốc
độ hội tụ trong giải thuật. Khi khởi tạo tham số nhiệt cho ở mức cao và nhiệt độ sẽ
giảm dần trong quá trình tìm kiếm lời giải, tại những mức nhiệt độ cao, các bƣớc
chuyển đƣợc chấp nhận một cách ngẫu nhiên (bất luận là bƣớc chuyển có cải thiện
đƣợc hàm chi phí của lời giải hay không), khi nhiệt độ đƣợc giảm xuống thì xác
suất để chấp nhận một lời giải có cải thiện sẽ đƣợc tăng lên và xác suất chấp nhận
một lời giải không cải thiện đƣợc giảm xuống.
(iii) Phƣơng pháp tìm kiếm Tabu: đƣợc đề xuất bởi Glover năm 1986, là

phƣơng pháp dò tìm trong không gian với lời giải bằng cách di chuyển từ một lời
giải s tại lƣợt lặp t về một lời giải tốt nhất s’ trong tập con N* của miền lân cận
N(s). Vì s’ không nhất thiết cải thiện chi phí của s, một cơ chế đƣợc đặt ra để ngăn
chặn quá trình khỏi vòng lặp trên một chuỗi các lời giải. Một cách để tránh sự lặp
vòng là cấm quá trình tìm kiếm quay về những lời giải đã gặp rồi nhƣng làm nhƣ
vậy đòi hỏi phải lƣu trữ khá nhiều thông tin. Nhƣ chúng ta đã biết, trong thuật toán
―vét cạn‖ (tìm kiếm theo bề rộng hoặc theo độ sâu), về mặt nguyên tắc các phƣơng
pháp tìm đƣợc nghiệm của bài toán nếu bài toán có nghiệm, song trên thực tế bài
toán NP-khó không thể áp dụng đƣợc phƣơng pháp này, vì ta phải phát triển một
6


không gian trạng thái rất lớn, trƣớc khi tới đƣợc trạng thái đích, do những hạn chế
về mặt thời gian tính toán và dung lƣợng bộ nhớ, không cho phép ta làm đƣợc điều
đó.
(iv) Phƣơng pháp thuật giải leo đồi (Hill climbing): là tên chung để chỉ một
họ các thuật toán. Thuật toán thực hiện bằng cách tạo ra hàng xóm cho các trạng
thái hiện thời và di chuyển sang hàng xóm có hàm mục tiêu tốt hơn, tức là di
chuyển lên cao đối với trƣờng hợp cần cực đại hóa hàm mục tiêu. Thuật toán dừng
lại khi đạt tới một đỉnh của đồ thị hàm mục tiêu, tƣơng ứng với trạng thái không có
hàng xóm nào tốt hơn. Đỉnh này có thể là đỉnh cao nhất, hoặc cũng có thể là đỉnh
thấp hơn (hình). Trong trƣờng hợp thứ nhất, thuật toán tìm đƣợc giá trị cực trị, trong
trƣờng hợp thứ 2 thuật toán chỉ tìm đƣợc cực trị địa phƣơng. Thuật toán leo đồi
không lƣu lại những trạng thái đã qua, đồng thời không nhìn xa hơn hàng xóm của
trạng thái hiện thời.

Hình 1. 4. Bài toán tìm kiếm cục bộ với không gian trạng thái và hàm mục tiêu

Ngoài những thuật toán kể trên, còn rất nhiều những thuật giải khác nhƣ
thuật giải vét cạn, giải thuật tối ƣu đàn kiến hay giải thuật di truyền (GA) đƣợc

nghiên cứu và trình bày ở phần sau.

7


1.3. Ràng buộc trong bài toán
Bài toán xếp thời khóa biểu tín chỉ là việc phân công giảng viên, thời gian,
phòng học cho mỗi lớp tín chỉ đã dự kiến sao cho thỏa mãn các yêu cầu, ràng buộc
đã đặt ra.
Thông thƣờng, các ràng buộc của bài toán cần thỏa mãn đƣợc chia thành hai
loại: ràng buộc cứng và ràng buộc mềm. Những ràng buộc cứng phải chắc chắn
đƣợc đáp ứng và thỏa mãn. Những ràng buộc cứng này bao gồm những yêu cầu sau
đây:
- (H1) Không đƣợc phép phân bổ một tài nguyên (giảng viên, phòng học)
cho các sự kiện khác nhau (lớp tín chỉ) trong cùng một thời điểm.
Ví dụ:
Một giáo viên không thể dạy hai lớp môn cùng một thời điểm.
Hay cùng một thời điểm không thể xếp hai lớp môn vào cùng một phòng học
đƣợc.
- (H2) Các phòng học đƣợc gán cho một sự kiện (lớp tín chỉ) phải nằm trong
bộ nguồn tài nguyên phù hợp dành cho sự kiện đó. Theo đó, một sự kiện đƣợc tổ
chức trong một phòng phải có cơ sở hạ tầng phù hợp để có thể tổ chức sự kiện, ví
dụ lớp học phòng máy, lớp học hội trƣờng, v.v.
Ví dụ:
Chúng ta không thể xếp một lớp học lý thuyết 100 sinh viên vào trong phòng
học thực hành máy tính ngồi đƣợc 35 sinh viên.
- (H3) Một sự kiện (lớp tín chỉ) chỉ đƣợc phân công một giảng viên nếu
ngƣời đó có đủ kiến thức và năng lực đáp ứng cho việc giảng dạy chuyên môn của
lớp đó.
Ví dụ:

Không thể phân một giáo viên chuyên về Tiếng Anh tham gia giảng dạy lớp
môn Lập trình hƣớng đối tƣợng. Vì giáo viên này sẽ không đủ kiến thức chuyên
môn cũng nhƣ năng lực để đảm nhận.
- (H4) Giảng viên chỉ đƣợc phân công giảng dạy trong nhữngkhe thời gian có
mặt làm việc tại trƣờng, và sẽ đƣợc xác lập trƣớc khi xếp lịch.
8


Mặt khác, các ràng buộc mềm với mong muốn thỏa mãn ở mức độ càng cao
càng tốt và đáp ứng cho càng nhiều ràng buộc càng tốt, nhƣng nó không phải là bắt
buộc cần phải đầy đủ cho một giải pháp lịch cụ thể của bài toán. Một số ràng buộc
mềm thƣờng đƣợc xem xét trong các nghiên cứu và triển khai nhƣ sau:
- (S1) Phân công giảng viên vào lớp sao cho chuyên môn giảng dạy ở lớp của
giảng viên là ở mức chuyên gia càng cao càng tốt.
Ví dụ:
Thầy A có chuyên môn và yêu thích dạy môn Lập trình mạng hơn môn lập
trình hƣớng đối tƣợng thì chúng ta nên phân thầy A đảm nhận dạy môn Lập trình
mạng (đƣợc ƣu tiên nhất trong các môn thầy A đăng ký dạy).
- (S2) Ƣu tiên phân công thời gian cho giảng viên đạt đƣợc mong muốn đã
xác định.
Ví dụ:
Cô C có đăng ký dạy vào sáng thứ 5 và cả ngày thứ 6 (rổi sáng thứ 5 và ngày
thứ 6) thì chúng ta nên xếp lịch ƣu tiên cho cô C đƣợc dạy vào sáng thứ 5 và ngày
thứ 6.
- (S3) Đảm bảo yếu tố cân bằng cho các giảng viên khi phân công, tức số lớp
tối thiểu và tối đa đƣợc phân công cần đƣợc ƣu tiên.
Ví dụ:
Không thể xếp lịch cho cô D dạy một 5 môn mà thầy T đƣợc xếp dạy 1 môn,
khi trong 5 môn cô D dạy thầy T cũng đủ trình độ chuyên môn và năng lực và thầy
cũng đã đăng ký dạy (phần chia không công bằng các môn cho giáo viên).

- (S4) Nên ƣu tiên xếp các lớp tín chỉ có ràng buộc tiên quyết về chuyên môn
vào cùng một khe thời gian. Điều này nhằm làm tăng khả năng đăng ký cho nhiều
sinh viên đối với lịch đƣợc xếp.
Ví dụ:
Chúng ta nên xếp ƣu tiên cho môn cơ sở lập trình và môn lập trình hƣớng đối
tƣợng vào cùng ca học, vì môn cơ sở lập trình là điều kiện tiên quyết để học môn
lập trình hƣớng đối tƣợng (để đảm bảo cho sinh viên đăng ký học đƣợc nhiều nhất).

9


- (S5) Khả năng đăng ký học của mỗi sinh viên đối với lịch đƣợc xếp là cao
nhất có thể. Điều này đặc biệt đáp ứng cho việc tổ chức đào tạo tín chỉ, lịch học các
lớp tín chỉ đƣợc sắp xếp trƣớc, sau đó sinh viên sẽ đăng ký tham gia học, thay vì
cách xếp lịch theo niên chế là dành cho từng lớp hành chính gồm các sinh viên cố
định.

10


CHƢƠNG 2. KIẾN THỨC CƠ SỞ
2.1. Giải thuật di truyền (GA)
2.1.1. Giới thiệu giải thuật di truyền
Giải thuật di truyền (Gennetic Algorithims – GA) là một kỹ thuật trong tính
toán mềm giúp giải quyết bài toán bằng cách mô phỏng sự tiến hóa tự nhiên của con
ngƣời hay của sinh vật nói chung trong điều kiện quy định sẵn của môi trƣờng.
Giải thuật di truyền cũng nhƣ các giải thuật tiến hóa nói chung hình thành
dựa trên quan niệm cho rằng quá trình tiến hóa tự nhiên là quá trình hoàn hảo nhất,
hợp lý nhất và tự nó đã mang tính tối ƣu. Quá trình tiến hóa thể hiện tính tối ƣu ở
chỗ, thế hệ sau bao giờ cũng tốt hơn (phát triển và hoàn thiện hơn) thế hệ trƣớc.

Tiến hóa đƣợc duy trì nhờ 2 quá trình cơ bản: sinh sản và chọn lọc. Trong quá trình
tiến hóa các thế hệ mới luôn đƣợc sinh ra để bổ sung, thay thế cho thế hệ cũ. Những
cá thể không tốt sẽ bị đào thải. Các cá thể mới sinh ra trong quá trình tiến hóa nhờ
sự lai ghép thế hệ cha mẹ. Một cá thể mới có thể mang những tính trạng của cha mẹ
(di truyền), cũng có thể mang những tính trạng hoàn toàn khác (đột biến).
Giải thuật di truyền thực hiện tiến trình tìm kiếm lời giải tối ƣu theo nhiều
hƣớng bằng cách duy trì một quần thể các lời giải và thúc đẩy sự hình thành và trao
đổi thông tin giữa các hƣớng này. Quần thể trải qua quá trình tiến hóa, ở mỗi thế hệ
lại tái sinh các lời giải tƣơng đối ―tốt‖ trong khi các lời giải tƣơng đối ―xấu‖ thì chết
đi. Để phân biệt các lời giải khác nhau (tốt – xấu) thì ta sử dụng hàm mục tiêu (đề
cập ở phần sau) để đánh giá.
Giải thuật di truyền (GA) là một trong những mô hình tính toán phổ biến và
thành công trong lĩnh vực tính toán mềm 0. Cùng với các kỹ thuật tính toán thông
minh khác nhƣ tính toán mờ (fuzzy computing), mạng Nơ-ron (neural networks), hệ
đa tác tử (multiagent systems), trí tuệ bầy đàn (swarm intelligence), giải thuật di
truyền ngày càng phát triển, đƣợc áp dụng rộng rãi trong các lĩnh vực của cuộc
sống. Có thể nói, GA đã bƣớc đầu đƣợc áp dụng thành công trong các trƣờng hợp,
mà việc mô tả toán học cho bài toán gặp rất nhiều khó khăn. Ví dụ: các hệ thống
phức tạp (complex systems) với các hàm mục tiêu ẩn và các mối ràng buộc phức

11


tạp, các bài toán thiết kế với các hàm mục tiêu quá phức tạp không tuyến tính, hay
các bài toán lập kế hoạch/lập lịch với không gian tìm kiếm NP-khó (NP-hard).
Tƣơng tự thuật toán GA, thuật toán SA[2] là những phƣơng pháp thích nghi
để tìm kiếm tối ƣu. Trong khi GA là một thuật toán tìm kiếm ngẫu nhiên chủ yếu
dựa trên hai phép toán gen là lai ghép và đột biến thì SA đƣợc xem nhƣ một thuật
toán áp dụng kỹ thuật ―leo đồi‖ theo xác suất. Đã có nhiều tác giả nghiên cứu áp
dụng GA và SA để giải bài toán tối ƣu. Tuy nhiên, mỗi thuật toán đều có những thế

mạnh riêng và một số tác giả đã kết hợp hai thuật toán trên làm tăng sức mạnh tìm
kiếm. Trong nhiều nghiên cứu, các tác giả đã nhúng tham số nhiệt độ T mô phỏng
nhiệt tôi luyện trong SA để điều khiển các phép toán gen của GA. Trong đó, các
tham số xác suất để chọn lọc, lai ghép và đột biến đƣợc thay đổi qua từng thế hệ di
truyền, chúng đƣợc tính dựa trên tham số nhiệt độ của thế hệ hiện tại. Tham số nhiệt
ban đầu đƣợc tính dựa trên số thế hệ tiến hóa (thƣờng khá lớn đảm bảo tính đa dạng
của quần thể), sau mỗi thế hệ tham số nhiệt giảm dần để đảm bảo tính hội tụ và tính
ổn định. Kết hợp này phù hợp với các chiến lƣợc thay đổi tham số trong GA, làm
tăng tốc độ hội tụ tìm kiếm và hiệu quả của thuật toán, ta gọi đây là thuật toán di
truyền lai (SGA).
Theo 0, giải thuật di truyền (hay giải thuật tiến hóa nói chung) là một trong
những phát triển quan trọng của những nhà nghiên cứu về tính toán ứng dụng cuối
thế kỷ trƣớc trong việc giải xấp xỉ các bài toán tối ƣu toàn cục. Việc khai thác
nguyên lí tiến hóa nhƣ là một định hƣớng heuristics đã giúp cho giải thuật di truyền
giải quyết hiệu quả các bài toán tối ƣu (với các lời giải chấp nhận đƣợc) mà không
cần sử dụng các điều kiện truyền thống (liên tục hay khả vi) nhƣ là điều kiện tiên
quyết. Một trong những đặc tính quan trọng của giải thuật di truyền là làm việc theo
quần thể các giải pháp. Việc tìm kiếm bây giờ đƣợc thực hiện song song trên nhiều
điểm (multipoints). Tuy nhiên, đây không phải là thuật toán tìm kiếm đa điểm đơn
thuần vì các điểm có tƣơng tác với nhau theo nguyên lí tiến hóa tự nhiên. Trong ngữ
cảnh sử dụng giải thuật di truyền, ngƣời ta có thể dùng khái niệm ―cá thể‖ tƣơng
đƣơng với khái niệm ―giải pháp‖.
Sơ đồ tổng thể của thuật toán di truyền nói chung đƣợc mô tả nhƣ sau:
12


Begin

Nhận các tham số đầu vào của bài toán


Khởi tạo quần thể ban đầu

Tính giá trị thích nghi

Điều kiện dừng

Đ

Lựa chọn giải pháp tốt nhất

S

Chọn lọc

Lai ghép

Đột biến

Tái tạo

End

Hình 2. 1. Sơ đồ giải thuật di truyền

Các bƣớc của giải thuật di truyền trong sơ đồ trên có thể đƣợc mô tả chi tiết
nhƣ sau:
• Bƣớc 1: Nhập các tham số đầu vào của bài toán, thiết lập các tham số cho
thuật toán từ các tham số đầu vào.
• Bƣớc 2: Xuất phát với thế hệ khởi đầu t=0; Khởi tạo quần thể xuất phát
P(t) = {x1, x2,… ,xN} ngẫu nhiên, với N là số lƣợng cá thể tại mỗi thế hệ (độ lớn của

quần thể).
• Bƣớc 3: Tính giá trị thích nghi hay còn gọi là hàm mục tiêu (fitness) của
các cá thể trong P(t).

13


• Bƣớc 4: Kiểm tra điều kiện dừng thuật toán, có thể đạt đƣợc cá thể tốt nhất
cần tìm kiếm hoặc đạt đến thế cuối cùng đƣợc thiết lập. Trƣờng hợp chƣa đạt, thuật
toán chuyển sang bƣớc tiếp ở sau để thực hiện tiến hóa.
• Bƣớc 5: Chọn lọc các cá thể từ quần thể hiện tại để tạo bể lai ghép MP =
se{P(t)} gồm các thể đóng vai trò là bố mẹ, với se là toán tử lựa chọn.
• Bƣớc 6: Thực hiện lại ghép để tạo quần thể P’(t) = cr{MP} gồm các thể
con, với cr là toán tử lai ghép.
• Bƣớc 7: Thực hiện đột biến các cá thể trong P’(t) để tạo quần thể mới P‖(t)
= mu{P’(t)} gồm các cá thể con sau khi áp dụng phép đột biến, với mu là toán tử
đột biến.
• Bƣớc 8: Xác định P(t+1) = P‖(t), đặt t = t+1 và quay lại Bƣớc 3.

2.1.2. Các vấn đề trong giải thuật di truyền
2.1.2.1. Biểu diễn cá thể
Biểu diễn cá thể hay còn gọi là mã hóa cá thể (chromosome encoding).
Trong giải thuật di truyền cách mã hóa cá thể rất quan trọng, nó không chỉ quyết
định đến hiệu quả của thuật toán mà còn ảnh hƣớng đến việc áp dụng các toán tử
tiến hóa trong các bƣớc lai ghép và đột biến. Với đặc trƣng của mỗi bài toán khác
nhau chúng ta có thể có nhiều cách biểu diễn cá thể.
Một trong những cách biểu diễn truyền thống của GA là biểu diễn nhị phân.
Với phép biểu diễn này, lời giải cho bài toán đƣợc biểu diễn nhƣ là một véc-tơ gồm
các chữ số nhị phân, trong đó chia thành các đoạn gọi là nhiễm sắc thể
(chromosome). Mỗi nhiễm sắc thể bao gồm nhiều gen, trong đó một gen đại diện

cho một tham số thành phần của lời giải. Cách biểu diễn thứ hai cũng thƣờng dùng
là biểu diễn dạng giá trị (số nguyên hoặc số thực hoặc các ký tự). Với phép biểu
diễn này, các toán tử tiến hóa sẽ thực hiện trực tiếp trên các giá trị số (genes) của cá
thể. Phƣơng pháp biểu diễn thứ ba là mã hóa hoán vị, trong đó lời giải của bài toán
là một hoán vị các tham số biểu diễn. Cuối cùng là phƣơng pháp mã hóa dƣới dạng
cây dựa trên lời định đang giải của bài toán cần giải quyết. Chi tiết các phƣơng pháp
mã hóa đƣợc mô tả nhƣ sau [6].
a) Mã hóa nhị phân
14


Đây là hình thức phổ biến nhất của mã hóa trong đó các giá trị dữ liệu đƣợc
chuyển đổi thành các chuỗi nhị phân. Mã hóa nhị phân cho nhiều nhiễm sắc thể với
một số lƣợng nhỏ của các alen. Một nhiễm sắc thể đƣợc biểu diễn trong bảng mã
nhị phân nhƣ thể hiện trong hình 2.2.

Hình 2. 2. Minh họa kiểu mã hóa nhị phân của hai chuỗi gen

b) Mã hóa hoán vị
Mã hóa hoán vị là thích hợp nhất cho bài toán sắp thứ tự hoặc xếp hàng.
Trong đó, bài toán ngƣời đi du lịch là một bài toán thách thức nổi tiếng trong tối ƣu
hóa, nơi mà phƣơng pháp mã hóa hoán vị đƣợc sử dụng nếu áp dụng giải thuật di
truyền. Trong mã hóa hoán vị, mỗi nhiễm sắc thể là một chuỗi biểu diễn một hoán
vị tƣơng ứng lời giải bài toán nhƣ thể hiện trong hình 2.3.

Hình 2. 3. Minh họa phƣơng pháp mã hóa hoán vị

c) Mã hóa giá trị
Mã hóa trị có thể đƣợc cấu thành từ dạng số (nguyên hoặc thực), các ký tự
tạo nên một bản thể đối tƣợng phức tạp. Mã hóa giá trị là kỹ thuật trong đó mỗi

nhiễm sắc thể là một chuỗi các giá trị và kiểu mã hóa này đƣợc sử dụng một khi
nhiều các giá trị phức hợp đƣợc yêu cầu. Nó có thể đƣợc thể hiện nhƣ thể hiện trong
hình 2.4.

15


Hình 2. 4.Minh họa phƣơng pháp mã hóa giá trị

d) Mã hóa dạng cây
Là phƣơng pháp phù hợp cho việc tiến hóa các biểu thức hoặc tiến hóa các
chƣơng trình, chẳng hạn lập trình tiến hóa. Trong mã hóa dạng cây, mỗi nhiễm sắc
thể là một cây các đối tƣợng, hàm hoặc các lệnh trong ngôn ngữ lập trình.
Ngôn ngữ lập trình LISP (Locator/identifier separation protocol) đƣợc sử
dụng cho kiểu mã hóa này. Chƣơng trình LISP có thể đƣợc biểu diễn trong một cấu
trúc cây với hai phép lai ghép và đột biến. Trong mã hóa dạng cây, các nhiễm sắc
thể đƣợc biểu diễn nhƣ thể hiện trong hình 2.5.

Hình 2. 5. Minh họa phƣơng pháp mã hóa dạng cây

Một điều đáng quan tâm là các phƣơng pháp mã hóa ở trên có thể biểu diễn
trực tiếp lời giải của bài toán, tức là các tham số trong lời giải đƣợc thể hiện rõ
trong cách mã hóa. Tuy nhiên, trong một số bài toán hoặc các trƣờng hợp đặc biệt,
lời giải bài toán khó để biểu diễn trực tiếp và do đó cần phải áp dụng việc biểu diễn
gián tiếp lời giải cho cá thể của GA. Theo cách này, chúng ta cần một công cụ để
sinh đầy đủ lời giải của bài toán từ cá thể đƣợc mã hóa và thƣờng đƣợc xây dựng
bởi một đơn vị hàm hoặc đơn vị chƣơng trình.

16



×