Jeg jobber med et program der jeg trenger å automatisk planlegge jobber for medlemmer på en roterende tidsplan. Jeg er ikke veldig flink til å forklare reglene, så her er noen data for å hjelpe ut:
Posisjoner: En jobbtittel, med regler som mandager og onsdager ukentlig.
Kategorier: Et sett med stillinger
grupper: et annet sett av posisjoner. Posisjoner i samme gruppe kan ikke tildeles på samme dag
Medlemmer: Brukere som er tildelt posisjoner på en gitt dato.
For hver dato i måneden, medlemmer tilordnet posisjoner (både i stigende rekkefølge). Dersom et medlem er tildelt en stilling i én kategori, neste gang en stilling i samme kategori kommer opp, neste medlem alfabetisk (eller begynnelsen av listen) blir tildelt f.eks.
Medlemmer: M1, M2, M3, M4
posisjoner i kategori C1: P1, P2, P3
medlemmer i posisjon P1: M1, M2, M3, M4
medlemmer i posisjon P2: M1, M2, M3
medlemmer i posisjon P2: M1, M3, M4
Hvis M1 er tildelt for P1, hvis P2 kommer etterpå, M2 vil bli tildelt. Et ekstra lag av kompleksitet er innført der hvis P3 kommer etterpå i stedet, blir M3 tildelt. Systemet har å holde styr på det faktum at M2 ble 'hoppet over' og tildele M2 neste hvis tilgjengelig, deretter tildele M4 neste, eller vente til det blir til en posisjon hvor M2 er tilgjengelig (dette blir også komplisert når det er mange 'hoppet over 'medlemmer).
Et medlem vil også bli hoppet over hvis han har signalisert at han ikke vil være tilgjengelig på denne datoen. Systemet må prioritere hoppet medlemmer, liksom identifisere dem når de kommer opp og deretter hoppe til neste logiske personen på listen. Hoppe gjelder også grupper på grunn av dato sammenstøt.
Jeg har allerede en midlertidig [og rotete] løsning som jeg ikke lenger forstår selv om jeg har mange kommentarer i det som forklarer hvert trinn. Sine svakheter er i håndteringen hoppet over medlemmer.
Hvis du skulle kode dette hvordan ville du gå om det? Jeg implementere dette i PHP, men pseudo ville fungere også.













