Title: | Explore and Interactively Adjust a Daily Distribution of Lessons |
Version: | 0.1.0 |
Description: | A set of functions to see and interactively adjust a distribution of lessons by day, aiming at homogenizing individual distributions (for each class and teacher). |
License: | MIT + file LICENSE |
Encoding: | UTF-8 |
Language: | ro |
RoxygenNote: | 7.3.2 |
Depends: | R (≥ 3.5.0) |
LazyData: | true |
Imports: | dplyr, magrittr, purrr, rlang, stats |
Suggests: | knitr, rmarkdown |
VignetteBuilder: | knitr |
NeedsCompilation: | no |
Packaged: | 2025-05-15 14:50:31 UTC; vb |
Author: | Vlad Bazon [aut, cre] |
Maintainer: | Vlad Bazon <vlad.bazon@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2025-05-19 13:40:02 UTC |
recastlessons: Explore and Interactively Adjust a Daily Distribution of Lessons
Description
A set of functions to see and interactively adjust a distribution of lessons by day, aiming at homogenizing individual distributions (for each class and teacher).
Author(s)
Maintainer: Vlad Bazon vlad.bazon@gmail.com
Pipe operator
Description
See magrittr::%>%
for details.
Usage
lhs %>% rhs
Arguments
lhs |
A value or the magrittr placeholder. |
rhs |
A function call using the magrittr semantics. |
Value
The result of calling rhs(lhs)
.
Repartizarea finală pe zile (plecând de la 'R123' și 'TPL')
Description
A vedea 'vignette(package="spysetlessons")'
Usage
DZ
Format
- prof
Profesorii și cuplajele
- cls
Clasa la care profesorul are de făcut o lecție
- zl
Ziua în care a fost re-alocată lecția
O repartizare pe zile a lecțiilor de desfășurat într-o școală pe parcursul unei săptămâni (în "format lung")
Description
Set de 928 lecții prof | cls | zl (repartizate deja pe zile). Repartiția respectivă este într-o anumită măsură, echilibrată: numărul de ore/zi la fiecare clasă este cuprins între 5 și 7; fiecare profesor are nu mai mult de 7 ore/zi; poate cu unele excepții (când este omogenă), distribuția pe zile a lecțiilor profesorului este cvasi-omogenă (diferind cu cel mult două ore, de la o zi la alta).
Usage
R123
Format
- prof
Cod de 3 sau 6 caractere, reprezentând un profesor, respectiv un cuplaj (doi profesori, pe grupe ale unei clase); primele două litere abreviază disciplina pe care este încadrat profesorul, iar cifra care urmează indexează profesorii de pe aceeași disciplină
- cls
Clasa (două sau trei caractere) la care profesorul are de făcut o lecție
- zl
Ziua în care a fost alocată lecția
Lecții tuplate: perechi sau triplete de lecții prof|cls care trebuie să rămână în câte o aceeași zi
Description
Set conținând 27 de tuplaje asociate setului 'R123'. Un tuplaj va angaja într-un același moment (zi și oră), doi (sau trei) profesori și două (respectiv, trei) clase (după anumite criterii, elevii reuniți ai claselor respective sunt redistribuiți ad-hoc în noi "clase", în locul și cu numele celor inițiale). De separat cu câte un spațiu, profesorii, respectiv clasele tuplajului (respectiv, zilele alocate).
Usage
TPL
Format
- prof
Profesorii care trebuie să intre în același moment, la câte una dintre clasele respective
- cls
Clasele la care profesorii din tuplaj au de făcut câte o lecție, în câte o aceeași zi (și oră)
- zl
Ziua sau zilele alocate tuplajului în setul 'R123'
Zilele de lucru
Description
Factor prin care denumim zilele în care sunt alocate lecțiile.
Usage
Zile
Format
- Zile
Abrevieri pe câte două litere, ale zilelor de lucru.
Pe repartiția pe zile curentă, schimbă într-o altă zi, lecția indicată
Description
După ce se investighează (prin 'prof_2days()', 'prof_swap()', etc.) distribuția lecțiilor unui profesor în cadrul repartiției curente, se poate decide schimbarea zilei alocate lui la o anumită clasă.
Usage
change_day(DZ, P, Q, Z, new_zl)
Arguments
DZ |
Distribuția curentă a lecțiilor, pe zile. |
P , Q , Z |
Profesorul, clasa și ziua (din 'Zile') curent alocată. |
new_zl |
Ziua (din 'Zile') cu care trebuie înlocuită cea existentă. |
Value
Distribuția rezultată după realocarea lecției.
La care clase și zile intră profesorul, singur sau în cuplaje
Description
Între altele, vom putea sesiza situația defectuoasă în care un profesor a căpătat în total (cumulând orele proprii cu cele din cuplaje) 6 sau 7 ore pe o zi, dar niciuna dintre clasele implicate nu ajunge în ziua respectivă, la a 6-a respectiv, a 7-a oră.
Usage
cls2prof(DZ, P)
Arguments
DZ |
Repartiția curentă pe zile |
P |
Profesorul, sau un vector de profesori |
Value
Tabel conținând pe zile, clasele repartizate profesorului
Examples
# clasele repartizate pe zile lui 'Fz1', respectiv la doi profesori 'Gr*'
Fz <- cls2prof(R123, "Fz1")
Gr <- cls2prof(R123, paste0("Gr", 1:2))
Distribuția numărului de ore pe două zile, la anumite clase
Description
Sunt de vizat clasele care în prima zi au mai multe ore, decât în a doua zi (urmând să echilibrăm, prin mutarea unei ore din prima, în a doua zi).
Usage
cls_2days(DZ, z1, z2)
Arguments
DZ |
Distribuția curentă pe zile a tuturor lecțiilor |
z1 , z2 |
elemente din vectorul 'Zile' |
Value
Matricea distribuțiilor pentru clasele cu mai multe ore în prima, ca în a doua zi
Distribuția numărului de ore/zi la o clasă
Description
Pentru a vedea dacă la o anumită clasă, putem muta o lecție într-o altă zi, fără ca prin aceasta să afectăm omogenitatea distribuției lecțiilor ei.
Usage
cls_dis(DZ, K)
Arguments
DZ |
Distribuția curentă a tuturor lecțiilor |
K |
Clasa |
Value
Distribuția pe zile a numărului de lecții ale clasei
Existența vreunei clase care să ajungă la a 6-a sau a 7-a oră a unei zile, pentru un membru al unor cuplaje
Description
Cumulând orele proprii cu cele din cuplajele în care este implicat, profesorul poate ajunge în vreo zi, la 6 sau 7 ore; dar se poate ca niciuna dintre clasele sale din ziua respectivă, să nu aibă pe acea zi, decât numai 5, respectiv numai 6 ore...
Usage
cls_last(DZ, P)
Arguments
DZ |
Distribuția curentă pe zile, a lecțiilor |
P |
Profesorul, dintre cei cu ore proprii și implicați în cuplaje |
Value
TRUE dacă pentru oricare zi, există clase la care 'P' să poată intra în ultima oră din zi. Alfel, zilele în care lecțiile alocate lui 'P' nu încap la clasele respective și distribuțiile pe zile pentru aceste clase
Distribuția numărului de ore/zi la clase, cu o anumită diferență între zile
Description
Avem de urmărit ca lecțiile fiecărei clase să fie distribuite omogen, (și nu cvasi-omogen) pe zile.
Usage
cls_quasihom(DZ, d = 2)
Arguments
DZ |
Distribuția curentă pe zile, a tuturor lecțiilor |
d |
Diferența între cel mai mare și cel mai mic număr de ore/zi |
Value
Matrice în care pe fiecare linie avem distribuția numărului de ore/zi pentru câte o clasă, dacă există diferențe de 'd' ore între o zi și alta ('NULL' dacă nu există astfel de clase).
Distribuția pe zile a lecțiilor cuplajelor și membrilor acestora
Description
Cumulând (de pe liniile unde apare), putem constata cât este de omogenă distribuția pe zile a fiecărui profesor angajat în cuplaje.
Usage
coupled_dis(DZ)
Arguments
DZ |
Distribuția curentă a tuturor lecțiilor |
Value
Matricea distribuțiilor lecțiilor cuplate
Distribuțiile pe zile, pentru membrii cuplajelor
Description
Pentru fiecare membru al unor cuplaje (care are și ore proprii) se înscrie într-o listă matricea distribuțiilor acestuia. Consultând aceste matrice se pot stabili re-alocări de zile prin care să se echilibreze distribuțiile respective.
Usage
coupled_list(DZ)
Arguments
DZ |
Distribuția curentă a tuturor lecțiilor |
Value
Lista matricelor distribuțiilor fiecărui membru cu ore proprii care este angajat în cuplaje (și suma cumulată de ore/zi)
Distribuția pe zile curentă trebuie să păstreze alocarea tuplajelor
Description
Tuplajele (dacă există) vizează lecțiile care au fost fixate în prealabi, pe anumite zile; în principiu, trebuie evitată modificarea acestor alocări.
Usage
keep_toupled(DZ, TP)
Arguments
DZ |
Distribuția lecțiilor pe zile (curentă) |
TP |
Setul tuplajelor (repartizate din start pe zile) |
Value
TRUE dacă repartiția tuplajelor n-a fost modificată, sau primul tuplaj la care distribuția inițială nu coincide cu cea curentă
Profesorii (și distribuțiile de lecții) care la o anumită clasă au ore într-o anumită zi și nu au ore într-o altă anumită zi.
Description
Dacă o clasă apare în ambele zile la un profesor, atunci clasa respectivă nu ar trebui mutată din prima zi în a doua (în principiu, la fiecare disciplină trebuie să avem câte cel mult o singură oră/zi).
Usage
prof_2days(DZ, K, z1, z2)
Arguments
DZ |
Distribuția de lecții pe care se investighează. |
K |
Clasă. |
z1 , z2 |
Cele două zile (neapărat, elemente din vectorul 'Zile') |
Value
Tabelul distribuțiilor profesorilor care au ore la clasa 'Cls' în ziua 'z1' dar nu și în ziua 'z2'.
Profesorii din afara cuplajelor, cărora le-au rămas distribuții neomogene
Description
Exluzând (după apelul funcției interne 'set_prof1_tw1()') profesorii angajați în cuplaje și toate cuplajele din care fac parte, găsim pe cei din afara cuplajelor și dintre aceștia, selectăm pe cei care au mai mult de 'at_least' ore, distribuite cvasi-omogen pe zile.
Usage
prof_bad_dis(DZ, at_least = 8)
Arguments
DZ |
Distribuția curentă a lecțiilor, pe zile |
at_least |
Vizează numai distribuțiile individuale care au în total, peste un anumit număr de ore (implicit 8) |
Value
Setul distribuțiilor neomogene (cvasi-omogene)
mapează 'cls2prof()' pe lista acelor profesori P1 din afara cuplajelor cu care profesorul indicat ar putea schimba o clasă și o zi, fără ca prin aceasta distribuția lui P1 să fie "degradată" (să devină neomogenă)
Description
Pentru interschimbare, este de ales o clasă la care cei doi profesori au oră numai în una, dintre cele două zile și astfel încât măcar una dintre distribuții să devină omogenă (cealaltă poate să rămână cvasi-omogenă).
Usage
prof_swap(DZ, P, z1, z2)
Arguments
DZ |
Distribuția curentă a lecțiilor, pe zile |
P |
Profesorul căruia am vrea să-i omogenizăm distribuția |
z1 , z2 |
Zilele (în termenii din 'Zile') între care am schimba |
Value
Lista distribuțiilor profesorilor cu care se poate interschimba
Formatul TSV a unui (sub)set de lecții repartizate pe zile
Description
Vizualizează lecțiile distribuite în fiecare zi unui grup de profesori.
Usage
tidy2tsv(D)
Arguments
D |
Distribuția pe zile a unor lecții în "format lung" (prof | cls |zl); de exemplu, a lecțiilor unei clase, discipline, etc. |
Value
Setul liniilor (numite după profesori) conținând pe fiecare zi, clasele repartizate profesorilor pentru ziua respectivă
Distribuția pe zile a numărului de lecții ale celor angajați în tuplaje
Description
Pentru un profesor implicat în tuplaje, putem să-i omogenizăm distribuția lecțiilor mutând într-o altă zi una sau alta dintre acele clase ale sale, care nu sunt indicate în tuplajele din care face parte acel profesor.
Usage
toupled_dis(DZ, TP)
Arguments
DZ |
Distribuția curentă a tuturor lecțiilor |
TP |
Setul de tuplaje |
Value
Matricea cu distribuțiile membrilor tuplajelor (incluzând și lecțiile acestora din afara tuplajelor)