Aller au contenu

Vue filtrée pour Administrateur Planificateur Gestionnaire de patrimoine Enseignant Étudiant Tout afficher

Panneau d'optimisation

Vérifié contre le produit le .

Route de l’application : /planning, bouton « Placement optimisé » Nouveau au lot 5

Poser cinquante séances à la main coûte une journée ; le solveur Le moteur de calcul qui cherche, parmi des milliards de combinaisons, celle qui satisfait le mieux vos règles. le fait en une minute. Le panneau « Placement optimisé » lui confie une liste de cours, suit son calcul, puis présente le résultat comme ce qu’il est : une suggestion, ligne par ligne, modifiable, applicable en brouillon. Le panneau le dit lui-même — « le système propose, vous disposez. »

Permission requise : Lancer une optimisation planning.solve .

La portent Administrateur, Planificateur — plus, le cas échéant, les rôles personnalisés de votre établissement qui la contiennent.

Sans cette permission, l'entrée n'existe pas dans le menu. Elle n'y figure ni grisée ni cadenassée : la navigation est filtrée sur les droits résolus, pas désactivée. Une section absente n'est donc pas une panne — et au tout premier affichage, le menu peut être plus court une fraction de seconde, le temps que les permissions arrivent.

Une permission peut être limitée à certains campus ou formations. Dans ce cas l'écran s'ouvre, mais les ressources hors périmètre en sont absentes — voir Portée.

C’est la deuxième permission de la grille. Sans elle, le bouton « Placement optimisé » n’existe pas dans la barre d’actions : il n’est ni grisé ni cadenassé, il est absent. Le reste de la grille fonctionne normalement.

Un planificateur la porte. C’est même le partage caractéristique du produit : un planificateur peut optimiser mais ne peut pas publier — voir Publication du planning.

Le panneau est une fenêtre modale qui traverse trois étapes.

« Sélectionnez des cours : le moteur calcule la meilleure combinaison créneaux + salles. L’EDT existant est figé et les salles verrouillées sont respectées — le système propose, vous disposez. »

  • Un champ « Rechercher un cours ou un enseignant… » filtre la liste.
  • Chaque cours est une case à cocher, suivie de son enseignant et du nombre de séances restant à placer : « Algorithmique — TD · Hugo Martin · ×12 ».
  • « Durée max du calcul » : 30, 60, 120 ou 300 secondes — 60 par défaut.
  • « Calculer (5) » lance le calcul ; le bouton reste inactif tant qu’aucun cours n’est coché.

Une barre de progression et une ligne d’état :

  • « Optimisation en cours — première solution en préparation… » tant qu’aucune solution complète n’existe ;
  • puis « Optimisation en cours — meilleure solution actuelle : 74 %. »

Le pourcentage n’est pas un temps écoulé : c’est la qualité moyenne de la meilleure solution trouvée jusqu’ici. Il peut donc stagner longtemps puis sauter d’un coup, et il ne dit rien du temps restant.

Deux sorties, qui ne font pas la même chose :

Bouton Ce qu’il fait
« Arrêter et proposer » interrompt le calcul et garde la meilleure solution trouvée — c’est le bouton à utiliser quand le résultat courant suffit
« Annuler le calcul » abandonne : rien n’est proposé, rien n’est gardé
  • En tête, « Taux de satisfaction global : 82.4 / 100 » — la moyenne des scores des lignes. S’y ajoute « 2 placement(s) invalide(s) à ajuster » en rouge s’il en reste.
  • « 3 séance(s) n’ont pas pu être placées par le moteur. » quand le solveur a rendu les armes sur une partie du lot.
  • Puis une ligne par séance : le cours, la cellule visée (« Mardi 08:00–11:00 · sem. 4 »), la salle, et son score. Une ligne refusée porte le badge « Invalide » au lieu du score, une ligne retouchée à la main le badge « Ajusté ».
  • Deux boutons par ligne : « Détail » déplie la checklist complète des contraintes — la même que celle du panneau de créneau, décrite sur Pastilles de contrainte et explicabilité — et « Ajuster » ouvre l’éditeur de ligne.

L’éditeur de ligne propose trois sélecteurs — « Semaine », « Créneau », « Salle » — puis « Appliquer l’ajustement ». Seules les salles valides sur la cellule choisie y sont proposées. « Revenir à la suggestion » annule la retouche.

En pied de panneau : « Autre combinaison », « Appliquer tout (12) », et l’annulation simple.

L’arbitrage : accepter, refuser, accepter en partie

Section intitulée « L’arbitrage : accepter, refuser, accepter en partie »

Le résultat n’a aucun effet tant que rien n’est appliqué. Trois issues, toutes légitimes.

Issue Comment
Accepter « Appliquer tout (12) » — les 12 séances sont créées en brouillon, rien n’est publié
Refuser fermer le panneau, ou « Autre combinaison » pour relancer sur un autre point de départ
Accepter en partie « Ajuster » les lignes qui ne conviennent pas, puis appliquer l’ensemble

« Autre combinaison » relance le même périmètre avec un tirage différent. Le solveur explore alors une autre région de l’espace des solutions ; ce n’est pas une garantie d’obtenir mieux, ni même autre chose si l’espace est étroit.

Le bouton « Appliquer tout » reste inactif tant qu’une ligne est invalide. Ce n’est pas une précaution d’interface : une suggestion contenant une violation dure n’est jamais applicable, côté serveur non plus. Ajustez la ligne, ou relancez.

C’est la section à lire avant la première utilisation. Les attentes irréalistes sur l’optimisation automatique sont la première source de déception.

  • Il ne retouche pas l’existant. Tout ce qui est déjà placé est figé : le solveur remplit les trous, il ne réorganise pas la semaine. Un planning déjà mauvais reste mauvais.
  • Il ne déverrouille pas une salle forcée. Un verrouillage manuel est un fait, pas une préférence.
  • Il ne commence pas n’importe quand. Les débuts de séance restent ancrés sur les débuts de trame ; la fenêtre occupée va du début du créneau à la durée réelle du cours, mais un début à 08:20 n’est pas dans son espace de recherche. Le placement libre à la minute reste un geste manuel — voir Placement d'une séance.
  • Il ne place pas forcément tout. Un lot peut revenir avec des séances non placées : c’est un résultat, pas une panne.
  • Il ne publie rien. Le résultat appliqué arrive en brouillon, comme un placement manuel.
  • Il n’étale pas une série sur plusieurs semaines. La contrainte de répartition des séances ne raisonne qu’à l’intérieur d’une semaine.
  • Il ne décide pas. Les évaluations de contrainte Le verdict d'une règle sur un placement candidat : respectée ou non, ce que ça coûte, et la phrase en français qui le justifie. affichées ne viennent pas du moteur d’optimisation mais du scoreur du produit, qui ré-évalue chaque ligne après coup. Ce que vous lisez dans « Détail » est donc exactement ce que la grille dirait du même placement.

Un calcul est un job de solve Une demande de calcul lancée sur un périmètre choisi, que l'on suit pendant qu'elle tourne et dont on applique — ou non — le résultat. qui vit côté serveur. Il passe par cinq états.

État Ce qui se passe Ce que vous voyez
en attente (queued) le job est accepté, le snapshot n’est pas encore parti la barre de progression, sans pourcentage
en cours (solving) le solveur travaille, la progression remonte « Optimisation en cours — meilleure solution actuelle : 74 %. »
terminé (completed) une solution existe et a été ré-évaluée la suggestion, ligne par ligne
échoué (failed) le moteur est injoignable, occupé, ou le job a été abandonné « Le calcul a échoué : SOLVER_UNREACHABLE »
annulé (cancelled) abandon demandé, ou arrêt trop précoce pour proposer quoi que ce soit « Calcul annulé — aucune suggestion. »

Un seul calcul actif par établissement. Une seconde demande répond « Un calcul est déjà en cours pour l’établissement. » — y compris si c’est un collègue qui l’a lancée.

Un job dont le serveur a perdu la trace est déclaré en échec au bout de trente minutes, pour que l’établissement ne reste pas bloqué.

Un calcul de plusieurs minutes travaille sur une photographie du planning. Si quelqu’un modifie le planning pendant ce temps, la photographie vieillit — et le produit refuse d’écraser silencieusement le travail de cette personne. C’est le rôle de l’ époque de planification Un compteur qui avance à chaque modification de l'occupation d'une année, et qui permet de savoir si un calcul lancé il y a dix minutes porte encore sur la réalité. .

  • Rien n’a bougé : la suggestion s’applique normalement.
  • Quelque chose a bougé, mais ailleurs — d’autres salles, d’autres enseignants, d’autres groupes que ceux du calcul : la suggestion reste applicable telle quelle. C’est la mutation de planning La trace d'un changement d'occupation — un cours posé, déplacé, annulé — avec la salle, l'enseignant et les groupes qu'il a touchés. enregistrée à chaque changement qui permet cette distinction : elle dit ce qui a bougé, pas seulement que quelque chose a bougé.
  • Quelque chose a bougé dans le périmètre du calcul : un bandeau annonce « Le planning a bougé pendant le calcul — la suggestion peut être périmée. » avec un bouton « Relancer ». Si vous appliquez malgré tout, le serveur refuse : « Le planning a bougé pendant le calcul : la suggestion est périmée. Relancez le calcul. »

Une publication ne périme jamais un calcul : elle change ce qui est visible, pas ce qui est occupé.

Action Permission Où c’est expliqué
Ouvrir le panneau et lancer un calcul Lancer une optimisation planning.solve cette page
Arrêter, annuler, relancer Lancer une optimisation planning.solve cette page
Ajuster une ligne de la suggestion Lancer une optimisation planning.solve cette page
Appliquer la suggestion en brouillon Lancer une optimisation planning.solve cette page
Publier ce qui a été appliqué Publier le planning planning.publish Publication du planning

La marche à suivre complète — que sélectionner, comment lire un taux, quand relancer — est dans le guide du planificateur.

Ce que vous voyez Ce que ça veut dire
Le bouton « Placement optimisé » est absent vous n’avez pas Lancer une optimisation planning.solve
« Aucun cours ne correspond. » la recherche de l’étape de sélection ne trouve rien
Un bloc gris à l’ouverture l’état du job est en cours de lecture
« Optimisation en cours — première solution en préparation… » le solveur cherche encore une première solution complète
« Le calcul a échoué : … » moteur injoignable, moteur occupé, ou job abandonné par le serveur
« Calcul annulé — aucune suggestion. » vous avez annulé, ou l’arrêt est arrivé trop tôt pour qu’une solution existe
« Taux de satisfaction global indisponible. » aucune ligne de la suggestion n’a de score exploitable
« 3 séance(s) n’ont pas pu être placées par le moteur. » le lot n’a pas trouvé de place pour tout : ce n’est pas une erreur
« 2 placement(s) invalide(s) à ajuster » des lignes violent une contrainte dure ; « Appliquer tout » reste inactif
« Dépasse les heures d’ouverture (08:00 – 20:00) » sur une ligne la fenêtre du cours sortirait de la plage d’ouverture
« Aucune salle compatible sur cette cellule. » dans l’éditeur la cellule visée n’a aucune salle valide pour ce cours
« Le planning a bougé pendant le calcul — la suggestion peut être périmée. » quelqu’un a modifié le périmètre du calcul
« Un calcul est déjà en cours pour l’établissement. » un seul calcul actif à la fois, tous utilisateurs confondus
« Impossible de lancer le calcul. » / « Impossible d’appliquer la suggestion. » échec non identifié à l’envoi ou à l’application
Le panneau se ferme après « Appliquer tout » les séances ont été créées en brouillon : « 12 séance(s) créée(s) en brouillon. »

Sur le hors-périmètre : le calcul porte sur l’année académique entière et n’applique pas la portée du rôle — un planificateur limité à un campus peut lancer un calcul qui touche l’autre. Voir le piège sur Grille de planning.

Documentation technique source (2)