Ik ben bezig met een applicatie waar ik moet automatisch banen voor de leden te plannen op een roterend schema. Ik ben niet zo goed in het uitleggen van de regels, dus hier is een aantal gegevens om te helpen:
Posities: Een functie, met regels als maandag en woensdag wekelijks.
Categorieën: Een reeks posities
groepen: Een andere reeks posities. Posities in dezelfde groep kan niet worden toegewezen op dezelfde dag
Leden: Gebruikers toegewezen aan posities op een bepaalde datum.
Voor elke datum in de maand, worden de leden toegewezen aan posities (zowel in oplopende volgorde). Indien een lid naar een positie wordt toegekend in één categorie, de volgende keer dat een positie in dezelfde categorie komt, het volgende lid alfabetisch (of het begin van de lijst) wordt toegewezen bv.
Leden: M1, M2, M3, M4
Posities in categorie C1: P1, P2, P3
leden in Positie P1: M1, M2, M3, M4
leden in positie P2: M1, M2, M3
leden in positie P2: M1, M3, M4
Als M1 is toegewezen voor P1 als P2 daarna komt, M2 zal worden toegewezen. Een extra laag van complexiteit wordt geïntroduceerd waar als P3 daarna komt in plaats daarvan, M3 krijgt toegewezen. Het systeem heeft voor het bijhouden van het feit dat de M2 was 'overgeslagen' en wijs M2 volgende indien beschikbaar, dan M4 volgende toewijzen, of wacht tot het wordt om een positie waar M2 is beschikbaar te houden (dit wordt bovendien complex als er veel 'overgeslagen 'leden).
Een lid zal ook worden overgeslagen als hij heeft aangegeven dat hij zal niet beschikbaar zijn op die datum. Het systeem moet prioriteit geven aan overgeslagen leden, een of andere manier te identificeren wanneer ze komen en dan naar de volgende logische persoon in de lijst. Skipping geldt ook voor groepen als gevolg van datum botsingen.
Ik heb al een tijdelijke [en rommelig] oplossing, die ik niet meer begrijpen, zelfs al heb ik veel reacties daarin uitleggen elke stap. De zwakke punten zijn in de omgang met de overgeslagen leden.
Als je gaat coderen dit hoe zou je dan doen? Ik doe dit implementeren in PHP, maar pseudocode zou zo goed werken.













