https://github.com/wesleyeliel/university-course-timetable-planning
Recherche Opérationnelle: Système de planification universitaire utilisant Google OR-Tools pour générer des emplois du temps optimaux en fonction des disponibilités des professeurs, des salles et des contraintes des cours.
https://github.com/wesleyeliel/university-course-timetable-planning
engineering oops-in-python operational-research problem-solving python
Last synced: about 1 year ago
JSON representation
Recherche Opérationnelle: Système de planification universitaire utilisant Google OR-Tools pour générer des emplois du temps optimaux en fonction des disponibilités des professeurs, des salles et des contraintes des cours.
- Host: GitHub
- URL: https://github.com/wesleyeliel/university-course-timetable-planning
- Owner: WesleyEliel
- Created: 2025-03-05T17:35:05.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-14T22:43:09.000Z (about 1 year ago)
- Last Synced: 2025-03-14T23:21:56.476Z (about 1 year ago)
- Topics: engineering, oops-in-python, operational-research, problem-solving, python
- Language: Python
- Homepage:
- Size: 16.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# EN: [ Operation Research ] : University Scheduling System with Google OR-Tools
# FR: [ Recherche Opérationnelle ] : Système de Planification d'emploi du temps Universitaire avec Google OR-Tools
## Description du Projet
Ce projet implémente un système de planification universitaire en utilisant **Google OR-Tools** pour optimiser
l'affectation des cours en fonction de contraintes telles que la disponibilité des professeurs, la disponibilité des
salles et les exigences spécifiques aux matières.
## Fonctionnalités
- **Planification Automatique** : Assigne les cours aux salles et aux professeurs en tenant compte des créneaux
horaires.
- **Disponibilité des Professeurs** : Garantit que les professeurs sont planifiés uniquement lorsqu'ils sont
disponibles.
- **Disponibilité des Salles** : Empêche la planification dans des salles non disponibles.
- **Contraintes des Cours** : Assure que chaque cours est enseigné par le professeur qui lui est assigné et respecte les
limites minimales et maximales d'heures possibles.
- **Optimisation des Créneaux Horaires** : Maximise l'utilisation des créneaux disponibles.
## Installation
### Prérequis
- Python 3.10
- Gestionnaire de paquets pip
- La bibliothèque virtualenv
### Cloner le Dépôt
```bash
git clone https://github.com/WesleyEliel/university-course-timetable-planning.git
cd university-course-timetable-planning
```
### Installation des dépendances
Créez un environment virtuel avec virtualenv et activez-le
```bash
virtualenv venv
source ./venv/bin/activate
```
Installez les dépendances
```bash
pip install requirements.txt
```
## Utilisation
### Étape 1 : Modifier les Données à votre convenance dans le fichier main.py
Modifier le fichier ```main.py``` avec les professeurs, les salles, les cours et les disponibilités.
### Étape 2 : Exécuter le Planificateur
Lancez le script principal :
```bash
python main.py
```
### Étape 3 : Voir les Résultats
Si un emploi du temps valide est trouvé, il sera affiché dans la console.
## Structure du Projet
```
/
│── main.py # Point d'entrée pour résoudre la planification
│── scheduler/ # Definition de la classe principale pour la gestion des emplois du temps
│── models/ # Définit les modèles orientés objet (Professeur, Salle, Cours, CréneauHoraire)
│── README.md # Documentation
```
## Exemple de Résultat
```
Emploi du temps optimal trouvé :
R.O et I.A planifié pour Prof_A dans la salle Salle_A sur le créneaux Lundi de 8h à 12h
R.O et I.A planifié pour Prof_A dans la salle Salle_A sur le créneaux Lundi de 14h à 18h
R.O et I.A planifié pour Prof_A dans la salle Salle_A sur le créneaux Mardi de 8h à 12h
Maths pour l' informatique planifié pour Prof_A dans la salle Salle_A sur le créneaux Mercredi de 8h à 12h
Administration Réseaux planifié pour Prof_B dans la salle Salle_B sur le créneaux Vendredi de 8h à 12h
Administration Réseaux planifié pour Prof_B dans la salle Salle_B sur le créneaux Vendredi de 14h à 18h
Sécurité Web & Mobile planifié pour Prof_C dans la salle Salle_C sur le créneaux Jeudi de 8h à 12h
Sécurité Web & Mobile planifié pour Prof_C dans la salle Salle_C sur le créneaux Jeudi de 14h à 18h
```
## Améliorations Futures
- Interface graphique pour une saisie plus facile des données
- API pour des intégrations externes
- Personnalisation dynamique des contraintes
- Ajout de nouvelles contraintes (Si possible, on veut que les heures d’une même matière soient réparties sur plusieurs
jours au lieu d’être concentrées sur une seule journée. )
## Licence
Ce projet est sous licence....