Bước 7 — Tạo tự động

Khi các tiết học đã được tạo, bạn xếp chúng lên lưới thời gian. Trên thực tế, dựng một thời khóa biểu là một chu trình, không phải một thao tác duy nhất:

  1. bạn xếp tay một vài tiết học — để cố định những gì không được xê dịch hoặc khóa các ràng buộc mạnh (tiết học đã ấn định ngày, kỳ thi, các điểm neo thủ công);
  2. bạn chạy tạo tự động (toàn bộ hoặc một phần) để thuật toán xếp phần còn lại theo các ràng buộc;
  3. bạn điều chỉnh nhỏ lẻ — sửa một trường hợp riêng, dời một tiết học, đổi ý;
  4. và việc này có thể lặp lại: bạn chạy lại theo tiến độ (khi có thêm tiết học, hoặc — ở chế độ lịch — theo từng khoảng ngày, theo từng đợt lớp hay cơ sở).

Bạn cũng có thể làm 100% bằng tay, không dùng công cụ tạo tự động. Việc xếp thủ công (đặt, dời, khóa, từng tiết một hay theo lô) có trang riêng: Xếp thủ công. Để nắm luồng tổng thể, xem Tổng quan về mô-đun.

Trang này nói về việc tạo tự động.

Việc tạo tự động xếp các tiết học chứ không tạo ra chúng

Công cụ tạo tự động chỉ làm việc với những tiết học đã tồn tại. Nó tìm cho mỗi tiết học một khung giờ và một phòng học. Còn giáo viên thì vẫn là những người bạn đã phân công cho khóa học: công cụ tạo tự động không thay thế họ, cũng không chỉ định người khác, nó chỉ loại bỏ những khung giờ mà họ không rảnh.

Từ đó là thứ tự cần tuân theo:

  1. khai báo môn học và khối lượng giờ cho từng lớp: đó chính là khóa học, một dòng khối lượng giờ;
  2. tạo các tiết học từ khối lượng giờ đó, ở bước Phân bổ thời gian và tạo các tiết học — đây mới là thứ mà công cụ tạo tự động xếp;
  3. rồi mới chạy tạo tự động.

Mở thẻ tạo thời khóa biểu khi chưa tạo tiết học nào thì chỉ gặp một nút bất động: không có gì để xếp, và màn hình kiểm tra hiển thị Không có tiết học nào được xác định.

Vì sao nút tạo thời khóa biểu bị làm mờ

Nút này phản ánh phần chẩn đoán hiển thị ngay phía trên, ở thẻ Đang kiểm tra. Có ba tình huống:

  • Không có cảnh báo gây chặn nào, hoặc chỉ có cảnh báo màu vàng — nút vẫn hoạt động, chỉ trông nhạt hơn. Một cảnh báo (màu vàng) báo hiệu một rủi ro, chứ không phải một điều bất khả; màu xanh dương chỉ mang tính thông tin.
  • Một cảnh báo gây chặn (màu đỏ) — nút chính bị vô hiệu hóa. Bạn vẫn khởi chạy được phép tính qua Thêm tùy chọn, và tự chịu rủi ro: công cụ tạo tự động sẽ không thấy vấn đề mà cảnh báo nêu ra, nó vẫn cho ra một thời khóa biểu, và bạn là người gánh kết quả ấy. Sửa cảnh báo vẫn hơn.
  • Một cảnh báo chặn hoàn toàn — cả nút lẫn menu tùy chọn đều bị vô hiệu hóa. Thiếu một dữ liệu mà không có nó thì phép tính chẳng còn ý nghĩa gì: không có tiết học nào, không có lớp nào dùng được (một lớp chỉ dùng được khi nó có cơ sở và có tiết học), hoặc một cơ sở đang được dùng mà lưới thời gian chưa được xác định. Một trường chưa tạo cơ sở nào rơi đúng vào trường hợp này: không có cơ sở thì không lớp nào dùng được.

Trong trường hợp cuối này, thống kê Số lớp đã cấu hình chuyển sang màu đỏ.

Mỗi cảnh báo đều được nêu rõ bằng lời trong danh sách, kèm lớp, cơ sở hay giáo viên liên quan. Về thang mức độ nghiêm trọng và cách đọc nó, xem Lỗi tương thích và chẩn đoán; còn về cách gỡ rối một lượt tạo không thành, xem Chẩn đoán khi việc tạo thời khóa biểu thất bại.

Khả dụng

Việc tạo tự động khả dụng trên thời khóa biểu theo tuần, theo chu kỳ và theo lịch. Ở chế độ lịch, các tiết học được xếp vào ngày thực và các tùy chọn có thể giới hạn khoảng ngày cần tạo.

Chuẩn bị

Trước khi nhấn Tạo thời khóa biểu:

  • hãy mở thẻ Tạo thời khóa biểu (mang nhãn Đang kiểm tra trên thời khóa biểu theo lịch) để xem các thống kê tổng thể,
  • hãy sửa các cảnh báo gây chặn (màu đỏ) — xem mục trước về nút bị làm mờ,
  • hãy đọc lại các cảnh báo (màu vàng) — chúng không chặn nhưng báo hiệu một rủi ro (thời gian rảnh quá gò bó, sức chứa sát ngưỡng, v.v.).

Màn hình còn cho biết:

  • số tiết học đã tạo so với số tiết học đã xếp,
  • khối lượng giờ đã nhập so với giờ làm việc của giáo viên,
  • các nhóm đã được gán ít nhất một khóa học (để phát hiện những nhóm bị bỏ quên hoặc không dùng đến).

Khởi chạy

Hãy nhấn Tạo thời khóa biểu. Omniscol khởi động một môi trường tính toán riêng, chạy song song. Thời lượng phụ thuộc vào quy mô thời khóa biểu, số lượng ràng buộc và các tùy chọn đã chọn. Phía nhà trường không có hàng đợi nào phải quản lý; phần khởi tạo thường mất khoảng mười giây trước khi việc tính toán thật sự bắt đầu.

Phép tính bị giới hạn ở hai mươi phút, nhưng trên thực tế mức đó vượt xa nhu cầu: một thời khóa biểu khoảng 200 khóa học thường trả kết quả trong chừng hai mươi giây — thuật toán gần như tức thời, phần nặng chủ yếu nằm ở lúc khởi động máy — và ~600 khóa học trong khoảng một phút. Với một trường rất lớn tiệm cận mức giới hạn này, đội ngũ Omniscol có thể tăng công suất của máy tính toán, theo yêu cầu.

Các tùy chọn tạo tự động

Theo mặc định, việc tạo tự động xếp mọi tiết học đã tạo mà chưa được đặt vị trí. Nó cũng có thể dời những tiết học đã đặt nếu việc đó làm thời khóa biểu tốt hơn. Các tiết học đã khóa thì giữ nguyên vị trí.

Menu tùy chọn cho phép làm nhiều việc, trong đó có:

  • quản lý phòng học với ba lựa chọn: gán tối ưu (mặc định), chỉ kiểm tra, hoặc bỏ qua hoàn toàn phòng học;
  • chỉ chọn một số lớp hoặc một số môn học;
  • giới hạn một thời khóa biểu theo lịch trong một cửa sổ ngày mục tiêu;
  • bỏ qua những phòng học đã gán hoặc những vị trí hiện tại;
  • chỉ gán phòng học mà không tính lại toàn bộ việc xếp lịch;
  • chạy một lượt tạo nhanh, không tối ưu hóa;
  • cho phép xếp linh hoạt trên các khung giờ con của lưới thời gian khi thời khóa biểu có dùng khung giờ con.

Các thông số tối ưu hóa nâng cao còn cho phép giảm giờ trống, tránh xếp hai tiết học cùng một môn học trong cùng một ngày, dàn đều các tiết học, đặt số giờ tối thiểu hoặc tối đa, hoặc chọn số ngày có mặt của giáo viên. Thông lệ khác nhau tùy từng nước: ở Pháp, một số trường tìm cách giảm số ngày có mặt của giáo viên; trong bối cảnh khác, người ta lại có thể muốn dàn những ngày ấy ra, chẳng hạn để bố trí các nhiệm vụ khác tại chỗ.

Các tùy chọn riêng của chế độ lịch

Ở chế độ lịch, các tùy chọn nâng cao có thể giới hạn việc tạo tự động trong một cửa sổ ngày mục tiêu ngắn hơn khoảng ngày tổng thể của thời khóa biểu. Cách này hữu ích khi chỉ cần tạo một phần của năm học: thử nghiệm trên một tháng, dựng dần một học kỳ, hoặc làm lại một giai đoạn đã chuẩn bị từ trước.

Tùy chọn quan trọng còn lại là nén các ngày học cho các lớp. Theo mặc định, công cụ tạo tự động thiên về tìm sự cân đối trên các ngày sẵn có; nếu bạn chỉ tạo một phần các tiết học của cả năm, cách xử lý ấy có thể dàn các tiết học ra một cách giả tạo. Việc nén cho phép bạn yêu cầu gom lại:

  • vào đầu cửa sổ;
  • vào cuối cửa sổ;
  • không ưu tiên đầu hay cuối, nhưng vẫn giữ các ngày học gọn nhất có thể.

Lặp lại trên thời khóa biểu dạng lịch: tuần mẫu trước tiên

Thời khóa biểu dạng lịch ấn định ngày cho từng tiết học một. Tuy nhiên, có những chương trình đào tạo không vận hành như thế: khóa học lúc 10 giờ sáng thứ Hai tuần nào cũng quay lại, trong chừng mực có thể. Một lớp khai báo điều đó bằng Tiết học lặp lại; một khóa học của lớp đó rút ra khỏi cơ chế này bằng Ngoài lặp lại. Không có gì được suy đoán: nếu không khai báo, việc tạo tự động xếp mỗi tiết học vào ngày của riêng nó, bất kể chúng giống nhau đến đâu. chính sách phân bổ là tùy chọn: bản thân việc lặp lại đã đủ dùng; một chính sách khai báo rõ ràng thì cho biết nhịp độ mà thuật toán phải tôn trọng nhiều nhất có thể.

Ngay khi có một lớp của thời khóa biểu được đặt lặp lại, việc tạo tự động làm việc theo ba bước.

  1. Tuần mẫu trước tiên. Các tiết học gom lại thành từng loạt. Có hai trường hợp:

    • khóa học có mang một chính sách phân bổ giờ học: thuật toán gom các tiết học lại sao cho tôn trọng phân bổ ấy trong các loạt, mà mỗi loạt có thể mang theo một mong muốn lặp lại cụ thể;
    • nếu không, các loạt được suy đoán: cùng môn học, cùng nhóm, cùng dạng — thời lượng và giáo viên tương đương nhau. Các nhóm thuộc cùng một phân chia lớp vẫn tách riêng, vì hai nhóm học cùng lúc thì chiếm hai khung giờ. Một tiết học đơn lẻ, không có tiết nào cùng loại, thì không làm nên một loạt.

    Khi đó mỗi loạt đi tìm chỗ của mình trên một tuần giả định, như trên một thời khóa biểu hàng tuần. Việc tạo tự động đọc ở đó nhịp độ mà chính sách yêu cầu: cột Lặp lại của một quy tắc cho biết hai lần mỗi tuần hay một lần mỗi ba tuần; Tự động để nhịp độ ấy được suy ra từ số tiết học so với số tuần giảng dạy. Một khóa học dạy bốn lần mỗi tuần chiếm bốn khung giờ của tuần mẫu. Tuần lý thuyết này đã tính đến các ràng buộc về lịch: những tiết học đã cố định, những khoảng bận vào các ngày hay các khung giờ cụ thể. Nhiều loạt cũng có thể nối tiếp nhau trên cùng một khung giờ.

  2. Trải ra trên lịch. Tuần đã tìm được sau đó lặp lại trên khoảng ngày của lớp: cửa sổ ngày của lớp khi lớp có khai báo, nếu không thì toàn bộ giai đoạn của thời khóa biểu. Ở đó, mỗi tiết học của loạt nhận được tuần, ngày và khung giờ của mình. Các lỗi tương thích được xem xét theo từng ngày; khi chỗ chính xác đã bị chiếm, thuật toán giữ lấy lời giải gần nhất.

  3. Lượt tạo tự động theo lịch thông thường hoàn tất phần việc còn lại, không còn lặp lại nữa. Những gì tuần mẫu chưa ấn định được ngày thì không bị ép: các tiết học ấy nhập vào lô những tiết học không lặp lại, và đến lượt mình, lượt tạo ấy sẽ xếp chúng.

Việc tạo tự động làm việc như thế nào

Hiểu được lô-gic của công cụ tạo tự động giúp bạn đoán trước nó sẽ xếp gì, sẽ hy sinh gì, và điều hướng nó ra sao. Nó theo đuổi hai mục tiêu, theo đúng thứ tự này:

  1. Xếp vừa tất cả — ưu tiên tuyệt đối: đặt được vị trí cho mọi tiết học trong khi vẫn tuân thủ các ràng buộc cứng.
  2. Tối ưu hóa chất lượng — khi mọi thứ đã vừa, giảm giờ trống, làm mượt các ngày học, đáp ứng các ưu tiên.

Nó xuất phát từ một trạng thái sạch (các tiết học đã khóa giữ nguyên chỗ, những tiết còn lại được xếp lại từ đầu) và xử lý từ tiết học khó nhất đến tiết học dễ nhất. Độ khó chủ yếu đến từ sự chật hẹp của các ràng buộc: một khóa học mà giáo viên chỉ rảnh một buổi chiều mỗi tuần, hay một khối bốn giờ phải xếp liền mạch, sẽ được đưa lên đầu. Khi độ khó ngang nhau, nó luân phiên các môn học và xử lý những môn hiếm trước những môn phổ biến, để chia đều cơ hội cho mỗi môn.

Khi không phải mọi thứ đều vừa: sự hy sinh

Nếu thời khóa biểu bị ràng buộc quá chặt để xếp vừa tất cả, công cụ tạo tự động không bỏ cuộc: nó chọn ra tập hợp nhỏ nhất các tiết học phải để sang một bên sao cho phần còn lại vẫn vừa, rồi tối ưu hóa thời khóa biểu chưa đầy đủ đó. Những tiết học bị hy sinh vẫn nằm trong thanh post-it các tiết học cần xếp. Vì việc sắp thứ tự đã ưu tiên cái khó nhất và cái hiếm nhất, nên thường chính những tiết học dễ xếp và có số lượng lớn mới là bên nhường bước: giờ thứ 5 của một môn học nhiều giờ sẽ bị bỏ lại trước giờ duy nhất của một môn học hiếm.

Bạn vẫn nắm quyền quyết định trong những đánh đổi này: hãy khóa những tiết học không bao giờ được xê dịch — được xếp trước tiên, chúng sẽ không bị hy sinh — và hãy nới bớt tình trạng quá nhiều ràng buộc (mở thêm khung giờ, nới rộng thời gian rảnh) ở những chỗ có thể, để tổng thể xếp vừa.

Ràng buộc cứng và ràng buộc mềm

Không phải ràng buộc nào cũng như nhau:

  • Cứng — không bao giờ bị vi phạm: sự chiếm dụng (một giáo viên, một lớp, một nhóm, một phòng học hay một tài nguyên không thể được dùng vào hai việc cùng một lúc), những khoảng được đánh dấu Bận (màu đen) trên một giáo viên, một lớp, một phòng học, một khóa học hay một nhóm, việc không còn phòng học hay tài nguyên nào trống vào khung giờ đó, các ngày đóng cửa, các vị trí đã khóa và các căn chỉnh nhóm.
  • Mềm — tất cả phần còn lại, những gì công cụ tạo tự động có thể vi phạm với cái giá là một điểm trừ để xếp vừa được tất cả: những khoảng được đánh dấu Không mong muốn (màu đỏ — nên tránh, chứ không bị cấm) và các ưu tiên tối ưu hóa (độ gọn, độ dàn trải, gom theo ngày…). Một ràng buộc ưu tiên cao có sức nặng lớn hơn một ràng buộc ưu tiên thấp, nhưng không ràng buộc nào gây chặn. Công cụ tạo tự động cũng thử nới lỏng ở vài chỗ cụ thể (xếp vào các khung giờ con của lưới thời gian…) khi đó là cái giá phải trả để không phải hy sinh tiết học nào.

Kiểm tra mà không tối ưu hóa

Tùy chọn tạo nhanh (không tối ưu hóa) chạy một lượt rút gọn, chủ yếu để trả lời một câu hỏi: liệu mọi thứ có vừa không? Hữu ích để thử tính khả thi của một cấu hình trước khi bỏ thời gian cho một lượt tối ưu hóa đầy đủ.

Kết quả

  • Dải thông báo màu xanh lá: việc tạo tự động thành công. Các tiết học trong phạm vi đã yêu cầu đều xếp được và bạn có thể xem xét kết quả.
  • Dải thông báo màu đỏ: không tìm được lời giải đầy đủ nào. Thời khóa biểu tốt nhất đã tính được vẫn xem được, còn những tiết học chưa xếp thì hiện trong thanh post-it để bạn chẩn đoán.

Xem Chẩn đoán khi việc tạo thời khóa biểu thất bại.

Hợp nhất hay tạo bản sao

Sau một lượt tạo tự động thành công, Omniscol đưa ra hai lựa chọn:

  • Hợp nhất vào thời khóa biểu hiện tại (kết quả xếp lịch thay thế cái đang có).
  • Tạo một bản sao (thời khóa biểu hiện tại giữ nguyên, kết quả đã tối ưu trở thành một thời khóa biểu mới).

Nếu bạn dự định chạy lại về sau (vì bạn dựng dần từng phần chẳng hạn), đừng hợp nhất: nếu không, những tiết học đã xếp sẽ trở thành điểm xuất phát cho lượt tạo mới.

Khóa một tiết học trước khi chạy lại việc tạo tự động

Trên một tiết học đã được xếp, hãy dùng ổ khóa vị trí để khóa nó lại. Lượt tạo tiếp theo sẽ không dời tiết học ấy mà điều chỉnh những tiết học khác xung quanh. Cách này tiện để cố định những tiết học “không thể xê dịch” (chuyên gia bên ngoài đã ấn định lịch, kỳ thi đã định ngày, các điểm neo thủ công…). Chi tiết đầy đủ ở Khóa một tiết học: khóa hàng loạt, tác động lên phần chẩn đoán (đỏ → cam), cách hành xử của thuật toán.

Xuất một thời khóa biểu ra JSON

Nút chỉ xuất thời khóa biểu hiện tại dưới định dạng JSON. Đây không phải bản xuất đầy đủ của tài khoản, vốn được mô tả trong Nhập và xuất dữ liệu.

Các trường hợp thường gặp:

  • giữ lại dấu vết của một bản nháp hay một kịch bản trước khi xóa;
  • lưu trữ một trạng thái trung gian trước một đợt sắp xếp lại lớn;
  • gửi đúng thời khóa biểu này cho đội ngũ Omniscol trong khuôn khổ hỗ trợ.

Cũng như với bản xuất JSON đầy đủ của tài khoản nhà trường, việc nhập ngược trở lại không phải là một thao tác chuẩn mà phía nhà trường tự do dùng được.

Bước tiếp theo

Bước cuối cùng: Công bố một thời khóa biểu.

Hướng dẫn

Chạy một lượt tạo tự động

  1. Việc tạo tự động xếp các tiết học lên lưới thời gian trong khi vẫn tuân thủ hàng chục ràng buộc (thời gian rảnh, sức chứa, căn chỉnh nhóm, chuyên ngành, tuần luân phiên). Khả dụng trên thời khóa biểu theo tuần, theo chu kỳ và theo lịch.

  2. Hãy kiểm tra thẻ Tạo thời khóa biểu. Các thống kê tổng thể hiện ra ở đó: số tiết học đã tạo so với số đã xếp, khối lượng giờ đã nhập so với giờ làm việc của giáo viên, cảnh báo gây chặn (màu đỏ), cảnh báo màu vàng (báo trước nhưng không chặn).

  3. Hãy sửa các cảnh báo màu đỏ trước khi khởi chạy. Chừng nào còn cảnh báo đỏ, việc tạo tự động không thể bắt đầu — trừ khi bạn ép chạy qua menu “Thêm tùy chọn”, nhưng cách đó không được khuyến nghị. Các cảnh báo màu vàng cần bạn cân nhắc nhưng không ngăn việc tạo tự động.

  4. Hãy chỉnh các tùy chọn tạo tự động nếu cần: phòng học cần gán, chỉ kiểm tra hay bỏ qua; lớp hoặc môn học được nhắm tới; tạo nhanh không tối ưu hóa; bỏ qua những phòng học đã gán hoặc những vị trí hiện tại. Ở chế độ lịch, các tùy chọn nâng cao còn cho phép giới hạn cửa sổ ngày được tạo và nén các tiết học vào đầu giai đoạn, cuối giai đoạn hoặc không ưu tiên đầu cuối.

  5. Hãy nhấn Tạo thời khóa biểu. Quá trình xử lý chạy ở chế độ nền; màn hình cho biết trạng thái của lượt tạo và cho phép xem xét kết quả khi đã có.

  6. Hãy lưu lại khi điểm số đã vừa ý bạn. Thời khóa biểu đã được xếp xong. Bước tiếp theo: rà soát các lỗi tương thích nếu có, chỉnh tay những trường hợp riêng (xem Xếp thủ công), rồi công bố.

  7. Bước tiếp theo: Công bố một thời khóa biểu.

Xem thêm