Skip to content

Albinator19/Nurse-Rostering-Solving

Repository files navigation

Nurse-Rostering-Solving

Ce projet porte sur la modélisation et la résolution du problème d'affectation des infirmières (Nurse Rostering) à l'aide d'un programme linéaire en nombres entiers (PLNE).

Résumé : Modélisation et résolution mathématique du problème de planification des infirmières. L'objectif est de concevoir un modèle mathématique capable de générer des plannings optimaux sur un horizon donné, tout en respectant de strictes contraintes de service (temps de repos, successions, durées) et en minimisant les pénalités liées aux préférences du personnel. La validation s'appuie sur une résolution par solveur (PuLP) sur 24 instances de test, documentée par un rapport technique et un code source structuré en Python.


État d'avancement du projet

  • ÉTAPE 1 : Modélisation Mathématique

    • Modélisation théorique du sujet (Ensembles, Paramètres, Variables, Contraintes dures/souples et Fonction objective).
    • À retrouver en détail dans le fichier Modelisation_Mathematique.md.
  • ÉTAPE 2 : Implémentation du Socle Métier

    • parser.py : Fonction de lecture pour extraire et structurer les données des fichiers d'instances au format texte.
    • evaluator.py : Script contenant l'évaluateur métier pour vérifier si une solution est réalisable (respect strict et exact des 9 contraintes dures par fenêtres glissantes) et calculer la valeur de la fonction objective $Z$.
    • Export XML : Intégration d'une fonction de sauvegarde des résultats au format .ros (norme INRC).
  • ÉTAPE 3 : Résolution, Automatisation et Visualisation

    • main.py : Intégration du solveur mathématique open-source via l'API Python pulp pour contourner les limites de licences.
    • Automatisation Batch : Script programmé pour résoudre automatiquement les 24 instances à la suite, avec une limite de temps de 60 secondes par instance complexe.
    • Outputs : Génération automatique des fichiers de plannings (.ros) et d'un fichier de synthèse resultats_projet.csv (Score, Statut, Temps de calcul).
    • visualizer.py : Développement d'un visualiseur Python autonome générant un fichier HTML coloré pour analyser graphiquement les plannings directement dans le navigateur sous Kali Linux.
  • ÉTAPE 4 : Analyse et Documentation

    • Rapport technique : Rédaction d'un rapport détaillant les méthodes retenues, la démarche, l'adéquation parfaite entre le code et les équations, ainsi que l'analyse des résultats issus du fichier CSV. Ce rapport mettra en évidence le rôle et les tâches de chaque membre de l'équipe.
    • Dépôt final : Préparation de l'archive contenant le code source documenté et le rapport final pour le dépôt sur Moodle.

About

Ce projet porte sur la modélisation et la résolution du problème d'affectation des infirmières (Nurse Rostering) à l'aide d'un programme linéaire en nombres entiers (PLNE).

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages