Krok 7 — Automatyczne generowanie

Po utworzeniu lekcji umieszcza się je na siatce godzin. Budowanie planu lekcji jest w praktyce cyklem, a nie jednorazowym działaniem:

  1. umieszcza się kilka lekcji ręcznie — aby zakotwiczyć to, co niezmienne, albo zablokować twarde ograniczenia (zajęcia prowadzone przez nauczycieli zewnętrznych o ustalonej dacie, egzaminy, ręczne dostrojenia);
  2. uruchamia się generowanie (całości albo części), aby algorytm umieścił pozostałe lekcje z zachowaniem ograniczeń;
  3. koryguje się na marginesie — poprawia szczególny przypadek, przesuwa lekcję, zmienia zdanie;
  4. i wszystko może się zapętlić: generuje się na bieżąco (dodane lekcje albo — w trybie kalendarzowym — po zakresach dat, partiami klas lub kampusów).

Wszystko można też zrobić w 100% ręcznie, bez algorytmu generowania. Ręczne umieszczanie (umieszczanie, przesuwanie, blokowanie, pojedynczo albo masowo) ma własną stronę: Ręczne umieszczanie. Całość przebiegu opisuje Przegląd modułu.

Ta strona dotyczy automatycznego generowania.

Generowanie umieszcza lekcje, nie tworzy ich

Algorytm generowania pracuje na lekcjach, które już istnieją. Szuka dla nich przedziału czasowego i sali. Nauczycielami pozostają natomiast ci, których przypisano do kursu: algorytm generowania ich nie zastępuje ani nie wyznacza innych — po prostu odrzuca przedział czasowy, w którym nie są wolni.

Stąd kolejność, której należy przestrzegać:

  1. proszę zadeklarować przedmiot i jego wymiar dla każdej klasy: to właśnie kurs, wiersz z liczbą godzin;
  2. proszę utworzyć lekcje z tej liczby godzin, w kroku Podział godzin i tworzenie lekcji — to one są umieszczane przez algorytm generowania;
  3. a potem uruchomić generowanie.

Otwarcie zakładki generowania przed utworzeniem lekcji prowadzi do martwego przycisku: nie ma czego umieszczać, a ekran weryfikacji wyświetla Nie zdefiniowano żadnej lekcji.

Dlaczego przycisk generowania jest wyszarzony

Przycisk odzwierciedla diagnostykę wyświetloną bezpośrednio powyżej, w zakładce Weryfikacja. Trzy sytuacje:

  • Brak alertów albo tylko ostrzeżenia — przycisk pozostaje aktywny, choć wygląda przygaszony. Ostrzeżenie (żółte) wskazuje ryzyko, a nie niemożliwość; niebieskie ma charakter informacyjny.
  • Alert krytyczny (czerwony) — główny przycisk jest wyłączony. Obliczenia można nadal uruchomić przez Więcej opcji, na własne ryzyko: algorytm generowania nie zobaczy problemu, który alert zgłasza, i tak wyprodukuje plan lekcji, a odpowiedzialność za jego wynik spada na osobę, która go uruchomiła. Lepiej poprawić alert.
  • Alert bezwzględnie blokujący — wyłączone są i przycisk, i menu opcji. Brakuje danej, bez której obliczenia nie mają żadnego sensu: żadnej lekcji, żadnej użytecznej klasy (klasa jest użyteczna, gdy ma lokalizację i lekcje) albo używanej lokalizacji bez zdefiniowanej siatki godzin. Szkoła, w której nie utworzono jeszcze żadnej lokalizacji, należy do tego przypadku: bez lokalizacji żadna klasa nie jest użyteczna.

Statystyka Liczba skonfigurowanych klas staje się w tym ostatnim przypadku czerwona.

Każdy alert jest nazwany wprost na liście, wraz z klasą, lokalizacją lub nauczycielem, którego dotyczy. Skalę ważności i jej odczytywanie opisuje Konflikty i diagnostyka; usuwanie usterek generowania, które nie dochodzi do końca — Diagnozowanie nieudanego generowania.

Dostępność funkcji

Automatyczne generowanie jest dostępne na planach lekcji tygodniowych, cyklicznych i kalendarzowych. W trybie kalendarzowym lekcje umieszczane są na rzeczywistych datach, a opcje mogą ograniczyć generowany zakres dat.

Przygotowanie

Przed kliknięciem Generuj plan lekcji:

  • proszę rozwinąć zakładkę Generowanie (na kalendarzowym planie lekcji nazwaną Weryfikacja), aby sprawdzić ogólne statystyki,
  • proszę poprawić alerty krytyczne (czerwone) — zob. poprzednią sekcję o wyszarzonym przycisku,
  • proszę przejrzeć ostrzeżenia (żółte) — nie blokują, ale wskazują ryzyko (zbyt restrykcyjna dostępność, pojemność na granicy itd.).

Ekran podaje też:

  • liczbę lekcji utworzonych wobec lekcji umieszczonych,
  • wprowadzone liczby godzin wobec godzin pracy nauczycieli,
  • grupy przypisane do co najmniej jednego kursu (aby wychwycić grupy zapomniane lub nieużywane).

Uruchomienie

Proszę kliknąć Generuj plan lekcji. Omniscol uruchamia dedykowane, zrównoleglone środowisko obliczeniowe. Czas trwania zależy od wielkości planu lekcji, liczby ograniczeń i wybranych opcji. Szkoła nie musi zarządzać żadną kolejką; inicjalizacja zajmuje często około dziesięciu sekund, zanim obliczenia naprawdę się zaczną.

Obliczenia mają limit dwudziestu minut, w praktyce jednak znacznie wykraczający poza potrzebę: plan lekcji liczący około 200 kursów odpowiada często w dwadzieścia sekund — sam algorytm jest niemal natychmiastowy, najwięcej waży rozruch maszyny — a ~600 kursów w około minutę. Bardzo dużej szkole, która zbliżałaby się do tego limitu, zespół Omniscol może na wniosek zwiększyć moc maszyny obliczeniowej.

Opcje generowania

Domyślnie generowanie umieszcza wszystkie lekcje utworzone i nieumieszczone. Może też przesunąć lekcje już umieszczone, jeśli poprawia to plan lekcji. Lekcje zablokowane zachowują swoją pozycję.

Menu opcji pozwala w szczególności:

  • obsłużyć sale na trzy sposoby: domyślnie zoptymalizowany przydział, wyłącznie weryfikacja albo całkowite pominięcie sal;
  • wybrać tylko niektóre klasy albo niektóre przedmioty;
  • ograniczyć kalendarzowy plan lekcji do docelowego okna dat;
  • zignorować już przypisane sale albo istniejące pozycje lekcji;
  • przypisać wyłącznie sale, bez przeliczania całego rozmieszczenia;
  • uruchomić szybkie generowanie, bez optymalizacji;
  • dopuścić elastyczne umieszczanie w podprzedziałach czasowych siatki godzin, gdy plan lekcji z nich korzysta.

Zaawansowane parametry optymalizacji pozwalają też zmniejszyć luki, unikać dwóch lekcji tego samego przedmiotu w jednym dniu, rozłożyć lekcje, ustalić minimalną lub maksymalną liczbę godzin albo wybrać liczbę dni obecności nauczycieli. Zwyczaje różnią się w zależności od kraju: we Francji część szkół dąży do zmniejszenia liczby dni obecności nauczycieli; w innych kontekstach woli się przeciwnie — rozłożyć te dni, na przykład po to, by zorganizować w lokalizacji inne zadania.

Opcje właściwe dla trybu kalendarzowego

W trybie kalendarzowym opcje zaawansowane mogą ograniczyć generowanie do docelowego okna dat, krótszego niż cały zakres planu lekcji. Przydaje się to do wygenerowania tylko części roku: testu na jednym miesiącu, stopniowego budowania semestru albo powrotu do okresu już przygotowanego.

Druga ważna opcja to zagęszczanie dni dla klas. Domyślnie algorytm generowania szuka raczej równowagi na dostępnych dniach; przy generowaniu tylko części lekcji z roku takie zachowanie może sztucznie rozciągnąć kursy. Zagęszczanie pozwala zażądać ich skupienia:

  • na początku okna;
  • na końcu okna;
  • bez preferencji początku ani końca, ale z zachowaniem dni tak zagęszczonych, jak to możliwe.

Powtarzalność w planie lekcji typu kalendarz: najpierw tydzień wzorcowy

Plan lekcji typu kalendarz datuje każdą lekcję osobno. Niektóre formy kształcenia nie działają jednak w ten sposób: kurs w poniedziałek o 10.00 wraca co tydzień, na ile to możliwe. Klasa deklaruje to opcją Powtarzalne lekcje; kurs tej klasy wyłącza się z niej opcją Poza powtarzalnością. Nic nie jest odgadywane: bez tej deklaracji generowanie umieszcza każdą lekcję na jej dacie, niezależnie od podobieństw między nimi. Sama polityka podziału jest opcjonalna: powtarzalność obowiązuje sama z siebie; jawna polityka wskazuje rytm, który algorytm ma zachować w jak największym stopniu.

Gdy choć jedna klasa planu lekcji jest powtarzalna, generowanie pracuje w trzech etapach.

  1. Najpierw tydzień wzorcowy. Lekcje grupują się w serie. Dwa przypadki:

    • na kursie obowiązuje polityka podziału godzin: algorytm skupia lekcje tak, aby zachować ten podział w seriach, które mogą nieść dokładne oczekiwanie co do powtarzalności;
    • w przeciwnym razie serie są odgadywane: ten sam przedmiot, ta sama grupa, ten sam kształt — porównywalny czas trwania i nauczyciele. Serie nie łączą grup, które obejmuje ten sam podział klasy: dwie grupy pracujące w tym samym czasie zajmują dwa przedziały czasowe. Lekcja jedyna w swoim rodzaju nie tworzy serii.

    Każda seria szuka wtedy swojego miejsca na fikcyjnym tygodniu, jak na planie lekcji typu tygodniowy. Generowanie czyta tam rytm wymagany przez politykę: kolumna Powtarzalność w regule mówi dwa razy w tygodniu albo raz na trzy tygodnie; Automatyczny pozwala go wywnioskować z liczby lekcji w stosunku do tygodni nauki. Kurs prowadzony cztery razy w tygodniu zajmuje cztery przedziały czasowe tygodnia wzorcowego. Ten teoretyczny tydzień uwzględnia już ograniczenia kalendarzowe: lekcje ustalone, niedostępności w konkretnych datach lub przedziałach czasowych. Serie mogą też zajmować ten sam przedział czasowy, następując po sobie.

  2. Rozwinięcie na kalendarzu. Znaleziony tydzień powtarza się następnie na zakresie dat klasy: na tym, który wyznacza jej okno dat, gdy klasa je ma, w przeciwnym razie na całym okresie planu lekcji. Każda lekcja serii otrzymuje tam swój tydzień, swój dzień, swój przedział czasowy. Konflikty bada się data po dacie; gdy dokładne miejsce jest już zajęte, algorytm wybiera rozwiązanie najbliższe.

  3. Pracę kończy zwykłe generowanie kalendarzowe, bez powtarzalności. To, czego tydzień wzorcowy nie zdołał zadatować, nie jest wymuszane: te lekcje dołączają do zestawu lekcji bez powtarzalności, a zwykłe generowanie umieszcza je z kolei.

Jak pracuje generowanie

Zrozumienie logiki algorytmu generowania pomaga przewidzieć, co umieści, co poświęci i jak nim pokierować. Realizuje dwa cele, w tej kolejności:

  1. Zmieścić wszystko — bezwzględny priorytet: umieścić wszystkie lekcje z zachowaniem twardych ograniczeń.
  2. Zoptymalizować jakość — gdy wszystko już się mieści, zmniejszyć luki, wygładzić dni, spełnić zgłoszone oczekiwania.

Wychodzi od czystego stanu (lekcje zablokowane zachowują swoje miejsce, pozostałe są rozgrywane od nowa) i umieszcza od lekcji najtrudniejszej do najłatwiejszej. Trudność wynika przede wszystkim z wąskich ram ograniczeń: kurs, którego nauczyciel jest dostępny tylko jedno popołudnie w tygodniu, albo blok czterech godzin do umieszczenia w jednym kawałku, idzie na początek. Przy równej trudności algorytm przeplata przedmioty i obsługuje najrzadsze przed najczęstszymi, aby sprawiedliwie rozłożyć szanse każdego z nich.

Kiedy nie wszystko się mieści: poświęcenie

Jeśli plan lekcji jest zbyt ograniczony, by zmieścić wszystko, algorytm generowania nie rezygnuje: wybiera najmniejszy zbiór lekcji, które zostawi na boku, aby pozostałe się zmieściły, a potem optymalizuje ten częściowy plan lekcji. Poświęcone lekcje pozostają na pasku karteczek do umieszczenia. Ponieważ sortowanie dało pierwszeństwo najtrudniejszemu i najrzadszemu, ustępują raczej lekcje łatwe i liczne: piąta godzina przedmiotu o dużej liczbie godzin przed jedyną godziną przedmiotu rzadkiego.

Te rozstrzygnięcia pozostają w rękach administratora: proszę zablokować lekcje, które nigdy nie mają się ruszać — umieszczane w pierwszej kolejności, nie są poświęcane — i rozluźnić nadmiar ograniczeń (otwarte przedziały czasowe, dostępność) tam, gdzie to możliwe, aby całość się zmieściła.

Twarde i miękkie ograniczenia

Nie wszystkie ograniczenia są równe:

  • Twarde — nigdy nienaruszane: obłożenie (nauczyciel, klasa, grupa, sala ani zasób nie są wykorzystywane dwa razy w tym samym momencie), zakresy oznaczone jako Niedostępny (czarne) na nauczycielu, klasie, sali, kursie lub grupie, brak wolnej sali lub wolnego zasobu w danym przedziale czasowym, dni zamknięte, zablokowane pozycje oraz wyrównania grup.
  • Miękkie — wszystko pozostałe, co algorytm generowania może naruszyć za cenę punktów karnych, aby zmieścić całość: zakresy oznaczone jako Niepożądany (czerwone — do unikania, nie zakazane) oraz ustawienia optymalizacji (zagęszczenie, rozłożenie, grupowanie dni…). Ograniczenie o wysokim priorytecie waży więcej niż o niskim, ale żadne nie blokuje. Algorytm generowania próbuje też punktowych złagodzeń (umieszczenie w podprzedziałach czasowych siatki godzin…), gdy jest to cena, którą trzeba zapłacić, by nie poświęcić żadnej lekcji.

Weryfikacja bez optymalizacji

Opcja szybkiego generowania (bez optymalizacji) uruchamia odciążony przebieg, który odpowiada przede wszystkim na jedno pytanie: czy wszystko się mieści? Przydaje się do sprawdzenia wykonalności konfiguracji, zanim poświęci się czas na pełną optymalizację.

Wynik

  • Zielony baner: generowanie udane. Lekcje z żądanego zakresu udało się umieścić, a wynik można sprawdzić.
  • Czerwony baner: nie znaleziono żadnego kompletnego rozwiązania. Najlepszy obliczony plan lekcji pozostaje widoczny, a lekcje nieumieszczone pojawiają się na pasku karteczek do diagnostyki.

Zob. Diagnozowanie nieudanego generowania.

Konsolidacja albo kopia

Po udanym generowaniu Omniscol proponuje dwie możliwości:

  • Skonsolidować w bieżącym planie lekcji (rozmieszczenie zastępuje istniejące).
  • Utworzyć kopię (obecny plan lekcji pozostaje nietknięty, zoptymalizowany wynik staje się nowym planem lekcji).

Jeśli planowane jest ponowne generowanie później (na przykład przy budowaniu przyrostowym), proszę nie konsolidować: w przeciwnym razie lekcje już umieszczone stałyby się punktami wyjścia dla nowego generowania.

Zablokowanie lekcji przed ponownym uruchomieniem generowania

Na lekcji już umieszczonej proszę użyć kłódki pozycji, aby ją zablokować. Następne generowanie jej nie przesunie, lecz dostosuje wokół niej pozostałe lekcje. Przydaje się to do zakotwiczenia lekcji „niezmiennych” (ustalonych zajęć prowadzonych przez nauczycieli zewnętrznych, egzaminów o wyznaczonej dacie, ręcznych dostrojeń…). Pełne szczegóły zawiera Blokowanie lekcji: blokowanie masowe, skutki dla diagnostyki (czerwony → pomarańczowy), zachowanie algorytmu.

Eksport planu lekcji do formatu JSON

Przycisk eksportuje wyłącznie bieżący plan lekcji w formacie JSON. To nie jest pełny eksport konta, opisany w Import i eksport.

Typowe przypadki:

  • zachowanie śladu wersji roboczej lub scenariusza przed usunięciem;
  • zarchiwizowanie stanu przejściowego przed poważną reorganizacją;
  • przekazanie tego konkretnego planu lekcji zespołowi Omniscol w ramach wsparcia.

Podobnie jak przy pełnym eksporcie konta szkoły do formatu JSON, ponowne wczytanie nie jest standardowym zastosowaniem swobodnie dostępnym po stronie szkoły.

Co dalej

Krok końcowy: Publikacja planu lekcji.

Instrukcja

Uruchomienie automatycznego generowania

  1. Automatyczne generowanie umieszcza lekcje na siatce godzin z zachowaniem dziesiątek ograniczeń (dostępność, pojemności, wyrównania grup, specjalizacje, naprzemienność). Dostępne na planach lekcji tygodniowym, cyklicznym i kalendarzowym.

  2. Proszę sprawdzić zakładkę Generowanie. Pojawiają się tam ogólne statystyki: lekcje utworzone wobec umieszczonych, wprowadzone liczby godzin wobec godzin pracy nauczycieli, alerty krytyczne (czerwone), ostrzeżenia (żółte — uprzedzają, nie blokując).

  3. Proszę poprawić czerwone alerty przed uruchomieniem. Dopóki jakieś pozostają, generowanie nie może się zacząć — chyba że zostanie wymuszone przez menu „więcej opcji”, co nie jest zalecane. Żółte wymagają rozstrzygnięcia, ale nie uniemożliwiają generowania.

  4. Proszę ustawić opcje generowania, jeśli to potrzebne: sale do przypisania, tylko do weryfikacji albo do pominięcia; docelowe klasy lub przedmioty; szybkie generowanie bez optymalizacji; zignorowanie już przypisanych sal albo istniejących pozycji. W trybie kalendarzowym opcje zaawansowane pozwalają też zawęzić generowane okno dat i zagęścić lekcje na początku okresu, na jego końcu albo bez preferencji co do pozycji.

  5. Proszę kliknąć Generuj plan lekcji. Przetwarzanie działa w tle; ekran pokazuje stan generowania i pozwala sprawdzić wynik, gdy jest już dostępny.

  6. Proszę zapisać, gdy ocena jest zadowalająca. Plan lekcji jest rozmieszczony. Następny krok: proszę przejrzeć ewentualne konflikty, ręcznie skorygować szczególne przypadki (zob. Ręczne umieszczanie), a potem opublikować.

  7. Co dalej: Publikacja planu lekcji.

Zobacz także