Tải bản đầy đủ
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

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

Tải bản đầy đủ

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

g. Quản lý chương trình đào tạo

Hình 21: Quản lý chương trình đào tạo

Quản lý chương trình đào tạo, người quản trị nhập tên chương trình,
chuyên ngành, khóa học.
h. Cập nhật chương trình đào tạo khung

Hình 22: Cập nhật chương trình đào tạo khung

49