Đã từ lâu, việc lập thời khóa biểu cho các trường học đã được tổng quát hóa thành bài toán, các nhà nghiên cứu đã và đang tìm các phương pháp giả nó bằng các công cụ, thuật toán tin học. Các bài toán xếp thời khóa biểu rất phong phú và đa dạng bởi những ràng buộc và yêu cầu đặc trưng của từng trường học, thậm chí từng môn học. Bởi vậy lời giải của bài toán xếp thời khóa biểu thường là những giải pháp chấp nhận được, hay nói cách khác bài toán xếp thời khóa biểu là một bài toán tối ưu. Trong gần ba thập niên qua, thuật toán di truyền và các cải tiến phát triển của nó gọi chung là thuật toán tiến hóa đã thực sự tạo ra các kết quả rất khả quan khi áp dụng giải quyết các bài toán tối ưu. Thuật toán di truyền mô phỏng sự tiến hóa tự nhiên của sinh học với quan niệm sự tiến hóa tự nhiên của sinh học là một quá trình tối ưu. . Thuật toán trên tỏ ra rất hiệu quả trong việc áp dụng giải quyết các bài toán tối ưu trong thực tế, tiêu biểu là bài toán lập thời khóa biểu trường học, là một bài toán thú vị và có tính thực tiễn cao. Ở Việt Nam đó có một vài phần mềm lập thời khóa biểu khá tốt, nhưng chưa đáp ứng hết các yêu cầu thực tế cũng như cách tổ chức giảng dạy của từng trường. Ở Quỳ Châu, chưa có phần mềm lập thời khóa biểu riêng đáp ứng các điều kiện cụ thể của miền núi. Xuất phát từ những vấn đề trên, đề tài “Nghiên cứu thuật toán di truyền cho bài toán xếp thời khóa biểu trường Trung học phổ thông” được tôi lựa chọn làm khóa luận tốt nghiệp. Khóa luận tập trung nghiên cứu về thuật toán di truyền và đồng thời giải quyết bài toán thời khóa biểu về mặt lý thuyết lẫn xây dựng phần mềm, xem như một thử nghiệm đầu tiên. Do khả năng và thời gian hạn chế, tôi chỉ mới hoàn thành phần mềm ở mức cơ bản nhất, chỉ tạm sử dụng nội bộ trong trường nơi tôi công tác. Hy vọng trong thời gian tới, tôi sẽ bổ sung thêm chức năng cho phần mềm và hoàn chỉnh thành sản phẩm sử dụng được trong ngành giáo dục nói chung.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH
PHAN VĂN THẾ
ĐỀ CƯƠNG LUẬN VĂN THẠC SỸ
Chuyên ngành: CÔNG NGHỆ THÔNG TIN
Mã ngành: 60.48.02.01
NGHIÊN CỨU THUẬT TOÁN DI TRUYỀN
CHO BÀI TOÁN XẾP THỜI KHÓA BIỂU
TRƯỜNG THPT
Người hướng dẫn: TS.VŨ CHÍ CƯỜNG
Trang 2Vinh, tháng 9/2017
2
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
……….………
……….………
……….………
……….………
……….………
……….………
……….………
………
……… ………
……… ………
………
………
……… ………
……… ………
………
………
……… ………
……… ………
………
………
……… ………
……… ………
………
………
……… ………
……… ………
……… ………
……… ………
……… ………
………
Kết luận: Đồng ý cho bảo vệ Đề cương CHTS đợt tháng 12/2017
Vinh, ngày …… tháng …… năm 2017
GIÁO VIÊN HƯỚNG DẪN
Trang 5NHẬN XÉT CỦA HỘI ĐỒNG XÉT DUYỆT
……….………
……….………
……….………
……….………
………
……… ………
……… ………
………
………
……… ………
……… ………
………
………
……… ………
……… ………
………
………
……… ………
……… ………
………
………
……… ………
……… ………
……… ………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
Kết luận: Đồng ý/ không đồng ý cho tiếp tục triển khai đề tài CHTS để bảo vệ đợt
tháng 5/2018
Vinh, ngày …… tháng …… năm 2017
Trang 7MỤC LỤC
MỞ ĐẦU 9
1 Sự cần thiết của vấn đề nghiên cứu 9
2 Mục tiêu nghiên cứu 10
3 Đối tượng và phạm vi nghiên cứu 10
4 Ý nghĩa khoa học và thực tiễn của đề tài 10
4.1 Ý nghĩa khoa học 10
4.2 Ý nghĩa thực tiễn 10
5 Kết cấu của luận văn (Giới thiệu tên các chương của luận văn) 10
Chương I - GIẢI THUẬT DI TRUYỀN 11
1.1 Tổng quan về thuật toán di truyền 14
1.1.1 Giới thiệu 15
1.1.2 Sự khác biệt của thuật toán di truyền và thuật toán khác 15
1.1.3 Các tính chất của thuật toán di truyền 16
1.2 Các thành phần trong thuật toán di truyền 17
1.2.1 Biểu diễn nhiễm sắc thể 17
1.2.1.1 Biểu diễn nhị phân 18
1.2.1.2 Biểu diễn số thực 18
1.2.2 Khởi tạo quần thể ban đầu 18
1.2.3 Đánh giá cá thể 18
1.2.4 Các phép toán di truyền 19
1.2.4.1 Phương pháp chọn lọc 19
1.2.4.2 Phương pháp lai ghép 19
1.2.4.3 Phương pháp đột biến 20
1.2.5 Điều kiện dừng của thuật toán 20
1.2.6 Các tham số của thuật toán di truyền 20
1.3 Ví dụ minh họa 21
Chương II – BÀI TOÁN SẮP XẾP THỜI KHÓA BIỂU 11
2.1 Tổng quan về bài toán lập lịch 11
2.1.1 Bài toán 11
2.1.2 Các thuộc tính 12
2.1.3 Một số bài toán lập lịch cơ bản 12
2.2 Bài toán xếp thời khóa biểu 12
2.2.1 Bài toán 12
2.2.2 Dữ liệu đầu vào 13
2.2.3 Các ràng buộc 13
Chương III 22
ỨNG DỤNG GIẢI THUẬT DI TRUYỀN CHO BÀI TOÁN LẬP THỜI KHÓA BIỂU 22
3.1 Phát biểu bài toán 22
3.1.1 Biểu diễn nhiễm sắc thể 22
3.1.2 Khởi tạo quần thể 22
3.1.3 Các phép toán di truyền 23
3.1.3.1 Lai ghép và Đột biến 23
3.1.3.2 Chọn lọc 23
3.1.3.3 Hàm đánh giá độ thích nghi 23
3.2 Phân tích và thiết kế chương trình 23
3.2.1 Phân tích và Mô tả dữ liệu đầu vào 23
3.2.2 Thiết kế chương trình 23
3.3 Thử nghiệm và đánh giá kết quả 23
3.3.1. Số liệu thử nghiệm 23
3.3.2. Kết quả đánh giá 23
Trang 9NGHIÊN CỨU THUẬT TOÁN DI TRUYỀN CHO BÀI TOÁN XẾP THỜI KHÓA BIỂU TRƯỜNG THPT
MỞ ĐẦU
1 Sự cần thiết của vấn đề nghiên cứu
Thời khóa biểu của trường học là kế hoạch giảng dạy của giáo viên và học tập củahọc sinh Một bảng thời khóa biểu hợp lý giúp giáo viên thuận lợi, chủ động khi lênlớp và giúp học sinh thoải mái khi học tập.Đã từ lâu, việc lập hay xếp thời khóa biểu làhoạt động quan trọng của mỗi một nhà trường và phải luôn luôn hoàn thành trước khitriển khai giảng dạy Lập thời khóa biểu bằng phương pháp thủ công là công việc rấtnặng nề, tốn nhiều thời gian và dễ vi phạm các ràng buộc về nghiệp vụ Do vậy, khi ápdụng phải trải qua một vài lần điều chỉnh mới có thể đạt được yêu cầu cơ bản
Đã từ lâu, việc lập thời khóa biểu cho các trường học đã được tổng quát hóa thànhbài toán, các nhà nghiên cứu đã và đang tìm các phương pháp giả nó bằng các công cụ,thuật toán tin học Các bài toán xếp thời khóa biểu rất phong phú và đa dạng bởinhững ràng buộc và yêu cầu đặc trưng của từng trường học, thậm chí từng môn học.Bởi vậy lời giải của bài toán xếp thời khóa biểu thường là những giải pháp chấp nhậnđược, hay nói cách khác bài toán xếp thời khóa biểu là một bài toán tối ưu
Trong gần ba thập niên qua, thuật toán di truyền và các cải tiến - phát triển của nógọi chung là thuật toán tiến hóa đã thực sự tạo ra các kết quả rất khả quan khi áp dụnggiải quyết các bài toán tối ưu Thuật toán di truyền mô phỏng sự tiến hóa tự nhiên củasinh học với quan niệm sự tiến hóa tự nhiên của sinh học là một quá trình tối ưu .Thuật toán trên tỏ ra rất hiệu quả trong việc áp dụng giải quyết các bài toán tối ưutrong thực tế, tiêu biểu là bài toán lập thời khóa biểu trường học, là một bài toán thú vị
và có tính thực tiễn cao
Ở Việt Nam đó có một vài phần mềm lập thời khóa biểu khá tốt, nhưng chưa đápứng hết các yêu cầu thực tế cũng như cách tổ chức giảng dạy của từng trường Ở QuỳChâu, chưa có phần mềm lập thời khóa biểu riêng đáp ứng các điều kiện cụ thể củamiền núi
Xuất phát từ những vấn đề trên, đề tài “Nghiên cứu thuật toán di truyền cho bài
toán xếp thời khóa biểu trường Trung học phổ thông” được tôi lựa chọn làm khóa luận
tốt nghiệp Khóa luận tập trung nghiên cứu về thuật toán di truyền và đồng thời giảiquyết bài toán thời khóa biểu về mặt lý thuyết lẫn xây dựng phần mềm, xem như một
Trang 10thử nghiệm đầu tiên.
Do khả năng và thời gian hạn chế, tôi chỉ mới hoàn thành phần mềm ở mức cơbản nhất, chỉ tạm sử dụng nội bộ trong trường nơi tôi công tác Hy vọng trong thờigian tới, tôi sẽ bổ sung thêm chức năng cho phần mềm và hoàn chỉnh thành sản phẩm
sử dụng được trong ngành giáo dục nói chung
2 Mục tiêu nghiên cứu
Nghiên cứu, tìm hiểu thuật toán di truyền, trên cơ sở đó tiếp cận để giải bài toánthời khóa biểu cho Trường THPT
3 Đối tượng và phạm vi nghiên cứu
Tìm hiểu bài toán lập lịch và các hướng giải quyết truyền thống
Tìm hiểu thuật toán di truyền, ứng dụng thuật toán di truyền vào bài toán lập thờikhóa biểu
Xây dựng ứng dụng lập thời khóa biểu cho Trường THPT
4 Ý nghĩa khoa học và thực tiễn của đề tài
4.2 Ý nghĩa thực tiễn
Bài toán lập thời khóa biểu là một bài toán có nhiều ứng dụng trong thực tế, đặcbiệt là các truờng học Ứng dụng thuật toán di truyền để giải bài toán thời khóa biểu làmột hướng hy vọng giải quyết đuợc bài toán thời khóa biểu
Qua đề tài, tác giả có thể xây dựng một ứng dụng thực tế góp phần giảm thiểuthời gian và nguồn lực cho việc lập thời khóa biểu cho một Trường học
5 Kết cấu của luận văn (Giới thiệu tên các chương của luận văn)
10
Trang 11Chương I
BÀI TOÁN SẮP XẾP THỜI KHÓA BIỂU
Bài toán xếp Thời khóa biểu thuộc lớp Bài toán lập lịch Bài toán xếp thời khóabiểu trường học là một trong những bài toán thú vị nhất trong lớp các bài toán tối ưu vìtính chất đa dạng về mô hình thời khóa biểu, có nhiều ràng buộc phức tạp và tính chấtthực tiễn của nó
Bài toán thời khóa biểu thuộc loại bài toán NP-khó, là trường hợp riêng của bàitoán lập lịch, trong đó đưa ra một chuỗi các sự kiện (các môn học, bài giảng hoặc mônthi) và bao gồm các giáo viên và học sinh trong một khoảng thời gian định trước, vàmột tập các ràng buộc phải thỏa món của từng loại thời khóa biểu khác nhau Tập ràngbuộc bao gồm khả năng tham dự của học sinh, khả năng làm việc của giáo viên, sốlượng và sức chứa của phòng học và các yêu cầu của các sự kiện
1.1 Tổng quan về bài toán lập lịch
Bài toán lập lịch là chọn một chuỗi các thao tác đồng thời chỉ định về thời gianbắt đầu/ kết thúc và các tài nguyên cần thiết cho mỗi thao tác Điều cần quan tâm chínhyếu là chi phí thời gian máy rỗi, năng lực lao động và các đơn đặt hàng cần hoàn thànhđúng hạn Ý tưởng chính trong phương pháp là mã hóa biểu diễn của lịch phân công làcác toán tử di truyền phải thực hiện theo cách có ý nghĩa, và một bộ giải mã phải luôntạo ra một lời giải hợp lệ cho bài toán Thủ tục giải mã mô phỏng các thao tác của côngviệc theo cách mà khi một máy tính sẵn sàng chọn lựa, thì thao tác cho phép đầu tiên
từ danh sách ưu tiên được lấy ra
1.1.1 Bài toán
Lập lịch có thể được định nghĩa là một bài toán tìm kiếm chuỗi tối ưu để thựchiện một tập các hoạt động chịu tác động của một tập các ràng buộc cần phải đượcthỏa mãn Người lập lịch thường cố gắng thử đến mức tối đa sự sử dụng các cá thể,máy móc và tối thiểu thời gian đòi hỏi để hoàn thành toàn bộ quá trình nhằm sắp xếplịch Vì thế bài toán lập lịch là một vấn đề rất khó để giải quyết Hiện nay có nhiều khảnăng để phát triển các kỹ thuật hiện tại để giải quyết bài toán này Những kỹ thuật đóbao gồm: các tiếp cận Trí tuệ nhân tạo như hệ thống tri thức cơ sở (knowledge-basedsystems), bài toán thoả mãn ràng buộc, hệ chuyên gia, mạng Nơron và các tiếp cận củacác nghiên cứu hoạt động: lập trình tính toán, lập trình động, tìm kiếm nhánh và đường
Trang 12biên, kỹ thuật mô phỏng, tìm kiếm Tabu và phương pháp nút cổ chai
1.1.2 Các thuộc tính
Tài nguyên: đó là các nguồn dữ liệu đầu vào của bài toán Các tài nguyên này
có thể phục hồi hoặc không
Tác vụ: được đánh giá qua các tiêu chuẩn thực hiện như thời gian thực hiện, chiphí, mức tiêu thụ nguồn tài nguyên
Ràng buộc: đây là những điều kiện cần thỏa mãn để bài toán có thể đưa ra lờigiải tốt nhất
Mục tiêu: đánh giá độ tối ưu của lịch trình lời giải của bài toán Khi các mụctiêu được thỏa mãn thì các ràng buộc cũng phải được thỏa mãn
1.1.3 Một số bài toán lập lịch cơ bản
- Bài toán lập lịnh Job Shop
- Bài toán gia công
- Bài toán lịch trực
- Lập lịch ưu tiên đúng hạn
- Bài toán xếp thời khóa biểu Trường học
1.2 Bài toán xếp thời khóa biểu
1.2.1 Bài toán
Bài toán sắp xếp thời khóa biểu ở trường học nói chung và sắp xếp thời khóabiểu ở trường trung học phổ thông nói riêng là một bài toán khó Sự phức tạp của bàitoán không chỉ ở vấn đề tìm ra môt thời khóa biểu cho Trường học thỏa mãn các ràngbuộc về thời gian, ràng buộc chuyên môn, quy định của bộ giáo dục mà còn một vấn
đề khó khăn hơn là ta phải tìm được một thời khóa biểu tốt thích hợp cho tất cả cácgiáo viên, phải thỏa mãn các điều kiện, yêu cầu về thời gian, hạn chế số tiết trốngtrong một ngày và số ngày lên lớp của giáo viên trong thời khóa biểu
Việc sắp xếp thời khóa biểu của các trường phổ thông luôn luôn phải thực hiêntrước khi học kỳ mới bắt đầu Trước khi học kỳ mới bắt đầu, nội dung các môn học vàgiáo viên phụ trách môn học của từng lớp phải được xác định thông qua cuộc họpchuyên môn, kết quả của cuộc họp này được gửi cho ban giám hiệu nhà trường và việclên lịch cho toàn bộ trường do phó hiệu trưởng phụ trach chuyên môn hoặc thư kí hộiđồng trường đảm nhiệm Hiện nay, việc sắp thời khóa biểu này ở hầu hết các trườngphổ thông đều được thực hiện một cách thủ công, và hầu như phải dựa vào kinh
12
Trang 13nghiệm thực tế mới có thể làm được Thông thường việc sắp xếp thời khóa biểu nàyphải mất trung bình một tuần.
Vậy bài toán đặt ra vấn đề cần sắp xếp thời khoá biếu cho một trường THPT là
sự sắp xếp lịch học cho các lớp sao cho vừa phù hợp lại vừa tiện dụng nhất
1.2.2 Dữ liệu đầu vào
Danh sách khoá học
Danh sách môn học
Danh sách lớp học
Danh sách giáo viên
Bảng phân công giáo viên giáo dạy tại các lớp
Bảng yêu cầu ràng buộc của giáo viên với lịch dạy
Bảng yêu cầu ràng buộc của lớp với lịch học
1.2.3 Các ràng buộc
Ràng buộc cứng:
Một giáo viên chỉ dạy được một lớp trong cùng một tiếtCác lớp chỉ có một môn học trong cùng một tiết
Một giáo viên không thể dạy quá 30 tiết mỗi tuần
Một giáo viên không dạy quá 5 tiết/buổiRàng buộc mềm:
Tất cả các bài học của một môn nào đó dạy tại một lớp phải được dạy bởi cùng một giáo viên
Mỗi lớp chỉ học 1 môn tại 1 thời điểmMột lớp có thể có cùng một môn nhiều lần trong một ngàyTất cả các giáo viên có cùng số lượng giờ dạy như nhau
1.3 Một số Phần mềm xếp tời khóa biểu
1.2.1 Phần mềm xếp thừi khóa biểu SmartScheduler
1.2.2 Phần mềm xếp thừi khóa biểu của công ty SchoolNet
Trang 14Chương II
THUẬT TOÁN DI TRUYỀN
Thuật toán di truyền trong lĩnh vực tin học là một trong những thuật toán thú vị,bởi vì nó mô phỏng qui luật đấu tranh sinh tồn của tự nhiên và cũng là một thuật toán
vô cùng hiệu quả đối với các loại bài toán tối ưu Trong nội dung của chương này, tôitrình bày những đặc điểm cơ bản nhất của thuật toán di truyền
Nhà bác học Charles Darwin đã nêu ra lý thuyết về sự tiến hóa tự nhiên của cácloài vật Qua nhiều thế hệ, sinh vật phát triển dựa trên nguyên lý của sự chọn lọc tựnhiên “loài nào thích nghi thì sẽ tồn tại” Như ta thấy trong tự nhiên các loài vật sẽcạnh tranh nhau về nơi trú ẩn, thực phẩm, Các cá thể cùng loài còn cạnh tranh nhau
để thu hút bạn tình trong mùa sinh sản Do đó những cá thể nào ít thích nghi thì ít có
cơ hội tồn tại hơn và những cá thể thích nghi được thì sẽ phát triển và cho ra nhiều concái Trong quá trình sinh sản sẽ tổ hợp các đặc tính tốt từ tổ tiên, sau một vài thế hệnhững loài tiến hóa tự nhiên sẽ thích nghi hơn trong môi trường phát triển
Dựa trên nền tảng lý thuyết tiến hóa tự nhiên, năm 1975 Holland đã phát triển ýtưởng này vào hệ thống nhân tạo, ông áp dụng nó để tối ưu hóa các vấn đề và xâydựng thuật toán di truyền Hiện nay thuật toán di truyền được xem như một công cụmạnh mẽ để giải quyết các vấn đề về tìm kiếm và tối ưu hóa phức tạp như thời gianbiểu, lập kế hoạch mua sắm
2.1 Tổng quan về thuật toán di truyền
Thuật toán di truyền là một kỹ thuật của khoa học máy tính nhằm tìm kiếm giảipháp thích hợp cho các bài toán tối ưu tổ hợp (combinatorial optimization), là mộtphân ngành của thuật toán tiến hóa, vận dụng các nguyên lý của tiến hóa như: ditruyền, đột biến, chọn lọc tự nhiên, và trao đổi chéo (lai ghép) Nó sử dụng ngôn ngữmáy tính để mô phỏng quá trình tiến hoá của một tập hợp những đại diện trừu tượng(gọi là những nhiễm sắc thể), của các giải pháp có thể (gọi là những cá thể) cho bàitoán tối ưu hóa vấn đề Tập hợp này sẽ tiến triển theo hướng chọn lọc những giải pháptốt hơn
Thuật toán di truyền cũng như các thuật toán tiến hoá, đều được hình thành dựatrên một quan niệm được coi là một tiên đề phù hợp với thực tế khách quan Đó làquan niệm “Quá trình tiến hoá tự nhiên là quá trình hoàn hảo nhất, hợp lý nhất và tự nó
14
Trang 15đã mang tính tối ưu” Quá trình tiến hoá thể hiện tính tối ưu ở chỗ thế hệ sau bao giờcũng tốt hơn thế hệ trước.
2.1.1 Giới thiệu
Trong thuật toán di truyền người ta dùng thuật ngữ vay mượn của di truyền họcnhư: cá thể, nhiễm sắc thể, gen, quần thể, độ thích nghi, chọn lọc, lai ghép, đột biến,v.v Trong đó cá thể biểu diễn một lời giải, giải pháp của bài toán Không giống nhưtrong tự nhiên một cá thể có thể có nhiều nhiễm sắc thể, ở đây chúng ta quy ước mỗi
cá thể chỉ có một nhiễm sắc thể Các nhiễm sắc thể là một cá thể là một chuỗi tuyếntính, trong nhiễm sắc thể có thể có các đơn vị nhỏ hơn đó là gen Mỗi gen đại diện mộtthuộc tính, tính chất và có vị trí nhất định trong nhiễm sắc thể Quần thể là một tập hợphữu hạn xác định các cá thể, trong thuật toán di truyền quần thể là một tập các cá thểbiểu diễn một tập các lời giải Các phép toán di truyền như chọn lọc, lai ghép, đột biếnđược thực hiện trên quần thể để tạo ra một quần thể mới
Một bài toán được giải bằng thuật toán di truyền thông thường phải qua cácbước sau:
> Biểu diễn lời giải của bài toán (hay nhiễm sắc thể) bằng chuỗi nhị phân,chuỗi ký tự, số thập phân,
> Khởi tạo quần thể ban đầu gồm N cá thể một cách ngẫu nhiên
> Xây dựng hàm thích nghi làm tiêu chuẩn đánh giá các cá thể theo độthích nghi của chúng
> Xác định xác suất lai ghép, xác suất đột biến,
> Xây dựng các phương pháp lai ghép, chọn lọc, đột biến
2.1.2 Sự khác biệt của thuật toán di truyền và thuật toán khác
Khi dùng phương pháp truyền thống có một số cách giải sau:
- Phương pháp liệt kê
- Phương pháp giải tích
- Phương pháp tìm kiếm ngẫu nhiên
Đặc trưng của thuật toán di truyền so với các phuong pháp truyền thống:
Thuật toán di truyền làm việc với sự mã hoá của tập thông số chứ không làmviệc với các giá trị của các thông số
Thuật toán di truyền tìm kiếm từ một quần thể các điểm chứ không phải từ mộtđiểm