momente şi schiţe de informatică şi matematică
anti point—and—click

Chestiunea cuplajelor existente în orarul şcolar

R | orar şcolar
2021 oct

În [1] aveam chipurile noroc: cuplajele erau explicitate cumva chiar în orar, prin linii precum "P_5 Mi 4 11C/11D/\r\n11E" – î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)

Local Search | R | orar şcolar
2021 oct

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

R | orar şcolar
2021 oct

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.

Schimbarea claselor dintr-o coloană în alta

R | orar şcolar
2021 oct

În [1] am demarat "recast.R", care caută să reducă numărul de ferestre de pe orarul şcolar iniţial (al unei zile); pentru a acoperi o fereastră, se mută o anumită clasă dintr-o coloană a orarului în alta, pe baza unei liste prealabile (cât mai cuprinzătoare) de acoperiri posibile; dacă orarul rezultat în urma acoperirii unei ferestre are mai puţine ferestre decât cel curent, atunci este reţinut drept noul orar curent şi se repetă mutarea de clase pe baza listei de acoperiri corespunzătoare acestuia.

De fapt, în [1] am făcut un prim experiment, urmărind să ne convingem că lucrurile ar putea merge astfel, în direcţia dorită; am tratat mutarea claselor în măsura suficientă unei tatonări, fără să luăm seama la toate aspectele şi subtilităţile. Ori mutarea de clase este esenţială în procedura descrisă mai sus şi în primul rând, avem de corectat formulările din [1] pentru swap_cols() şi swap_cls().

Instrumentarea reducerii ferestrelor din orar (II)

Local Search | R | orar şcolar
2021 sep

Operaţia swap_cls() din [1] asigură acoperirea unei ferestre (cu riscul apariţiei altora) şi returnează orarul astfel modificat. Aplicăm orarului iniţial (sau celui curent) o secvenţă (potrivită) de "swap_cls()" şi dintre orarele rezultate reţinem (ca orar curent) unul cu numărul minim de ferestre; aplicăm orarului reţinut aceeaşi procedură, cât timp se ajunge astfel la un număr de ferestre mai mic decât cel curent.


Prev
Next
ALL (275 titluri)

vezi Cărţile mele (de programare)

despre acesta ~ Home

Factoriale | Graficul funcţiilor

PGN browser | chess JS engine

Load

in /slightchess

/slightchess

626 partide analizate cu Crafty

(R) Computer Art | Decoraţiuni

Aplicaţii şcolare (javaScript)

Sinteze:

Pagini independente: