Université de Lausanne (UNIL) · Réforme bilingue du bachelor · planification opérationnelle
Reconstruire l'emploi du temps d'une université pour une réforme bilingue
D'une réforme que personne ne savait planifier à l'emploi du temps que l'UNIL a mis en service
L'UNIL a changé les règles de son bachelor : beaucoup de cours pouvaient désormais être suivis en anglais, en français, ou les deux. Mêmes profs, mêmes salles, mêmes heures dans la semaine, mais chaque cours réformé avait soudain besoin de deux créneaux compatibles, et personne ne savait combien d'étudiant·e·s choisiraient quelle langue.
On nous a demandé un emploi du temps capable d'absorber tout cela dès le premier jour. Nous avons construit le modèle, l'avons résolu, et livré l'emploi du temps que l'UNIL a ensuite mis en service pour le nouveau programme.
Le défi
La réforme a produit trois problèmes en même temps. Chaque cours réformé avait besoin d'un créneau français et d'un créneau anglais avec le ou la même prof, tous deux dans sa disponibilité réelle. Les salles étaient déjà tendues et la réforme ajoutait de la charge, pas de la capacité. Et les étudiant·e·s choisissaient leur langue tard, donc la taille relative de chaque cohorte linguistique était une prévision, pas un fait, au moment de figer l'emploi du temps.
Un emploi du temps qui casse sur l'une de ces dimensions force des changements de dernière minute qui traversent toute la faculté, refuse à des étudiant·e·s un cours dans leur langue, ou pousse les profs au-delà de leurs heures. La crédibilité de la réforme tenait à un planning qui marche le premier jour.
Notre démarche
Nous avons formulé l'emploi du temps comme un modèle d'optimisation mathématique qui capturait ce dont l'UNIL avait vraiment besoin : fenêtres de disponibilité des profs, capacités des salles, et le couplage bilingue (chaque cours réformé apparaît deux fois, même prof sur les deux, les deux dans ses heures).
Plutôt que d'optimiser pour une seule estimation de la répartition linguistique, nous avons fait tourner le solveur sur un ensemble de répartitions plausibles et avons gardé un emploi du temps qui reste faisable sur toutes. La rareté des salles a été traitée directement comme une règle de capacité par créneau, en donnant priorité aux grandes cohortes attendues sur les grandes salles.
Nous avons livré l'emploi du temps en production plus le modèle derrière, pour que le bureau de planification puisse le relancer l'année suivante quand les disponibilités, les salles ou les inscriptions changent, sans tout refaire.
Le résultat
L'UNIL a mis l'emploi du temps en production pour le nouveau programme bilingue. Il a tenu sur des répartitions d'inscription qui ne correspondaient pas aux projections initiales, c'est exactement à cela que servait la couche de robustesse.
Le point plus large : les problèmes d'emploi du temps qui semblent ingérables à la main sont parfaitement à portée une fois les bonnes contraintes écrites. Le difficile était rarement l'algorithme. C'était de capturer ce que « faisable » voulait vraiment dire pour l'institution.
Techniques
- Couplage des paires de cours bilingues
- Fenêtres de disponibilité des professeur·e·s
- Capacité et rareté des salles
- Robustesse par scénarios aux prévisions d'inscription
Stack
- Python
- Solveur MILP
- Disponibilités UNIL + prévisions d'inscription
Un problème de ce type ?