Task #1476
mở[Xếp TKB auto]
93%
Mô tả
1. Mục đích¶
Màn hình “Xếp thời khóa biểu tự động” dùng để:
Cho phép người dùng cấu hình tham số xếp lịch (ràng buộc cứng/mên, thứ tự ưu tiên, thiết lập ràng buộc tiết )
Chọn phạm vi xếp (khoá, quý => khi cần điểu chỉnh thì có thể chọn phạm vi nhỏ hơn như tiểu đoàn, đại đội / tuần,tháng )
Thực hiện xếp tự động cho khóa đào tạo
Theo dõi tiến trình xếp
Xem kết quả sau khi xếp
Kiểm tra các lỗi/ràng buộc không xếp được
Các bước sử dụng thuật toán
Bước 1 : Sử dụng Rule-based để chọn các ràng buộc
Ràng buộc cứng : không được phép vi phạm
Ràng buộc mềm: cảnh báo khi vi phạm và có tính điểm khi vi phạm (khi thêm có cột penalty để ghi đánh giá điểm)
Bước 2 : Sử dụng Priority-based (thứ tự ưu tiên )
Thứ tự ưu tiên lớp
Thứ tự ưu tiên môn học
Bước 3 : Dùng greedy
Xếp lớp ưu tiên đầu tiên trước sau đó lần lượt đến các lớp có thứ tự đằng sau
Mỗi lớp thì xếp môn ưu tiên đầu tiên trước sau đến các môn có thự tự đằng sau
Thuật toán sẽ chọn phương án tốt nhất ngay tại thời điểm hiện tại mà không xét đến toàn cục
Bước 4 : Sau khi xếp xong thì sẽ tính điểm penalty(bị vi phạm các ràng buộc mềm) có cả thời khoá biểu , điểm penalty đã được quy định từ trước khi tạo ra ràng buộc.
Bước 5 : Sử dụng Hill Climbing để điều chỉnh thời khoá biểu cho đẹp
Thuật toán tìm kiếm cục bộ, cải thiện dần lời giải bằng cách chọn phương án tốt hơn lân cận
Sẽ dựa vào điểm penalty để điểu chỉnh sao cho điểm penalty xuống 0 hoặc thấp nhất có thể
2. Câu chuyện nghiệp vụ (Business Story)¶
2.1 Câu chuyện nghiệp vụ ****¶
Hiện tại việc xếp thời khóa biểu đang thực hiện chủ yếu bằng tay:
- Xếp cho từng khoá/lớp , chọn từng ngày , chọn từng môn/ bài học,...
Phải tuân thủ các mốc huấn luyện, lịch thi, phòng học , tiết học và giảng viên, Kế hoạch huấn luyện, thứ tự bài học , ràng buộc, thể loại tiết
Trong thực tế: Một khóa có nhiều lớp, có nhiều khoá trong 1 khoảng thời gian , một quý có nhiều môn học và có nhiều ràng buộc phức tạp , thường xuyên thay đổi kế hoạch huấn luyện
2.2 Mong muốn¶
Người dùng mong muốn:
Chỉ cần chọn quý và khoá đào tạo → hệ thống tự xếp, sẽ có các chế độ xếp (xếp mới toàn bộ, xếp không ghi đè vào các tiết đã xếp và xếp lại toàn bộ trừ các tiết đã khoá ) vào tuân thủ các ràng buộc
Ngoài ra:
Ưu tiên xếp buổi sáng các bài học chính
Buổi chiều dùng để:
Xếp lịch dư
Dồn lịch thay đổi
Xử lý conflict
2.3 Khó khăn¶
- Về nghiệp vụ : Có nhiều loại tiết, có nhiều ràng buộc đặc thù quân sự. có các block cứng không được xếp
Tốn nhiều thời gian xếp lịch
Dễ xung đột phòng học
Dễ vi phạm kế hoạch huấn luyện
Khó đảm bảo đúng thứ tự bài học
Khó tối ưu phân bố lịch học
Lưu ý: Có các môn ưu tiên cao:
Chiến thuật
Bắn súng
Thao trường
3. Quy tắc chi tiết ****¶
[[https://docs.google.com/document/d/1HDzj-z-5y2KyyhDe9dFOk0w_GRuMTAFpG094hAkQss8/edit?pli=1&tab=t.u3ogbg4k9mm6
]]
4. GIẢI PHÁP PHẦN MỀM ****¶
**4.1: Các chức năng ảnh hưởng
** Xếp thời khoá biểu
**4.2: Giải pháp
** Sử dụng tất cả các ràng buộc
Sử dụng thuật toàn phù hợp
Chọn ra các mục ưu tiên hợp lý