Tải bản đầy đủ
Chương 3. XÂY DỰNG BÀI TOÁN THỜI KHOÁ BIỂU DỰA TRÊN GIẢI THUẬT DI TRUYỀN

Chương 3. XÂY DỰNG BÀI TOÁN THỜI KHOÁ BIỂU DỰA TRÊN GIẢI THUẬT DI TRUYỀN

Tải bản đầy đủ

dụng để đưa ra danh sách môn học của từng lớp. Từ danh sách các môn học, nhân
viên phòng Đào tạo trích ra các môn học cho mỗi bộ môn và số trình phải dạy và
gửi về các khoa để các thầy đăng ký hay phân công giảng viên.
Phân công giảng dạy (lớp – môn – thầy): Sau khi nhận danh sách các thầy
đăng ký giảng dạy từ các bộ môn, phòng Đào tạo tiến hành lập danh sách các thầy
tương ứng với mỗi môn học của lớp.
Lên danh sách các phòng học: Dựa vào danh sách các phòng học và quy mô
của từng lớp do phòng Quản trị đời sống gửi lại, nhân viên phòng Đào tạo lên danh
sách các giảng đường có thể đưa vào sử dụng.
Lập thời khóa biểu: Từ danh sách các lớp và các môn học tương ứng, danh sách
các giảng viên đăng ký và ý kiến của lãnh đạo khoa về chương trình đào tạo đưa ra,
nhân viên phòng Đào tạo lập thời khóa biểu dự kiến và gửi đi các đơn vị liên quan.
3.2 Áp dụng giải thuật di truyền vào bài toán lập thời khóa biểu
3.2.1 Các toán tử di truyền đối với bài toán hỗ trợ xếp thời khóa biểu
3.2.1.1 Mã hóa cá thể
Phương pháp mã hóa cá thể (tức Thời Khóa Biểu) sử dụng trong chương trình
được trình bày như sau: .
Các Môn được sắp xếp theo một thứ tự nhất định, thứ tự đó không thay đổi ở
mỗi cá thể.
Gọi tổng số Môn học là n, mỗi Môn học có đầy đủ các thông tin: Thứ, Tiết
học, Phòng học, Giảng viên. Mỗi môn là 1 gen tương ứng với 1 hàng trong ma trận
cá thể, một cá thể (Nhiễm sắc thể) có n gen tương ứng với n Môn học.
Gen 1

Môn 1

Lớp

Phòng học

Thứ

Tiết

Gen 2

Môn 2

Lớp

Phòng học

Thứ

Tiết

...

...

...

Gen n

Môn n

Lớp

...
Phòng học

Mỗi cá thể là một Thời Khóa Biểu của 1 kỳ học.

38

...
Thứ

...
Tiết

Hình 12: Ma trận cá thể
3.2.1.2 Khởi tạo quần thể
Khởi tạo lần lượt từng Môn – gen trong ma trận cá thể theo phương pháp
ngẫu nhiên nhưng phải kiểm tra ràng buộc.
Khi khởi tạo xong một gen trong ma trận cá thể ta sẽ kiểm tra tất cả các ràng
buộc 1 lần, nếu các ràng buộc đều thỏa mãn thì sẽ khởi tạo tiếp tới khi được cá thể
hoàn chỉnh, ngược lại bị vi phạm sẽ sinh lại từ bước đó.
a/ Kiểm tra ràng buộc
Kiểm tra ràng buộc liên quan tới phòng:
Tạo bảng kiểm tra ràng buộc về Phòng

39

Bảng 10: Bảng kiểm tra ràng buộc về phòng
Một phòng sẽ được xét theo từng thứ và 12 tiết trong thứ đó.
Trường tiết có 12 bit nhị phân tương ứng với 12 tiết trong ngày.
Khi 1 Môn học được sinh ra ta sẽ có các thông số: Thứ, Phòng, Tiết.
Từ đó tìm tới các trường tương ứng trong bảng trên để cập nhật, nếu tiết nào
đã được học ta cập nhật 2 bit tương ứng với tiết đó thành 1.
Tương tự sinh Môn học tiếp theo cập nhật tiếp vào bảng, nếu trong trường
tiết tương ứng với Thứ, Phòng của môn đó mà bị xung đột, tức các bit đã được cập
nhật là 1 rồi thì sẽ sinh lại Môn học đó.
Kiểm tra ràng buộc liên quan tới giảng viên
Tạo bảng kiểm tra ràng buộc về Giảng Viên:

Bảng 11: Bảng kiểm tra ràng buộc về giảng viên
Một Giảng Viên sẽ được xét theo từng thứ và 12 tiết trong thứ đó.
Trường tiết có 12 bit nhị phân tương ứng với 12 tiết trong ngày.
Khi sinh ra 1 Môn học được sinh ra ta sẽ có các thông số: Thứ, Giảng Viên, Tiết.
Từ đó tìm tới các trường tương ứng trong bảng trên để cập nhật, nếu tiết nào
đã được học ta cập nhật 2 bit tương ứng với tiết đó thành 1.
Tương tự sinh Môn học tiếp theo cập nhật tiếp vào bảng, nếu trong trường
tiết tương ứng với Thứ, Phòng của môn đó mà bị xung đột, tức các bit đã được cập
nhật là 1 rồi thì sẽ sinh lại Môn học đó.

40

Kiểm tra ràng buộc liên quan tới Lớp sinh viên
Tạo bảng kiểm tra ràng buộc về Lớp sinh viên:

Bảng 12: Bảng kiểm tra ràng buộc về lớp sinh viên
Một Lớp sinh viên sẽ được xét theo từng thứ và 12 tiết trong thứ đó.
Trường tiết có 12 bit nhị phân tương ứng với 12 tiết trong ngày.
Khi một Môn học được sinh ra ta sẽ có các thông số: Thứ, Lớp sinh viên, Tiết.
Từ đó tìm tới các trường tương ứng trong bảng trên để cập nhật, nếu tiết nào
đã được học ta cập nhật hai bit tương ứng với tiết đó thành 1.
Tương tự sinh Môn học tiếp theo cập nhật tiếp vào bảng, nếu trong trường
tiết tương ứng với Thứ, Phòng của môn đó mà bị xung đột, tức các bit đã được cập
nhật là 1 rồi thì sẽ sinh lại Môn học đó.
3.2.1.3 Xếp hạng đồng thời tính giá trị mục tiêu các cá thể trong quần thể
Mỗi cá thể trong quần thể luôn được đặc trưng bởi thông số: số tiết trống của
lớp sinh viên, và số phòng sử dụng.
Sau khi khởi tạo quần thể bao gồm các cá thể thỏa mãn ràng buộc, mỗi cá thể
có một độ thích nghi nhất định trong quần thể. Công thức để tính độ thích nghi đó
như sau:

F=a×

+ b×

Trong đó: a là hệ số thời gian trống của lớp sinh viên
b là hệ số của phòng sử dụng
Mỗi cá thể có độ thích nghi là Fi, độ thích nghi của cá thể nào càng thấp thì
xếp hạng càng cao. Hạng của mỗi cá thể sẽ được đánh theo thứ tự từ 1 tới N (1 là

41

cao nhất, N là thấp nhất, N là số cá thể trong quần thể). Tương ứng với sự tăng dần
của độ thích nghi. Độ thích nghi Fi cũng chính là hàm tính giá trị mục tiêu của mỗi
cá thể, mục đích của giải thuật là tìm ra cá thể có giá trị F nhỏ nhất đồng nghĩa với
việc tối ưu đồng thời đươc ba mục tiêu: tiết trống của lớp sinh viên ít nhất và số
phòng sử dụng là ít nhất.
3.2.1.4 Phương pháp chọn lọc
Chọn 30 cá thể có hạng cao nhất từ quần thể hiện tại để làm cha mẹ mang đi
lai ghép.
3.2.1.5 Toán tử lai ghép
a/ Lai ghép 1 điểm cắt
Ghép tất cả các cá thể trong 30 cá thể xếp hạng cao nhất thành cặp đem đi lai
ghép, điểm cắt được chọn ngẫu nhiên trong các cặp lai đó.

Hình 13: Lai ghép 1 điểm cắt
Sau bước lai ghép ra cá thể mới, sẽ thực hiện kiểm tra các ràng buộc cho cá
thể này. Nếu cá thể mới không thỏa mãn các ràng buộc sẽ được bỏ đi khỏi quần thể.
b/ Lai ghép nhiều điểm cắt
Tương tự như lai ghép một điểm cắt, chỉ khác điểm cắt trên hai cá thể cha mẹ
không phải là một mà là hai điểm, hai điểm này sẽ được chọn ngẫu nhiên.
3.2.1.6 Toán tử đột biến
Chọn ra 10 cá thể có hạng cao nhất trong 30 cá thể đã chọn ở trên kiểm tra
lớp sinh viên trong từng buổi của từng cá thể, tiến hành dồn tiết sao cho số tiết trống
đó là nhỏ nhất.

42

Sau bước đột biến ra cá thể mới, sẽ thực hiện kiểm tra các ràng buộc cho cá
thể này. Nếu cá thể mới không thỏa mãn các ràng buộc sẽ được bỏ đi khỏi quần thể.
3.2.1.7 Đấu tranh sinh tồn
Sau khi lai ghép và đột biến trên quần thể với N cá thể, ta sinh ra được p cá
thể con mới. Từ tập N + p cá thể, ta chọn N cá thể tốt nhất đưa vào quần thể mới để
cho thế hệ tiếp theo.
3.2.1.8 Sơ đồ giải thuật di truyền
Khởi tạo quần thể

Thực hiện các phép
lai ghép, đột biến

Lặp lại qua N
thế hệ

Thế hệ tiếp theo

Cá thể tốt nhất

Lời giải cho bài toán

Hình 14: Sơ đồ giải thuật di truyền đề xuất

3.2.2 Thiết kế cơ sở dữ liệu
- Tòa nhà
STT

Tên thuộc tính

Kiểu dữ liệu

Ràng
buộc
Primary
key

Diễn giải
Mã để phân biệt giữa
các tòa nhà

1

ID

Interger

2

TenToaNha

NVarchar (20)

Tên tòa nhà

3

TT

Interger

Thứ tự

43

- Loại phòng
STT

Tên thuộc tính

Kiểu dữ liệu

Ràng
buộc
Primary
key

Diễn giải
Mã để phân biệt giữa
các loại phòng

1

ID

Interger

2

Ten

NVarchar (20)

Tên

3

STT

Interger

Số thứ tự

- Phòng học
STT

Tên thuộc tính

Kiểu dữ liệu

Ràng
buộc
Primary
key

Diễn giải
Mã để phân biệt giữa
các phòng học

1

ID

Interger

2

Nha

NVarchar (20)

Nhà

3

Tang

Interger

Tầng

4

TenPhong

NVarchar (20)

Tên phòng

5

Chua

Interger

Sức chứa

6

LoaiPhong

NVarchar (20)

Loại phòng

7

ThietBi

NVarchar (20)

Thiết bị

8

STT

Interger

Số thứ tự

- Môn học
STT

Tên thuộc tính

Kiểu dữ liệu

Ràng
buộc
Primary
key

Diễn giải
Mã để phân biệt giữa
các môn học

1

ID

Interger

2

TenMonHoc

NVarchar (20)

Tên môn học

3

VietTat

NVarchar (10)

Viết tắt

4

DVHT

Interger

Đơn vị học trình

5

STT

Interger

Số thứ tự

44

- Hình thức bài học
STT

Tên thuộc tính

Kiểu dữ liệu

1

ID

Interger

2

Ten

NVarchar (20)

Ràng
buộc
Primary
key

Diễn giải
Mã để phân biệt giữa
các hình thức bài học
Tên hình thức bài học

- Ngành học
STT

Tên thuộc tính

Kiểu dữ liệu

Ràng
buộc
Primary
key

Diễn giải
Mã để phân biệt giữa
các ngành học

1

ID

Interger

2

VietTat

NVarchar (20)

Tên viết tắt

3

STT

Interger

Số thứ tự

- Lớp học
STT

Tên thuộc tính

Kiểu dữ liệu

Ràng
buộc
Primary
key

Diễn giải
Để phân biệt giữa các
lớp

1

TenLop

NVarchar (20)

2

Nam

Interger

Năm

3

Nganh

NVarchar (20)

Ngành

4

Khoa

Interger

Khóa

5

VietTat

NVarchar (20)

Viết tắt

6

SiSo

Interger

Sĩ số

45

Giao diện chương trình
a. Nhập hình thức bài học.

Hình 15: Nhập danh mục quản lý hình thức bài học
Trong “Danh mục” chọn “Hình thức bài học” chúng ta nhập Mã, tên hình
thức như: Bài tập, kiểm tra, lý thuyết, ôn, thi…
b. Danh mục quản lý phòng học

Hình 16: Quản lý danh mục loại phòng học
Khi chọn trong “Danh mục” là Loại phòng: Nhập thông tin Phòng ở giảng
đường, phòng thực hành hay ngoài bãi tập....

46

c. Danh mục Lớp học

Hình 17: Quản lý danh mục lớp học
Sau khi chọn danh mục “Lớp học” ở khung bên trái thì yêu cầu nhập năm
học, Ngành, Khóa, tên lớp, viết tắt tên lớp
d. Danh mục Môn học

Hình 18: Quản lý danh mục môn học
Khi chọn trong Danh mục là Môn học người quản trị nhập thông tin môn học
như: Tên môn, Viết tắt, số tín chỉ, đã tốt nghiệp hay chưa.

47

e. Danh mục Phòng học

Hình 19: Quản lý danh mục phòng học
Khi danh mục Phòng học được chọn, người sử dụng nhập thông tin: Tòa nhà,
tên phòng, sức chứa, loại phòng.
f. Danh mục tòa nhà

Hình 20: Quản lý danh mục tòa nhà
Danh mục Tòa nhà được chọn, người dùng nhập Mã, tên, số thứ tự của tòa nhà

48