Chestiunea cuplajelor existente în orarul şcolar (III)
Pentru a ţine seama de cuplaje la repartizarea pe ore a lecţiilor dintr-o aceeaşi zi, am avea chiar două posibilităţi: modificăm programul respectiv ("daySchoolSchedule.R
" din [2]) pentru a condiţiona şi faţă de cuplaje, etichetarea cu ore 1..7 – sau nu-l modificăm, dar constituim un program de ajustare finală a lecţiilor cuplate. A doua variantă ar fi cea mai bună: necesită rescrierea funcţiilor din [3] pentru mutarea unei clase, ori acestea trebuie oricum rescrise (pentru a repara ferestrele ţinând seama şi de cuplaje); dar să încercăm deocamdată prima variantă (fiind mai simplă).
Chestiunea cuplajelor existente în orarul şcolar (II)
În [1] am depistat cuplajele existente în orarul original, dar le-am folosit doar când am ajustat (interactiv) repartizarea pe zile furnizată de "distribute_by_days.R
"; dacă vrem să ţinem cont de ele chiar în cadrul programului – iar aici, vizăm programul din [2], pentru repartizarea pe orele zilei a lecţiilor distribuite într-o aceeaşi zi – atunci trebuie ceva mai mult decât să le evidenţiem.
Chestiunea cuplajelor existente în orarul şcolar
În [1] aveam chipurile noroc: cuplajele erau explicitate cumva chiar în orar, prin linii precum "P_5 Mi 4 11C/11D/\r\n
11E" – însemnând că în ora a 4-a din ziua "Mi", profesorul "P_5" partajează clasele indicate, cu alţi profesori (la care deasemenea găsim câte o astfel de linie). De data aceasta, valorile din celulele tablei Excel de la care am plecat sunt „curate” (cum şi trebuie să fie) – nu apar clase multiple (separate prin "/" sau "\r\n
"); dar cum evidenţiem atunci, cuplajele existente?
Reducerea ferestrelor din orarul zilei (II)
Următoarea subliniere ne face să schimbăm strategia deterministă desfăşurată copios în [1]: există o clasă a cărei mutare dintr-o anumită coloană într-o alta, conduce la un orar cu mai puţine ferestre. Pe orarul rezultat se va găsi deasemenea o clasă, a cărei mutare diminuează numărul de ferestre, ş.a.m.d.
Reducerea ferestrelor din orarul zilei
O strategie coerentă (fără elemente aleatorii) de reducere a numărului de ferestre din orarul iniţial: pentru fiecare coloană, mutăm pe rând fiecare clasă din coloana respectivă pe fiecare dintre celelalte coloane, aplicăm de fiecare dată o reducere „standard” de ferestre şi reţinem acel caz în care obţinem cel mai mic număr de ferestre.
Până una-alta, rezultatul este mulţumitor.
vezi Cărţile mele (de programare)