L'objectif est d'assigner une chambre à chaque étudiant, en tenant compte des préférences de chambre et de voisins de chambre. Chaque étudiant donne 3 voeux de chambre et 3 préférences de voisins.
Le problème est modélisé par un problème d'optimisation linéaire et résolu avec l'algorithme hongrois.
Le résultat de l'affectation est ajouté au fichier CSV initial dans la colonne Rooms et stocké par défaut dans le fichier result.csv pour préserver le fichier CSV d'entrée.
Le fichier debug.log contient les traces de l'exécution du programme, à savoir les dataframes générées en entrée et en sortie, la matrice d'adjacence et la matrice des coûts.
Commencer par installer les modules nécessaires:
[~/room-assignment]$ pip install -r requirements.txtPour afficher les options possibles:
[~/room-assignment]$ python3 src/solution.py --helpPour tester le programme avec options:
[~/room-assignment]$ python3 src/solution.py tests/data.csv tests/result.csvLe fichier d'entrée est recherché par défaut dans le répertoire courant sous le nom de data.csv. Le fichier de sortie généré par défaut se trouve aussi dans le répertoire courant sous le nom de result.csv:
[~/room-assignment]$ python3 src/solution.pyPour exécuter les tests:
[~/room-assignment]$ nosetests3 -vIl est possible d'effectuer un plus grand nombre de choix de chambre ou de voisin sans modifier l'algorithme. Seule la fonction de lecture du fichier CSV est à modifier.
Il est aussi possible de n'effectuer aucun choix. Une chambre est tout de même assignée par l'algorithme du moment que le nom de l'étudiant est renseigné.
Il est possible de modifier le dictionnaire des chambres voisines afin de mieux représenter l'agencement des chambres.