Bonjour/bonsoir,
je suis en train de travailler sur un projet d'attribution de places (chacun entre pour quels jours de la semaine il voudrait une place, puis les places disponibles sont distribuées par ordre de priorité).
J'ai pour ainsi dire terminé la mise en place de l'entrée de toute les informations (dont places souhaitées et celles servant à calculer la priorité) et la mise en place d'une liste doublement chaînée des personnes classée par ordre de priorité.
en soit, la distribution n'est pas très compliqué :
je prend le premier de ma liste, je lui attribue les places qu'il demande
je prend le second et je lui attribue parmi ce qu'il demande ce qu'il reste
je continue de même pour le 3ème, le 4ème,... jusqu'à ce qu'il ne reste plus rien ou qu'il n'y ait plus personne qui veille de places
le problème est que je souhaiterais ajouter une option permettant qu'on veut au maximum n places parmi celles demandées (par exemple on coche tous les jours et on indique un maximum de 2 si on souhaite avoir 2 jours sans que cela nous importe lesquels).
Et là, je n'ai aucune idée comment procéder de manière à ce que chacun reçoit le mieux qu'on peut lui attribuer d'après sa priorité, en tenant compte que certaines personnes sont "flexibles" : je suppose qu'il faut les stocker dans une liste supplémentaire pour pouvoir modifier leur places au fur et à mesure, mais je ne sais pas comment faire pour être sur d’attribuer le mieux qui puisse être disponible au suivant quand il ne reste plus de places pour certains jours et qu'il faut les "libérer" en jouant sur les gens flexibles.
par exemple :
- la personne 1 demande 2 places parmi lundi, mardi et mercredi
- la personne 2 demande 2 places parmi lundi, mardi et jeudi
- la personne 3 demande toute la semaine
il y a 2 places chaque jour
il faut donc que la personne 1 reçoive le mercredi et lundi ou mardi, la personne 2 reçoit jeudi et lundi ou mardi (celui que la personne 1 à laissée), comme ça la personne 3 est elle aussi satisfaite.
Ma question est donc comment organiser une telle distribution "intelligente"?
à savoir que le programme n'est pas sensé être utilisé pour plus d'une centaine de personnes (75 environ) et que parmi celles-ci, la plupart n'utiliseront probablement pas cette option.
Quelqu'un aurait-il donc une idée comment faire pour que s'il n'y a plus de places disponibles pour un/des jours, le programme réarrange si possible les personnes flexibles pour en libérer?
Merci d'avance
Katorps
PS : si vous avez des questions et/ou pensez que d'autres informations seraient utiles, surtout n'hésitez pas à demander
Partager