Ce projet permet de générer automatiquement un emploi du temps équilibré pour un ensemble de matières, de groupes d'élèves et de professeurs, en minimisant le nombre de cours simultanés par créneau (nombre de salle de classe nécessaire). Le solveur est implémenté en Python avec la bibliothèque OR-Tools de Google, et les données d'entrée sont lues depuis deux fichiers Excel.
- Python 3.8 ou supérieur
- Un environnement virtuel (recommandé) :
venv
,conda
ou autre - Les bibliothèques Python suivantes :
ortools
pandas
openpyxl
-
Clonez ce dépôt :
git clone https://votre-repo.git cd votre-repo
-
Créez et activez un environnement virtuel :
python -m venv .venv # ou conda create -n edt python=3.x source .venv/bin/activate # sous Windows : .venv\\Scripts\\activate
-
Installez les dépendances :
pip install -r requirements.txt
-
Préparez vos fichiers Excel :
- Sample classes.xlsx : colonnes
subjects
,students
,teacher
,hourly_rate
- créneaux.xlsx : colonne
times
(ex.Lun_M1
,Mar_S
, etc.)
- Sample classes.xlsx : colonnes
-
Adaptez le chemin vers les fichiers Excel dans le script
timetabling_solver.py
si nécessaire. -
Lancez le script :
python timetabling_solver.py
-
Le programme affichera la répartition des matières par créneau et la charge maximale atteinte.
votre-repo/
├── timetabling_solver.py # Script principal
├── Sample classes.xlsx # Données matières et professeurs
├── créneaux.xlsx # Liste des créneaux horaires
├── requirements.txt # Dépendances Python
└── README.md # Document d'information du projet
Les contributions sont les bienvenues (pour la prise en compte de contraintes plus poussées par exemple ^_~):
- Forkez le dépôt
- Créez une branche (
git checkout -b feature/ma-fonctionnalite
) - Commitez vos modifications (
git commit -m 'Ajout d'une fonction X'
) - Poussez la branche (
git push origin feature/ma-fonctionnalite
) - Ouvrez une Pull Request