Guide Utilisateur - SLM Timetable Generator

1. Introduction

1.1 Vue d'ensemble

Le module SLM Timetable Generator permet de générer automatiquement des emplois du temps optimisés pour toutes les classes d'une année scolaire. Le système utilise un algorithme intelligent qui respecte les contraintes institutionnelles et prend en compte les préférences des enseignants.

1.2 Prérequis

  • Une année scolaire doit être configurée et active
  • Les classes doivent être créées pour l'année scolaire
  • Les cours doivent être définis avec leurs quotas hebdomadaires
  • Les créneaux horaires doivent être configurés
  • Les enseignants doivent être affiliés à des départements

💡 Astuce : Assurez-vous que tous les cours ont des quotas hebdomadaires définis avant de lancer la génération.

2. Configuration Initiale

2.1 Configuration des préférences enseignants

Avant de générer les emplois du temps, il est recommandé de configurer les préférences des enseignants pour améliorer la qualité de la génération.

Étapes :

  1. Accédez au menu Timetable Generator > Configuration > Teacher Preferences
  2. Créez une nouvelle préférence pour chaque enseignant (Enseignant, Année scolaire)
  3. Configurez les paramètres suivants :
    • Maximum Hours per Week : Affiché automatiquement (aligné sur le quota de l'enseignant), en lecture seule
    • Maximum Teaching Days : Nombre maximum de jours d'enseignement par semaine (1-5)
    • Preferred Free Day : Jour préféré sans cours (optionnel) — Lu, Ma, Me, Je, Ve
    • Time Preference : Préférence pour le matin (avant 12h), l'après-midi (après 12h) ou neutre

2.2 Vérification des quotas enseignants

Vérifiez que les quotas hebdomadaires des enseignants sont correctement calculés.

Étapes :

  1. Accédez au menu Timetable Generator > Configuration > Teacher Quotas
  2. Vérifiez que chaque enseignant a un quota calculé :
    • Chefs de département : 14 créneaux
    • Grade PCEG : 20 créneaux
    • Grade PLEG : 18 créneaux
    • Autres grades : 22 créneaux
  3. Les enseignants sans affiliation départementale ont un quota de 0 et ne seront pas programmés

3. Génération d'Emploi du Temps

3.1 Accès au wizard de génération

Pour lancer une nouvelle génération, utilisez le wizard de génération.

Étapes :

  1. Accédez au menu Timetable Generator > Generate Timetables
  2. Le wizard de génération s'ouvre automatiquement

3.2 Configuration des paramètres de génération

Onglet "Algorithm Parameters" :

  • Solver Profile :
    • Standard : Génération optimisée (1000 itérations, population 50) - Recommandé
    • Aggressive : Plus d'itérations pour meilleure qualité (2000 itérations, population 100) - Plus lent
  • Max Iterations : Nombre maximum d'itérations de l'algorithme (1-10000)
  • Population Size : Taille de la population (1-200)

Onglet "Teacher Preferences" :

  • Use Teacher Preferences : Activer la prise en compte des préférences enseignants
  • Preference Weight : Poids des préférences (0.0-5.0) - Plus élevé = préférences plus importantes

Onglet "Scope" :

  • Clear Existing Timetables : Supprimer tous les emplois du temps existants avant génération

3.3 Lancement de la génération

Étapes :

  1. Vérifiez les informations affichées (nombre de cours, enseignants, classes)
  2. Consultez les avertissements éventuels (zone d'alerte en haut du formulaire)
  3. Configurez les paramètres selon vos besoins
  4. Cliquez sur Start Generation
  5. La génération démarre et peut prendre plusieurs minutes selon la complexité

⚠️ Attention : Ne fermez pas la fenêtre pendant la génération. Le processus peut prendre de quelques minutes à plusieurs dizaines de minutes selon le nombre de cours et la complexité.

4. Application et Validation

4.1 Consultation des résultats

Une fois la génération terminée, vous pouvez consulter les résultats.

Informations disponibles :

  • Fitness Score : Score de qualité de la solution (plus élevé = meilleur)
  • Statistics : Nombre de cours programmés, enseignants impliqués, classes concernées
  • Constraint Violations : Nombre de violations de contraintes hard et soft
  • Generation Log : Log détaillé du processus de génération

4.2 Application de la solution

Pour appliquer la solution générée aux emplois du temps réels :

Étapes :

  1. Vérifiez que la génération est en état Completed
  2. Cliquez sur le bouton Apply to Timetables
  3. Confirmez l'action dans la boîte de dialogue
  4. Le système crée ou met à jour les emplois du temps pour toutes les classes
  5. L'état passe à Applied

⚠️ Attention : L'application remplace les emplois du temps existants. Assurez-vous que la solution générée est satisfaisante avant d'appliquer.

4.3 Attribution des enseignants

Après avoir appliqué la solution, vous pouvez attribuer automatiquement les enseignants aux cours :

Étapes :

  1. Vérifiez que la génération est en état Applied
  2. Cliquez sur le bouton Assign Teachers
  3. Confirmez l'action
  4. Le système attribue les enseignants aux cours selon les emplois du temps générés
  5. Une notification confirme le nombre de cours mis à jour

4.4 Visualisation des emplois du temps générés

Pour consulter les emplois du temps générés :

Étapes :

  1. Cliquez sur le bouton View Timetables ou sur le compteur de timetables
  2. La liste des emplois du temps générés s'affiche
  3. Vous pouvez ouvrir chaque emploi du temps pour voir le détail
  4. Vous pouvez imprimer chaque emploi du temps depuis la liste

4.5 Annulation d'application

Si vous souhaitez annuler l'application d'une solution :

Étapes :

  1. Vérifiez que la génération est en état Applied
  2. Cliquez sur le bouton Cancel Application
  3. Confirmez l'action dans la boîte de dialogue
  4. Le système supprime :
    • Tous les emplois du temps générés
    • Toutes les entrées de planning
    • Les attributions d'enseignants aux cours
  5. L'état passe à Cancelled

⚠️ Attention : L'annulation est irréversible. Toutes les données générées seront supprimées.

5. Problèmes Connus et Limitations

5.1 Latence lors de l'attribution/annulation

Problème : Les opérations d'attribution des enseignants et d'annulation de l'application peuvent prendre du temps sur de grandes quantités de données.

Solution temporaire : Patientez pendant le traitement. Évitez de relancer l'opération si elle semble bloquée.

Impact : Temps d'attente de quelques secondes à plusieurs minutes selon le volume.

5.2 Cours séparés par pauses

Problème : Les cours d'une même matière peuvent être séparés par des créneaux de pause, créant des interruptions dans l'enseignement.

Cause : L'algorithme optimise globalement mais ne garantit pas toujours la continuité absolue.

Solution : Vous pouvez modifier manuellement les emplois du temps après génération pour réorganiser les cours.

5.3 Groupement incorrect de cours courts

Problème : Les cours avec quota de 1 heure/jour peuvent être groupés ensemble au lieu d'être répartis sur la semaine.

Cause : L'algorithme privilégie parfois le placement rapide au détriment de la répartition optimale.

Solution : Relancez la génération avec le profil "aggressive" pour une meilleure optimisation, ou ajustez manuellement.

6. FAQ et Dépannage

6.1 La génération échoue avec "No courses found"

Cause : Aucun cours n'est trouvé pour l'année scolaire sélectionnée.

Solution : Vérifiez que :

  • L'année scolaire est correctement sélectionnée
  • Des classes existent pour cette année scolaire
  • Des cours sont définis pour ces classes

6.2 La génération échoue avec "No available time slots"

Cause : Aucun créneau horaire de type "free" n'est configuré.

Solution : Configurez des créneaux horaires de type "free" dans le module slm_timetable.

6.3 La génération prend trop de temps

Cause : Le nombre de cours et la complexité des contraintes rendent la résolution difficile.

Solution :

  • Réduisez le nombre d'itérations (max_iterations)
  • Réduisez la taille de la population (population_size)
  • Désactivez temporairement les préférences enseignants

6.4 La solution générée a des violations de contraintes

Cause : Les contraintes sont trop strictes ou il y a un problème de faisabilité.

Solution :

  • Vérifiez les quotas des cours (peut-être trop élevés)
  • Vérifiez les capacités des classes (limites quotidiennes et hebdomadaires)
  • Relancez avec le profil "aggressive"
  • Consultez le log de génération pour plus de détails

6.5 Les enseignants ne sont pas attribués correctement

Cause : Les enseignants ne sont pas dans les départements requis pour les matières.

Solution :

  • Vérifiez les affiliations départementales des enseignants
  • Vérifiez que les matières ont des départements assignés
  • Attribuez manuellement les enseignants si nécessaire

✅ Conseil : Pour obtenir les meilleurs résultats, configurez les préférences enseignants avant de lancer la génération et utilisez le profil "aggressive" si vous avez le temps d'attendre une optimisation plus poussée.

7. Historique des Générations

Vous pouvez consulter l'historique de toutes les générations effectuées :

Étapes :

  1. Accédez au menu Timetable Generator > Generation History
  2. La liste de toutes les générations s'affiche
  3. Vous pouvez filtrer par état, année scolaire, ou profil
  4. Vous pouvez ouvrir une génération pour voir ses détails
  5. Vous pouvez réinitialiser une génération terminée à l'état "draft" pour la relancer