Bonsoir,
Je travaille à la conception d'un logiciel pour résoudre une répartition de place de stage.
Voici les conditions :
1/ Un étudiant doit faire un stage dans une des 4 spécialités S1 S2 S3 S4
2/ Un étudiant peut choisir entre 4 hôpitaux H1 H2 H3 H4
3/ Un étudiant peut choisir entre 4 période de stages P1 P2 P3 P4
4/ Un étudiant peut exprimer plusieurs choix dont certains "concurrent"/cumulatif par ex. mon 1er choix en spécialité S1 est : pour l’hôpital H1 en P1+P2 et à l’hôpital H3 en P3
5/ Le but est de maximiser le nombre d'étudiant avec leur 1er choix, les places étant limités dans chacun des hôpitaux
Je suis arrivé à l'idée suivante :
1/ Je réalise un tirage pour chaque possibilité où il y a plus d'étudiants que de places
2/ Si un étudiant est tiré au sort dans plusieurs stages je le réaffecte dans le stage qui est le moins demandé pour augmenter le taux de satisfaction
3/ Je fais tourner une boucle jusqu'à ce qu'il n'y ait plus de ré-attribution
4/ Je passe au 2ème choix de tout le monde et ainsi de suite
Une complexité peut être rajouté si un étudiant choisit toutes une période pour une spécialité (ex. pour S1 : H1P3+H2P3+H3P3+H4P3) on estime que cette période est importante pour lui => on ne le réaffecte pas s'il est dans cette période.
Idem pour les hôpitaux si il choisit tout un hôpital pour une spécialité (ex. pour S1 : H1P1 + H1P2 + H1P3+H1P4).
Si ce problème à résoudre intéresse quelqu'un je serais ravi de vos opinions
Bonne soirée,
Manu
-----