Řízení vstupu do rozvrhu robotem

Z Nápověda KOS
Skočit na navigaci Skočit na vyhledávání

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:

  1. Přečte hodnotu parametru ZRVK_VPUSTIT.
  2. Pokud parametr není vyplněn, nedělej nic a skonči.
  3. Je-li hodnota parametru ZRVK_VPUSTIT = 0, naplň parametr ZRVK_LIMIT hodnotou 9999 a skonči.
  4. 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 ?

  1. parametr ZRVK_KDY="16:00"
  2. parametr ZROTEVST="4.2.2024"
  3. 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:

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:

  1. 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.
  2. Z připravených údajů vytvoř množinu studentů M, kteří nezískali požadovaný minimální počet kreditů.
  3. 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.
  4. 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ů).
  5. Ze zobrazení S2 spočti četnost jednotlivých limitů, výsledkem je zobrazení L : Limit -> Pocet.
  6. 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.
  7. Najdi takový limit x, pro který je hodnota |K(x)-VPUSTIT| minimální. Vrať jej jako LIMIT.
  8. Ze zobrazení S sestaveného v druhém kroku vyber množinu studentů STUDENTI, kteří vyhovují nalezenému limitu LIMIT.
Diagram toku dat

Parametry_KOS