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ý
HĐ Cập nhật bởi Hải Ninh Đoàn cách đây 3 tháng
- Trạng thái thay đổi từ New tới Approved
HĐ Cập nhật bởi Hải Ninh Đoàn cách đây 3 tháng
- Tiến độ thay đổi từ 0 tới 70
HĐ Cập nhật bởi Hải Ninh Đoàn cách đây 3 tháng
- Mô tả cập nhật (Sự khác nhau)
HN Cập nhật bởi Hải Yến Ngô cách đây 2 tháng
- Mô tả cập nhật (Sự khác nhau)
HN Cập nhật bởi Hải Yến Ngô cách đây khoảng 1 tháng
- Trạng thái thay đổi từ Approved tới Commit
- Phân công cho thay đổi từ Hải Ninh Đoàn tới Sơn Hoàng Tuấn
- Tiến độ thay đổi từ 70 tới 80
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1957 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1958 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1959 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1960 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1963 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1964 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1968 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1969 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1971 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1984 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1985 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Subtask #1990 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây khoảng 1 tháng
- Người Test Thị Phương Ninh Nguyễn được thêm
HN Cập nhật bởi Hải Yến Ngô cách đây 21 ngày
- Subtask #2137 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây 20 ngày
- Subtask #2150 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây 20 ngày
- Subtask #2151 được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây 20 ngày
- liên quan Task #2146: Test lại luồng hoạt động được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây 20 ngày
- liên quan xóa (Task #2146: Test lại luồng hoạt động)
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây 14 ngày
- liên quan Bug #2209: [ Xếp auto ]: Xếp toàn bộ tiết Tự học trước khi xếp các tiết học bắt buộc (Lý thuyết / Thực hành) của bài học được thêm
TN Cập nhật bởi Thị Phương Ninh Nguyễn cách đây 14 ngày
- liên quan Bug #2206: [Xếp auto] xếp lịch không theo thông báo nhiệm vụ huấn luyện được thêm