| Title: | Reduce the Number of Holes in the School Timetable |
|---|---|
| Description: | Reallocating the respective lessons by hours (respecting the constraints induced by the existence of coupled lessons) so that the total number of gaps is as small as possible. |
| Authors: | Vlad Bazon [aut, cre] |
| Maintainer: | Vlad Bazon <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.1.2 |
| Built: | 2026-05-27 06:58:56 UTC |
| Source: | https://github.com/cran/refitgaps |
Aplicație imediată a funcției 'have_gaps()'; servește de exemplu, pentru a afla câte ferestre sunt pe matricea-orar inițială (pe care ar urma să se aplice 'recast()', pentru a reduce numărul de ferestre).
gaps_count(OZ)gaps_count(OZ)
OZ |
Matrice-orar |
Numărul de ferestre, considerând cuplajele și profesorii externi
Se șablonează orarele individuale, înlocuind clasele cu câte un asterisc; fereastră înseamnă atunci orice '-' aflat între două asteriscuri; iar pentru cei angajați în cuplaje, se cumulează șabloanele membrilor.
have_gaps(OZ)have_gaps(OZ)
OZ |
Matrice-orar; liniile sunt numite după profesori/cuplaje; pe fiecare linie sunt înregistrate pe ore clasele la care intră profesorul (sau '-' dacă este liber); fiecare clasă apare o singură dată, pe fiecare coloană de rang cel mult egal cu numărul de ore/zi al clasei. |
Subsetul liniilor cu ferestre; pentru cazul ferestrelor "ascunse" (induse de angajarea în cuplaje), este anexat șablonul tuturor orelor în care este implicat profesorul respectiv.
HG <- have_gaps(MOZ)HG <- have_gaps(MOZ)
Matrice-orar cu 59 linii și 7 coloane. Numele de linie reprezintă profesorii (pe câte 3 caractere) sau cuplajele (pe câte 6 caractere); pe fiecare linie sunt înregistrate clasele (sau '-' dacă este liber în acea oră) la care are de intrat profesorul sau cuplajul respectiv, în orele 1:7 ale zilei. Fiecare clasă apare câte o singură dată, pe fiecare dintre coloanele de rang mai mic sau egal cu numărul de ore/zi (cel mult 7) ale clasei respective.
MOZMOZ
An object of class matrix (inherits from array) with 59 rows and 7 columns.
A matrix with 59 rows and 7 columns
The rownames are the teachers ('prof')
The columns are the 1:7 hours of the day
The values are the classes of the 'prof' in each hour, or '-' if the 'prof' is free in that hour
"programul principal" (exportat) este 'recast()', dar acesta are în interior 6 funcții care, folosind variabilele definite în programul principal (precum și o listă internă de "mutări corectoare"), acționează pe matricea-orar corespunzătoare iterației curente, pe parcursul căutării unui orar "mai bun" (cu mai puține ferestre).
recast(matPr, TPL = NULL, Niter = 3000, GD = 2)recast(matPr, TPL = NULL, Niter = 3000, GD = 2)
matPr |
Matricea-orar furnizată de către utilizator; liniile sunt numite după profesori/cuplaje; pe fiecare linie sunt înregistrate pe ore clasele la care intră profesorul (sau '-' dacă este liber); fiecare clasă apare o singură dată, pe fiecare coloană de rang mai mic sau egal cu numărul de ore/zi al acelei clase. |
TPL |
setul tuplajelor (dacă este cazul); în matricea-orar lecțiile dintr-un același tuplaj apar în câte o aceeași coloană orară (iar 'recast()' va păstra alocările existente pentru lecțiile tuplate). |
Niter |
numărul de iterații pentru căutarea unui orar "mai bun". |
GD |
un număr ideal de ferestre, pentru a stopa căutarea. |
o matrice-orar cu aceleași lecții ca în orarul inițial, dar realocate pe orele 1:7 astfel încât numărul total de ferestre este de regulă mai mic ca inițial (cât de mic, depinde și de cât de mare este 'Niter' și mai depinde și de structura tuplajelor).
# Alegem 'Niter' mic, pentru o execuție rapidă ORR <- recast(MOZ, TPL, Niter=100) HG <- have_gaps(ORR[[1]])# Alegem 'Niter' mic, pentru o execuție rapidă ORR <- recast(MOZ, TPL, Niter=100) HG <- have_gaps(ORR[[1]])
6 tuplaje asociate matricei-orar 'MOZ'. Lecțiile dintr-un același tuplaj au fost alocate într-o aceeași oră.
TPLTPL
Vectorul profesorilor sau cuplajelor din tuplaj
Vectorul claselor din tuplaj, de aceeași lungime cu 'prof'; pentru fiecare tuplaj asocierea 'prof/cls' (în cadrul matricei-orar) respectă ordinea profesorilor și claselor din acel tuplaj
Ora alocată în matricea-orar lecțiilor din tuplaj