Đặt vấn đề Ngày này các trường Đại học thường tổ chức đào tạo theo hệ đào tạo tín chỉ, thay thế cho hệ đào tạo niên chế. Trong khi hệ đào tạo niên chế quản lý sinh viên tập trung theo lớp hành chính và dựa trên các lớp hành chính để xây dựng lịch học, hệ đào tạo tín chỉ lại coi sinh viên là đơn vị quản lý cơ sở và lập lịch học kết hợp giữa nhu cầu và chương trình đào tạo của sinh viên. Do đó việc sắp xếp lịch học đối với hệ thống đào tạo tín chỉ có nhiều ràng buộc hơn. Bên cạnh đó, lịch học có thể thay đổi liên tục nhưng vẫn phải đảm bảo các điều kiện ràng buộc về cơ sở vật chất, quỹ thời gian của người dạy và người học.
Những điều trên khiến cho việc xếp lịch học là một bài toán phức tạp và tốn nhiều thời gian. Vì vậy, việc phát triển một công cụ xây dựng lịch học theo hệ đào tạo tín là điều cần thiết đối với công việc quản lý đào tạo của các trường Đại học.2 Mô tả bài toán Theo quy chế đào tạo của hệ đào tạo tín chỉ áp dụng cho trường Đại học, sinh viên được phép tự do lựa chọn môn học và thời gian học theo nhu cầu cá nhân của mình. Trước khi bắt đầu mỗi học kỳ, phòng đào tạo tiến hành xây dựng kế hoạch giảng dạy. Căn cứ để lập kế hoạch giảng dạy gồm: Chương trình đào tạo toàn khóa của từng chuyên ngành đã được Hiệu trưởng ký duyệt.
Số lượng sinh viên thuộc các khóa - ngành tương ứng có đủ điều kiện theo học các môn học dự kiến giảng dạy trong năm học. 4 Dự tính số lượng sinh viên sẽ học lại mỗi môn học và số lớp có thể mở tương ứng. Ý kiến phản hồi và yêu cầu từ các khoa và sinh viên. Kế hoạch giảng dạy bao gồm : Chương trình đào tạo của từng khóa-ngành.
Thông tin chi tiết về từng môn học. Số lớp dự kiến mở cho mỗi môn học trong học kỳ. Tiến độ học tập của năm học. Kế hoạch này được gửi đến từng khoa và các đơn vị liên quan.
Các khoa góp ý cho bản kế hoạch giảng dạy và thông qua hệ thống cố vấn học tập thu thập ý kiến từ sinh viên để bổ sung, điều chỉnh kế hoạch. Dựa trên kế hoạch giảng dạy, các khoa phân công giảng viên phụ trách giảng dạy từng lớp tín chỉ, kể cả việc mời giảng khi cần thiết. Các giảng viên được phân công giảng dạy có thể nêu kèm theo các yêu cầu riêng, nếu có. Sau khi nhận được danh sách phân công giảng viên và các ý kiến phản hồi từ các đơn vị, căn cứ vào kế hoạch giảng dạy, phòng Đào tạo sẽ tiến hành phân lớp, lập và công bố Thời khóa biểu.
Thời khóa biểu này được công bố làm cơ sở để sinh viên đăng ký môn học. Dựa vào quy mô của chương trình đào tạo, số lượng lớp tín chỉ trong một kỳ học có thể biến đổi từ vài trăm đến vài ngàn lớp. Việc tạo thời khóa biểu cho một lượng lớn các lớp tín chỉ có thể dẫn đến việc sinh viên gặp khó khăn khi đăng ký các môn học do trùng lịch học. Phát biểu bài toán như sau: 5 Mỗi trường có một danh sách lớp học, danh sách phòng học, danh sách các tiết học trong một ngày, danh sách các thứ học trong một tuần.
Mỗi lớp học ứng với một môn học, được phân công cho giảng viên giảng dạy thuộc khoa, bộ môn quản lý môn học đó. Mỗi lớp học có danh sách các buổi học căn cứ theo số tín chỉ của môn học và số tiết cần giảng dạy. Cần tìm một phương án sắp xếp các buổi học của các lớp vào các phòng học tại các tiết học của một ngày trong tuần. Việc sắp xếp lịch học cần thỏa mãn các điều kiện bắt buộc (ràng buộc cứng) và tối ưu hóa tối đa các điều kiện không bắt buộc (ràng buộc mềm) [1].3 Các phương pháp tiếp cận Dưới đây là một số phương pháp được sử dụng để giải quyết bài toán xếp thời khóa biểu, dựa trên khảo sát của Tan, J.
và các cộng sự [2]: 1.1 Giải thuật tham lam (Greedy Algorithm) Giải thuật tham lam là một phương pháp giải quyết bài toán dựa trên việc lựa chọn bước đi tốt nhất tại mỗi bước mà không cần xem xét toàn bộ bài toán. Tư tưởng chính của giải thuật này là luôn chọn giải pháp tốt nhất hiện tại với hy vọng rằng nó sẽ dẫn đến kết quả tốt nhất toàn cục. Một giải thuật tham lam điển hình có ba thành phần chính: 1. Lựa chọn tham lam: Ở mỗi bước, chọn phương án tốt nhất tại thời điểm đó.
Tính chất không đổi: Sau mỗi bước chọn, bài toán con mới vẫn giữ nguyên tính chất như bài toán ban đầu. Giải quyết bài toán con: Tiếp tục áp dụng chiến lược tham lam để giải quyết bài toán con còn lại. 6 Giải thuật tham lam có thể áp dụng vào bài toán xếp thời khóa biểu bằng cách chọn các lớp học vào các khoảng thời gian sao cho tối ưu nhất tại mỗi bước. Chẳng hạn, nó có thể bắt đầu bằng việc sắp xếp các lớp học có số lượng sinh viên đông nhất vào các khung giờ có sẵn trước, sau đó tiếp tục với các lớp nhỏ hơn.
Tuy nhiên, giải pháp này không phải lúc nào cũng tối ưu toàn cục vì nó không xem xét toàn bộ bài toán từ đầu đến cuối.2 Giải thuật leo đồi (Hill Climbing Algorithm) Giải thuật leo đồi là một phương pháp tìm kiếm dựa trên việc bắt đầu từ một điểm khởi đầu và liên tục di chuyển đến trạng thái láng giềng tốt hơn, cho đến khi không còn trạng thái láng giềng nào tốt hơn điểm hiện tại. Điều này tương tự như việc leo lên đỉnh đồi, luôn di chuyển theo hướng lên cao cho đến khi đạt đỉnh. Quá trình này bao gồm: 1. Khởi tạo: Bắt đầu từ một trạng thái ban đầu ngẫu nhiên.
Đánh giá: Đánh giá các trạng thái láng giềng. Lựa chọn: Chọn trạng thái láng giềng tốt nhất để di chuyển đến. Lặp lại: Lặp lại quá trình cho đến khi không có cải thiện nào nữa. Trong bài toán xếp thời khóa biểu, giải thuật leo đồi có thể bắt đầu với một phân bố thời khóa biểu ngẫu nhiên và sau đó cải thiện bằng cách hoán đổi các lớp học, sao cho giảm thiểu xung đột (ví dụ như tránh trùng lặp phòng học, thời gian, giảng viên).
Tuy nhiên, phương pháp này dễ mắc kẹt tại các cực tiểu cục bộ và không đảm bảo tìm ra giải pháp tối ưu toàn cục.3 Giải thuật luyện kim (Simulated Annealing - SA) Giải thuật luyện kim dựa trên quá trình tôi luyện kim loại, trong đó kim loại được đun nóng đến nhiệt độ cao rồi làm nguội từ từ để đạt được cấu trúc tinh thể tối 7 ưu. Tương tự, SA bắt đầu từ một giải pháp ngẫu nhiên và thực hiện các thay đổi ngẫu nhiên với xác suất chấp nhận phụ thuộc vào nhiệt độ, từ đó giảm dần nhiệt độ theo thời gian. Các bước chính của SA bao gồm: 1. Khởi tạo: Bắt đầu từ một giải pháp ngẫu nhiên.
Đột biến và chấp nhận: Thực hiện thay đổi ngẫu nhiên giải pháp hiện tại và quyết định chấp nhận giải pháp mới dựa trên xác suất tính theo hàm nhiệt độ. Giảm nhiệt độ: Giảm nhiệt độ từ từ theo một lịch trình làm nguội. Lặp lại: Lặp lại quá trình cho đến khi nhiệt độ giảm về 0 hoặc đạt đến số lần lặp nhất định. SA có thể được sử dụng để xếp thời khóa biểu bằng cách bắt đầu từ một giải pháp ban đầu và thực hiện các thay đổi nhỏ, chẳng hạn như hoán đổi thời gian của các lớp học.
Với xác suất chấp nhận các giải pháp tạm thời kém hơn, SA có thể vượt qua các cực tiểu cục bộ và tìm kiếm giải pháp tối ưu hơn, làm cho nó phù hợp với các bài toán có không gian tìm kiếm phức tạp như xếp thời khóa biểu.4 Giải thuật tối ưu đàn kiến (Ant Colony Optimization - ACO) Giải thuật tối ưu đàn kiến là một phương pháp dựa trên hành vi tìm đường của các con kiến trong tự nhiên. Các con kiến khi di chuyển để tìm thức ăn sẽ để lại dấu vết pheromone, và các kiến khác có xu hướng đi theo những dấu vết này, dẫn đến việc tìm ra con đường ngắn nhất một cách tự nhiên. Các bước chính trong ACO bao gồm: 1. Khởi tạo: Đặt các kiến tại các điểm khởi đầu khác nhau.
Di chuyển và đặt pheromone: Các kiến di chuyển đến các điểm khác nhau dựa trên một xác suất tỉ lệ thuận với lượng pheromone trên đường đi. Cập nhật pheromone: Lượng pheromone trên các đường đi được cập nhật dựa trên chất lượng của giải pháp mà các kiến tìm được. Lặp lại: Lặp lại quá trình cho đến khi đạt được kết quả tối ưu. ACO có thể được áp dụng để tìm kiếm các phân bố thời khóa biểu tối ưu bằng cách mô phỏng các con kiến di chuyển giữa các lựa chọn lớp học và thời gian.
Mỗi kiến sẽ thử một giải pháp xếp thời khóa biểu và để lại dấu vết pheromone, từ đó các kiến khác sẽ dần dần tìm ra các giải pháp tối ưu hơn dựa trên dấu vết này. Điều này giúp tìm ra các giải pháp tốt một cách hiệu quả.5 Giải thuật di truyền (Genetic Algorithm - GA) Giải thuật di truyền mô phỏng quá trình chọn lọc tự nhiên, sử dụng các khái niệm như gen, lai ghép, và đột biến để phát triển các giải pháp tốt hơn qua các thế hệ. Các bước chính của GA bao gồm: 1. Khởi tạo quần thể: Tạo ra một quần thể các cá thể ngẫu nhiên.
Đánh giá: Đánh giá độ thích nghi của mỗi cá thể trong quần thể. Chọn lọc: Chọn các cá thể tốt nhất để làm cha mẹ dựa trên độ thích nghi. Lai ghép và đột biến: Lai ghép các cá thể cha mẹ để tạo ra thế hệ con mới, và thực hiện đột biến ngẫu nhiên. Lặp lại: Lặp lại quá trình cho đến khi đạt được giải pháp tối ưu hoặc sau một số thế hệ nhất định.
GA có thể áp dụng bằng cách mã hóa mỗi thời khóa biểu dưới dạng một cá thể trong quần thể. Các cá thể này sẽ trải qua các quá trình chọn lọc, lai ghép và đột biến để tạo ra các thời khóa biểu mới, tốt hơn. GA có thể tìm ra các giải pháp tối ưu bằng cách kết hợp các đặc điểm tốt từ các cá thể khác nhau qua nhiều thế hệ.