Řízení vstupu do rozvrhu robotem
Robot - algoritmus zpracování
Aby byla zajištěna plynulost přihlašování studentů do rozvrhu, byl pro podmínku založenou na váženém počtu kreditů implementován robot, který spočte a nastaví novou hodnotu limitu pro vpuštění do rozvrhu (parametr ZRVK_LIMIT) na základě požadovaného počtu vpuštěných studentů (parametr ZRVK_VPUSTIT. Robot postupuje takto:
- Přečte hodnotu parametru ZRVK_VPUSTIT.
- Pokud parametr není vyplněn, nedělej nic a skonči.
- Je-li hodnota parametru ZRVK_VPUSTIT = 0, naplň parametr ZRVK_LIMIT hodnotou 9999 a skonči.
- Je-li hodnota parametru ZRVK_VPUSTIT > 0, nastav parametr ZRVK_LIMIT na hodnotu, při které je počet studentů vpuštěných do rozvrhu nejblíže počtu uvedenému v parametru ZRVK_VPUSTIT (ale vždy větší než 0). Zároveň všem studentům, kteří vyhověli podmínce, nastav příznak "KROZVRHU" na "A" a pošli jim mail s oznámením, že byli vpuštěni do rozvrhu.
Výpočet je součástí nočního zpracování nebo pokud je nastaven parametr ZRVK_KDY výpočet se spouští v čas určený tímto parametrem. (Pokud ZRVK_KDY neexistuje nebo není nastaven, algoritmus se provede v nočním zpracování.)
Výpočet je možné omezit pouze na studenty konkrétních programů. Viz parametr ZRVK_PROG.
Otevření vstupu do rozvrhu - první spuštění robota
Vstup do rozvrhu je zpravidla otvírán v konkrétní hodinu daného dne. Jak tedy vpustit první várku studentů do rozvrhu například v 16 hodin dne 4.2.2024 ?
- parametr ZRVK_KDY="16:00"
- parametr ZROTEVST="4.2.2024"
- parametr ROZUZAVST = den kdy má končit zápis do rozvrhu
Takto je třeba parametry nastavit kdykoliv předtím než nastane 16:00 dne 4.2.2024. Klidně týden předem. Algoritmus se při takovém nastavení bude spuštět každý den v 16:00 od 4.2.2024 po den nastavený v ROZUZAVST.
Zastaralý způsob použítí - (kdy neexistoval parametr ZRVK_KDY)
Vstup do rozvrhu je zpravidla otvírán v konkrétní hodinu daného dne. Změna nastavení parametrů se projeví až v nočním zpracování. Jak tedy vpustit první várku studentů do rozvrhu například v 16 hodin?
Ve formuláři 80108 lze naplánovat budoucí nastavení parametrů dokonce i na určitou hodinu. Je-li naplánována na daný den a danou hodinu (v našem příkladu na 16:00) změna parametru ZROTEVST na tentýž den (v den změny je to "dnešní" datum), spustí se při provedení změny (v 16:00) i automatické vpuštění do rozvrhu, které vpustí první várku studentů do rozvrhu. Každá další várka pak bude vpuštěna během nočního zpracování.
Příklad: dne 10.01.2017 v kalendáři nastavení parametrů vytvořím tyto tři položky:
Od kdy Parametr Nová hodnota Stará hodnota Pozn. 29.1.2017 23:40 ZROTEVST 04.03.2017 10.5.2016 nová hodnota musí být větší, než ta, kterou nastavíme na 2. následujícím řádku 30.01.2017 23:50 ROZUZAVST 28.2.2017 29.09.2016 nová hodnota musí být větší, než ta, kterou nastavíme na následujícím řádku 30.1.2017 0:10 ZROTEVST 30.1.2017 28.2.2017 změna z jiné hodnoty na datum změny
Algoritmus stanovení limitu vážených kreditů
Vstupy:
- PRISEM, PRISEM2 - semestry, do kterých probíhá zápis. PRISEM2 se použije při kontrole požadovaného minimálního počtu kreditů
- FAKULTA - fakulta, pro kterou probíhá výpočet
- VPUSTIT - Požadovaný počet studentů vpuštěných do rozvrhu
Výstupy:
- LIMIT - Limit vážených kreditů
- STUDENTI - Seznam studentů, kteří by byli vpuštěni do rozvrhu při nastavení výsledného limitu
Postup:
- Přečti a spočítej z databáze množinu čtveřic <student, semestr, počet kreditů studenta v semestru, počet vážených kreditů studenta v semestru> pro všechny studující studenty fakulty FAKULTA, kteří mají v semestru PRISEM zapsán alespoň jeden předmět, nejsou doktorandi a nemají dosud otevřen přístup do rozvrhu.
- Z připravených údajů vytvoř množinu studentů M, kteří nezískali požadovaný minimální počet kreditů.
- Pro každého studenta, který se vyskytuje v množině čtveřic načtené v prvním kroku, spočti jeho individuální limit, při kterém by byl vpuštěn do rozvrhu. Výsledkem je zobrazení S : Student -> Limit.
- Ze zobrazení S vytvoř S2 tak, že z definičního oboru S odstraníš všechny prvky množiny M (odstraníš studenty, kteří nezískali dostatečný počet kreditů).
- Ze zobrazení S2 spočti četnost jednotlivých limitů, výsledkem je zobrazení L : Limit -> Pocet.
- Z nalezených četností L spočti zobrazení K, které každému nalezenému limitu přiřadí počet studentů, který by byl při dané hodnotě vpuštěn do rozvrhu. Výsledkem je zobrazení K : Limit -> Pocet.
- Najdi takový limit x, pro který je hodnota |K(x)-VPUSTIT| minimální. Vrať jej jako LIMIT.
- Ze zobrazení S sestaveného v druhém kroku vyber množinu studentů STUDENTI, kteří vyhovují nalezenému limitu LIMIT.