Khởi tạo quần thể

Một phần của tài liệu Nghiên cứu thuật toán di truyền cho bài toán xếp Thời khóa biểu THPT (Trang 38 - 41)

3.1. Phát biểu bài toán

3.1.3. Khởi tạo quần thể

Trước khi tạo quần thể ban đầu trong phần này, chúng ta phải chuẩn bị sẵn về dữ liệu cho quá trình thực thi, từ lúc khởi tạo đến khi cho ra kết quả, bao gồm đầy đủ thông tin của một lớp đang được chọn. Tất cả như sau:

Các ràng buộc lớp, giáo viên được phân công dạy.

Các môn học.

Tính toán số tiết học tương ứng các môn.

Chọn qui định đọc và ghi nhận nhiễm sắc thể.

...

Giống như cá thể được mô tả ở trên, hàng loạt các cá thể được tạo ra và được xem như quần thể ban đầu trong mô hình thuật toán di truyền của phần xếp lịch lớp. Sau khi quần thể có đủ số lượng, bước tiếp theo là đánh giá quần thể, kiểm tra xem độ thích nghi và xác định cá thể tốt nhất hiện đang tồn tại của quần thể.

Quần thể được tạo thành bằng cách thêm các nhiễm sắc thể sau khi đã khởi tạo các giá trị ban đầu và đã được phân lịch ngẫu nhiên các môn học và các giáo viên dạy môn học đó.

Thủ tục tạo ngẫu nhiên 1 nhiễm sắc thể:

Ta lần lượt tạo ngẫu nhiên thời khóa biểu cho một lớp, tương ứng với 1 nhát cắt.

Trước tiên, tạo một mẫu gồm tất cả các tiết học của một lớp, kể cả tiết sinh hoạt. Sau đó đánh dấu các tiết không học theo Bảng phân bổ thời gian để không phân các tiết học thực sự vào đó (thường là các tiết cuối buổi).

Ta sẽ phân các tiết cần cố định trước, chẳng hạn tiết Chào cờ, tiết Sinh

hoạt, các tiết dạy theo yêu cầu của một số giáo viên, đánh dấu các tiết đó. Sau đó, phân các tiết không cố định còn lại.

Thực hiện một hoán vị ngẫu nhiên trên mẫu này, trừ ra các tiết cố định và đặt vào một nhát cắt tại các tiết chưa phân, ta có thời khóa biểu của một lớp.

Thực hiện thủ tục này cho tất cả các nhát cắt, ta được quần thể ban đầu gồm N cá thể, và hiển nhiên còn vi phạm rất nhiều ràng buộc.

Ví dụ: xét lớp 10A1 với danh sách các tiết học như sau:

Chào cờ Toán Lý Hóa Sinh Tin C.nghệ

1 4 3 3 2 2 1

Văn Sử Địa C.dân Anh Thể dục Q.phòng S.hoạt

3 1 2 1 3 2 1 1

Bảng 3.5. Ví dụ về danh sách các tiết học Lịch phân phối các ngày trong tuần của khối lớp 10 là:

Thứ hai Thứ ba Thứ tư Thứ năm Thứ sáu Thứ bảy

5 5 5 5 5 5

Bảng 3.6. Ví dụ về phân phối các tiết học

Ta phân các tiết cố định trước (đánh dấu nền xám), chẳng hạn:

Thứ hai Thứ ba Thứ tư Thứ năm Thứ sáu Thứ bảy

Chào cờ

Sinh hoạt Bảng 3.7. Ví dụ về các tiết cố định

Tiếp tục phân tuần tự các tiết không cố định còn lại trong danh sách ngẫu nhiên vào các tiết chưa phân, ta được:

Thứ hai Thứ ba Thứ tư Thứ năm Thứ sáu Thứ bảy

Chào cờ Hoá Lý Toán Toán Tin

Toán Văn Thể Thể Hoá Hoá

Toán Sinh Địa NNgữ Địa QP

NNgữ Lý Sử Văn Sinh NNgữ

Lý CNghệ Tin Văn GDCD SHL

Bảng 3.8. Ví dụ về thời khóa biểu 1 lớp

Với cách biểu diễn nhiễm sắc thể và thủ tục khởi tạo quần thể ban đầu như trên, giải thuật thỏa mãn được một số ràng buộc cứng sau:

- Mỗi lớp có đủ số môn học và số tiết trong tuần theo phân bố chương trình – 30 tiết.

- Mỗi tiết có đúng một môn học ở mỗi lớp.

- Mỗi giáo viên có đủ số tiết ở mỗi lớp.

- Phân được các tiết cố định và cố định được chúng trong suốt quá trình tiến hóa.

- Các ràng buộc còn lại sẽ được xử lý bằng cách đánh giá độ thích nghi.

Ưu điểm của cách biểu diễn này là:

- Cấu trúc nhiễm sắc thể giống với một thời khóa biểu thực tế.

- Mỗi nhiễm sắc thể mã hóa cho toàn bộ thời khóa biểu của một ca học hoặc toàn bộ trường (tùy theo toàn trường học một ca hoặc hai ca)

Nhằm tránh những xử lý không cần thiết và khử các vi phạm như học đủ số tiết trong một tuần, các tiết học phải liên tục. Lúc tạo mới, Nhiễm sắc thể sẽ quy định những tiết được học và những tiết không được học trong một tuần theo tùy chọn trước. Bảng phân bổ thời gian được học trong một tuần cụ thể cho từng khối của Trường THPT Quỳ châu nh sau.ư sau.

Buổi Tiết Thứ 2 Thứ 3 Thứ 4 Thứ 5 Thứ 6 Thứ 7

Sáng 1 C.Cờ Học Học Học Học Học

2 Học Học Học Học Học Học

3 Học Học Học Học Học Học

4 Học Học Học Học Học Học

5 Học Học Học Học Học SH Lớp

Chiều 1 Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ 2 Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ 3 Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ 4 Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ 5 Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ Nghỉ Bảng 3.9. Bảng phân bổ thời gian học trong thời khóa biểu

For j = 0 To n

'Tạo mảng số tự nhiên d = Taodaysokhonglap(30) ii = 0

For tg = 0 To tonglop - 1 For kl = 0 To 29

c(ii) = tg * 30 + d(kl) - 1 ii = ii + 1

Next

d = Taodaysokhonglap(30) Next

'Đưa dãy vừa tạo vào mảng Quần thể TKB ban đầu For ii = 0 To tongtiet - 1

tTKB(j, ii) = c(ii) Next

Next

Một phần của tài liệu Nghiên cứu thuật toán di truyền cho bài toán xếp Thời khóa biểu THPT (Trang 38 - 41)

Tải bản đầy đủ (DOC)

(64 trang)
w