Chƣơng I : Giải thuật di truyền và Tính toán tiến hóa
2.2. Cỏc bài toỏn thời khúa biểu
2.2.1. Thời khúa biểu tiểu học
Phỏt biểu bài toỏn:
- Một danh sỏch lớp học
- Một danh sỏch giỏo viờn ứng với danh sỏch lớp học - Một danh sỏch mụn học cho từng khối lớp
- Một bảng phõn phối số tiết của cỏc mụn học trong tuần
Yờu cầu: tỡm một phương án lập thời khóa biểu cho các lớp thỏa món cỏc ràng buộc sau:
Mỗi lớp có đúng một giáo viên dạy tất cả cỏc mụn Mỗi buổi học, học khụng quỏ 4 tiết
Mỗi mụn học, học khụng quỏ 2 tiết
Các môn có nhiều tiết cần phân bố đều cho các buổi học trong tuần Mỗi tuần có 1 tiết sinh hoạt tại một tiết xác định
Có lẽ đây là loại thời khóa biểu đơn giản và ổn định nhất, thể hiện ở các điểm: có ít môn học, một giáo viên dạy tất cả các môn cho một lóp và có ít ràng buộc.
2.2.2. Thời khóa biểu trung học cơ sở, trung học phổ thông
Đây là bài toán khó trong lớp các bài toán lập thời khóa biểu vỡ cỏc lý do sau:
Số lượng lớp học lớn (từ 30 đến 50) và số lượng giáo viên lớn (từ 50 đến 90).
Số lượng môn học nhiều (từ 8 đến 10).
Số tiết học trong tuần khá dày (23 đến 27 tiết), số tiết dạy của giáo viên cũng nhiều (18 đến 25 tiết).
Mỗi lớp có 1 tiết sinh hoạt vào một tiết xác định. Một số giỏo viờn phải dạy hai ca sỏng và chiều. ………
Những điều trên làm cho việc lập lịch trở nên khó khăn, dễ bị trùng tiết, trùng lớp và không gian tỡm kiếm quỏ rộng.
Phỏt biểu bài toỏn:
Mỗi tuần học p ngày, mỗi ngày học hai ca. Mỗi ca học tối đa q tiết.
Trường cú M lớp học và N giỏo viờn.
Mỗi giỏo viờn cú một lịch giảng cú dạng (Lớp, Mụn, Tiết): (Tiết là tổng số tiết của mụn học tại một lớp trong tuần)
Yêu cầu: Lập một lịch biểu với các điều kiện trên và thỏa món cỏc ràng buộc:
+ Ràng buộc cứng:
Một giỏo viờn dạy khụng quỏ 01 lớp trong một tiết học. Mỗi lớp học cú khụng quỏ 01 giỏo viờn trong một tiết học. Khụng cú cỏc tiết trống giữa cỏc tiết học.
Cỏc mụn học khụng quỏ 2 tiết trong một buổi.
Khụng lập lịch vào cỏc giờ bận của một số giỏo viờn. + Ràng buộc mềm:
Cỏc tiết của cỏc mụn nhiều tiết khụng bị phõn tỏn trong nhiều buổi. Một số giáo viên có yêu cầu dạy hoặc không dạy vào một số buổi nhất định.
………….
2.2.3. Thời khóa biểu cao đẳng-đại học:
Đây là loại thời khúa biểu phức tạp vỡ tớnh biến động và tính chất đa dạng của loại hỡnh đào tạo (học theo niên chế, học theo tín chỉ…) [1].
Bài toán lập thời khóa biểu cho trường Đại học là bài toán lập lịch cho các bài giảng (lectures) vào từng khóa học với một số lượng phũng học và tiết học cho trước. Khóa học là điểm khác biệt của thời khóa biểu trường Đại học so với trường Trung Học Phổ Thông. Các sinh viên tham dự khóa học, cũn cỏc lớp học ở trường phổ thông được tạo bởi tập học sinh.
Ở trường Đại học, hai khóa học có thể có trùng một số sinh viên tham dự và điều này tạo ra xung đột không thể lập lịch được trong một tiết học. Hơn nữa, các giảng viên thường chỉ dạy một khóa học hay một môn học trong một học kỳ.
Cuối cựng, sức chứa của cỏc phũng học ở trường Đại học là một yếu tố quan trọng trong việc lập lịch.
Mụ hỡnh lớp học niờn chế (normal class modeling): Sinh viờn vào nhập học và cỏc năm học được phân cố định vào các lớp học.
Mụ hỡnh lớp học tín chỉ (credit class modeling): Sinh viên được tự do đăng ký vào cỏc bài giảng đó được chuẩn bị trước của thời khóa biểu. Các lớp học này thực chất là các bài giảng (Course) được thiết kế thời khóa biểu giảng dạy chi tiết. Thông thường, sau khi thời khóa biểu của các lớp học này đó được lên kế hoạch thỡ sinh viờn mới căn cứ vào thời khóa biểu cụ thể để đăng ký học.
So sỏnh giữa mụ hỡnh niờn chế và tớn chỉ:
Đặc thù Lớp niờn chế Lớp tớn chỉ
Tạo lớp học Bắt buộc phải phân lớp cho mỗi khóa học đầu năm học
Không cần phân lớp cụ thể, sinh viên tự đăng ký Phõn bố mụn học Phõn bố mụn học và cỏc bài
giảng cho cỏc lớp học dễ dàng
Việc phân bố, tạo lớp tín chỉ hàng năm tương đối phức tạp
Lập TKB Lập thời khúa biểu rất phức tạp vỡ phải chỳ ý đến việc trùng giờ, trựng tiết trờn lớp, giỏo viờn và phũng học, chưa kể các phát sinh do ghép lớp, tách lớp
Lập thời khóa biểu tương đối dễ dàng vỡ chỉ phải quan tõm đến giáo viên và phũng học
Quản lý giảng dạy Quản lý lớp học và sinh viờn dễ dàng Quản lý việc lờn lớp rất phức tạp Lớp ghộp, lớp tỏch Rẩt phức tạp khi tổ chức ghộp và tỏch cỏc lớp niờn chế Khụng cần ghộp hay tỏch cỏc lớp tớn chỉ Phũng học Yờu cầu chung về phũng học là
lớn và phức tạp
Yờu cầu phũng học đơn giản
Ta nhận thấy, đối với lớp tín chỉ, việc tổ chức thời khóa biểu đơn giản hơn, nhưng rất phức tạp cho việc quản lý chuyờn mụn, đào tạo; cũn đối với lớp niên chế, đơn giản về mặt tổ chức, quản lý chuyờn mụn, nhưng rất phức tạp trong việc lập thời khóa biểu. Trong trường hợp phải ghép hoặc tách lớp thỡ cụng việc lập thời khóa biểu lại càng phức tạp hơn.
Tại Việt nam, hiện tại đa số các trường Đại học, Cao đẳng và THCN đều tổ chức theo mô hỡnh lớp niờn chế. Thời khúa biểu của mụ hỡnh này thường thể hiện từng tuần, từng tháng, từng học kỳ hoặc cả năm tùy theo trường, và việc lập lịch rất phức tạp và mang tính kế hoạch cao [1].
Khuynh hướng trong tương lai có thể chuyển sang mô hỡnh tớn chỉ, vỡ vậy phần này chỉ đề cập đến hệ đào tạo theo tín chỉ.
Đối với các trường Đại học có hỡnh thức đào tạo theo tín chỉ, bài toán thời khóa biểu được phát biểu như sau:
- Có N môn học được các sinh viên đăng ký tham dự cần lập lịch vào một tuần gồm K tiết học tương ứng.
- Các môn học được tổ chức tại các phũng học đáp ứng đủ các điều kiện học tập của môn học đó.
Một lời giải hay một thời khóa biểu chấp nhận được là tất cả các môn học đều được chia vào các tiết học và các phũng học tương ứng, đồng thời thỏa món cỏc ràng buộc sau:
Ràng buộc cứng:
- Không có sinh viên nào tham dự hơn một môn học trong cùng một thời gian.
- Chỉ có một môn học được tổ chức tại một phũng học trong một khoảng thời gian cho trước.
- Các môn học thường được học từ 2 đến 4 tiết mỗi ngày Ràng buộc mềm:
- Hạn chế số sinh viờn phải tham dự nhiều mụn học liờn tiếp nhau trong cựng một ngày.
- Hạn chế số sinh viên chỉ học đúng một môn trong một ngày…
2.3. Các phƣơng pháp tiếp cận hiện nay
Trước hết, chúng ta cùng điểm qua các giải thuật truyền thống:
Giải thuật vột cạn (tỡm kiếm theo chiều rộng hoặc chiều sõu) về mặt nguyờn tắc luụn tỡm được nghiệm nếu bài toán có nghiệm. Nhưng trên thực tế, các bài toán NP-khó không nên áp dụng phương pháp này, vỡ ta phải phỏt triển một khụng gian trạng thỏi cực lớn trước khi đi đến trạng thái đích. Do các hạn chế về thời gian tính toán và dung lượng bộ nhớ, không cho phép ta thực hiện được.
Chẳng hạn, với bài toỏn thời khúa biểu cho 40 lớp học, mỗi lớp cú 8 mụn học, mỗi lớp cú 25 tiết mỗi tuần thỡ khụng gian tỡm kiếm rất lớn là 81000 trường hợp. Rừ ràng, nếu dựng phương pháp vét cạn thỡ thời gian chạy rất lõu, khú chấp nhận dược.
Giải thuật leo đồi (Hill Climbing) sử dụng kỹ thuật nâng cấp lặp, áp dụng cho một số điểm đơn (điểm hiện hành) trong không gian tỡm kiếm. mỗi lần nõng cấp, một điểm trong lân cận của điểm hiện hành được chọn làm điểm kế tiếp, nếu nó cho kết quả tốt hơn của hàm mục tiêu. Việc tỡm
chỉ cho kết quả tối ưu cục bộ, kết quả này phụ thuộc vào sự chọn lựa điểm xuất phát, mặt khác ta không có được thông tin về sai số giữa tối ưu cục bộ tỡm được và tối ưu toàn cục. Mặc dù đó cải tiến bằng cỏch tăng số lượng điểm xuất phát (chọn ngẫu nhiên hoặc chọn theo kết quả của lần chạy trước), nhưng khi có nhiều cực trị địa phương thỡ khả năng tỡm được kết quả tối ưu toàn cục của giải thuật leo đồi cũn rất thấp.
Chúng ta cùng điểm qua các cách tiếp cận hiện nay:
Đó cú nhiều giải thuật được đề xuất để giải gần đúng các bài toán NP- khó. Các giải thuật này tỡm được lời giải gần tối ưu và là một trong các xu thế phát triển hiện nay đối với các bài toán chưa thể tỡm được lời giải tối ưu thực sự. Các giải thuật này đều mô phỏng theo tự nhiên như giải thuật luyện kim (Annealing Algorithm), giải thuật di truyền, phương pháp tính toán tiến hóa, giải thuật hệ kiến… trong đó, tính toán tiến hóa và tối ưu hóa đàn kiến tỏ ra là phương pháp hữu hiệu nhất.
Trong giải thuật luyện kim, người ta dùng kỹ thuật thay đổi entropy của hệ và điều khiển tốc độ hội tụ của quần thể bằng cách biến đổi nhiệt động học với một tham số nhiệt độ T toàn cục. Để hạn chế sự tối ưu cục bộ và tăng khả năng khám phá không gian tỡm kiếm, người ta dùng thủ thuật giảm từng bước nhiệt độ T (đến một mức nào đó). Tuy nhiên, do T chỉ giảm đến một mức nhất định, nên kỹ thuật luyện kim không tránh khỏi hạn chế trong việc khỏm phỏ khụng gian tỡm kiếm và sự hội tụ địa phương (local convergent).
Giải thuật di truyền và tớnh toỏn tiến húa kết hợp ý tưởng của giải thuật leo đồi và luyện kim. Đặc trưng của giải thuật này là duy trỡ một tập cỏc lời giải tiềm năng (gọi là tập cỏc cỏ thể hay quần thể), khuyến khớch việc
hỡnh thành và trao đổi thông tin giữa các cá thể trong quần thể thông qua phép lai và phép biến dị. Một quá trỡnh tiến húa được thực hiện trên một quần thể thực chất là sự tỡm kiếm trong một khụng gian các lời giải tiềm năng. Sự tỡm kiếm này đũi hỏi sự cõn bằng giữa hai mục tiờu: tỡm lời giải tốt nhất và khỏm phỏ khụng gian tỡm kiếm mới.
Giải thuật tối ưu đàn kiến (ACO – Ant Colony Optimization) do Dorigo đề xuất là phương pháp tiếp cận hiện đại nhất. Một thành phần ngẫu nhiên trong ACO cho phép các con kiến xây dựng được một lượng lớn các lời giải khác nhau hơn các phương pháp khác. Tại cùng một thời gian, việc sử dụng các thông tin kinh nghiệm sẽ hướng dẫn các con kiến tỡm kiếm được các lời giải hứa hẹn. Quan trọng hơn, kinh nghiệm tỡm kiếm của con kiến sẽ được sử dụng để học tăng cường trong quá trỡnh lặp xõy dựng giải thuật. Thờm vào đó, việc sử dụng đàn kiến làm cho giải thuật ACO có được một tập hợp các tác nhân lặp hiệu quả để giải quyết bài toán. Tuy nhiên, giải thuật tối ưu đàn kiến phức tạp hơn phương pháp tính hóa nhiều.
Luận văn chỉ tập trung nghiên cứu giải thuật di truyền và phương pháp tính toán tiến hóa; và áp dụng phương pháp tính toán tiến hóa để giải bài toán thời khóa biểu trường Trung Học Phổ Thông đồng thời xây dựng phần mềm minh họa. Qua thực nghiệm, đó thu được kết quả khả quan trên bộ dữ liệu thực tế của trường Trung Học Phổ Thông Buôn Ma Thuột.
Chƣơng III
Mễ HèNH TIẾN HểA
CHO BÀI TOÁN THỜI KHểA BIỂU TRUNG HỌC PHỔ THễNG
3.1. Biểu diễn nhiễm sắc thể và kiểu gene
Đây là công việc đầu tiên đồng thời quan trọng nhất trong giải thuật. Cần chọn cách biểu diễn gene và cấu trúc nhiễm sắc thể sao cho tự nhiên, gần với dạng lời giải thực tế. Đây là bước quan trọng nhất có ảnh hưởng đến kết quả và hiệu quả của chương trỡnh tiến húa. Cỏch biểu diễn gene cần chứa đủ các thông tin quan trọng về kết quả.
Thực tế, có một vài cách biểu diễn cấu trúc nhiễm sắc thể khác nhau, mỗi cách có ưu điểm riêng nhưng đều bảo đảm gần giống với dạng lời giải thực tế hoặc dễ dàng chuyển về dạng như lời giải thực tế sau khi đó tỡm được lời giải đủ tốt. Phổ biến là dùng cấu trúc mảng 3 chiều.
Trong mụ hỡnh lý thuyết, ta sẽ dựng mảng 3 chiều để biểu diễn một nhiễm sắc thể (cá thể):
Chiều thứ nhất biểu diễn cỏc tiết học trong ngày Chiều thứ hai biểu diễn cỏc ngày trong tuần Chiều thứ ba biểu diễn cỏc lớp học.
Khi xõy dựng phần mềm (mụ hỡnh thực nghiệm), tỏc giả sử dụng cấu trỳc mảng 2 chiều thay vỡ mảng 3 chiều trong mụ hỡnh lý thuyết.
Hỡnh 1: cấu trỳc một nhiễm sắc thể
Mỗi phần tử của mảng ứng với một vị trớ của một gene trờn nhiễm sắc thể, mó húa cho một tiết học của một lớp trong một ngày trong tuần, nghĩa là xỏc định 3 tham số [Lớp, Ngày, Tiết]
Mỗi gene lưu trữ 2 thông tin (Môn học, Giáo viên) tương ứng với tiết học của ngày trờn lớp.
Một “nhỏt cắt” theo hai trục ngày-tiết, ta cú thời khúa biểu của một lớp. Một “nhỏt cắt” theo hai trục ngày-lớp, ta cú một tiết học của tất cả cỏc lớp.
Một “nhỏt cắt” theo hai trục lớp-tiết, ta cú cỏc tiết học của một ngày trong tuần của cỏc lớp.
Toàn bộ nhiễm sắc thể là thời khóa biểu của một trường hoặc một ca học (ca sáng hoặc chiều)
1 2 3 4 5 10A 10B 10C Tiết Lớp Ngày
[10A][Thứ Tƣ][Tiết 2]: (Văn, Tuấn) [10C][Thứ Bảy][Tiết 1]: (Lý, Dũng) Hai Ba Tư Năm Sỏu Bảy
3.2. Khởi tạo quần thể ban đầu
3.2.1. Phõn bố số tiết học trong mỗi ngày cho từng khối lớp
Số tiết học của mỗi ngày trong tuần cho từng khối lớp thông thường được định bằng tay để chủ động cân đối giữa các ngày trong tuần cũng như theo một số hoạt động thường kỳ của trường. Đương nhiên, nếu muốn có thể thể phân bố tự động một cách ngẫu nhiên nhưng cần phải đảm bảo sự cân đối chung giữa các ngày.
Ví dụ: Khối lớp 11 có 27 tiết một tuần (kể cả 1 tiết sinh hoạt), học từ thứ hai đến thứ bảy vào buổi sáng, thường được phân bố bằng tay như sau:
Thứ hai Thứ ba Thứ tư Thứ năm Thứ sỏu Thứ bảy
4 5 5 5 5 3
Tiết sinh hoạt của ca sáng thường là tiết thứ nhất của ngày thứ hai (trước lễ chào cờ), cũn thứ bảy khụng học 2 tiết cuối để giáo viên sinh hoạt tổ chuyên môn định kỳ hàng tuần hoặc hai tuần một lần.
Quần thể ban đầu sẽ được khởi tạo theo phân bố trên.
3.2.2. 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 (xem mục 3.1.)
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ố để 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 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 đó và loại khỏi danh sách. 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 10A với danh sách các tiết học như sau:
Văn Sử Địa C.dõn Anh Toỏn Lý Húa Sinh Kỹ S.hoạt
4 1 1 1 3 5 3 2 1 1 1
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
4 4 4 4 4 3
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