Lucrez la o cerere în cazul în care am nevoie pentru a programa în mod automat de locuri de muncă pentru membrii pe un program de rotație. Nu sunt foarte bun la a explica regulile, deci iată câteva date pentru a ajuta:
Pozitii: Un titlu loc de muncă, cu reguli , cum ar fi zilele de luni și miercuri săptămânale.
Categorii: Un set de poziții
grupuri: Un alt set de poziții. Pozițiile din același grup nu pot fi atribuite în aceeași zi ,
membrii: Utilizatorii desemnați în funcții la o anumită dată.
Pentru fiecare dată în luna, membrii sunt atribuite poziții (atât în ordine crescătoare). În cazul în care un membru este atribuit într-o poziție într-o singură categorie, data viitoare o poziție în aceeași categorie vine, următorul membru în ordine alfabetică (sau la începutul listei) devine de exemplu atribuit.
Membrii: M1, M2, M3, M4
Pozițiile în Categoria C1: P1, P2, P3
Membrii în poziția P1: M1, M2, M3, M4
membri în poziția P2: M1, M2, M3
Membrii în poziția P2: M1, M3, M4
În cazul în care M1 este alocat pentru P1, P2 dacă vine următoarea, M2 va fi atribuit. Un strat suplimentar de complexitate este introdus în cazul în care în cazul în care P3 vine în locul următor, M3 se atribuie. Sistemul trebuie să țină evidența faptul că M2 a fost „sărit“ și alocați M2 următoare dacă este disponibilă, apoi atribuiți M4 următor sau așteptați până când ajunge într-o poziție în care M2 este disponibil (acest lucru devine suplimentar complex, atunci când există mai multe „omit membri).
Un membru va fi, de asemenea, omisă în cazul în care a indicat că nu va fi disponibilă la acea dată. Sistemul trebuie să se plaseze prioritate asupra membrilor omit, într-un fel le identifica atunci când vin în sus și apoi să sară la următoarea persoană logică din listă. Omiterea se aplică și grupurilor din cauza datei de ciocniri.
Am deja o temporară [și murdar] soluție pe care eu nu mai înțeleg, chiar dacă am o mulțime de comentarii în ea explicând fiecare pas. punctele slabe ale acestuia, în care se ocupă cu membrii omit.
Dacă ai de gând să cod acest lucru cum ar merge despre asta? Sunt de punere în aplicare acest lucru în PHP, dar pseudocod ar funcționa la fel de bine.













