aviaiva
Thành viên thường trực
- Tham gia
- 17/8/08
- Bài viết
- 316
- Được thích
- 242
em rất cảm ơn bác vì trình độ có hạn nên chỉ ghi macro rồi tự chỉnh thôi, phần xếp tự động chỉnh mang tính lên khung cơ bản nhất, rồi mọi người tự xếp chính vì thế mà em mới gọi là file hỗ trợ xếp tay thôi chứ không phải là một công cụ hoàn chỉnh để thay con người xếp từ A -> Z.Xét cặp tiết là sao bạn?Tuy mới xem qua, rất cảm ơn công sức bạn đã bỏ ra để tạo file tiện lợi dùng cho mọi người đang cần thiết trong thực tế các trường phổ thông, hy vọng đóng góp của LKLK sẽ không làm bạn phiền lòng:- ưu điểm:+ Tiện lợi dễ sử dụng vì nằm trong môi trường Excel+ Xét đến nhiều góc độ ứng dụng thực tiễn vì Bạn là người trong ngành+Có file hướng dẫn khá chi tiết-Nhược điểm (nhược nghe vẻ to tát, nhưng là những góp ý hoàn thiện hơn+ Dường như sắp xếp vẫn có vẻ chưa được phương án tốt nhất - vì thấy với dữ liệu bạn đang để trong file thì có những lớp có những buổi trống 1 tiết giữa (tô vàng) vậy trong trường hợp này phải chỉnh lại sao? (trong hướng dẫn không nói các trường hợp xử lý lỗi khi trùng, khi có tiết trống)+ Code bạn viết là khá hay, song có vẻ hơi dài và nặng về copy paste , ghi macro (bạn đừng phiền nhé, có như vậy mới cùng nhau xây lại cho ngắn gọn dễ hiểu hơn+ Hướng dẫn chưa đề cập đến việc xử lý các trường hợp thực tiễn xảy ra để tiệm cân phương án hợp lý một cách nhanh nhất (dĩ nhiên cái này cần bật mí kinh nghiệm ứng dụng của bạn - chỉ có người dùng thực mới bao quát được)* Nếu được (không riêng tư), bạn có thể viết ra đây, hoặc PM cho LKLK về thuật toán bạn xếp TKB thế nào, kiểm tra thế nào, -- để tôi tìm hiểu xem có thể giúp hoàn thiện hơn được công đoạn nào hơn không, xin cảm ơn.
Về tư tưởng của xếp tự động em xây dựng như sau:
- đầu tiên sẽ chọn randum một giáo viên bất kỳ trên bảng thời khóa biểu
- chọn randum lớp bất kỳ của giáo viên đó
- chọn randum một ngày bất kỳ nằm trong nguyện vọng của giáo viên đó
- nhét các lớp vào sao cho thỏa mãn các điều kiện sau:
- chọn randum lớp bất kỳ của giáo viên đó
- chọn randum một ngày bất kỳ nằm trong nguyện vọng của giáo viên đó
- nhét các lớp vào sao cho thỏa mãn các điều kiện sau:
+ xét cặp tiết: (ví dụ môn văn: xếp hai tiết liền của 1 lớp không thì chỉ xếp 1 tiết thôi)
+ số tiết trong một buổi không quá 3
+ tổng số tiết của lớp đó = tổng tiết theo phân công + lớp được chọn thỏa mãn điều kiện là duy nhất
sau quá trình trên sẽ xuất hiện giáo viên còn thiếu tiết em lại cho randum trong các giáo viên thiếu tiết đó+ số tiết trong một buổi không quá 3
+ tổng số tiết của lớp đó = tổng tiết theo phân công + lớp được chọn thỏa mãn điều kiện là duy nhất
- Nếu tiết trống > nằm ngoài nguyện vọng: xếp bừa cho đủ
- nếu tiết trống nằm trong vùng nguyện vọng: loại bỏ điều kiện 3 tiết nhét cho đủ
=========================================================================- nếu tiết trống nằm trong vùng nguyện vọng: loại bỏ điều kiện 3 tiết nhét cho đủ
Chi tiết về file excel hỗ trợ xếp TKBSheet(B1): Phân phối chương trình
- Chứa tên lớp trên TKB
- Tên môn trên TKB
- Số tiết cho từng lớp, từng môn
Sheet(PCCM): Phân công chuyên môn chứa- Tên môn trên TKB
- Số tiết cho từng lớp, từng môn
- Tên giáo viên giảng dạy
- Lớp giảng dạy được phân theo yêu cầu của Ban giám hiệu
- Nguyện vọng của giáo viên
Sheet(b3): chứa bảng phân công giáo viên theo lớp và môn- Lớp giảng dạy được phân theo yêu cầu của Ban giám hiệu
- Nguyện vọng của giáo viên
Sheet (GVS), sheet(GVC): chứa bảng TKB toàn trường (sẽ in ra) nơi xếp TKB
sheet(TKB hs): chứa TKB học sinh toàn trường (in ra)
Tư tưởng của file hỗ trợ
Sheet(GVS) làm trung tâm, (GVC : tương tự)
sheet(PCCM) làm data chứa mọi số liệu liên quan để tiến hành xếp TKB,
sheet(B1) chứa các con số để tính toán tiết thiếu, thừa ….
sheet(PCCM) làm data chứa mọi số liệu liên quan để tiến hành xếp TKB,
sheet(B1) chứa các con số để tính toán tiết thiếu, thừa ….
Những vấn đề nhờ các bác tối ưu (hoặc cho code mới xịn hơn càng tốt)
Sheet(b1) ít sai sót nhất nên không bàn đến. Sheet(PCCM) rất quan trọng cần phải có các hỗ trợ sau:
- Phần môn dạy: phải giới hạn trong các môn có số tiết > 0 ở sáng hoặc chiều
- Phần lớp chọn: phải là lớp có tên trong sheet(B1)
- Hiện thông báo khi giáo viên phân trùng lớp (2 GV cùng môn cùng dạy 1 lớp)
- Hiện thông báo: phân thừa lớp, phân thiếu lớp cho giáo viên, giáo viên chưa được phân lớp dạy
Sheet(GVS):- Phần lớp chọn: phải là lớp có tên trong sheet(B1)
- Hiện thông báo khi giáo viên phân trùng lớp (2 GV cùng môn cùng dạy 1 lớp)
- Hiện thông báo: phân thừa lớp, phân thiếu lớp cho giáo viên, giáo viên chưa được phân lớp dạy
- Trường hợp tạo mới: hiện được bảng TKB đã được kẻ vẽ chuẩn
- Phần hỗ trợ:
o Giới hạn được các lớp đã phân cho giáo viêno Hiển thị được thông tin về tiết dạy của giáo viên đóo Hiển thị được tiết trùng
o Hiển thị được lớp trống tiếto Khi PCCM của giáo viên có sự thay đổi (thay giáo viên, đổi lớp dạy của giáo viên, thêm, bớt lớp của giáo viên … mọi yêu trên vẫn phải đáp ứng
o Hỗ trợ lưu trữ và phục hồi các phương án của TKB khi người dùng cần
- Phần xếp tự động:o Hiển thị được lớp trống tiếto Khi PCCM của giáo viên có sự thay đổi (thay giáo viên, đổi lớp dạy của giáo viên, thêm, bớt lớp của giáo viên … mọi yêu trên vẫn phải đáp ứng
o Hỗ trợ lưu trữ và phục hồi các phương án của TKB khi người dùng cần
o Đúng nguyện vọng
o Hạn chế tiết trốngo Tối ưu buổi dạy
Vấn đề nhờ giúp đỡ đầu tiên của em (cần tối ưu): o Hạn chế tiết trốngo Tối ưu buổi dạy
-tối ưu phân xếp tự động giáo viên với các yêu cầu về thuật toán như trên
Phần xếp tự động: chia thành nhiều giai đoạn:
Giai đoạn 1: lên khung TKB (với thuật toán như trên)
Giai đoạn 2: xử lý tiết trùng (có thuật toán chưa đủ trình)
Giai đoạn 3: xử lý tiết trống (có thuật toán chưa đủ trình)
Giai đoạn 4: tối ưu thời khóa biểu theo nguyện vọng theo cấp độ ưu tiên. (có thuật toán chưa đủ trình)
Lần chỉnh sửa cuối: