Repartizarea pe zile a încadrării profesorilor (VI.gafa)
Cel mai bun obicei al unui programator (din afara sferei comerciale, probabil) este acela de a (re)citi şi a rescrie lucrurile de care se ocupă.
Repartizarea pe zile a încadrării profesorilor (VI.bis)
Distribuţia (4,4,4,4,4) este perfectă şi chiar, rămâne perfectă pe fiecare schimb: (1,1,1,1,1) şi (3,3,3,3,3); numai că realitatea nu are de-a face cu „perfecţiunea” (sau invers): profesorul va prefera plasarea celor 5 ore din primul schimb în două zile (nicidecum câte una pe zi), sau şi mai bine, într-o singură zi (de exemplu (5, 0,0,0,0) şi (0, 4,4,4,3)) – ceea ce desigur că se poate, cu îndoiala (justificată) că „înghesuirea” astfel a orelor sale, va afecta mai degrabă negativ, distribuirea orelor celorlalţi. Aceasta-i întrebarea: cum putem controla generarea unei distribuţii a orelor profesorilor pe zilele de lucru (ţinând seama că sunt două schimburi)?
Repartizarea pe zile a încadrării profesorilor (VI)
Obţinem 1455 de distribuţii, pseudo-omogene; obţineam şi mai multe (10000?) dacă aş fi avut de urmărit vreun turneu de tenis pe Eurosport (lăsam atunci programul să ruleze în pace). Par multe – dar de fapt, este un număr infim faţă de gama tuturor distribuţiilor pe zile care sunt posibile pentru orele din încadrarea de bază a profesorilor. Cu alte cuvinte – este foarte mică şansa ca între cele aşa de „multe” distribuţii generate, să o fi obţinut şi pe aceea care chiar ar fi cea mai promiţătoare… Dar începem să vedem lumina de la capătul tunelului.
Repartizarea pe zile a încadrării profesorilor (V.bis)
Generăm un set de distribuţii pe zile a orelor din încadrarea profesorilor, numărând 319 distribuţii (în final, constatăm că sunt totuşi prea puţine); tatonăm în jurul acestei chestiuni: care ar fi dintre acestea, cea mai promiţătoare? Şi deducem câteva îndreptări…
Repartizarea pe zile a încadrării profesorilor (V)
Pretenţia de a obţine o distribuţie omogenă – diferenţa dintre numărul de ore pe o zi şi alta să fie cel mult 1, pentru fiecare profesor (şi clasă) – este nerealistă, fiind uşor de generat doar dacă neglijăm condiţia asupra numărului zilnic de ore pentru clase (acceptând ca unele clase să aibă de exemplu 3 ore într-o zi şi 8 ore într-o alta).
Următoarea idee este însă fezabilă: alocăm orele astfel încât numărul de ore pe zi să nu varieze cu mai mult de 1 de la o zi la alta pentru fiecare clasă, iar pentru profesori, să nu depăşească 7 şi să nu varieze cu mai mult de 2 ore de la o zi la cea următoare; dacă ar fi puţini profesorii cu peste 20 de ore, sau dacă am avea în vedere fiecare schimb în parte, limitele respective pot fi reduse (probabil) la 6 şi 1.
vezi Cărţile mele (de programare)