From 18cd4c51befff3cd0ed8613697c362f4cd6efb0e Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Tue, 13 Oct 2026 01:48:10 -0400 Subject: [PATCH] [IMP] quality page: tile floors, measured thresholds, spec integrated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A tile now writes the floor the diagnostic proves under its number, and says when the measure reaches it, so an operator stops relaunching toward a value no placement can beat; no floor is written outside the floors' domain. A proved bar segment keeps its 6 px outline without pushing the bar past its value. The matrix and label thresholds adopt their measured values (44 people, 168 px). The spec and the changelog describe the quality page as the code builds it. Checked: node 5130, browser 1146, long 128; captures stable on two passes. --- FR --- [IMP] page qualité : planchers des tuiles, seuils mesurés, spec intégrée Une tuile écrit sous son chiffre le plancher que prouve le diagnostic, et dit quand la mesure l'atteint : l'opérateur cesse de relancer vers une valeur qu'aucun placement ne bat ; hors du domaine des planchers, rien ne s'écrit. Un segment prouvé garde son contour de 6 px sans pousser la barre au-delà de sa valeur. Les seuils de la matrice et des libellés prennent leurs valeurs mesurées (44 personnes, 168 px). La spec et le journal des versions décrivent la page de qualité telle que le code la construit. Vérifié : node 5130, navigateur 1146, longues 128 ; captures stables, 2 passes. Assisted-by: Claude Opus 5.5 --- CHANGELOG.md | 78 ++ README.md | 4 +- doc/captures/12a-qualite-sans-placement.png | Bin 73499 -> 74489 bytes doc/captures/12b-qualite-une-table.png | Bin 77016 -> 77057 bytes doc/captures/12d-qualite-une-appartenance.png | Bin 69653 -> 69651 bytes doc/captures/12g-qualite-plafond-nul.png | Bin 94516 -> 94616 bytes doc/captures/15-pas-de-matrice.png | Bin 102895 -> 102883 bytes doc/captures/15a-qualite-objectifs.png | Bin 93537 -> 81663 bytes doc/captures/manifeste.json | 24 +- spec.md | 1230 ++++++++++++++--- src/application/evaluation.js | 27 +- src/application/evaluation.test.js | 50 + src/geometrie/constantes.js | 16 +- src/geometrie/constantes.test.js | 25 +- src/interface/libelles/qualite.js | 6 +- src/interface/parcours.navigateur.test.js | 26 +- .../qualite/Profil.navigateur.test.js | 16 + .../qualite/Qualite.navigateur.test.js | 4 +- src/interface/qualite/VueEntete.svelte | 8 +- src/interface/qualite/entete.js | 38 +- src/interface/qualite/entete.test.js | 105 +- src/interface/qualite/graphiques/pointage.js | 51 +- .../qualite/graphiques/pointage.test.js | 99 ++ src/interface/qualite/source.js | 30 +- src/interface/qualite/source.test.js | 16 +- src/interface/transversal.navigateur.test.js | 111 +- src/moteur/qualite.js | 102 +- src/moteur/qualite.test.js | 453 +++++- src/stockage/depot.test.js | 20 + test/navigateur/ecrans.js | 17 +- 30 files changed, 2205 insertions(+), 351 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0433cab..37b239d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -90,11 +90,89 @@ environ 5 %. - Le guide d'usage montre les étiquettes, les objectifs des tables, leur import et l'ordre des priorités, captures à l'appui. +- Une neuvième section, « Qualité », suit « Propositions » dans la phase Placer. + Elle mesure le placement que le plan montre — le retenu ou la proposition + montrée — et répond à deux questions : ce placement est-il bon, et qui s'y + trouve mal servi ? Chaque ligne du tableau des propositions offre « Qualité », + qui montre la proposition au plan et ouvre la page. La page ne modifie rien : + elle reste ouverte en lecture, sur un plan bloqué et pendant une génération. +- La page se lit vue par vue, une liste en tête menant à chacune : l'en-tête + chiffré, une tuile par colonne du tableau des propositions, chaque borne celle + d'une personne nommée ; le profil trié des rencontres ; les collisions + d'appartenance, « prouvé inévitable » et « reste » ; les appartenances à + chaque table ; les paires répétées ; les objectifs des tables ; les animateurs + rencontrés ; la diversité par animateur ; la performance du calcul. Un cas + sans objet — une seule table, un seul tour, aucune appartenance, aucune + collision… — s'écrit en une phrase, jamais par des axes vides. +- Une tuile écrit sous son chiffre le plancher que le diagnostic prouve pour sa + mesure, « plancher 4 », et « plancher 4 atteint : impossible de faire moins » + quand la mesure l'égale : collisions cumulées, paires distinctes, excédent, + écart d'itinéraire maximal et, chacun quand le critère des objectifs le + compare sous le mode réglé, personnes jamais servies, plus de tours hors + objectif d'une personne et tours hors objectif. Sur un placement qui assoit + chacun à chaque tour et tient chaque réservation, relancer ne fera pas passer + la mesure sous ce plancher ; hors de là, un placement ajusté qui laisse + quelqu'un en réserve par exemple, la page n'en écrit aucun. Sans plancher + prouvé, la tuile n'en écrit aucun, jamais un 0. +- Chaque graphique a son tableau jumeau, qui s'ouvre à la demande sous le + graphique et se parcourt au clavier et au lecteur d'écran ; l'infobulle d'un + point en porte la ligne. Les graphiques se lisent dans les deux thèmes et sans + leur couleur : chaque tracé a son motif. +- Les parts se lisent en pourcentages, sur la page de qualité seulement, et + chaque pourcentage est suivi, juste dessous, du pire cas en compte : « 88 % », + puis « minimum 24 sur 27 » ; « 77 % des tours possibles servis », puis « 3 + personnes jamais servies ». Sur une ligne de tableau ou d'infobulle, il est + suivi du compte de cette ligne, « 5 appartenances pour 8 sièges ». Le tableau + des propositions garde ses comptes. +- Le profil des rencontres se dessine en deux graphiques, au même ordre de + personnes, de la plus mal servie à la mieux servie : en comptes, avec le + plafond réalisé en trait mixte et la **borne de diversité** — une borne + arithmétique, qui ne prouve rien, des appartenances qu'une personne peut + rencontrer à ses tables — en pointillés ; puis en pourcentage du plafond + réalisé, jusqu'à la règle à 100 %. +- Les appartenances à chaque table se lisent sur une grille tables × tours, sous + trois positions d'un sélecteur : « appartenances par siège », par défaut, + « appartenances par personne assise » et « doublons parmi les affiliés ». La + pire table vient en tête ; la position choisie se garde jusqu'à la fermeture + de l'événement et n'écrit rien. +- La fiche d'une personne porte une rubrique « Rencontres » : les personnes + qu'elle a rencontrées, le nombre de fois et les tours, les plus revues + d'abord. C'est le chemin vers une personne quand la matrice « qui a rencontré + qui » ne se dessine pas, au-delà de 44 participants. +- Les objectifs des tables se lisent tour par tour : les personnes jamais + servies d'abord, la soirée, puis une barre par tour, avec ses tours hors + objectif, la part que la configuration rend inévitable, et les personnes + assises sans table possible. +- Les animateurs se lisent en deux vues : les animateurs que chacun a + rencontrés, avec la borne des animateurs en pointillés ; puis la diversité que + chaque animateur voit à sa table, appartenances et étiquettes, sur la soirée, + et tour par tour dans le tableau jumeau, avec le moins varié, le plus varié et + combien sont au minimum. +- La performance du calcul montre la course de la recherche qui a produit la + proposition : ses mouvements évalués, la valeur de chaque critère à 1, 10, + 100… mouvements, toujours remesurée sous les réglages courants, et le dernier + point où une valeur a changé. La durée et la cadence de la génération + s'affichent pendant la séance qui l'a produite ; rouverte plus tard, la + proposition garde sa course et dit sa durée inconnue. +- La course de chaque proposition se garde dans un fichier à côté de celui de + l'événement, `.gtt-courses.json`, écrit seulement quand les propositions + changent — génération, effacement, retour dans l'historique. Le perdre ne perd + rien de votre travail : la page dit seulement que la course n'est pas gardée. + Renommer, copier et supprimer l'événement l'emportent avec lui ; un fichier + d'événement venu d'ailleurs arrive sans course connue. +- Rien de la page de qualité ne s'imprime, et aucun indicateur ne s'exporte en + CSV : elle se lit à l'écran, où l'on choisit sa proposition. +- À graine égale, les propositions et leur classement sont les mêmes qu'avant la + page de qualité. +- Le guide d'usage montre la page de qualité, ses vues et ses cas limites, + captures à l'appui. **Version de format des fichiers** : 2. Les étiquettes, les objectifs, leurs règles, les cases nouvelles, le mode des objectifs et l'ordre des priorités s'enregistrent dans des champs facultatifs, absents à leur défaut. Un fichier de format 1, écrit par une version de développement, s'ouvre tel quel et se convertit, son historique avec lui, au premier geste en écriture. +La course de la recherche ne va ni dans le fichier de l'événement ni dans son +historique : elle a son propre fichier, `.gtt-courses.json`. **En remplaçant** : rien à faire, c'est la première version. diff --git a/README.md b/README.md index 339eebb..120af52 100644 --- a/README.md +++ b/README.md @@ -154,8 +154,8 @@ l'exécution elle-même —, son statut et la façon de le relever. Une valeur a | `HAUTEUR_BANDE_IMPRESSION` | hauteur de ce que porte une feuille imprimée hors de sa zone de contenu : pied, mentions, barre, cartouche | relevée à l’exécution | mesurée | exécution | mesurée à l'ouverture de l'aperçu : tout ce qu'une feuille porte hors de [data-contenu] ; aucune valeur n'est écrite dans ce registre | — | rendu de l'aperçu, relevé à chaque ouverture | | `TOLERANCE_CHAINE_TEMOIN` | écart relatif admis entre la longueur rendue de la chaîne témoin et celle que donnent les avances de la police | 0,011 rapport | mesurée | banc | banc de mesure : le quart de l'écart relatif entre la police embarquée et une famille de repli forcée, et au moins trois fois la gigue de dix mesures, chaîne témoin à 16 px, crénage et ligatures coupés ; arrondi par excès à deux chiffres significatifs, écrit dans ce registre | 0,011 rapport | cadre de 1 366 × 700 px, facteur 1, Chromium 153.0.8010.12, Node v26.10.0, 16 processeurs logiques, processeur non ralenti, police Noto Sans | | `RALENTISSEMENT_PLEINE_CHARGE` | ralentissement d'une génération quand tous les processeurs logiques travaillent, t(L) / t(1) | 2 × | défaut de travail | banc | banc de mesure : durée d'une même génération sur un travailleur, puis sur L travailleurs ; le rapport ρ des médianes, écrit dans ce registre | 2,98 × | cadre de 1 366 × 700 px, facteur 1, Chromium 153.0.8010.12, Node v26.10.0, 16 processeurs logiques, processeur non ralenti, police Noto Sans | -| `SEUIL_MATRICE_PARTICIPANTS` | nombre de participants au-delà duquel une case de la matrice « qui a rencontré qui » tombe sous la cible de 24 px dans la largeur de la carte, au cadre fixé | 40 participants | défaut de travail | banc | banc de mesure, cadre de 1 366 × 700 px : le plus grand nombre de participants dont la case de la matrice tient 24 px dans la largeur de la carte de la vue, noms en tête compris, relevé sur le rendu ; la valeur proposée, adoptée à la main dans ce registre | 44 participants | cadre de 1 366 × 700 px, facteur 1, Chromium 153.0.8010.12, Node v26.10.0, 16 processeurs logiques, processeur non ralenti, police Noto Sans | -| `LARGEUR_TRONCATURE_NOM_PX` | largeur à laquelle un nom se tronque dans une étiquette de graphique | 180 px | défaut de travail | banc | banc de mesure, police Noto Sans : la largeur rendue d'un nom de 14 caractères, chacun le glyphe le plus large de l'alphabet visé, au corps des étiquettes de graphique, dans la marge gauche d'une vue à barres — jamais un nom de démonstration ; arrondie au pixel supérieur, adoptée à la main dans ce registre | 168 px | cadre de 1 366 × 700 px, facteur 1, Chromium 153.0.8010.12, Node v26.10.0, 16 processeurs logiques, processeur non ralenti, police Noto Sans | +| `SEUIL_MATRICE_PARTICIPANTS` | nombre de participants au-delà duquel une case de la matrice « qui a rencontré qui » tombe sous la cible de 24 px dans la largeur de la carte, au cadre fixé | 44 participants | mesurée | banc | banc de mesure, cadre de 1 366 × 700 px : le plus grand nombre de participants dont la case de la matrice tient 24 px dans la largeur de la carte de la vue, noms en tête compris, relevé sur le rendu ; la valeur proposée, adoptée à la main dans ce registre | 44 participants | cadre de 1 366 × 700 px, facteur 1, Chromium 153.0.8010.12, Node v26.10.0, 16 processeurs logiques, processeur non ralenti, police Noto Sans | +| `LARGEUR_TRONCATURE_NOM_PX` | largeur à laquelle un nom se tronque dans une étiquette de graphique | 168 px | mesurée | banc | banc de mesure, police Noto Sans : la largeur rendue d'un nom de 14 caractères, chacun le glyphe le plus large de l'alphabet visé, au corps des étiquettes de graphique, dans la marge gauche d'une vue à barres — jamais un nom de démonstration ; arrondie au pixel supérieur, adoptée à la main dans ce registre | 168 px | cadre de 1 366 × 700 px, facteur 1, Chromium 153.0.8010.12, Node v26.10.0, 16 processeurs logiques, processeur non ralenti, police Noto Sans | diff --git a/doc/captures/12a-qualite-sans-placement.png b/doc/captures/12a-qualite-sans-placement.png index b68cb0e1a7ec4c27e8827a3c015a287a6654e62a..1e524438aea45d8d45ddf04b3a4312242b8c3796 100644 GIT binary patch literal 74489 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 GLK6VzhULWo literal 73499 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℞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 diff --git a/doc/captures/12d-qualite-une-appartenance.png b/doc/captures/12d-qualite-une-appartenance.png index 01c9cd89cd1c26e4303437c601afadaa11d6081c..ec5bdcb1dfae486781768268c1d281b14b7178cf 100644 GIT binary patch delta 19102 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 delta 19098 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

#i1uGb_`d?V%(G^I(>l@mr{S8XWo7s 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 diff --git a/doc/captures/12g-qualite-plafond-nul.png b/doc/captures/12g-qualite-plafond-nul.png index ecaf7ec024970458e4579f11a6ad4e477e83d8d2..d88f5773479d78043711838ba003242e3d0175c9 100644 GIT binary patch delta 44643 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 delta 46455 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 SZ6PN^Daxr`%agtN;C}#wqc^?) literal 93537 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

l*F@d7{ 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 OeJUW%pT+y)xBmgxxm0KX diff --git a/doc/captures/manifeste.json b/doc/captures/manifeste.json index d65fabd..0733c14 100644 --- a/doc/captures/manifeste.json +++ b/doc/captures/manifeste.json @@ -19,22 +19,22 @@ {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"5109fd63a112340134205ad495233ed17d9d2de83b790b1eae38f974a97e85c6","etape":"8","etat":"4d37d30748068354162752743c26aa7e0ab00d6e9b2aa1996b6f9fb410848280","facteurEchelle":1,"fichier":"10-diagnostic","graine":null,"image":{"hauteur":700,"largeur":1366,"sha256":"633949b83c1d50135c859dad6dfd1815d54d0121963d86c7ff25c26a44904d2f"},"instant":"2026-10-06T19:00:00-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":13.78,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.07,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Lecture","Liste des événements","Clair","Sombre","À propos","Lecture","Rien ne change ; « Modifier » passe en écriture.","Modifier","Lecture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Grande démonstration 1","260 participants","33 tables · 260 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Diagnostic","Tout l'événement","écart d'itinéraire maximal : plancher 1, au moins 24 mobiles finissent sous leur plafond a priori","aucune relance ne le réduit : il tient aux tables pleines dont les capacités ou les ancrages diffèrent","plafond a priori 24 rencontres pour 4 ancrés","seules les capacités et les réservations le changent : aucune relance ne le dépasse","plafond a priori 28 rencontres pour 29 ancrés et 227 mobiles","seules les capacités et les réservations le changent : aucune relance ne le dépasse","99 retours imposés par 33 ancrages","les réservations les imposent : ils ne comptent pas parmi les retours que choisit le moteur"],"theme":"clair","versionReelle":"2026.10.05.01"}, {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"910ac5d3639d7c9ea4b52cfef4e402b5277fdf38379c9a0d196494f43727c5b5","etape":"9","etat":"1025fe8c346e3a503f00abcaf78cf004f33fe2c01a46bebd87da1bbf4d0b3f53","facteurEchelle":1,"fichier":"10a-ordre-priorites","graine":null,"image":{"hauteur":700,"largeur":1366,"sha256":"bb31be5ff2aee95f48210375982ec1594f4f2d73aabd8f6afb17dbb928b76618"},"instant":"2026-10-06T19:00:00-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.07,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Soirée d’essai","13 participants","2 tables · 18 sièges","3 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Génération","Meilleure proposition du classement","Aucune proposition classée : sans proposition comparable, le classement n'en désigne aucune.","Réglages de la génération","Graine (nombre entier, de 0 à 4 294 967 295)","Propositions par génération (nombre de propositions)","Compte d'arrêt (mouvements évalués par proposition)","Historique d'acceptation (longueur, en mouvements)","Contraintes de la génération","Séparer les appartenances","Nouveaux voisins à chaque tour","Nouvelle table à chaque tour","Varier les appartenances rencontrées","Respecter les objectifs des tables","Objectifs des tables : chercher d'abord","le plus de places servies","Le plus grand total de tours servis : le critère compare les tours hors objectif.","chacun au moins une fois","D'abord le plus de personnes servies à un tour au moins, puis le plus grand total : le critère compare les personnes jamais servies, puis les tours hors objectif.","l'équité d'abord","Le minimum d'abord, puis le total : d'abord la personne la plus mal servie, mesurée contre ses propres tours possibles, puis le plus grand total. Le critère compare le plus de tours hors objectif d'une personne, puis les tours hors objectif.","Rencontrer le plus d'animateurs différents","Attribuer les sièges","Ordre des priorités","Deux propositions se comparent palier par palier : un palier ne départage que des propositions égales sur ceux qui le précèdent. Dans un palier de plusieurs critères, chacun compte selon son poids.","Ordre réglé pour l'événement.","Palier 1 sur 6","écart au plafond a priori","Descendre « écart au plafond a priori » d'un palier","Palier 2 sur 6","excédent de collisions","Poids de « excédent de collisions » (nombre entier)","Monter le palier de « excédent de collisions »","Descendre le palier de « excédent de collisions »","Séparer « excédent de collisions » en palier propre","tours hors objectif","Poids de « tours hors objectif » (nombre entier)","Monter le palier de « tours hors objectif »","Descendre le palier de « tours hors objectif »","Séparer « tours hors objectif » en palier propre","Palier 3 sur 6","collisions cumulées","Monter « collisions cumulées » d'un palier","Descendre « collisions cumulées » d'un palier","Joindre « collisions cumulées » au palier du dessus","Palier 4 sur 6","rencontres répétées et retours","Monter « rencontres répétées et retours » d'un palier","Descendre « rencontres répétées et retours » d'un palier","Palier 5 sur 6","animateurs non rencontrés","décoché","Monter « animateurs non rencontrés » d'un palier","Descendre « animateurs non rencontrés » d'un palier","Palier 6 sur 6","redondance d'appartenance","Monter « redondance d'appartenance » d'un palier","Joindre « redondance d'appartenance » au palier du dessus","« tours hors objectif » est au palier 2 sur 6, avec « excédent de collisions ».","Rétablir l'ordre par défaut","Cœurs de calcul","Cœurs automatiques (un par processeur logique du poste)","Valeur automatique sur ce poste : 4 cœurs, un par processeur logique, hyperthreads compris.","Une génération n'emploie jamais plus de cœurs que de propositions demandées. Ce réglage vaut pour cette séance du logiciel sur ce poste : il ne s'enregistre pas dans l'événement.","Aucun calcul n'est encore mesuré sur ce poste pendant cette séance : la durée d'une génération est inconnue.","Générer"],"theme":"clair","versionReelle":"2026.10.05.01"}, {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"e27a55ff9a61913431bd646b12105d3478fb061b6ab63a7ff0ea6d5f26a7eb5b","etape":"9","etat":"b42451443701c80d433d632788edaab7dd1afea7a57add55a37fcedfdaee98ff","facteurEchelle":1,"fichier":"11-propositions","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"e1bc8ec4b87315960282b99459649f66b90ee4f839c2fd31303ef28ff5ba11d7"},"instant":"2026-10-06T19:02:00-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.02,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Soirée d’essai","13 participants","2 tables · 18 sièges","3 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Propositions","Propositions classées","Effacer les propositions","Ordre du classement, chaque critère au plus faible d'abord :","écart au plafond a priori",", puis","ensemble,","excédent de collisions","(poids 1)",",","tours hors objectif","(poids 3)",", puis","collisions cumulées",", puis","rencontres répétées",", puis","redondance d'appartenance",", puis","l'identifiant croissant",".","Personnes rencontrées","Collisions d'appartenance","Rencontres répétées et retours","Diversité d'appartenance","Manque et plafond a priori","Objectifs des tables et animateurs","Rang","Proposition","Personnes distinctes rencontrées, minimum : tous","Personnes distinctes rencontrées, minimum : mobiles","Personnes distinctes rencontrées, minimum : ancrés","Collisions cumulées (paire et tour)","Paires distinctes de même appartenance","Excédent de collisions (retrouvailles au-delà de la première)","Rencontres répétées choisies (paires)","Rencontres d'une même paire, au plus","Retours choisis à une table déjà occupée","Appartenances rencontrées A(p), minimum","Redondance d'appartenance, somme Σ r(p)","Taux de diversité d(p), minimum","Plus grand manque (personnes)","Personnes à qui il en manque","Écart d'itinéraire maximal (personnes)","Écart au plafond a priori maximal (personnes)","Tours hors objectif (personne et tour)","Tours selon l'objectif s(p), minimum","Certificat","Imposé par les réservations","Commandes","Placement retenu","3","Tel que la proposition n° 3.","11","11","11","26","15","11","30","3","11","3","85","0,27","0","0","0","0","1","1","minimum atteint","2 retours imposés par 1 ancrage.","Aucune rencontre répétée imposée.","Voir sur le plan","Qualité","1","3","retenue","11","11","11","26","15","11","30","3","11","3","85","0,27","0","0","0","0","1","1","minimum atteint","2 retours imposés par 1 ancrage.","Aucune rencontre répétée imposée.","Voir sur le plan","Qualité","Retenir","2","2","11","11","11","33","15","18","54","3","16","3","85","0,27","0","0","0","0","2","1","minimum atteint","2 retours imposés par 1 ancrage.","Aucune rencontre répétée imposée.","Voir sur le plan","Qualité","Retenir","3","5","10","10","10","20","15","5","22","3","12","3","83","0,27","1","1","1","1","1","1","atteignabilité inconnue","2 retours imposés par 1 ancrage.","Aucune rencontre répétée imposée.","Voir sur le plan","Qualité","Retenir","4","1","10","10","11","29","15","14","46","3","13","3","82","0,30","1","4","0","1","0","2","atteignabilité inconnue","2 retours imposés par 1 ancrage.","Aucune rencontre répétée imposée.","Voir sur le plan","Qualité","Retenir","5","4","10","10","11","31","14","17","46","3","17","3","82","0,30","1","4","0","1","0","2","atteignabilité inconnue","2 retours imposés par 1 ancrage.","Aucune rencontre répétée imposée.","Voir sur le plan","Qualité","Retenir","Cible de la somme de redondance","La liste des événements montre, pour le placement retenu, la différence sans signe entre cette cible et la somme Σ r(p) de la colonne « Redondance d'appartenance ». Un nombre entier, 0 ou plus."],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"42ee6a983039ac4365b18a2f1302ff57f3527b14d5854735636ae5355fb6c6e6","etape":"10","etat":"15fb09087464cf5b429c79e33325a0cd64579f1c650d7fd7aeabf6c3cbf977c0","facteurEchelle":1,"fichier":"12-qualite-profil","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"bf3ddc675d33f81c2a5d3d2f13fef4a1a837d9839996d71ebdce9b5d4930b0bb"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":4.83,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":9.67,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":6.15,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":5.57,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":6.17,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":10.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":7.01,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":7.83,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Grande démonstration 1","260 participants","33 tables · 260 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 260 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","23","95 %","minimum 23 sur 24","chez François Ivrivet","plafond réalisé 24","plafond a priori 24","Personnes distinctes rencontrées, minimum : mobiles","24","Personnes distinctes rencontrées, minimum : ancrés","23","Collisions d'appartenance","Collisions cumulées (paire et tour)","52","Paires distinctes de même appartenance","52","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","103","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","29","99 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","17","chez François Ivrivet","borne de diversité 24","Redondance d'appartenance, somme Σ r(p)","1 288","Taux de diversité d(p), minimum","0,64","Manque et plafond a priori","Plus grand manque (personnes)","3","chez Marc Luskouze","131 personnes au manque maximal","plafond réalisé 27","Personnes à qui il en manque","131","Écart d'itinéraire maximal (personnes)","4","Écart au plafond a priori maximal (personnes)","4","Objectifs des tables et animateurs","Animateurs rencontrés, minimum","3","ne classe pas","chez Zoé WAMMERWOLM-MAWWEMMEL","borne des animateurs 4","Animateurs non rencontrés","29","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","10","20","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","Minimum 23 personnes rencontrées, 3 personnes au minimum, 131 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","La personne au rang 1, François Ivrivet, rencontre","95 %","minimum 23 sur 24","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Imprimerie Yzorne","effectif 12, 9 paires distinctes, excédent 0","Fabrique Sorbagne","effectif 11, 7 paires distinctes, excédent 0","Ateliers Falvigne","effectif 8, 3 paires distinctes, excédent 0","Ateliers Rossolde","effectif 11, 3 paires distinctes, excédent 0","Fonderie Estrolle","effectif 9, 3 paires distinctes, excédent 0","Verrerie Vaubrenne","effectif 10, 3 paires distinctes, excédent 0","Ateliers Tavrenne","effectif 8, 2 paires distinctes, excédent 0","Fonderie Xandrelle","effectif 6, 2 paires distinctes, excédent 0","Menuiserie Estrolle","effectif 9, 2 paires distinctes, excédent 0","Tannerie Nervanche","effectif 6, 2 paires distinctes, excédent 0","Ateliers Aubrenc","effectif 3, 1 paire distincte, excédent 0","Ateliers Cassorgue","effectif 3, 1 paire distincte, excédent 0","Brasserie Xandrelle","effectif 2, 1 paire distincte, excédent 0","Comptoir Gravelune","effectif 3, 1 paire distincte, excédent 0","Coopérative Jolvane","effectif 4, 1 paire distincte, excédent 0","Fabrique Kalvenne","effectif 3, 1 paire distincte, excédent 0","Filature Zelvaine","effectif 4, 1 paire distincte, excédent 0","Fonderie Sorbagne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Gravelune","effectif 3, 1 paire distincte, excédent 0","Menuiserie Hostrenne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Quimvaux","effectif 3, 1 paire distincte, excédent 0","Menuiserie Sorbagne","effectif 3, 1 paire distincte, excédent 0","Papeterie Hostrenne","effectif 2, 1 paire distincte, excédent 0","Papeterie Ulvardes","effectif 4, 1 paire distincte, excédent 0","Tannerie Belvarre","effectif 5, 1 paire distincte, excédent 0","Verrerie Aubrenc","effectif 2, 1 paire distincte, excédent 0","Ateliers Estrolle","effectif 3, 0 paire distincte, excédent 0","Ateliers Ivoranche","effectif 4, 0 paire distincte, excédent 0","Brasserie Belvarre","effectif 9, 0 paire distincte, excédent 0","Brasserie Dravenne","effectif 1, 0 paire distincte, excédent 0","Brasserie Lavorneau","effectif 2, 0 paire distincte, excédent 0","Brasserie Morvalle","effectif 2, 0 paire distincte, excédent 0","Brasserie Sorbagne","effectif 4, 0 paire distincte, excédent 0","Brasserie Wassorel","effectif 2, 0 paire distincte, excédent 0","Comptoir Ivoranche","effectif 1, 0 paire distincte, excédent 0","Comptoir Jolvane","effectif 3, 0 paire distincte, excédent 0","Comptoir Lavorneau","effectif 1, 0 paire distincte, excédent 0","Comptoir Sorbagne","effectif 4, 0 paire distincte, excédent 0","Comptoir Xandrelle","effectif 3, 0 paire distincte, excédent 0","Comptoir Yzorne","effectif 2, 0 paire distincte, excédent 0","Coopérative Dravenne","effectif 3, 0 paire distincte, excédent 0","Coopérative Gravelune","effectif 3, 0 paire distincte, excédent 0","Coopérative Morvalle","effectif 3, 0 paire distincte, excédent 0","Coopérative Rossolde","effectif 4, 0 paire distincte, excédent 0","Fabrique Ivoranche","effectif 3, 0 paire distincte, excédent 0","Fabrique Morvalle","effectif 1, 0 paire distincte, excédent 0","Fabrique Ulvardes","effectif 3, 0 paire distincte, excédent 0","Filature Dravenne","effectif 1, 0 paire distincte, excédent 0","Filature Olbrecq","effectif 2, 0 paire distincte, excédent 0","Filature Wassorel","effectif 3, 0 paire distincte, excédent 0","Fonderie Aubrenc","effectif 2, 0 paire distincte, excédent 0","Fonderie Ivoranche","effectif 2, 0 paire distincte, excédent 0","Fonderie Kalvenne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Falvigne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Hostrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Aubrenc","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ivoranche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Jolvane","effectif 1, 0 paire distincte, excédent 0","Menuiserie Nervanche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Olbrecq","effectif 4, 0 paire distincte, excédent 0","Menuiserie Tavrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ulvardes","effectif 6, 0 paire distincte, excédent 0","Menuiserie Wassorel","effectif 1, 0 paire distincte, excédent 0","Papeterie Estrolle","effectif 3, 0 paire distincte, excédent 0","Papeterie Wassorel","effectif 1, 0 paire distincte, excédent 0","Tannerie Aubrenc","effectif 3, 0 paire distincte, excédent 0","Tannerie Falvigne","effectif 1, 0 paire distincte, excédent 0","Tannerie Olbrecq","effectif 1, 0 paire distincte, excédent 0","Tannerie Quimvaux","effectif 1, 0 paire distincte, excédent 0","Verrerie Gravelune","effectif 1, 0 paire distincte, excédent 0","Verrerie Ivoranche","effectif 6, 0 paire distincte, excédent 0","Verrerie Nervanche","effectif 1, 0 paire distincte, excédent 0","Verrerie Olbrecq","effectif 2, 0 paire distincte, excédent 0","Verrerie Pravette","effectif 2, 0 paire distincte, excédent 0","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Imprimerie Yzorne » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 4","Table 12","Table 16","Table 20","Table 26","Table 33","Table 9","Table 10","Table 15","Table 24","Table 25","Table 29","Table 31","Table 32","Table 1","Table 2","Table 5","Table 6","Table 7","Table 8","Table 13","Table 14","Table 17","Table 18","Table 19","Table 21","Table 22","Table 23","Table 27","Table 28","Table 30","Table 3","Table 11","Tour 1","Tour 2","Tour 3","Tour 4","2","1","0","0","1","2","0","0","0","0","2","1","0","0","1","2","0","2","0","1","0","1","0","2","0","0","2","0","0","1","0","1","1","1","0","0","0","1","1","0","0","1","1","0","1","0","1","0","0","1","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","1","0","0","0","0","1","0","0","0","0","0","1","0","1","0","0","0","0","0","1","0","0","0","1","1","0","0","0","1","0","0","0","0","0","1","0","0","1","0","0","0","0","0","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","0","0","0","0","0","0","La table 4 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 100 sur 103","Suivantes","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Samuel Cloveval","Menuiserie Ulvardes","Hélène Bralmeval","Brasserie Dravenne","3 fois","Voir au tour 3","Tour 1, table 23","Tour 3, table 15","Tour 4, table 32","Hugo Fralvançon","Brasserie Wassorel","Léa Fralvault","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 11","Tour 3, table 2","Hugo Fralvançon","Brasserie Wassorel","Louise Quilmançon","Menuiserie Estrolle","2 fois","Voir au tour 3","Tour 1, table 13","Tour 3, table 2","Zoé WAMMERWOLM-MAWWEMMEL","Menuiserie Ulvardes","Catherine Hulveron","Coopérative Rossolde","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 15","Catherine Urvesson","Fabrique Ulvardes","Olivier Bralmançon","Comptoir Lavorneau","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 6","Karim Hulvivet","Fonderie Xandrelle","Guillaume Luskichon","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Léa Fralvault","Fonderie Sorbagne","Lucie Tolvesson","Filature Zelvaine","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 11","Léa Fralvault","Fonderie Sorbagne","Samuel Abrevard","Filature Dravenne","2 fois","Voir au tour 4","Tour 2, table 11","Tour 4, table 4","Fatima Obrivet","Fabrique Sorbagne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 29","Philippe Voskeval","Menuiserie Estrolle","Émilie Korvard","Verrerie Vaubrenne","2 fois","Voir au tour 3","Tour 2, table 6","Tour 3, table 6","Zoé Dulveval","Menuiserie Quimvaux","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 13","Paul Korveux","Filature Olbrecq","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 1, table 15","Tour 3, table 5","Paul Korveux","Filature Olbrecq","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 3","Thomas Rozvotte","Verrerie Ivoranche","Antoine Quilmeron","Fabrique Kalvenne","2 fois","Voir au tour 4","Tour 3, table 33","Tour 4, table 26","Isabelle Bralmumet","Verrerie Aubrenc","Félix Korveval","Tannerie Nervanche","2 fois","Voir au tour 2","Tour 1, table 19","Tour 2, table 28","Isabelle Bralmumet","Verrerie Aubrenc","Louis Mirveron","Filature Wassorel","2 fois","Voir au tour 4","Tour 3, table 22","Tour 4, table 16","Simon Mirvivet","Ateliers Ivoranche","Hélène Gorzumet","Fonderie Aubrenc","2 fois","Voir au tour 3","Tour 1, table 9","Tour 3, table 18","Lucie Voskeux","Coopérative Morvalle","Samuel Cloveval","Menuiserie Ulvardes","2 fois","Voir au tour 3","Tour 2, table 14","Tour 3, table 15","Fatima Korvouze","Ateliers Tavrenne","Olivier Jusvançon","Brasserie Morvalle","2 fois","Voir au tour 3","Tour 2, table 3","Tour 3, table 3","Étienne Fralvichon","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 1, table 21","Tour 4, table 33","Louise Quilmançon","Menuiserie Estrolle","Paul Obrichon","Ateliers Rossolde","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 21","Louise Quilmançon","Menuiserie Estrolle","Étienne Eskesson","Menuiserie Ulvardes","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 7","Pierre Abreveron","Ateliers Rossolde","Manon Tolveron","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 5","Tour 3, table 5","Léa Tolvande","Ateliers Rossolde","Anne Abrevesson","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 14","Antoine Quilmeron","Fabrique Kalvenne","Samuel Bralmeux","Ateliers Rossolde","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 33","Michel Eskeux","Papeterie Wassorel","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 21","Louise Hulvault","Coopérative Jolvane","Karim Fralveval","Coopérative Gravelune","2 fois","Voir au tour 4","Tour 3, table 24","Tour 4, table 4","Catherine Hulveron","Coopérative Rossolde","Alexandre Korvotte","Menuiserie Nervanche","2 fois","Voir au tour 4","Tour 3, table 15","Tour 4, table 15","François Ivrivet","Menuiserie Sorbagne","François Gorzichon","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 32","Tour 4, table 32","Claire Fralvivet","Imprimerie Yzorne","Étienne Selvouze","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 14","Tour 3, table 27","Karim Gorzesson","Papeterie Ulvardes","Sophie Clovard","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 1, table 20","Tour 4, table 12","Manon Urvançon","Ateliers Tavrenne","Guillaume Tolvignac","Menuiserie Sorbagne","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Sylvie Quilmande","Imprimerie Yzorne","Antoine Bralmault","Fabrique Sorbagne","2 fois","Voir au tour 4","Tour 1, table 4","Tour 4, table 4","Sylvie Quilmande","Imprimerie Yzorne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 14","Sylvie Quilmande","Imprimerie Yzorne","Hélène Rozveval","Comptoir Ivoranche","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 4","Amina Pruvesson","Fonderie Sorbagne","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 1, table 18","Tour 4, table 16","Amina Pruvesson","Fonderie Sorbagne","Léa Obrard","Comptoir Sorbagne","2 fois","Voir au tour 2","Tour 1, table 18","Tour 2, table 31","Lucie Quilmière","Fabrique Ivoranche","Anne Urvivet","Fonderie Kalvenne","2 fois","Voir au tour 2","Tour 1, table 21","Tour 2, table 9","Louis Selvivet","Menuiserie Hostrenne","Guillaume Hulvotte","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 2, table 25","Tour 4, table 25","Lucie Tolvesson","Filature Zelvaine","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 4","Tour 1, table 15","Tour 4, table 25","Olivier Quilmesson","Comptoir Gravelune","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 9","Gabriel Neskault","Menuiserie Tavrenne","Geneviève Abrevignac","Brasserie Morvalle","2 fois","Voir au tour 4","Tour 2, table 20","Tour 4, table 18","Gabriel Neskault","Menuiserie Tavrenne","François Clovotte","Coopérative Rossolde","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Gabriel Neskault","Menuiserie Tavrenne","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Olivier Jusvançon","Brasserie Morvalle","Hélène Selveux","Brasserie Lavorneau","2 fois","Voir au tour 4","Tour 1, table 24","Tour 4, table 25","Gabriel Pruveux","Papeterie Estrolle","Guillaume Obrançon","Papeterie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 31","Tour 4, table 27","Manon Clovière","Ateliers Ivoranche","Marc Vandergrolcquesmirtavelle-Ostrovaubelindigues","Tannerie Aubrenc","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 10","François Obrouze","Tannerie Olbrecq","Camille Tolvumet","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 31","Tour 3, table 31","Claire Gorzeron","Menuiserie Hostrenne","Guillaume Gorzivet","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 32","Tour 4, table 8","Hélène Luskumet","Brasserie Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 8","Louis Fralvande","Ateliers Rossolde","Philippe Ivroubre","Ateliers Tavrenne","2 fois","Voir au tour 4","Tour 1, table 19","Tour 4, table 19","Isabelle Korvichon","Menuiserie Ulvardes","Marie Dulvesson","Ateliers Cassorgue","2 fois","Voir au tour 4","Tour 1, table 7","Tour 4, table 10","Isabelle Korvichon","Menuiserie Ulvardes","Karim Clovivet","Fonderie Kalvenne","2 fois","Voir au tour 3","Tour 2, table 18","Tour 3, table 23","Fatima Tolvoubre","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 33","Zoé Gorzière","Menuiserie Olbrecq","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 2, table 7","Tour 3, table 25","Antoine Obreval","Ateliers Cassorgue","Alexandre Ivreux","Tannerie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 25","Tour 2, table 6","Antoine Obreval","Ateliers Cassorgue","Hugo Bralmouze","Tannerie Falvigne","2 fois","Voir au tour 4","Tour 3, table 23","Tour 4, table 23","Michel Korveron","Fonderie Sorbagne","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 8","Marie Dulvesson","Ateliers Cassorgue","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 3","Tour 2, table 16","Tour 3, table 17","Youssef Jusvard","Tannerie Aubrenc","Simon Hulvumet","Ateliers Ivoranche","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 21","Gabriel Mirvotte","Tannerie Belvarre","Paul Neskivet","Comptoir Jolvane","2 fois","Voir au tour 4","Tour 3, table 21","Tour 4, table 7","Marc Luskouze","Ateliers Rossolde","Isabelle Selvichon","Tannerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 21","Tour 3, table 8","Louis Hulvichon","Ateliers Falvigne","Nicolas Ivrichon","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 17","Tour 2, table 24","Pierre Pruveval","Comptoir Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 1, table 10","Tour 3, table 8","Geneviève Abrevignac","Brasserie Morvalle","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 7","Olivier Bralmançon","Comptoir Lavorneau","Véronique Jusvouze","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 6","Marc Luskoubre","Verrerie Vaubrenne","Thomas Quilmichon","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 33","Tour 4, table 5","Camille Jusvumet","Fonderie Estrolle","Guillaume Eskotte","Verrerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 27","Tour 3, table 11","Antoine Selvière","Coopérative Dravenne","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 1, table 11","Tour 3, table 9","Antoine Bralmault","Fabrique Sorbagne","Amina Rozvichon","Verrerie Olbrecq","2 fois","Voir au tour 3","Tour 2, table 4","Tour 3, table 4","Antoine Bralmault","Fabrique Sorbagne","Antoine Pruvouze","Imprimerie Yzorne","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 4","Émilie Abrevière","Imprimerie Yzorne","Fatima Hulvard","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 29","Émilie Abrevière","Imprimerie Yzorne","Geneviève Obresson","Coopérative Gravelune","2 fois","Voir au tour 3","Tour 1, table 29","Tour 3, table 29","Émilie Abrevière","Imprimerie Yzorne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 4","Tour 3, table 29","Tour 4, table 29","Olivier Tolvichon","Fonderie Xandrelle","Étienne Gorzeval","Papeterie Ulvardes","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 6","Félix Korveval","Tannerie Nervanche","Thomas Selvignac","Brasserie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 28","Tour 3, table 28","Émilie Dulvichon","Menuiserie Ulvardes","Lucie Voskeron","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Émilie Dulvichon","Menuiserie Ulvardes","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Claire Jusvivet","Imprimerie Yzorne","Hugo Voskumet","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 20","Tour 3, table 20","Amina Quilmault","Coopérative Jolvane","Philippe Abreveval","Ateliers Falvigne","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 4","Hélène Gorzumet","Fonderie Aubrenc","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 4","Tour 1, table 9","Tour 4, table 21","Sophie Ivrault","Coopérative Morvalle","Philippe Fralvignac","Menuiserie Estrolle","2 fois","Voir au tour 4","Tour 3, table 13","Tour 4, table 26","Nicolas Korvande","Comptoir Sorbagne","Chantal Obrignac","Imprimerie Yzorne","2 fois","Voir au tour 3","Tour 2, table 27","Tour 3, table 22","Fatima Urvignac","Ateliers Aubrenc","Claire Bralmotte","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 21","François Clovotte","Coopérative Rossolde","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Philippe Dulvoubre","Brasserie Belvarre","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 2","Tour 1, table 9","Tour 2, table 10","Chantal Mirvumet","Menuiserie Gravelune","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 29","Camille Neskard","Menuiserie Gravelune","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 2, table 16","Tour 4, table 16","Sophie Pruvière","Ateliers Rossolde","Raphaël Jusvault","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 16","Tour 2, table 2","Fatima Abrevançon","Tannerie Nervanche","Caroline Jusvoubre","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 13","Fatima Abrevançon","Tannerie Nervanche","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 13","Tour 4, table 13","Karim Clovançon","Fabrique Sorbagne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 17","Félix Eskouze","Filature Zelvaine","Sylvie Abreveux","Comptoir Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 19","Olivier Korvière","Ateliers Falvigne","Manon Pruvivet","Menuiserie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 20","Tour 2, table 10","Félix Voskande","Ateliers Falvigne","Guillaume Mirvoubre","Comptoir Sorbagne","2 fois","Voir au tour 4","Tour 2, table 7","Tour 4, table 7","Lucie Voskeron","Verrerie Ivoranche","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Thomas Selvignac","Brasserie Sorbagne","Étienne Voskançon","Menuiserie Olbrecq","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 28","Jean Neskeron","Filature Zelvaine","Zoé Mirveval","Fabrique Kalvenne","2 fois","Voir au tour 2","Tour 1, table 11","Tour 2, table 33","Sophie Clovard","Brasserie Belvarre","Marc Rozvouze","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 12","Alexandre Eskançon","Menuiserie Hostrenne","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 1, table 17","Tour 3, table 25","Qui a rencontré qui","La matrice n'est pas dessinée : 260 personnes dépassent le seuil de 40. La fiche de chaque personne porte ses rencontres.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","3","4","50","100","150","200","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 3 animateurs rencontrés, 29 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucune personne présente ne porte d'étiquette : seule la colonne des appartenances se dessine.","Appartenances rencontrées en animant","le moins varié","17","le plus varié","27","au minimum","1","Diversité rencontrée en animant, sur la soirée","0","10","20","François Ivrivet","4 tours animés, 23 personnes rencontrées en animant","Samuel Bralmeux","4 tours animés, 23 personnes rencontrées en animant","Geneviève Dulvumet","4 tours animés, 24 personnes rencontrées en animant","François Obrouze","4 tours animés, 23 personnes rencontrées en animant","Antoine Bralmault","4 tours animés, 25 personnes rencontrées en animant","Catherine Hulveron","4 tours animés, 26 personnes rencontrées en animant","Camille Neskard","4 tours animés, 27 personnes rencontrées en animant","Guillaume Luskichon","4 tours animés, 27 personnes rencontrées en animant","Philippe Ivroubre","4 tours animés, 27 personnes rencontrées en animant","Marie Urvard","4 tours animés, 28 personnes rencontrées en animant","Sophie Pruvotte","4 tours animés, 28 personnes rencontrées en animant","Thomas Selvignac","4 tours animés, 26 personnes rencontrées en animant","Philippe Voskeval","4 tours animés, 27 personnes rencontrées en animant","Manon Urvançon","4 tours animés, 27 personnes rencontrées en animant","Marc Vandergrolcquesmirta…","4 tours animés, 27 personnes rencontrées en animant","Fatima Abrevançon","4 tours animés, 26 personnes rencontrées en animant","Claire Jusvivet","4 tours animés, 27 personnes rencontrées en animant","Félix Voskande","4 tours animés, 27 personnes rencontrées en animant","Louise Neskichon","4 tours animés, 28 personnes rencontrées en animant","Gabriel Abrevault","4 tours animés, 28 personnes rencontrées en animant","Émilie Abrevière","4 tours animés, 25 personnes rencontrées en animant","Youssef Jusvard","4 tours animés, 27 personnes rencontrées en animant","Manon Tolveron","4 tours animés, 27 personnes rencontrées en animant","Hugo Bralmouze","4 tours animés, 27 personnes rencontrées en animant","Marie Bralmesson","4 tours animés, 28 personnes rencontrées en animant","Louis Selvivet","4 tours animés, 27 personnes rencontrées en animant","Michel Korveron","4 tours animés, 27 personnes rencontrées en animant","Youssef Neskière","4 tours animés, 28 personnes rencontrées en animant","Jean Fralvumet","4 tours animés, 28 personnes rencontrées en animant","Fatima Korvouze","4 tours animés, 27 personnes rencontrées en animant","Gabriel Ivreval","4 tours animés, 28 personnes rencontrées en animant","Guillaume Dulvivet","4 tours animés, 28 personnes rencontrées en animant","Étienne Tolvançon","4 tours animés, 28 personnes rencontrées en animant","Appartenances rencontrées en animant","Appartenances rencontrées en animant","Le moins varié rencontre 17 appartenances en animant ; 1 animateur au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","2 000 mouvements évalués sur 2 000","durée observée 2,5 s","1 cœur de calcul","cadence 4 000 mouvements par seconde","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","5","10","15","20","1","10","100","2 000","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 21 ; au dernier : 23.","écart au plafond a priori, aux points de relevé","0","2","4","6","1","10","100","2 000","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 6 ; au dernier : 4.","excédent de collisions, aux points de relevé","0","1","2","3","4","1","10","100","2 000","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 3 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","20","40","60","1","10","100","2 000","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 67 ; au dernier : 52.","rencontres répétées, aux points de relevé","0","50","100","1","10","100","2 000","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 145 ; au dernier : 103.","redondance d'appartenance, aux points de relevé","0","500","1 000","1","10","100","2 000","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 1 298 ; au dernier : 1 288.","Une valeur a changé au dernier point de relevé, à 2 000 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"50901b9842d7ba6d4c1c13ae79f45b2944cb96836bd589f86b6be8ce12366524","etape":"10","etat":"b0cdfdc39ba1cb940f71e0266e14706cc8bb2e7808ad0d42f907e320498349cb","facteurEchelle":1,"fichier":"12a-qualite-sans-placement","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"c7ffdaed472307316ce517e76de6e8953aefe859b0b9a499f5a8528a062d49a8"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":13.78,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.57,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.07,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Lecture","Liste des événements","Clair","Sombre","À propos","Lecture","Rien ne change ; « Modifier » passe en écriture.","Modifier","Lecture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Petite démonstration, conflit inévitable 1","12 participants","4 tables · 12 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Réservations","Aucun placement à mesurer : ni proposition ni placement retenu. Le diagnostic dit ce que la configuration rend inévitable.","Diagnostic","Ateliers Jolvane","5 personnes : au moins 4 collisions cumulées sur les 4 tours, portées par au moins 1 paire distincte","Tout l'événement","au moins 5 appartenances recroisées par personne","plafond a priori 8 rencontres pour 12 mobiles"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"cafc252586729f60f60c55ced6b2ec6b361e163b19eb5d92ded67361c48990a3","etape":"10","etat":"5d6ecc1054a87ebe7527e876248fd7169cfac07500c8468e939c6e7e85b28e45","facteurEchelle":1,"fichier":"12b-qualite-une-table","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"d1cf850094562fae5cbf13105c239509d70a4715893ace6ed4640e8616fca387"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Une seule table","6 participants","1 table · 6 sièges","3 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 6 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","5","100 %","minimum 5 sur 5","chez Iris Ombrelle","plafond réalisé 5","plafond a priori 5","Personnes distinctes rencontrées, minimum : mobiles","5","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","9","Paires distinctes de même appartenance","3","Excédent de collisions (retrouvailles au-delà de la première)","6","Rencontres répétées et retours","Rencontres répétées choisies (paires)","15","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","12","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","3","chez Iris Ombrelle","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","12","Taux de diversité d(p), minimum","0,60","Manque et plafond a priori","Plus grand manque (personnes)","0","chez Iris Ombrelle","0 personne au manque maximal","plafond réalisé 5","Personnes à qui il en manque","0","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","0","minimum atteint","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Une seule table : chacun y rencontre tous les autres, et le profil dirait la même chose de chacun.","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Une seule table : chacun y retrouve chaque membre de son appartenance, à chaque tour.","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Une seule table : elle réunit toutes les appartenances à chaque tour.","Paires répétées","Qui revoit trop souvent la même personne ?","Une seule table : chaque paire se revoit à chaque tour.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 5 ; au dernier : 5.","écart au plafond a priori, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 0 ; au dernier : 0.","excédent de collisions, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 6 ; au dernier : 6.","collisions cumulées, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 9 ; au dernier : 9.","rencontres répétées, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 15 ; au dernier : 15.","redondance d'appartenance, aux points de relevé","0","5","10","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 12 ; au dernier : 12.","Aucune valeur n'a changé entre 1 et 300 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"2e09aa866e2974f2349e0641e1e2eb6da612ad476f9d84abbdf3e86207ab310b","etape":"10","etat":"5601fee6fd9ed94a29a1473c87f74cead072f85f9de73d326578f7a3b6a818d0","facteurEchelle":1,"fichier":"12c-qualite-un-tour","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"548fe6f4ce7a52d6fd68a3e99a234aa42034bb583f49116c8821aa5f995e52b8"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":4.78,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-encre-foncee","ratio":5.43,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-niveau-1","ratio":3.46,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-niveau-1","ratio":3.31,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5},{"jeton":"--couleur-papier","ratio":5,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Un seul tour","12 participants","3 tables · 12 sièges","1 tour","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","3","100 %","minimum 3 sur 3","chez Iris Ombrelle","plafond réalisé 3","plafond a priori 3","Personnes distinctes rencontrées, minimum : mobiles","3","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","3","Paires distinctes de même appartenance","3","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","0","0 imposée, à part","Rencontres d'une même paire, au plus","1","Retours choisis à une table déjà occupée","0","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","2","chez Théo Pervenche","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","6","Taux de diversité d(p), minimum","0,67","Manque et plafond a priori","Plus grand manque (personnes)","0","chez Iris Ombrelle","0 personne au manque maximal","plafond réalisé 3","Personnes à qui il en manque","0","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","0","minimum atteint","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","1","2","3","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","Minimum 3 personnes rencontrées, 12 personnes au minimum, 0 personne sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Iris Ombrelle, rencontre","100 %","minimum 3 sur 3","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","1","Atelier Ressac","effectif 4, 1 paire distincte, excédent 0","Chantier Grève","effectif 4, 1 paire distincte, excédent 0","Coopérative Aubier","effectif 4, 1 paire distincte, excédent 0","prouvé inévitable","prouvé inévitable","reste","L'excédent le plus grand est celui de « Atelier Ressac » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 2","Table 3","Tour 1","1","1","1","La table 1 porte la case la plus haute : 1.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Un seul tour : aucune paire ne peut se revoir.","Qui a rencontré qui","Qui a rencontré qui","1. Iris Ombrelle","2. Théo Pervenche","3. Ondine Lacasse","4. Basile Tourteau","5. Maëlle Quenouille","6. Sidonie Varech","7. Lucien Aubépin","8. Aglaé Bruyère","9. Félix Cormier","10. Ysé Dorine","11. Paulin Escourgeon","12. Rosalie Fenouil","1","2","3","4","5","6","7","8","9","10","11","12","0","1","0","1","0","1","0","0","0","0","0","0","0","0","0","1","0","0","1","1","0","0","1","0","0","1","0","1","0","0","0","0","0","0","0","0","0","0","0","1","0","0","1","1","1","0","1","0","0","1","0","0","0","0","0","0","1","0","0","0","0","0","1","1","0","0","1","0","1","0","1","0","0","0","0","0","0","0","0","0","1","0","0","0","0","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","0","0","0","1","0","0","1","0","0","0","1","0","0","0","1","0","0","1","Chaque case porte le nombre de rencontres de la paire. Aucune paire ne se revoit.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","1","2","3","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 3 ; au dernier : 3.","écart au plafond a priori, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 0 ; au dernier : 0.","excédent de collisions, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 0 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 6 ; au dernier : 3.","rencontres répétées, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 0 ; au dernier : 0.","redondance d'appartenance, aux points de relevé","0","5","10","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 11 ; au dernier : 6.","Aucune valeur n'a changé entre 10 et 300 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"8e29df8958b5d82180105388196616db386ce8491378c560f12b23c477083114","etape":"10","etat":"57fb9415b50911428c461e0e555b9d0f85a6a6a2b95641d22d567db3fcd37c27","facteurEchelle":1,"fichier":"12d-qualite-une-appartenance","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"a68e9f5b4213c63af61f9ee8895b8492ef126953604e3c149143a92daab54e54"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":6.15,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.27,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":7.01,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":8.57,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Une seule appartenance","12 participants","3 tables · 12 sièges","3 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","7","77 %","minimum 7 sur 9","chez Iris Ombrelle","plafond réalisé 9","plafond a priori 9","Personnes distinctes rencontrées, minimum : mobiles","7","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","54","Paires distinctes de même appartenance","46","Excédent de collisions (retrouvailles au-delà de la première)","8","Rencontres répétées et retours","Rencontres répétées choisies (paires)","7","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","12","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","1","chez Iris Ombrelle","borne de diversité 1","Redondance d'appartenance, somme Σ r(p)","80","Taux de diversité d(p), minimum","0,11","Manque et plafond a priori","Plus grand manque (personnes)","2","chez Iris Ombrelle","10 personnes au manque maximal","plafond réalisé 9","Personnes à qui il en manque","10","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","2","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Une seule appartenance : le profil n'a qu'une série, les rencontres, et pas de borne de diversité tracée.","Profil trié des rencontres, en comptes de personnes","0","2","4","6","8","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","plafond réalisé","rencontres","plafond réalisé","Minimum 7 personnes rencontrées, 6 personnes au minimum, 10 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Iris Ombrelle, rencontre","77 %","minimum 7 sur 9","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","20","40","Coopérative Aubier","effectif 12, 46 paires distinctes, excédent 8","prouvé inévitable","prouvé inévitable","reste","L'excédent le plus grand est celui de « Coopérative Aubier » : 8 collisions.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 2","Table 3","Tour 1","Tour 2","Tour 3","3","3","3","3","3","3","3","3","3","La table 1 porte la case la plus haute : 3.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 7 sur 7","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Basile Tourteau","Coopérative Aubier","Félix Cormier","Coopérative Aubier","3 fois","Voir au tour 2","Tour 1, table 3","Tour 2, table 3","Tour 3, table 1","Iris Ombrelle","Coopérative Aubier","Maëlle Quenouille","Coopérative Aubier","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 3","Iris Ombrelle","Coopérative Aubier","Ysé Dorine","Coopérative Aubier","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 3","Théo Pervenche","Coopérative Aubier","Rosalie Fenouil","Coopérative Aubier","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Ondine Lacasse","Coopérative Aubier","Maëlle Quenouille","Coopérative Aubier","2 fois","Voir au tour 2","Tour 1, table 2","Tour 2, table 2","Lucien Aubépin","Coopérative Aubier","Paulin Escourgeon","Coopérative Aubier","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Lucien Aubépin","Coopérative Aubier","Rosalie Fenouil","Coopérative Aubier","2 fois","Voir au tour 3","Tour 2, table 1","Tour 3, table 2","Qui a rencontré qui","Qui a rencontré qui","1. Iris Ombrelle","2. Basile Tourteau","3. Maëlle Quenouille","4. Lucien Aubépin","5. Félix Cormier","6. Rosalie Fenouil","7. Théo Pervenche","8. Ondine Lacasse","9. Ysé Dorine","10. Paulin Escourgeon","11. Sidonie Varech","12. Aglaé Bruyère","1","2","3","4","5","6","7","8","9","10","11","12","0","2","1","0","0","0","1","2","1","1","1","0","0","0","3","0","1","1","1","1","1","1","2","0","0","0","1","1","2","1","0","1","1","1","0","0","0","2","1","0","1","2","1","1","0","3","0","0","0","1","1","1","1","1","1","0","0","1","2","0","2","1","0","1","1","1","0","1","1","1","1","2","1","1","0","1","0","1","1","2","0","1","1","1","0","1","1","0","2","1","1","1","1","0","1","0","1","0","1","1","1","0","2","1","1","0","1","1","0","1","1","1","1","1","1","1","1","1","0","0","1","1","1","1","1","1","1","0","0","1","1","1","Chaque case porte le nombre de rencontres de la paire. 7 paires choisies se revoient, la plus revue 3 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 5 ; au dernier : 7.","écart au plafond a priori, aux points de relevé","0","1","2","3","4","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 4 ; au dernier : 2.","excédent de collisions, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 15 ; au dernier : 8.","collisions cumulées, aux points de relevé","0","20","40","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 54 ; au dernier : 54.","rencontres répétées, aux points de relevé","0","5","10","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 13 ; au dernier : 7.","redondance d'appartenance, aux points de relevé","0","20","40","60","80","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 66 ; au dernier : 80.","Une valeur a changé au dernier point de relevé, à 300 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"86a1859ab516d61b63161a9fb476f1d9d64bf356a6a8bd5dd45232ba7d2d8096","etape":"10","etat":"15fb09087464cf5b429c79e33325a0cd64579f1c650d7fd7aeabf6c3cbf977c0","facteurEchelle":1,"fichier":"12-qualite-profil","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"bf3ddc675d33f81c2a5d3d2f13fef4a1a837d9839996d71ebdce9b5d4930b0bb"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":4.83,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":9.67,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":6.15,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":5.57,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":6.17,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":10.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":7.01,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":7.83,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Grande démonstration 1","260 participants","33 tables · 260 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 260 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","23","95 %","minimum 23 sur 24","chez François Ivrivet","plafond réalisé 24","plafond a priori 24","Personnes distinctes rencontrées, minimum : mobiles","24","Personnes distinctes rencontrées, minimum : ancrés","23","Collisions d'appartenance","Collisions cumulées (paire et tour)","52","Paires distinctes de même appartenance","52","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","103","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","29","99 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","17","chez François Ivrivet","borne de diversité 24","Redondance d'appartenance, somme Σ r(p)","1 288","Taux de diversité d(p), minimum","0,64","Manque et plafond a priori","Plus grand manque (personnes)","3","chez Marc Luskouze","131 personnes au manque maximal","plafond réalisé 27","Personnes à qui il en manque","131","Écart d'itinéraire maximal (personnes)","4","plancher 1","Écart au plafond a priori maximal (personnes)","4","Objectifs des tables et animateurs","Animateurs rencontrés, minimum","3","ne classe pas","chez Zoé WAMMERWOLM-MAWWEMMEL","borne des animateurs 4","Animateurs non rencontrés","29","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","10","20","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","Minimum 23 personnes rencontrées, 3 personnes au minimum, 131 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","La personne au rang 1, François Ivrivet, rencontre","95 %","minimum 23 sur 24","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Imprimerie Yzorne","effectif 12, 9 paires distinctes, excédent 0","Fabrique Sorbagne","effectif 11, 7 paires distinctes, excédent 0","Ateliers Falvigne","effectif 8, 3 paires distinctes, excédent 0","Ateliers Rossolde","effectif 11, 3 paires distinctes, excédent 0","Fonderie Estrolle","effectif 9, 3 paires distinctes, excédent 0","Verrerie Vaubrenne","effectif 10, 3 paires distinctes, excédent 0","Ateliers Tavrenne","effectif 8, 2 paires distinctes, excédent 0","Fonderie Xandrelle","effectif 6, 2 paires distinctes, excédent 0","Menuiserie Estrolle","effectif 9, 2 paires distinctes, excédent 0","Tannerie Nervanche","effectif 6, 2 paires distinctes, excédent 0","Ateliers Aubrenc","effectif 3, 1 paire distincte, excédent 0","Ateliers Cassorgue","effectif 3, 1 paire distincte, excédent 0","Brasserie Xandrelle","effectif 2, 1 paire distincte, excédent 0","Comptoir Gravelune","effectif 3, 1 paire distincte, excédent 0","Coopérative Jolvane","effectif 4, 1 paire distincte, excédent 0","Fabrique Kalvenne","effectif 3, 1 paire distincte, excédent 0","Filature Zelvaine","effectif 4, 1 paire distincte, excédent 0","Fonderie Sorbagne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Gravelune","effectif 3, 1 paire distincte, excédent 0","Menuiserie Hostrenne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Quimvaux","effectif 3, 1 paire distincte, excédent 0","Menuiserie Sorbagne","effectif 3, 1 paire distincte, excédent 0","Papeterie Hostrenne","effectif 2, 1 paire distincte, excédent 0","Papeterie Ulvardes","effectif 4, 1 paire distincte, excédent 0","Tannerie Belvarre","effectif 5, 1 paire distincte, excédent 0","Verrerie Aubrenc","effectif 2, 1 paire distincte, excédent 0","Ateliers Estrolle","effectif 3, 0 paire distincte, excédent 0","Ateliers Ivoranche","effectif 4, 0 paire distincte, excédent 0","Brasserie Belvarre","effectif 9, 0 paire distincte, excédent 0","Brasserie Dravenne","effectif 1, 0 paire distincte, excédent 0","Brasserie Lavorneau","effectif 2, 0 paire distincte, excédent 0","Brasserie Morvalle","effectif 2, 0 paire distincte, excédent 0","Brasserie Sorbagne","effectif 4, 0 paire distincte, excédent 0","Brasserie Wassorel","effectif 2, 0 paire distincte, excédent 0","Comptoir Ivoranche","effectif 1, 0 paire distincte, excédent 0","Comptoir Jolvane","effectif 3, 0 paire distincte, excédent 0","Comptoir Lavorneau","effectif 1, 0 paire distincte, excédent 0","Comptoir Sorbagne","effectif 4, 0 paire distincte, excédent 0","Comptoir Xandrelle","effectif 3, 0 paire distincte, excédent 0","Comptoir Yzorne","effectif 2, 0 paire distincte, excédent 0","Coopérative Dravenne","effectif 3, 0 paire distincte, excédent 0","Coopérative Gravelune","effectif 3, 0 paire distincte, excédent 0","Coopérative Morvalle","effectif 3, 0 paire distincte, excédent 0","Coopérative Rossolde","effectif 4, 0 paire distincte, excédent 0","Fabrique Ivoranche","effectif 3, 0 paire distincte, excédent 0","Fabrique Morvalle","effectif 1, 0 paire distincte, excédent 0","Fabrique Ulvardes","effectif 3, 0 paire distincte, excédent 0","Filature Dravenne","effectif 1, 0 paire distincte, excédent 0","Filature Olbrecq","effectif 2, 0 paire distincte, excédent 0","Filature Wassorel","effectif 3, 0 paire distincte, excédent 0","Fonderie Aubrenc","effectif 2, 0 paire distincte, excédent 0","Fonderie Ivoranche","effectif 2, 0 paire distincte, excédent 0","Fonderie Kalvenne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Falvigne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Hostrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Aubrenc","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ivoranche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Jolvane","effectif 1, 0 paire distincte, excédent 0","Menuiserie Nervanche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Olbrecq","effectif 4, 0 paire distincte, excédent 0","Menuiserie Tavrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ulvardes","effectif 6, 0 paire distincte, excédent 0","Menuiserie Wassorel","effectif 1, 0 paire distincte, excédent 0","Papeterie Estrolle","effectif 3, 0 paire distincte, excédent 0","Papeterie Wassorel","effectif 1, 0 paire distincte, excédent 0","Tannerie Aubrenc","effectif 3, 0 paire distincte, excédent 0","Tannerie Falvigne","effectif 1, 0 paire distincte, excédent 0","Tannerie Olbrecq","effectif 1, 0 paire distincte, excédent 0","Tannerie Quimvaux","effectif 1, 0 paire distincte, excédent 0","Verrerie Gravelune","effectif 1, 0 paire distincte, excédent 0","Verrerie Ivoranche","effectif 6, 0 paire distincte, excédent 0","Verrerie Nervanche","effectif 1, 0 paire distincte, excédent 0","Verrerie Olbrecq","effectif 2, 0 paire distincte, excédent 0","Verrerie Pravette","effectif 2, 0 paire distincte, excédent 0","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Imprimerie Yzorne » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 4","Table 12","Table 16","Table 20","Table 26","Table 33","Table 9","Table 10","Table 15","Table 24","Table 25","Table 29","Table 31","Table 32","Table 1","Table 2","Table 5","Table 6","Table 7","Table 8","Table 13","Table 14","Table 17","Table 18","Table 19","Table 21","Table 22","Table 23","Table 27","Table 28","Table 30","Table 3","Table 11","Tour 1","Tour 2","Tour 3","Tour 4","2","1","0","0","1","2","0","0","0","0","2","1","0","0","1","2","0","2","0","1","0","1","0","2","0","0","2","0","0","1","0","1","1","1","0","0","0","1","1","0","0","1","1","0","1","0","1","0","0","1","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","1","0","0","0","0","1","0","0","0","0","0","1","0","1","0","0","0","0","0","1","0","0","0","1","1","0","0","0","1","0","0","0","0","0","1","0","0","1","0","0","0","0","0","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","0","0","0","0","0","0","La table 4 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 100 sur 103","Suivantes","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Samuel Cloveval","Menuiserie Ulvardes","Hélène Bralmeval","Brasserie Dravenne","3 fois","Voir au tour 3","Tour 1, table 23","Tour 3, table 15","Tour 4, table 32","Hugo Fralvançon","Brasserie Wassorel","Léa Fralvault","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 11","Tour 3, table 2","Hugo Fralvançon","Brasserie Wassorel","Louise Quilmançon","Menuiserie Estrolle","2 fois","Voir au tour 3","Tour 1, table 13","Tour 3, table 2","Zoé WAMMERWOLM-MAWWEMMEL","Menuiserie Ulvardes","Catherine Hulveron","Coopérative Rossolde","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 15","Catherine Urvesson","Fabrique Ulvardes","Olivier Bralmançon","Comptoir Lavorneau","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 6","Karim Hulvivet","Fonderie Xandrelle","Guillaume Luskichon","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Léa Fralvault","Fonderie Sorbagne","Lucie Tolvesson","Filature Zelvaine","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 11","Léa Fralvault","Fonderie Sorbagne","Samuel Abrevard","Filature Dravenne","2 fois","Voir au tour 4","Tour 2, table 11","Tour 4, table 4","Fatima Obrivet","Fabrique Sorbagne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 29","Philippe Voskeval","Menuiserie Estrolle","Émilie Korvard","Verrerie Vaubrenne","2 fois","Voir au tour 3","Tour 2, table 6","Tour 3, table 6","Zoé Dulveval","Menuiserie Quimvaux","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 13","Paul Korveux","Filature Olbrecq","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 1, table 15","Tour 3, table 5","Paul Korveux","Filature Olbrecq","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 3","Thomas Rozvotte","Verrerie Ivoranche","Antoine Quilmeron","Fabrique Kalvenne","2 fois","Voir au tour 4","Tour 3, table 33","Tour 4, table 26","Isabelle Bralmumet","Verrerie Aubrenc","Félix Korveval","Tannerie Nervanche","2 fois","Voir au tour 2","Tour 1, table 19","Tour 2, table 28","Isabelle Bralmumet","Verrerie Aubrenc","Louis Mirveron","Filature Wassorel","2 fois","Voir au tour 4","Tour 3, table 22","Tour 4, table 16","Simon Mirvivet","Ateliers Ivoranche","Hélène Gorzumet","Fonderie Aubrenc","2 fois","Voir au tour 3","Tour 1, table 9","Tour 3, table 18","Lucie Voskeux","Coopérative Morvalle","Samuel Cloveval","Menuiserie Ulvardes","2 fois","Voir au tour 3","Tour 2, table 14","Tour 3, table 15","Fatima Korvouze","Ateliers Tavrenne","Olivier Jusvançon","Brasserie Morvalle","2 fois","Voir au tour 3","Tour 2, table 3","Tour 3, table 3","Étienne Fralvichon","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 1, table 21","Tour 4, table 33","Louise Quilmançon","Menuiserie Estrolle","Paul Obrichon","Ateliers Rossolde","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 21","Louise Quilmançon","Menuiserie Estrolle","Étienne Eskesson","Menuiserie Ulvardes","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 7","Pierre Abreveron","Ateliers Rossolde","Manon Tolveron","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 5","Tour 3, table 5","Léa Tolvande","Ateliers Rossolde","Anne Abrevesson","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 14","Antoine Quilmeron","Fabrique Kalvenne","Samuel Bralmeux","Ateliers Rossolde","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 33","Michel Eskeux","Papeterie Wassorel","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 21","Louise Hulvault","Coopérative Jolvane","Karim Fralveval","Coopérative Gravelune","2 fois","Voir au tour 4","Tour 3, table 24","Tour 4, table 4","Catherine Hulveron","Coopérative Rossolde","Alexandre Korvotte","Menuiserie Nervanche","2 fois","Voir au tour 4","Tour 3, table 15","Tour 4, table 15","François Ivrivet","Menuiserie Sorbagne","François Gorzichon","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 32","Tour 4, table 32","Claire Fralvivet","Imprimerie Yzorne","Étienne Selvouze","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 14","Tour 3, table 27","Karim Gorzesson","Papeterie Ulvardes","Sophie Clovard","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 1, table 20","Tour 4, table 12","Manon Urvançon","Ateliers Tavrenne","Guillaume Tolvignac","Menuiserie Sorbagne","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Sylvie Quilmande","Imprimerie Yzorne","Antoine Bralmault","Fabrique Sorbagne","2 fois","Voir au tour 4","Tour 1, table 4","Tour 4, table 4","Sylvie Quilmande","Imprimerie Yzorne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 14","Sylvie Quilmande","Imprimerie Yzorne","Hélène Rozveval","Comptoir Ivoranche","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 4","Amina Pruvesson","Fonderie Sorbagne","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 1, table 18","Tour 4, table 16","Amina Pruvesson","Fonderie Sorbagne","Léa Obrard","Comptoir Sorbagne","2 fois","Voir au tour 2","Tour 1, table 18","Tour 2, table 31","Lucie Quilmière","Fabrique Ivoranche","Anne Urvivet","Fonderie Kalvenne","2 fois","Voir au tour 2","Tour 1, table 21","Tour 2, table 9","Louis Selvivet","Menuiserie Hostrenne","Guillaume Hulvotte","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 2, table 25","Tour 4, table 25","Lucie Tolvesson","Filature Zelvaine","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 4","Tour 1, table 15","Tour 4, table 25","Olivier Quilmesson","Comptoir Gravelune","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 9","Gabriel Neskault","Menuiserie Tavrenne","Geneviève Abrevignac","Brasserie Morvalle","2 fois","Voir au tour 4","Tour 2, table 20","Tour 4, table 18","Gabriel Neskault","Menuiserie Tavrenne","François Clovotte","Coopérative Rossolde","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Gabriel Neskault","Menuiserie Tavrenne","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Olivier Jusvançon","Brasserie Morvalle","Hélène Selveux","Brasserie Lavorneau","2 fois","Voir au tour 4","Tour 1, table 24","Tour 4, table 25","Gabriel Pruveux","Papeterie Estrolle","Guillaume Obrançon","Papeterie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 31","Tour 4, table 27","Manon Clovière","Ateliers Ivoranche","Marc Vandergrolcquesmirtavelle-Ostrovaubelindigues","Tannerie Aubrenc","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 10","François Obrouze","Tannerie Olbrecq","Camille Tolvumet","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 31","Tour 3, table 31","Claire Gorzeron","Menuiserie Hostrenne","Guillaume Gorzivet","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 32","Tour 4, table 8","Hélène Luskumet","Brasserie Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 8","Louis Fralvande","Ateliers Rossolde","Philippe Ivroubre","Ateliers Tavrenne","2 fois","Voir au tour 4","Tour 1, table 19","Tour 4, table 19","Isabelle Korvichon","Menuiserie Ulvardes","Marie Dulvesson","Ateliers Cassorgue","2 fois","Voir au tour 4","Tour 1, table 7","Tour 4, table 10","Isabelle Korvichon","Menuiserie Ulvardes","Karim Clovivet","Fonderie Kalvenne","2 fois","Voir au tour 3","Tour 2, table 18","Tour 3, table 23","Fatima Tolvoubre","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 33","Zoé Gorzière","Menuiserie Olbrecq","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 2, table 7","Tour 3, table 25","Antoine Obreval","Ateliers Cassorgue","Alexandre Ivreux","Tannerie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 25","Tour 2, table 6","Antoine Obreval","Ateliers Cassorgue","Hugo Bralmouze","Tannerie Falvigne","2 fois","Voir au tour 4","Tour 3, table 23","Tour 4, table 23","Michel Korveron","Fonderie Sorbagne","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 8","Marie Dulvesson","Ateliers Cassorgue","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 3","Tour 2, table 16","Tour 3, table 17","Youssef Jusvard","Tannerie Aubrenc","Simon Hulvumet","Ateliers Ivoranche","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 21","Gabriel Mirvotte","Tannerie Belvarre","Paul Neskivet","Comptoir Jolvane","2 fois","Voir au tour 4","Tour 3, table 21","Tour 4, table 7","Marc Luskouze","Ateliers Rossolde","Isabelle Selvichon","Tannerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 21","Tour 3, table 8","Louis Hulvichon","Ateliers Falvigne","Nicolas Ivrichon","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 17","Tour 2, table 24","Pierre Pruveval","Comptoir Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 1, table 10","Tour 3, table 8","Geneviève Abrevignac","Brasserie Morvalle","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 7","Olivier Bralmançon","Comptoir Lavorneau","Véronique Jusvouze","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 6","Marc Luskoubre","Verrerie Vaubrenne","Thomas Quilmichon","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 33","Tour 4, table 5","Camille Jusvumet","Fonderie Estrolle","Guillaume Eskotte","Verrerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 27","Tour 3, table 11","Antoine Selvière","Coopérative Dravenne","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 1, table 11","Tour 3, table 9","Antoine Bralmault","Fabrique Sorbagne","Amina Rozvichon","Verrerie Olbrecq","2 fois","Voir au tour 3","Tour 2, table 4","Tour 3, table 4","Antoine Bralmault","Fabrique Sorbagne","Antoine Pruvouze","Imprimerie Yzorne","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 4","Émilie Abrevière","Imprimerie Yzorne","Fatima Hulvard","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 29","Émilie Abrevière","Imprimerie Yzorne","Geneviève Obresson","Coopérative Gravelune","2 fois","Voir au tour 3","Tour 1, table 29","Tour 3, table 29","Émilie Abrevière","Imprimerie Yzorne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 4","Tour 3, table 29","Tour 4, table 29","Olivier Tolvichon","Fonderie Xandrelle","Étienne Gorzeval","Papeterie Ulvardes","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 6","Félix Korveval","Tannerie Nervanche","Thomas Selvignac","Brasserie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 28","Tour 3, table 28","Émilie Dulvichon","Menuiserie Ulvardes","Lucie Voskeron","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Émilie Dulvichon","Menuiserie Ulvardes","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Claire Jusvivet","Imprimerie Yzorne","Hugo Voskumet","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 20","Tour 3, table 20","Amina Quilmault","Coopérative Jolvane","Philippe Abreveval","Ateliers Falvigne","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 4","Hélène Gorzumet","Fonderie Aubrenc","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 4","Tour 1, table 9","Tour 4, table 21","Sophie Ivrault","Coopérative Morvalle","Philippe Fralvignac","Menuiserie Estrolle","2 fois","Voir au tour 4","Tour 3, table 13","Tour 4, table 26","Nicolas Korvande","Comptoir Sorbagne","Chantal Obrignac","Imprimerie Yzorne","2 fois","Voir au tour 3","Tour 2, table 27","Tour 3, table 22","Fatima Urvignac","Ateliers Aubrenc","Claire Bralmotte","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 21","François Clovotte","Coopérative Rossolde","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Philippe Dulvoubre","Brasserie Belvarre","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 2","Tour 1, table 9","Tour 2, table 10","Chantal Mirvumet","Menuiserie Gravelune","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 29","Camille Neskard","Menuiserie Gravelune","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 2, table 16","Tour 4, table 16","Sophie Pruvière","Ateliers Rossolde","Raphaël Jusvault","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 16","Tour 2, table 2","Fatima Abrevançon","Tannerie Nervanche","Caroline Jusvoubre","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 13","Fatima Abrevançon","Tannerie Nervanche","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 13","Tour 4, table 13","Karim Clovançon","Fabrique Sorbagne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 17","Félix Eskouze","Filature Zelvaine","Sylvie Abreveux","Comptoir Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 19","Olivier Korvière","Ateliers Falvigne","Manon Pruvivet","Menuiserie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 20","Tour 2, table 10","Félix Voskande","Ateliers Falvigne","Guillaume Mirvoubre","Comptoir Sorbagne","2 fois","Voir au tour 4","Tour 2, table 7","Tour 4, table 7","Lucie Voskeron","Verrerie Ivoranche","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Thomas Selvignac","Brasserie Sorbagne","Étienne Voskançon","Menuiserie Olbrecq","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 28","Jean Neskeron","Filature Zelvaine","Zoé Mirveval","Fabrique Kalvenne","2 fois","Voir au tour 2","Tour 1, table 11","Tour 2, table 33","Sophie Clovard","Brasserie Belvarre","Marc Rozvouze","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 12","Alexandre Eskançon","Menuiserie Hostrenne","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 1, table 17","Tour 3, table 25","Qui a rencontré qui","La matrice n'est pas dessinée : 260 personnes dépassent le seuil de 44. La fiche de chaque personne porte ses rencontres.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","3","4","50","100","150","200","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 3 animateurs rencontrés, 29 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucune personne présente ne porte d'étiquette : seule la colonne des appartenances se dessine.","Appartenances rencontrées en animant","le moins varié","17","le plus varié","27","au minimum","1","Diversité rencontrée en animant, sur la soirée","0","10","20","François Ivrivet","4 tours animés, 23 personnes rencontrées en animant","Samuel Bralmeux","4 tours animés, 23 personnes rencontrées en animant","Geneviève Dulvumet","4 tours animés, 24 personnes rencontrées en animant","François Obrouze","4 tours animés, 23 personnes rencontrées en animant","Antoine Bralmault","4 tours animés, 25 personnes rencontrées en animant","Catherine Hulveron","4 tours animés, 26 personnes rencontrées en animant","Camille Neskard","4 tours animés, 27 personnes rencontrées en animant","Guillaume Luskichon","4 tours animés, 27 personnes rencontrées en animant","Philippe Ivroubre","4 tours animés, 27 personnes rencontrées en animant","Marie Urvard","4 tours animés, 28 personnes rencontrées en animant","Sophie Pruvotte","4 tours animés, 28 personnes rencontrées en animant","Thomas Selvignac","4 tours animés, 26 personnes rencontrées en animant","Philippe Voskeval","4 tours animés, 27 personnes rencontrées en animant","Manon Urvançon","4 tours animés, 27 personnes rencontrées en animant","Marc Vandergrolcquesmir…","4 tours animés, 27 personnes rencontrées en animant","Fatima Abrevançon","4 tours animés, 26 personnes rencontrées en animant","Claire Jusvivet","4 tours animés, 27 personnes rencontrées en animant","Félix Voskande","4 tours animés, 27 personnes rencontrées en animant","Louise Neskichon","4 tours animés, 28 personnes rencontrées en animant","Gabriel Abrevault","4 tours animés, 28 personnes rencontrées en animant","Émilie Abrevière","4 tours animés, 25 personnes rencontrées en animant","Youssef Jusvard","4 tours animés, 27 personnes rencontrées en animant","Manon Tolveron","4 tours animés, 27 personnes rencontrées en animant","Hugo Bralmouze","4 tours animés, 27 personnes rencontrées en animant","Marie Bralmesson","4 tours animés, 28 personnes rencontrées en animant","Louis Selvivet","4 tours animés, 27 personnes rencontrées en animant","Michel Korveron","4 tours animés, 27 personnes rencontrées en animant","Youssef Neskière","4 tours animés, 28 personnes rencontrées en animant","Jean Fralvumet","4 tours animés, 28 personnes rencontrées en animant","Fatima Korvouze","4 tours animés, 27 personnes rencontrées en animant","Gabriel Ivreval","4 tours animés, 28 personnes rencontrées en animant","Guillaume Dulvivet","4 tours animés, 28 personnes rencontrées en animant","Étienne Tolvançon","4 tours animés, 28 personnes rencontrées en animant","Appartenances rencontrées en animant","Appartenances rencontrées en animant","Le moins varié rencontre 17 appartenances en animant ; 1 animateur au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","2 000 mouvements évalués sur 2 000","durée observée 2,5 s","1 cœur de calcul","cadence 4 000 mouvements par seconde","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","5","10","15","20","1","10","100","2 000","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 21 ; au dernier : 23.","écart au plafond a priori, aux points de relevé","0","2","4","6","1","10","100","2 000","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 6 ; au dernier : 4.","excédent de collisions, aux points de relevé","0","1","2","3","4","1","10","100","2 000","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 3 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","20","40","60","1","10","100","2 000","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 67 ; au dernier : 52.","rencontres répétées, aux points de relevé","0","50","100","1","10","100","2 000","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 145 ; au dernier : 103.","redondance d'appartenance, aux points de relevé","0","500","1 000","1","10","100","2 000","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 1 298 ; au dernier : 1 288.","Une valeur a changé au dernier point de relevé, à 2 000 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"17901ca2dd320a78adb4011bc7ebe0c7360d548b65179380a1676bd3023c39ff","etape":"10","etat":"b0cdfdc39ba1cb940f71e0266e14706cc8bb2e7808ad0d42f907e320498349cb","facteurEchelle":1,"fichier":"12a-qualite-sans-placement","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"1dadccb14b0f2dbe84b5e6bc60ebe64647db1daa75068fe2648c96f420b8bed5"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":13.78,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.57,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.07,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Lecture","Liste des événements","Clair","Sombre","À propos","Lecture","Rien ne change ; « Modifier » passe en écriture.","Modifier","Lecture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Petite démonstration, conflit inévitable 1","12 participants","4 tables · 12 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","aucun, le plan ne montre que les réservations","Aucun placement à mesurer : ni proposition ni placement retenu. Le diagnostic dit ce que la configuration rend inévitable.","Diagnostic","Ateliers Jolvane","5 personnes : au moins 4 collisions cumulées sur les 4 tours, portées par au moins 1 paire distincte","Tout l'événement","au moins 5 appartenances recroisées par personne","plafond a priori 8 rencontres pour 12 mobiles"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"1f96902d042b9b42c29b03c4d3def09d28a7f77db8a2a7eae2b8ca2bf498b71e","etape":"10","etat":"5d6ecc1054a87ebe7527e876248fd7169cfac07500c8468e939c6e7e85b28e45","facteurEchelle":1,"fichier":"12b-qualite-une-table","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"98239394e557a5025b79ed4761fd53740047d8a9548beeb56aad5cadff6ee079"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Une seule table","6 participants","1 table · 6 sièges","3 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 6 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","5","100 %","minimum 5 sur 5","chez Iris Ombrelle","plafond réalisé 5","plafond a priori 5","Personnes distinctes rencontrées, minimum : mobiles","5","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","9","plancher 9 atteint : impossible de faire moins","Paires distinctes de même appartenance","3","plancher 3 atteint : impossible de faire moins","Excédent de collisions (retrouvailles au-delà de la première)","6","plancher 6 atteint : impossible de faire moins","Rencontres répétées et retours","Rencontres répétées choisies (paires)","15","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","12","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","3","chez Iris Ombrelle","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","12","Taux de diversité d(p), minimum","0,60","Manque et plafond a priori","Plus grand manque (personnes)","0","chez Iris Ombrelle","0 personne au manque maximal","plafond réalisé 5","Personnes à qui il en manque","0","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","0","minimum atteint","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Une seule table : chacun y rencontre tous les autres, et le profil dirait la même chose de chacun.","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Une seule table : chacun y retrouve chaque membre de son appartenance, à chaque tour.","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Une seule table : elle réunit toutes les appartenances à chaque tour.","Paires répétées","Qui revoit trop souvent la même personne ?","Une seule table : chaque paire se revoit à chaque tour.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 5 ; au dernier : 5.","écart au plafond a priori, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 0 ; au dernier : 0.","excédent de collisions, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 6 ; au dernier : 6.","collisions cumulées, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 9 ; au dernier : 9.","rencontres répétées, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 15 ; au dernier : 15.","redondance d'appartenance, aux points de relevé","0","5","10","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 12 ; au dernier : 12.","Aucune valeur n'a changé entre 1 et 300 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"0f2b2e45b5e118b59a95548e4372874d87fb019bac1eb57498ce07cf809befce","etape":"10","etat":"5601fee6fd9ed94a29a1473c87f74cead072f85f9de73d326578f7a3b6a818d0","facteurEchelle":1,"fichier":"12c-qualite-un-tour","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"548fe6f4ce7a52d6fd68a3e99a234aa42034bb583f49116c8821aa5f995e52b8"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":4.78,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-encre-foncee","ratio":5.43,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-niveau-1","ratio":3.46,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-niveau-1","ratio":3.31,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5},{"jeton":"--couleur-papier","ratio":5,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Un seul tour","12 participants","3 tables · 12 sièges","1 tour","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","3","100 %","minimum 3 sur 3","chez Iris Ombrelle","plafond réalisé 3","plafond a priori 3","Personnes distinctes rencontrées, minimum : mobiles","3","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","3","plancher 3 atteint : impossible de faire moins","Paires distinctes de même appartenance","3","plancher 3 atteint : impossible de faire moins","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","0","0 imposée, à part","Rencontres d'une même paire, au plus","1","Retours choisis à une table déjà occupée","0","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","2","chez Théo Pervenche","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","6","Taux de diversité d(p), minimum","0,67","Manque et plafond a priori","Plus grand manque (personnes)","0","chez Iris Ombrelle","0 personne au manque maximal","plafond réalisé 3","Personnes à qui il en manque","0","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","0","minimum atteint","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","1","2","3","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","Minimum 3 personnes rencontrées, 12 personnes au minimum, 0 personne sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Iris Ombrelle, rencontre","100 %","minimum 3 sur 3","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","1","Atelier Ressac","effectif 4, 1 paire distincte, excédent 0","Chantier Grève","effectif 4, 1 paire distincte, excédent 0","Coopérative Aubier","effectif 4, 1 paire distincte, excédent 0","prouvé inévitable","prouvé inévitable","reste","L'excédent le plus grand est celui de « Atelier Ressac » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 2","Table 3","Tour 1","1","1","1","La table 1 porte la case la plus haute : 1.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Un seul tour : aucune paire ne peut se revoir.","Qui a rencontré qui","Qui a rencontré qui","1. Iris Ombrelle","2. Théo Pervenche","3. Ondine Lacasse","4. Basile Tourteau","5. Maëlle Quenouille","6. Sidonie Varech","7. Lucien Aubépin","8. Aglaé Bruyère","9. Félix Cormier","10. Ysé Dorine","11. Paulin Escourgeon","12. Rosalie Fenouil","1","2","3","4","5","6","7","8","9","10","11","12","0","1","0","1","0","1","0","0","0","0","0","0","0","0","0","1","0","0","1","1","0","0","1","0","0","1","0","1","0","0","0","0","0","0","0","0","0","0","0","1","0","0","1","1","1","0","1","0","0","1","0","0","0","0","0","0","1","0","0","0","0","0","1","1","0","0","1","0","1","0","1","0","0","0","0","0","0","0","0","0","1","0","0","0","0","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","0","0","0","1","0","0","1","0","0","0","1","0","0","0","1","0","0","1","Chaque case porte le nombre de rencontres de la paire. Aucune paire ne se revoit.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","1","2","3","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 3 ; au dernier : 3.","écart au plafond a priori, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 0 ; au dernier : 0.","excédent de collisions, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 0 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 6 ; au dernier : 3.","rencontres répétées, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 0 ; au dernier : 0.","redondance d'appartenance, aux points de relevé","0","5","10","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 11 ; au dernier : 6.","Aucune valeur n'a changé entre 10 et 300 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"6e310d950ff08ddbad7afed21d8062ee765a0e6a924f3af5799de582ca39beea","etape":"10","etat":"57fb9415b50911428c461e0e555b9d0f85a6a6a2b95641d22d567db3fcd37c27","facteurEchelle":1,"fichier":"12d-qualite-une-appartenance","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"e2f021bd8f7c20e4abd5bfa68a559953d4ff096f69de0562926a013ce278722b"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":6.15,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.27,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":7.01,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":8.57,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Une seule appartenance","12 participants","3 tables · 12 sièges","3 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","7","77 %","minimum 7 sur 9","chez Iris Ombrelle","plafond réalisé 9","plafond a priori 9","Personnes distinctes rencontrées, minimum : mobiles","7","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","54","plancher 54 atteint : impossible de faire moins","Paires distinctes de même appartenance","46","plancher 18","Excédent de collisions (retrouvailles au-delà de la première)","8","Rencontres répétées et retours","Rencontres répétées choisies (paires)","7","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","12","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","1","chez Iris Ombrelle","borne de diversité 1","Redondance d'appartenance, somme Σ r(p)","80","Taux de diversité d(p), minimum","0,11","Manque et plafond a priori","Plus grand manque (personnes)","2","chez Iris Ombrelle","10 personnes au manque maximal","plafond réalisé 9","Personnes à qui il en manque","10","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","2","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Une seule appartenance : le profil n'a qu'une série, les rencontres, et pas de borne de diversité tracée.","Profil trié des rencontres, en comptes de personnes","0","2","4","6","8","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","plafond réalisé","rencontres","plafond réalisé","Minimum 7 personnes rencontrées, 6 personnes au minimum, 10 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Iris Ombrelle, rencontre","77 %","minimum 7 sur 9","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","20","40","Coopérative Aubier","effectif 12, 46 paires distinctes, excédent 8","prouvé inévitable","prouvé inévitable","reste","L'excédent le plus grand est celui de « Coopérative Aubier » : 8 collisions.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 2","Table 3","Tour 1","Tour 2","Tour 3","3","3","3","3","3","3","3","3","3","La table 1 porte la case la plus haute : 3.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 7 sur 7","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Basile Tourteau","Coopérative Aubier","Félix Cormier","Coopérative Aubier","3 fois","Voir au tour 2","Tour 1, table 3","Tour 2, table 3","Tour 3, table 1","Iris Ombrelle","Coopérative Aubier","Maëlle Quenouille","Coopérative Aubier","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 3","Iris Ombrelle","Coopérative Aubier","Ysé Dorine","Coopérative Aubier","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 3","Théo Pervenche","Coopérative Aubier","Rosalie Fenouil","Coopérative Aubier","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Ondine Lacasse","Coopérative Aubier","Maëlle Quenouille","Coopérative Aubier","2 fois","Voir au tour 2","Tour 1, table 2","Tour 2, table 2","Lucien Aubépin","Coopérative Aubier","Paulin Escourgeon","Coopérative Aubier","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Lucien Aubépin","Coopérative Aubier","Rosalie Fenouil","Coopérative Aubier","2 fois","Voir au tour 3","Tour 2, table 1","Tour 3, table 2","Qui a rencontré qui","Qui a rencontré qui","1. Iris Ombrelle","2. Basile Tourteau","3. Maëlle Quenouille","4. Lucien Aubépin","5. Félix Cormier","6. Rosalie Fenouil","7. Théo Pervenche","8. Ondine Lacasse","9. Ysé Dorine","10. Paulin Escourgeon","11. Sidonie Varech","12. Aglaé Bruyère","1","2","3","4","5","6","7","8","9","10","11","12","0","2","1","0","0","0","1","2","1","1","1","0","0","0","3","0","1","1","1","1","1","1","2","0","0","0","1","1","2","1","0","1","1","1","0","0","0","2","1","0","1","2","1","1","0","3","0","0","0","1","1","1","1","1","1","0","0","1","2","0","2","1","0","1","1","1","0","1","1","1","1","2","1","1","0","1","0","1","1","2","0","1","1","1","0","1","1","0","2","1","1","1","1","0","1","0","1","0","1","1","1","0","2","1","1","0","1","1","0","1","1","1","1","1","1","1","1","1","0","0","1","1","1","1","1","1","1","0","0","1","1","1","Chaque case porte le nombre de rencontres de la paire. 7 paires choisies se revoient, la plus revue 3 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 5 ; au dernier : 7.","écart au plafond a priori, aux points de relevé","0","1","2","3","4","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 4 ; au dernier : 2.","excédent de collisions, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 15 ; au dernier : 8.","collisions cumulées, aux points de relevé","0","20","40","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 54 ; au dernier : 54.","rencontres répétées, aux points de relevé","0","5","10","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 13 ; au dernier : 7.","redondance d'appartenance, aux points de relevé","0","20","40","60","80","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 66 ; au dernier : 80.","Une valeur a changé au dernier point de relevé, à 300 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"8c57abfd117a68ddb9f0cd7f0fd4b3f98a1e407418612857c48066243e705bae","etape":"10","etat":"b1f1cf667eee922a43cf928892b29e923da9ff418abff4b35c786e5bf2634f99","facteurEchelle":1,"fichier":"12e-qualite-sans-collision","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"71afa679039e5f6f386755a681484e56f7f428fe1bf9e665d8603160a7d72167"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":4.78,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-encre-foncee","ratio":15.28,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5},{"jeton":"--couleur-papier","ratio":14.29,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Sans collision","9 participants","3 tables · 9 sièges","2 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 9 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","4","100 %","minimum 4 sur 4","chez Iris Ombrelle","plafond réalisé 4","plafond a priori 4","Personnes distinctes rencontrées, minimum : mobiles","4","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","0","Paires distinctes de même appartenance","0","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","0","0 imposée, à part","Rencontres d'une même paire, au plus","1","Retours choisis à une table déjà occupée","3","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","4","chez Iris Ombrelle","borne de diversité 4","Redondance d'appartenance, somme Σ r(p)","0","Taux de diversité d(p), minimum","1,00","Manque et plafond a priori","Plus grand manque (personnes)","0","chez Iris Ombrelle","0 personne au manque maximal","plafond réalisé 4","Personnes à qui il en manque","0","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","0","minimum atteint","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","1","2","3","4","2","4","6","8","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","Minimum 4 personnes rencontrées, 9 personnes au minimum, 0 personne sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Iris Ombrelle, rencontre","100 %","minimum 4 sur 4","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Aucune collision d'appartenance : à chaque tour, chaque table réunit des appartenances distinctes.","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 2","Table 3","Tour 1","Tour 2","0","0","0","0","0","0","La table 1 porte la case la plus haute : 0.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Aucune paire ne se revoit : chaque rencontre est unique.","Qui a rencontré qui","Qui a rencontré qui","1. Iris Ombrelle","2. Théo Pervenche","3. Ondine Lacasse","4. Basile Tourteau","5. Maëlle Quenouille","6. Sidonie Varech","7. Lucien Aubépin","8. Aglaé Bruyère","9. Félix Cormier","1","2","3","4","5","6","7","8","9","1","0","0","1","0","1","1","0","1","0","1","0","1","0","1","0","0","0","1","0","0","1","1","1","0","1","1","0","1","1","0","0","1","0","0","0","1","1","0","1","0","1","0","1","1","0","0","1","1","0","1","1","1","0","0","0","1","1","1","0","0","0","0","1","0","0","1","0","1","1","0","1","Chaque case porte le nombre de rencontres de la paire. Aucune paire ne se revoit.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","1","2","3","4","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 3 ; au dernier : 4.","écart au plafond a priori, aux points de relevé","0","1","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 1 ; au dernier : 0.","excédent de collisions, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 0 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 0 ; au dernier : 0.","rencontres répétées, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 2 ; au dernier : 0.","redondance d'appartenance, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 0 ; au dernier : 0.","Aucune valeur n'a changé entre 10 et 300 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"eec3f475c32802f48c3c143fc38a57cb412828a900063188943d1987f4185a89","etape":"10","etat":"db2ac82a7d0189c959eadd2540c41f34c547c9efff64cfbb3d5872def0ffebba","facteurEchelle":1,"fichier":"12f-qualite-reserve","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"5f2b77dbca23971e1acfadd46db77904b63c327f27f9e91af9112748b0b8cc37"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":4.83,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":9.67,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":6.15,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.27,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":5.57,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":6.17,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":10.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":7.01,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":8.57,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":7.83,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.02,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Petite démonstration, conflit inévitable 1","12 participants","4 tables · 12 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Placement retenu","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","5","83 %","minimum 5 sur 6","chez Hugo Neskault","plafond réalisé 6","plafond a priori 8","Personnes distinctes rencontrées, minimum : mobiles","5","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","9","Paires distinctes de même appartenance","9","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","4","0 imposée, à part","Rencontres d'une même paire, au plus","2","Retours choisis à une table déjà occupée","13","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","2","chez Hugo Neskault","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","50","Taux de diversité d(p), minimum","0,29","Manque et plafond a priori","Plus grand manque (personnes)","1","chez Hugo Neskault","8 personnes au manque maximal","plafond réalisé 6","Personnes à qui il en manque","8","Écart d'itinéraire maximal (personnes)","2","Écart au plafond a priori maximal (personnes)","3","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","2","4","6","8","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","en réserve à un tour au moins","Minimum 5 personnes rencontrées, 1 personne au minimum, 8 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","en réserve à un tour au moins","La personne au rang 1, Hugo Neskault, rencontre","83 %","minimum 5 sur 6","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Ce placement laisse quelqu'un en réserve ou n'honore pas une réservation : le plancher du diagnostic ne s'y applique pas, et chaque barre n'a qu'un segment, les collisions cumulées.","Collisions d'appartenance, par appartenance","0","2","4","6","Ateliers Jolvane","effectif 5, 6 paires distinctes, excédent 0","Tannerie Cassorgue","effectif 4, 2 paires distinctes, excédent 0","Verrerie Ulvardes","effectif 3, 1 paire distincte, excédent 0","Collisions cumulées (paire et tour)","Collisions cumulées (paire et tour)","L'excédent le plus grand est celui de « Ateliers Jolvane » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 2","Table 3","Table 4","Table 1","Tour 1","Tour 2","Tour 3","Tour 4","1","2","0","0","1","0","1","1","1","1","0","0","0","1","0","0","La table 2 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 4 sur 4","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Hugo Neskault","Tannerie Cassorgue","Zoé Tolveval","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 1","Louis Selvière","Tannerie Cassorgue","Youssef Selvançon","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 2","Amina Quilmoubre","Verrerie Ulvardes","Luc Urvard","Tannerie Cassorgue","2 fois","Voir au tour 4","Tour 2, table 4","Tour 4, table 4","Paul Neskivet","Ateliers Jolvane","Michel Bralmignac","Tannerie Cassorgue","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 3","Qui a rencontré qui","Qui a rencontré qui","1. Hugo Neskault","2. Paul Neskivet","3. Louis Selvière","4. Youssef Selvançon","5. Amina Quilmoubre","6. Michel Bralmignac","7. Zoé Tolveval","8. Luc Urvard","9. Youssef Ivrotte","10. Caroline Bralmumet","11. Julie Voskotte","12. Véronique Mirveval","1","2","3","4","5","6","7","8","9","10","11","12","0","0","0","1","0","2","0","0","1","1","1","0","0","0","1","2","0","1","1","1","0","1","0","0","2","1","0","1","1","1","0","1","1","0","0","2","1","1","1","1","0","1","1","0","1","1","1","1","1","1","2","0","0","0","0","0","2","0","1","1","0","1","0","1","1","1","2","0","1","1","1","0","0","1","1","1","0","0","1","1","1","2","1","0","1","0","0","1","0","1","1","0","0","0","1","1","1","1","1","1","1","0","1","0","1","1","0","1","1","1","1","0","1","1","0","1","1","0","1","1","1","1","1","1","0","0","1","0","1","1","1","1","Chaque case porte le nombre de rencontres de la paire. 4 paires choisies se revoient, la plus revue 2 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","La vue mesure une proposition : le placement retenu a été ajusté, ou sa proposition effacée, et n'a pas de course."],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"9584a190f61c71fd722fff9508eb9a1c353e77f2f2cb68dd0dd2ccf9c3a654b6","etape":"10","etat":"fccc66e41578f9a5554a566432289f37cc924cb0c394080e55e38b6ddba577a5","facteurEchelle":1,"fichier":"12g-qualite-plafond-nul","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"204e2535c462669188dfdc99775bbba6694de369a35bf2f6ced2213484d4449c"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":3.93,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":9.67,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":6.15,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":4.53,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":4.96,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":10.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":7.01,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":6.29,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Plafond nul","5 participants","2 tables · 6 sièges","2 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 5 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","0","—","minimum 0 sur 0","chez Maëlle Quenouille","plafond réalisé 0","plafond a priori 0","Personnes distinctes rencontrées, minimum : mobiles","0","Personnes distinctes rencontrées, minimum : ancrés","3","Collisions d'appartenance","Collisions cumulées (paire et tour)","4","Paires distinctes de même appartenance","2","Excédent de collisions (retrouvailles au-delà de la première)","2","Rencontres répétées et retours","Rencontres répétées choisies (paires)","0","6 imposées, à part","Rencontres d'une même paire, au plus","2","Retours choisis à une table déjà occupée","1","4 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","0","chez Maëlle Quenouille","borne de diversité 0","Redondance d'appartenance, somme Σ r(p)","4","Taux de diversité d(p), minimum","0,67","Manque et plafond a priori","Plus grand manque (personnes)","0","chez Maëlle Quenouille","0 personne au manque maximal","plafond réalisé 0","Personnes à qui il en manque","0","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","0","minimum atteint","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","1","2","3","1","2","3","4","5","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","plafond réalisé nul","Minimum 0 personne rencontrée, 1 personne au minimum, 0 personne sous leur plafond réalisé.","Rang","1","Personne","Maëlle Quenouille","Appartenance","Coopérative Aubier","Personnes distinctes rencontrées","0","Plafond réalisé","0","Rencontres sur le plafond réalisé","—","0 sur 0","Plafond a priori","0","Appartenances rencontrées","0","Borne de diversité","0","Tours non assis","0","Place marquée","plafond réalisé nul","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","1","2","3","4","5","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","plafond réalisé nul","La personne au rang 1, Maëlle Quenouille, a un plafond réalisé nul : elle ne rencontre personne, et son rang n’a pas de point en pourcentage.","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","1","2","Atelier Ressac","effectif 2, 1 paire distincte, excédent 1","Coopérative Aubier","effectif 3, 1 paire distincte, excédent 1","prouvé inévitable","prouvé inévitable","reste","L'excédent le plus grand est celui de « Atelier Ressac » : 1 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 2","Tour 1","Tour 2","2","2","1","1","La table 1 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 6 sur 6","Paires que les réservations imposent","Paire","Rencontres de la paire","Tours","Iris Ombrelle","Coopérative Aubier","Théo Pervenche","Atelier Ressac","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Iris Ombrelle","Coopérative Aubier","Ondine Lacasse","Coopérative Aubier","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Iris Ombrelle","Coopérative Aubier","Basile Tourteau","Atelier Ressac","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Théo Pervenche","Atelier Ressac","Ondine Lacasse","Coopérative Aubier","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Théo Pervenche","Atelier Ressac","Basile Tourteau","Atelier Ressac","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Ondine Lacasse","Coopérative Aubier","Basile Tourteau","Atelier Ressac","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Qui a rencontré qui","Qui a rencontré qui","1. Maëlle Quenouille","2. Iris Ombrelle","3. Théo Pervenche","4. Ondine Lacasse","5. Basile Tourteau","1","2","3","4","5","0","0","0","0","0","2","2","2","0","2","2","2","0","2","2","2","0","2","2","2","Chaque case porte le nombre de rencontres de la paire. 6 paires imposées se revoient, la plus revue 2 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 0 ; au dernier : 0.","écart au plafond a priori, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 0 ; au dernier : 0.","excédent de collisions, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 2 ; au dernier : 2.","collisions cumulées, aux points de relevé","0","1","2","3","4","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 4 ; au dernier : 4.","rencontres répétées, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 0 ; au dernier : 0.","redondance d'appartenance, aux points de relevé","0","1","2","3","4","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 4 ; au dernier : 4.","Aucune valeur n'a changé entre 1 et 300 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"fabcd121b2e9445d41163199172cf05375990e3d87fa3cfb9aa100221792d06c","etape":"10","etat":"61d4b4bf919776450966168757d227df6e89ab788f8c62b0286899433ca37b88","facteurEchelle":1,"fichier":"13-qualite-collisions","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"10851c1440fcace8b3baeb8253d9fb2692ab77389d8939b2f11477ece2fa2cf3"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-prouve","ratio":4.23,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-reste","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":13.81,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-prouve","ratio":5.12,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-reste","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Petite démonstration, conflit inévitable 1","12 participants","4 tables · 12 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","7","87 %","minimum 7 sur 8","chez Hugo Neskault","plafond réalisé 8","plafond a priori 8","Personnes distinctes rencontrées, minimum : mobiles","7","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","9","Paires distinctes de même appartenance","9","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","4","0 imposée, à part","Rencontres d'une même paire, au plus","2","Retours choisis à une table déjà occupée","14","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","2","chez Hugo Neskault","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","54","Taux de diversité d(p), minimum","0,29","Manque et plafond a priori","Plus grand manque (personnes)","1","chez Hugo Neskault","8 personnes au manque maximal","plafond réalisé 8","Personnes à qui il en manque","8","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","1","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","2","4","6","8","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","Minimum 7 personnes rencontrées, 8 personnes au minimum, 8 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Hugo Neskault, rencontre","87 %","minimum 7 sur 8","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","Ateliers Jolvane","effectif 5, 6 paires distinctes, excédent 0","Tannerie Cassorgue","effectif 4, 2 paires distinctes, excédent 0","Verrerie Ulvardes","effectif 3, 1 paire distincte, excédent 0","prouvé inévitable","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Ateliers Jolvane » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 2","Table 3","Table 4","Table 1","Tour 1","Tour 2","Tour 3","Tour 4","1","2","0","0","1","0","1","1","1","1","0","0","0","0","0","0","La table 2 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 4 sur 4","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Hugo Neskault","Tannerie Cassorgue","Zoé Tolveval","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 1","Louis Selvière","Tannerie Cassorgue","Youssef Selvançon","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 2","Amina Quilmoubre","Verrerie Ulvardes","Luc Urvard","Tannerie Cassorgue","2 fois","Voir au tour 4","Tour 2, table 4","Tour 4, table 4","Paul Neskivet","Ateliers Jolvane","Michel Bralmignac","Tannerie Cassorgue","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 3","Qui a rencontré qui","Qui a rencontré qui","1. Hugo Neskault","2. Louis Selvière","3. Youssef Selvançon","4. Amina Quilmoubre","5. Paul Neskivet","6. Michel Bralmignac","7. Zoé Tolveval","8. Luc Urvard","9. Caroline Bralmumet","10. Youssef Ivrotte","11. Julie Voskotte","12. Véronique Mirveval","1","2","3","4","5","6","7","8","9","10","11","12","0","0","1","1","0","2","0","1","1","1","1","0","2","1","0","0","1","1","0","1","1","1","0","2","1","0","1","1","1","1","0","1","0","1","1","1","1","1","1","2","0","0","0","0","1","0","0","1","2","0","1","1","1","0","1","0","0","1","1","2","0","1","1","0","1","1","2","1","1","1","0","0","0","1","1","1","0","0","1","1","2","1","1","0","0","1","0","1","1","0","1","0","1","1","1","0","1","1","1","1","1","0","0","1","0","1","1","1","1","1","1","1","1","0","0","1","1","0","1","1","1","1","1","0","0","1","1","0","1","1","1","1","Chaque case porte le nombre de rencontres de la paire. 4 paires choisies se revoient, la plus revue 2 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 6 ; au dernier : 7.","écart au plafond a priori, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 2 ; au dernier : 1.","excédent de collisions, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 2 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 15 ; au dernier : 9.","rencontres répétées, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 7 ; au dernier : 4.","redondance d'appartenance, aux points de relevé","0","20","40","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 45 ; au dernier : 54.","Une valeur a changé au dernier point de relevé, à 300 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"247dd050fe930be7c239881b5091847027a3a73c6455cdc1b0d854a99868962d","etape":"10","etat":"61d4b4bf919776450966168757d227df6e89ab788f8c62b0286899433ca37b88","facteurEchelle":1,"fichier":"13a-qualite-tables","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"1ce9bbdca48d75ac865e9456c7b0d2d65ecfad81411c25e45e158f305c6e2e48"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":5.85,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":4.78,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-encre-foncee","ratio":5.43,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-niveau-1","ratio":3.46,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-niveau-2","ratio":5.85,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-encre-claire","ratio":6.03,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-niveau-1","ratio":3.31,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-niveau-2","ratio":5.35,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5},{"jeton":"--couleur-papier","ratio":5,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Petite démonstration, conflit inévitable 1","12 participants","4 tables · 12 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","7","87 %","minimum 7 sur 8","chez Hugo Neskault","plafond réalisé 8","plafond a priori 8","Personnes distinctes rencontrées, minimum : mobiles","7","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","9","Paires distinctes de même appartenance","9","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","4","0 imposée, à part","Rencontres d'une même paire, au plus","2","Retours choisis à une table déjà occupée","14","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","2","chez Hugo Neskault","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","54","Taux de diversité d(p), minimum","0,29","Manque et plafond a priori","Plus grand manque (personnes)","1","chez Hugo Neskault","8 personnes au manque maximal","plafond réalisé 8","Personnes à qui il en manque","8","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","1","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","2","4","6","8","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","Minimum 7 personnes rencontrées, 8 personnes au minimum, 8 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Hugo Neskault, rencontre","87 %","minimum 7 sur 8","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","Ateliers Jolvane","effectif 5, 6 paires distinctes, excédent 0","Tannerie Cassorgue","effectif 4, 2 paires distinctes, excédent 0","Verrerie Ulvardes","effectif 3, 1 paire distincte, excédent 0","prouvé inévitable","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Ateliers Jolvane » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 2","Table 3","Table 4","Table 1","Tour 1","Tour 2","Tour 3","Tour 4","1","2","0","0","1","0","1","1","1","1","0","0","0","0","0","0","La table 2 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 4 sur 4","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Hugo Neskault","Tannerie Cassorgue","Zoé Tolveval","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 1","Louis Selvière","Tannerie Cassorgue","Youssef Selvançon","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 2","Amina Quilmoubre","Verrerie Ulvardes","Luc Urvard","Tannerie Cassorgue","2 fois","Voir au tour 4","Tour 2, table 4","Tour 4, table 4","Paul Neskivet","Ateliers Jolvane","Michel Bralmignac","Tannerie Cassorgue","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 3","Qui a rencontré qui","Qui a rencontré qui","1. Hugo Neskault","2. Louis Selvière","3. Youssef Selvançon","4. Amina Quilmoubre","5. Paul Neskivet","6. Michel Bralmignac","7. Zoé Tolveval","8. Luc Urvard","9. Caroline Bralmumet","10. Youssef Ivrotte","11. Julie Voskotte","12. Véronique Mirveval","1","2","3","4","5","6","7","8","9","10","11","12","0","0","1","1","0","2","0","1","1","1","1","0","2","1","0","0","1","1","0","1","1","1","0","2","1","0","1","1","1","1","0","1","0","1","1","1","1","1","1","2","0","0","0","0","1","0","0","1","2","0","1","1","1","0","1","0","0","1","1","2","0","1","1","0","1","1","2","1","1","1","0","0","0","1","1","1","0","0","1","1","2","1","1","0","0","1","0","1","1","0","1","0","1","1","1","0","1","1","1","1","1","0","0","1","0","1","1","1","1","1","1","1","1","0","0","1","1","0","1","1","1","1","1","0","0","1","1","0","1","1","1","1","Chaque case porte le nombre de rencontres de la paire. 4 paires choisies se revoient, la plus revue 2 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 6 ; au dernier : 7.","écart au plafond a priori, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 2 ; au dernier : 1.","excédent de collisions, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 2 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 15 ; au dernier : 9.","rencontres répétées, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 7 ; au dernier : 4.","redondance d'appartenance, aux points de relevé","0","20","40","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 45 ; au dernier : 54.","Une valeur a changé au dernier point de relevé, à 300 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"735d2ce6cd0854e17be9bdc7e19c519ad46c50d9acf3bf029ffc255780e1701b","etape":"10","etat":"fccc66e41578f9a5554a566432289f37cc924cb0c394080e55e38b6ddba577a5","facteurEchelle":1,"fichier":"12g-qualite-plafond-nul","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"62d2fea6e7150e7b492059a6e85a891e9484f47a9b0bbcc0b656e8364e1f8366"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":3.93,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":9.67,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":6.15,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":4.53,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":4.96,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-marque","ratio":10.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-repere","ratio":7.01,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-2","ratio":6.29,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Plafond nul","5 participants","2 tables · 6 sièges","2 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 5 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","0","—","minimum 0 sur 0","chez Maëlle Quenouille","plafond réalisé 0","plafond a priori 0","Personnes distinctes rencontrées, minimum : mobiles","0","Personnes distinctes rencontrées, minimum : ancrés","3","Collisions d'appartenance","Collisions cumulées (paire et tour)","4","plancher 4 atteint : impossible de faire moins","Paires distinctes de même appartenance","2","plancher 2 atteint : impossible de faire moins","Excédent de collisions (retrouvailles au-delà de la première)","2","plancher 1","Rencontres répétées et retours","Rencontres répétées choisies (paires)","0","6 imposées, à part","Rencontres d'une même paire, au plus","2","Retours choisis à une table déjà occupée","1","4 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","0","chez Maëlle Quenouille","borne de diversité 0","Redondance d'appartenance, somme Σ r(p)","4","Taux de diversité d(p), minimum","0,67","Manque et plafond a priori","Plus grand manque (personnes)","0","chez Maëlle Quenouille","0 personne au manque maximal","plafond réalisé 0","Personnes à qui il en manque","0","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","0","minimum atteint","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","1","2","3","1","2","3","4","5","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","plafond réalisé nul","Minimum 0 personne rencontrée, 1 personne au minimum, 0 personne sous leur plafond réalisé.","Rang","1","Personne","Maëlle Quenouille","Appartenance","Coopérative Aubier","Personnes distinctes rencontrées","0","Plafond réalisé","0","Rencontres sur le plafond réalisé","—","0 sur 0","Plafond a priori","0","Appartenances rencontrées","0","Borne de diversité","0","Tours non assis","0","Place marquée","plafond réalisé nul","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","1","2","3","4","5","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","plafond réalisé nul","La personne au rang 1, Maëlle Quenouille, a un plafond réalisé nul : elle ne rencontre personne, et son rang n’a pas de point en pourcentage.","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","1","2","Atelier Ressac","effectif 2, 1 paire distincte, excédent 1","Coopérative Aubier","effectif 3, 1 paire distincte, excédent 1","prouvé inévitable","prouvé inévitable","reste","L'excédent le plus grand est celui de « Atelier Ressac » : 1 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 2","Tour 1","Tour 2","2","2","1","1","La table 1 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 6 sur 6","Paires que les réservations imposent","Paire","Rencontres de la paire","Tours","Iris Ombrelle","Coopérative Aubier","Théo Pervenche","Atelier Ressac","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Iris Ombrelle","Coopérative Aubier","Ondine Lacasse","Coopérative Aubier","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Iris Ombrelle","Coopérative Aubier","Basile Tourteau","Atelier Ressac","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Théo Pervenche","Atelier Ressac","Ondine Lacasse","Coopérative Aubier","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Théo Pervenche","Atelier Ressac","Basile Tourteau","Atelier Ressac","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Ondine Lacasse","Coopérative Aubier","Basile Tourteau","Atelier Ressac","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Qui a rencontré qui","Qui a rencontré qui","1. Maëlle Quenouille","2. Iris Ombrelle","3. Théo Pervenche","4. Ondine Lacasse","5. Basile Tourteau","1","2","3","4","5","0","0","0","0","0","2","2","2","0","2","2","2","0","2","2","2","0","2","2","2","Chaque case porte le nombre de rencontres de la paire. 6 paires imposées se revoient, la plus revue 2 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 0 ; au dernier : 0.","écart au plafond a priori, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 0 ; au dernier : 0.","excédent de collisions, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 2 ; au dernier : 2.","collisions cumulées, aux points de relevé","0","1","2","3","4","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 4 ; au dernier : 4.","rencontres répétées, aux points de relevé","0","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 0 ; au dernier : 0.","redondance d'appartenance, aux points de relevé","0","1","2","3","4","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 4 ; au dernier : 4.","Aucune valeur n'a changé entre 1 et 300 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"4a96d602445d7dc904eba5bb5d58b95f89639c1d991b44bcf8f032b4c1fb9976","etape":"10","etat":"61d4b4bf919776450966168757d227df6e89ab788f8c62b0286899433ca37b88","facteurEchelle":1,"fichier":"13-qualite-collisions","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"10851c1440fcace8b3baeb8253d9fb2692ab77389d8939b2f11477ece2fa2cf3"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-prouve","ratio":4.23,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-reste","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":13.81,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-prouve","ratio":5.12,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-reste","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Petite démonstration, conflit inévitable 1","12 participants","4 tables · 12 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","7","87 %","minimum 7 sur 8","chez Hugo Neskault","plafond réalisé 8","plafond a priori 8","Personnes distinctes rencontrées, minimum : mobiles","7","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","9","plancher 4","Paires distinctes de même appartenance","9","plancher 1","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","4","0 imposée, à part","Rencontres d'une même paire, au plus","2","Retours choisis à une table déjà occupée","14","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","2","chez Hugo Neskault","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","54","Taux de diversité d(p), minimum","0,29","Manque et plafond a priori","Plus grand manque (personnes)","1","chez Hugo Neskault","8 personnes au manque maximal","plafond réalisé 8","Personnes à qui il en manque","8","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","1","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","2","4","6","8","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","Minimum 7 personnes rencontrées, 8 personnes au minimum, 8 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Hugo Neskault, rencontre","87 %","minimum 7 sur 8","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","Ateliers Jolvane","effectif 5, 6 paires distinctes, excédent 0","Tannerie Cassorgue","effectif 4, 2 paires distinctes, excédent 0","Verrerie Ulvardes","effectif 3, 1 paire distincte, excédent 0","prouvé inévitable","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Ateliers Jolvane » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 2","Table 3","Table 4","Table 1","Tour 1","Tour 2","Tour 3","Tour 4","1","2","0","0","1","0","1","1","1","1","0","0","0","0","0","0","La table 2 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 4 sur 4","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Hugo Neskault","Tannerie Cassorgue","Zoé Tolveval","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 1","Louis Selvière","Tannerie Cassorgue","Youssef Selvançon","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 2","Amina Quilmoubre","Verrerie Ulvardes","Luc Urvard","Tannerie Cassorgue","2 fois","Voir au tour 4","Tour 2, table 4","Tour 4, table 4","Paul Neskivet","Ateliers Jolvane","Michel Bralmignac","Tannerie Cassorgue","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 3","Qui a rencontré qui","Qui a rencontré qui","1. Hugo Neskault","2. Louis Selvière","3. Youssef Selvançon","4. Amina Quilmoubre","5. Paul Neskivet","6. Michel Bralmignac","7. Zoé Tolveval","8. Luc Urvard","9. Caroline Bralmumet","10. Youssef Ivrotte","11. Julie Voskotte","12. Véronique Mirveval","1","2","3","4","5","6","7","8","9","10","11","12","0","0","1","1","0","2","0","1","1","1","1","0","2","1","0","0","1","1","0","1","1","1","0","2","1","0","1","1","1","1","0","1","0","1","1","1","1","1","1","2","0","0","0","0","1","0","0","1","2","0","1","1","1","0","1","0","0","1","1","2","0","1","1","0","1","1","2","1","1","1","0","0","0","1","1","1","0","0","1","1","2","1","1","0","0","1","0","1","1","0","1","0","1","1","1","0","1","1","1","1","1","0","0","1","0","1","1","1","1","1","1","1","1","0","0","1","1","0","1","1","1","1","1","0","0","1","1","0","1","1","1","1","Chaque case porte le nombre de rencontres de la paire. 4 paires choisies se revoient, la plus revue 2 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 6 ; au dernier : 7.","écart au plafond a priori, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 2 ; au dernier : 1.","excédent de collisions, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 2 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 15 ; au dernier : 9.","rencontres répétées, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 7 ; au dernier : 4.","redondance d'appartenance, aux points de relevé","0","20","40","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 45 ; au dernier : 54.","Une valeur a changé au dernier point de relevé, à 300 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"8924e0d39b24e7b9702cb4122b49492ce162c94c3ad916a873d44c61fca9a9c5","etape":"10","etat":"61d4b4bf919776450966168757d227df6e89ab788f8c62b0286899433ca37b88","facteurEchelle":1,"fichier":"13a-qualite-tables","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"1ce9bbdca48d75ac865e9456c7b0d2d65ecfad81411c25e45e158f305c6e2e48"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":5.85,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":4.78,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-encre-foncee","ratio":5.43,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-niveau-1","ratio":3.46,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-niveau-2","ratio":5.85,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-bordure-case","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-encre-claire","ratio":6.03,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-niveau-1","ratio":3.31,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-niveau-2","ratio":5.35,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5},{"jeton":"--couleur-papier","ratio":5,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Petite démonstration, conflit inévitable 1","12 participants","4 tables · 12 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","7","87 %","minimum 7 sur 8","chez Hugo Neskault","plafond réalisé 8","plafond a priori 8","Personnes distinctes rencontrées, minimum : mobiles","7","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","9","plancher 4","Paires distinctes de même appartenance","9","plancher 1","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","4","0 imposée, à part","Rencontres d'une même paire, au plus","2","Retours choisis à une table déjà occupée","14","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","2","chez Hugo Neskault","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","54","Taux de diversité d(p), minimum","0,29","Manque et plafond a priori","Plus grand manque (personnes)","1","chez Hugo Neskault","8 personnes au manque maximal","plafond réalisé 8","Personnes à qui il en manque","8","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","1","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","2","4","6","8","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","Minimum 7 personnes rencontrées, 8 personnes au minimum, 8 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Hugo Neskault, rencontre","87 %","minimum 7 sur 8","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","Ateliers Jolvane","effectif 5, 6 paires distinctes, excédent 0","Tannerie Cassorgue","effectif 4, 2 paires distinctes, excédent 0","Verrerie Ulvardes","effectif 3, 1 paire distincte, excédent 0","prouvé inévitable","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Ateliers Jolvane » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 2","Table 3","Table 4","Table 1","Tour 1","Tour 2","Tour 3","Tour 4","1","2","0","0","1","0","1","1","1","1","0","0","0","0","0","0","La table 2 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 4 sur 4","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Hugo Neskault","Tannerie Cassorgue","Zoé Tolveval","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 1","Louis Selvière","Tannerie Cassorgue","Youssef Selvançon","Ateliers Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 2","Amina Quilmoubre","Verrerie Ulvardes","Luc Urvard","Tannerie Cassorgue","2 fois","Voir au tour 4","Tour 2, table 4","Tour 4, table 4","Paul Neskivet","Ateliers Jolvane","Michel Bralmignac","Tannerie Cassorgue","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 3","Qui a rencontré qui","Qui a rencontré qui","1. Hugo Neskault","2. Louis Selvière","3. Youssef Selvançon","4. Amina Quilmoubre","5. Paul Neskivet","6. Michel Bralmignac","7. Zoé Tolveval","8. Luc Urvard","9. Caroline Bralmumet","10. Youssef Ivrotte","11. Julie Voskotte","12. Véronique Mirveval","1","2","3","4","5","6","7","8","9","10","11","12","0","0","1","1","0","2","0","1","1","1","1","0","2","1","0","0","1","1","0","1","1","1","0","2","1","0","1","1","1","1","0","1","0","1","1","1","1","1","1","2","0","0","0","0","1","0","0","1","2","0","1","1","1","0","1","0","0","1","1","2","0","1","1","0","1","1","2","1","1","1","0","0","0","1","1","1","0","0","1","1","2","1","1","0","0","1","0","1","1","0","1","0","1","1","1","0","1","1","1","1","1","0","0","1","0","1","1","1","1","1","1","1","1","0","0","1","1","0","1","1","1","1","1","0","0","1","1","0","1","1","1","1","Chaque case porte le nombre de rencontres de la paire. 4 paires choisies se revoient, la plus revue 2 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 6 ; au dernier : 7.","écart au plafond a priori, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 2 ; au dernier : 1.","excédent de collisions, aux points de relevé","0","1","2","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 2 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 15 ; au dernier : 9.","rencontres répétées, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 7 ; au dernier : 4.","redondance d'appartenance, aux points de relevé","0","20","40","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 45 ; au dernier : 54.","Une valeur a changé au dernier point de relevé, à 300 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"3373550d33a1fc2795097ad57cdca9082b7de97c1326e06b2d9692cc8e0c44d8","etape":"10","etat":"52b64156932020426f7f872ad4f0362f3f489acf8c5f58c704df8d52835bbf95","facteurEchelle":1,"fichier":"14-qualite-paires","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"3792ba3ee24c63a2bffff2482ee01a23bc6c26d699ef05f7e582335d03075d40"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-action-encre","ratio":8.29,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-encre","ratio":9.62,"role":"texte","seuil":4.5},{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Paires répétées","12 participants","4 tables · 12 sièges","6 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 2 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","8","72 %","minimum 8 sur 11","chez Maëlle Quenouille","plafond réalisé 11","plafond a priori 11","Personnes distinctes rencontrées, minimum : mobiles","8","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","21","Paires distinctes de même appartenance","17","Excédent de collisions (retrouvailles au-delà de la première)","4","Rencontres répétées et retours","Rencontres répétées choisies (paires)","15","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","36","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","3","chez Iris Ombrelle","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","74","Taux de diversité d(p), minimum","0,30","Manque et plafond a priori","Plus grand manque (personnes)","3","chez Maëlle Quenouille","12 personnes au manque maximal","plafond réalisé 11","Personnes à qui il en manque","12","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","3","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","5","10","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","Minimum 8 personnes rencontrées, 3 personnes au minimum, 12 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Maëlle Quenouille, rencontre","72 %","minimum 8 sur 11","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Atelier Ressac","effectif 4, 6 paires distinctes, excédent 2","Coopérative Aubier","effectif 4, 6 paires distinctes, excédent 1","Chantier Grève","effectif 4, 5 paires distinctes, excédent 1","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Atelier Ressac » : 2 collisions.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 4","Table 2","Table 3","Tour 1","Tour 2","Tour 3","Tour 4","Tour 5","Tour 6","1","0","1","1","1","2","1","1","1","1","1","1","0","1","1","1","1","1","0","1","1","0","1","0","La table 1 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 15 sur 15","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Ondine Lacasse","Chantier Grève","Lucien Aubépin","Coopérative Aubier","3 fois","Voir au tour 3","Tour 2, table 4","Tour 3, table 2","Tour 5, table 2","Basile Tourteau","Coopérative Aubier","Félix Cormier","Chantier Grève","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Tour 4, table 4","Iris Ombrelle","Coopérative Aubier","Maëlle Quenouille","Atelier Ressac","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 3","Iris Ombrelle","Coopérative Aubier","Rosalie Fenouil","Chantier Grève","2 fois","Voir au tour 4","Tour 1, table 3","Tour 4, table 3","Théo Pervenche","Atelier Ressac","Sidonie Varech","Chantier Grève","2 fois","Voir au tour 6","Tour 2, table 2","Tour 6, table 4","Théo Pervenche","Atelier Ressac","Félix Cormier","Chantier Grève","2 fois","Voir au tour 6","Tour 3, table 4","Tour 6, table 4","Théo Pervenche","Atelier Ressac","Rosalie Fenouil","Chantier Grève","2 fois","Voir au tour 2","Tour 1, table 3","Tour 2, table 2","Basile Tourteau","Coopérative Aubier","Ysé Dorine","Coopérative Aubier","2 fois","Voir au tour 6","Tour 3, table 1","Tour 6, table 1","Maëlle Quenouille","Atelier Ressac","Aglaé Bruyère","Atelier Ressac","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 3","Maëlle Quenouille","Atelier Ressac","Ysé Dorine","Coopérative Aubier","2 fois","Voir au tour 5","Tour 1, table 4","Tour 5, table 1","Maëlle Quenouille","Atelier Ressac","Paulin Escourgeon","Atelier Ressac","2 fois","Voir au tour 6","Tour 5, table 1","Tour 6, table 2","Sidonie Varech","Chantier Grève","Félix Cormier","Chantier Grève","2 fois","Voir au tour 6","Tour 5, table 3","Tour 6, table 4","Lucien Aubépin","Coopérative Aubier","Rosalie Fenouil","Chantier Grève","2 fois","Voir au tour 6","Tour 5, table 2","Tour 6, table 3","Aglaé Bruyère","Atelier Ressac","Rosalie Fenouil","Chantier Grève","2 fois","Voir au tour 6","Tour 3, table 3","Tour 6, table 3","Ysé Dorine","Coopérative Aubier","Paulin Escourgeon","Atelier Ressac","2 fois","Voir au tour 5","Tour 4, table 2","Tour 5, table 1","Qui a rencontré qui","Qui a rencontré qui","1. Maëlle Quenouille","2. Félix Cormier","3. Rosalie Fenouil","4. Théo Pervenche","5. Basile Tourteau","6. Lucien Aubépin","7. Ysé Dorine","8. Iris Ombrelle","9. Ondine Lacasse","10. Sidonie Varech","11. Aglaé Bruyère","12. Paulin Escourgeon","1","2","3","4","5","6","7","8","9","10","11","12","1","1","1","0","0","2","2","1","0","2","2","1","0","2","3","1","0","1","1","2","0","1","1","0","2","0","2","0","2","1","1","2","1","1","2","2","1","0","1","1","0","2","1","1","0","3","0","1","1","2","1","1","1","1","1","0","1","2","0","1","1","1","3","1","1","1","2","0","0","1","2","1","1","1","1","1","2","2","1","2","1","1","1","1","1","1","1","0","1","1","1","0","1","3","1","1","1","1","1","0","2","1","2","1","1","1","1","1","1","1","2","0","2","1","1","1","1","1","1","1","1","2","1","1","1","1","1","2","0","1","1","1","Chaque case porte le nombre de rencontres de la paire. 15 paires choisies se revoient, la plus revue 3 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 7 ; au dernier : 8.","écart au plafond a priori, aux points de relevé","0","1","2","3","4","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 4 ; au dernier : 3.","excédent de collisions, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 8 ; au dernier : 4.","collisions cumulées, aux points de relevé","0","5","10","15","20","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 21 ; au dernier : 21.","rencontres répétées, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 18 ; au dernier : 15.","redondance d'appartenance, aux points de relevé","0","20","40","60","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 62 ; au dernier : 74.","Une valeur a changé au dernier point de relevé, à 300 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"c16646e9e0074091dd7e4e591b95648d8e99d90eb2542437096a3cdb6391388f","etape":"10","etat":"52b64156932020426f7f872ad4f0362f3f489acf8c5f58c704df8d52835bbf95","facteurEchelle":1,"fichier":"14a-fiche-rencontres","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"7008ab655dbca5290dfd541cef0390cdfbc8b5d4920971643665c2da8fa21b75"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Paires répétées","12 participants","4 tables · 12 sièges","6 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Participants","12 personnes · 12 à placer · 0 exclue · 3 appartenances","Exporter la liste","Ajouter une personne","Nom","Prénom","Appartenance","Courriel","Titre pressenti","Notes","Ajouter","Filtrer","Grouper par","Aucun groupement","Nom","Prénom","Appartenance","Courriel","Titre pressenti","Exclusion","Notes","Statut","12 participants","Atelier Ressac · 4","Chantier Grève · 4","Coopérative Aubier · 4","Nom","Prénom","Appartenance","Courriel","Titre pressenti","Exclusion","Notes","Actions","Ombrelle","Iris","Coopérative Aubier","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Pervenche","Théo","Atelier Ressac","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Lacasse","Ondine","Chantier Grève","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Tourteau","Basile","Coopérative Aubier","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Quenouille","Maëlle","Atelier Ressac","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Varech","Sidonie","Chantier Grève","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Aubépin","Lucien","Coopérative Aubier","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Bruyère","Aglaé","Atelier Ressac","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Cormier","Félix","Chantier Grève","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Dorine","Ysé","Coopérative Aubier","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Escourgeon","Paulin","Atelier Ressac","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Fenouil","Rosalie","Chantier Grève","présente","Fiche","Voir sur le plan","Exclure","Supprimer","Ondine Lacasse","Fermer la fiche","Nom","Lacasse","Prénom","Ondine","Appartenance","Chantier Grève","Courriel","—","Titre pressenti","—","Notes","—","Statut","mobile","Étiquettes","Aucune étiquette.","Ajouter des étiquettes, séparées par une virgule","Ajouter","Réservations","Aucune réservation.","Aucun placement retenu ne la nomme.","Rencontres","Placement mesuré :","Proposition n° 2","Personne rencontrée","Fois","Tours","Lucien Aubépin","Coopérative Aubier","3","tour 2, table 4 ; tour 3, table 2 ; tour 5, table 2","Iris Ombrelle","Coopérative Aubier","1","tour 3, table 2","Basile Tourteau","Coopérative Aubier","1","tour 1, table 1","Maëlle Quenouille","Atelier Ressac","1","tour 6, table 2","Sidonie Varech","Chantier Grève","1","tour 4, table 1","Aglaé Bruyère","Atelier Ressac","1","tour 4, table 1","Félix Cormier","Chantier Grève","1","tour 1, table 1","Ysé Dorine","Coopérative Aubier","1","tour 2, table 4","Paulin Escourgeon","Atelier Ressac","1","tour 6, table 2","Rosalie Fenouil","Chantier Grève","1","tour 5, table 2"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"3d5f81decd5609e36836cf8fc0ad7f4dc29f0f6e38b75f694cc8662f267aa00b","etape":"10","etat":"15fb09087464cf5b429c79e33325a0cd64579f1c650d7fd7aeabf6c3cbf977c0","facteurEchelle":1,"fichier":"15-pas-de-matrice","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"33ef9a780f4d0dd4191ee5a2b3918e21bc11631b941d5faee45bc407eb7c38a7"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-action-encre","ratio":8.29,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-encre","ratio":9.62,"role":"texte","seuil":4.5},{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Grande démonstration 1","260 participants","33 tables · 260 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 260 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","23","95 %","minimum 23 sur 24","chez François Ivrivet","plafond réalisé 24","plafond a priori 24","Personnes distinctes rencontrées, minimum : mobiles","24","Personnes distinctes rencontrées, minimum : ancrés","23","Collisions d'appartenance","Collisions cumulées (paire et tour)","52","Paires distinctes de même appartenance","52","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","103","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","29","99 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","17","chez François Ivrivet","borne de diversité 24","Redondance d'appartenance, somme Σ r(p)","1 288","Taux de diversité d(p), minimum","0,64","Manque et plafond a priori","Plus grand manque (personnes)","3","chez Marc Luskouze","131 personnes au manque maximal","plafond réalisé 27","Personnes à qui il en manque","131","Écart d'itinéraire maximal (personnes)","4","Écart au plafond a priori maximal (personnes)","4","Objectifs des tables et animateurs","Animateurs rencontrés, minimum","3","ne classe pas","chez Zoé WAMMERWOLM-MAWWEMMEL","borne des animateurs 4","Animateurs non rencontrés","29","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","10","20","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","Minimum 23 personnes rencontrées, 3 personnes au minimum, 131 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","La personne au rang 1, François Ivrivet, rencontre","95 %","minimum 23 sur 24","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Imprimerie Yzorne","effectif 12, 9 paires distinctes, excédent 0","Fabrique Sorbagne","effectif 11, 7 paires distinctes, excédent 0","Ateliers Falvigne","effectif 8, 3 paires distinctes, excédent 0","Ateliers Rossolde","effectif 11, 3 paires distinctes, excédent 0","Fonderie Estrolle","effectif 9, 3 paires distinctes, excédent 0","Verrerie Vaubrenne","effectif 10, 3 paires distinctes, excédent 0","Ateliers Tavrenne","effectif 8, 2 paires distinctes, excédent 0","Fonderie Xandrelle","effectif 6, 2 paires distinctes, excédent 0","Menuiserie Estrolle","effectif 9, 2 paires distinctes, excédent 0","Tannerie Nervanche","effectif 6, 2 paires distinctes, excédent 0","Ateliers Aubrenc","effectif 3, 1 paire distincte, excédent 0","Ateliers Cassorgue","effectif 3, 1 paire distincte, excédent 0","Brasserie Xandrelle","effectif 2, 1 paire distincte, excédent 0","Comptoir Gravelune","effectif 3, 1 paire distincte, excédent 0","Coopérative Jolvane","effectif 4, 1 paire distincte, excédent 0","Fabrique Kalvenne","effectif 3, 1 paire distincte, excédent 0","Filature Zelvaine","effectif 4, 1 paire distincte, excédent 0","Fonderie Sorbagne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Gravelune","effectif 3, 1 paire distincte, excédent 0","Menuiserie Hostrenne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Quimvaux","effectif 3, 1 paire distincte, excédent 0","Menuiserie Sorbagne","effectif 3, 1 paire distincte, excédent 0","Papeterie Hostrenne","effectif 2, 1 paire distincte, excédent 0","Papeterie Ulvardes","effectif 4, 1 paire distincte, excédent 0","Tannerie Belvarre","effectif 5, 1 paire distincte, excédent 0","Verrerie Aubrenc","effectif 2, 1 paire distincte, excédent 0","Ateliers Estrolle","effectif 3, 0 paire distincte, excédent 0","Ateliers Ivoranche","effectif 4, 0 paire distincte, excédent 0","Brasserie Belvarre","effectif 9, 0 paire distincte, excédent 0","Brasserie Dravenne","effectif 1, 0 paire distincte, excédent 0","Brasserie Lavorneau","effectif 2, 0 paire distincte, excédent 0","Brasserie Morvalle","effectif 2, 0 paire distincte, excédent 0","Brasserie Sorbagne","effectif 4, 0 paire distincte, excédent 0","Brasserie Wassorel","effectif 2, 0 paire distincte, excédent 0","Comptoir Ivoranche","effectif 1, 0 paire distincte, excédent 0","Comptoir Jolvane","effectif 3, 0 paire distincte, excédent 0","Comptoir Lavorneau","effectif 1, 0 paire distincte, excédent 0","Comptoir Sorbagne","effectif 4, 0 paire distincte, excédent 0","Comptoir Xandrelle","effectif 3, 0 paire distincte, excédent 0","Comptoir Yzorne","effectif 2, 0 paire distincte, excédent 0","Coopérative Dravenne","effectif 3, 0 paire distincte, excédent 0","Coopérative Gravelune","effectif 3, 0 paire distincte, excédent 0","Coopérative Morvalle","effectif 3, 0 paire distincte, excédent 0","Coopérative Rossolde","effectif 4, 0 paire distincte, excédent 0","Fabrique Ivoranche","effectif 3, 0 paire distincte, excédent 0","Fabrique Morvalle","effectif 1, 0 paire distincte, excédent 0","Fabrique Ulvardes","effectif 3, 0 paire distincte, excédent 0","Filature Dravenne","effectif 1, 0 paire distincte, excédent 0","Filature Olbrecq","effectif 2, 0 paire distincte, excédent 0","Filature Wassorel","effectif 3, 0 paire distincte, excédent 0","Fonderie Aubrenc","effectif 2, 0 paire distincte, excédent 0","Fonderie Ivoranche","effectif 2, 0 paire distincte, excédent 0","Fonderie Kalvenne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Falvigne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Hostrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Aubrenc","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ivoranche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Jolvane","effectif 1, 0 paire distincte, excédent 0","Menuiserie Nervanche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Olbrecq","effectif 4, 0 paire distincte, excédent 0","Menuiserie Tavrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ulvardes","effectif 6, 0 paire distincte, excédent 0","Menuiserie Wassorel","effectif 1, 0 paire distincte, excédent 0","Papeterie Estrolle","effectif 3, 0 paire distincte, excédent 0","Papeterie Wassorel","effectif 1, 0 paire distincte, excédent 0","Tannerie Aubrenc","effectif 3, 0 paire distincte, excédent 0","Tannerie Falvigne","effectif 1, 0 paire distincte, excédent 0","Tannerie Olbrecq","effectif 1, 0 paire distincte, excédent 0","Tannerie Quimvaux","effectif 1, 0 paire distincte, excédent 0","Verrerie Gravelune","effectif 1, 0 paire distincte, excédent 0","Verrerie Ivoranche","effectif 6, 0 paire distincte, excédent 0","Verrerie Nervanche","effectif 1, 0 paire distincte, excédent 0","Verrerie Olbrecq","effectif 2, 0 paire distincte, excédent 0","Verrerie Pravette","effectif 2, 0 paire distincte, excédent 0","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Imprimerie Yzorne » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 4","Table 12","Table 16","Table 20","Table 26","Table 33","Table 9","Table 10","Table 15","Table 24","Table 25","Table 29","Table 31","Table 32","Table 1","Table 2","Table 5","Table 6","Table 7","Table 8","Table 13","Table 14","Table 17","Table 18","Table 19","Table 21","Table 22","Table 23","Table 27","Table 28","Table 30","Table 3","Table 11","Tour 1","Tour 2","Tour 3","Tour 4","2","1","0","0","1","2","0","0","0","0","2","1","0","0","1","2","0","2","0","1","0","1","0","2","0","0","2","0","0","1","0","1","1","1","0","0","0","1","1","0","0","1","1","0","1","0","1","0","0","1","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","1","0","0","0","0","1","0","0","0","0","0","1","0","1","0","0","0","0","0","1","0","0","0","1","1","0","0","0","1","0","0","0","0","0","1","0","0","1","0","0","0","0","0","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","0","0","0","0","0","0","La table 4 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 100 sur 103","Suivantes","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Samuel Cloveval","Menuiserie Ulvardes","Hélène Bralmeval","Brasserie Dravenne","3 fois","Voir au tour 3","Tour 1, table 23","Tour 3, table 15","Tour 4, table 32","Hugo Fralvançon","Brasserie Wassorel","Léa Fralvault","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 11","Tour 3, table 2","Hugo Fralvançon","Brasserie Wassorel","Louise Quilmançon","Menuiserie Estrolle","2 fois","Voir au tour 3","Tour 1, table 13","Tour 3, table 2","Zoé WAMMERWOLM-MAWWEMMEL","Menuiserie Ulvardes","Catherine Hulveron","Coopérative Rossolde","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 15","Catherine Urvesson","Fabrique Ulvardes","Olivier Bralmançon","Comptoir Lavorneau","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 6","Karim Hulvivet","Fonderie Xandrelle","Guillaume Luskichon","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Léa Fralvault","Fonderie Sorbagne","Lucie Tolvesson","Filature Zelvaine","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 11","Léa Fralvault","Fonderie Sorbagne","Samuel Abrevard","Filature Dravenne","2 fois","Voir au tour 4","Tour 2, table 11","Tour 4, table 4","Fatima Obrivet","Fabrique Sorbagne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 29","Philippe Voskeval","Menuiserie Estrolle","Émilie Korvard","Verrerie Vaubrenne","2 fois","Voir au tour 3","Tour 2, table 6","Tour 3, table 6","Zoé Dulveval","Menuiserie Quimvaux","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 13","Paul Korveux","Filature Olbrecq","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 1, table 15","Tour 3, table 5","Paul Korveux","Filature Olbrecq","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 3","Thomas Rozvotte","Verrerie Ivoranche","Antoine Quilmeron","Fabrique Kalvenne","2 fois","Voir au tour 4","Tour 3, table 33","Tour 4, table 26","Isabelle Bralmumet","Verrerie Aubrenc","Félix Korveval","Tannerie Nervanche","2 fois","Voir au tour 2","Tour 1, table 19","Tour 2, table 28","Isabelle Bralmumet","Verrerie Aubrenc","Louis Mirveron","Filature Wassorel","2 fois","Voir au tour 4","Tour 3, table 22","Tour 4, table 16","Simon Mirvivet","Ateliers Ivoranche","Hélène Gorzumet","Fonderie Aubrenc","2 fois","Voir au tour 3","Tour 1, table 9","Tour 3, table 18","Lucie Voskeux","Coopérative Morvalle","Samuel Cloveval","Menuiserie Ulvardes","2 fois","Voir au tour 3","Tour 2, table 14","Tour 3, table 15","Fatima Korvouze","Ateliers Tavrenne","Olivier Jusvançon","Brasserie Morvalle","2 fois","Voir au tour 3","Tour 2, table 3","Tour 3, table 3","Étienne Fralvichon","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 1, table 21","Tour 4, table 33","Louise Quilmançon","Menuiserie Estrolle","Paul Obrichon","Ateliers Rossolde","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 21","Louise Quilmançon","Menuiserie Estrolle","Étienne Eskesson","Menuiserie Ulvardes","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 7","Pierre Abreveron","Ateliers Rossolde","Manon Tolveron","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 5","Tour 3, table 5","Léa Tolvande","Ateliers Rossolde","Anne Abrevesson","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 14","Antoine Quilmeron","Fabrique Kalvenne","Samuel Bralmeux","Ateliers Rossolde","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 33","Michel Eskeux","Papeterie Wassorel","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 21","Louise Hulvault","Coopérative Jolvane","Karim Fralveval","Coopérative Gravelune","2 fois","Voir au tour 4","Tour 3, table 24","Tour 4, table 4","Catherine Hulveron","Coopérative Rossolde","Alexandre Korvotte","Menuiserie Nervanche","2 fois","Voir au tour 4","Tour 3, table 15","Tour 4, table 15","François Ivrivet","Menuiserie Sorbagne","François Gorzichon","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 32","Tour 4, table 32","Claire Fralvivet","Imprimerie Yzorne","Étienne Selvouze","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 14","Tour 3, table 27","Karim Gorzesson","Papeterie Ulvardes","Sophie Clovard","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 1, table 20","Tour 4, table 12","Manon Urvançon","Ateliers Tavrenne","Guillaume Tolvignac","Menuiserie Sorbagne","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Sylvie Quilmande","Imprimerie Yzorne","Antoine Bralmault","Fabrique Sorbagne","2 fois","Voir au tour 4","Tour 1, table 4","Tour 4, table 4","Sylvie Quilmande","Imprimerie Yzorne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 14","Sylvie Quilmande","Imprimerie Yzorne","Hélène Rozveval","Comptoir Ivoranche","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 4","Amina Pruvesson","Fonderie Sorbagne","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 1, table 18","Tour 4, table 16","Amina Pruvesson","Fonderie Sorbagne","Léa Obrard","Comptoir Sorbagne","2 fois","Voir au tour 2","Tour 1, table 18","Tour 2, table 31","Lucie Quilmière","Fabrique Ivoranche","Anne Urvivet","Fonderie Kalvenne","2 fois","Voir au tour 2","Tour 1, table 21","Tour 2, table 9","Louis Selvivet","Menuiserie Hostrenne","Guillaume Hulvotte","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 2, table 25","Tour 4, table 25","Lucie Tolvesson","Filature Zelvaine","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 4","Tour 1, table 15","Tour 4, table 25","Olivier Quilmesson","Comptoir Gravelune","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 9","Gabriel Neskault","Menuiserie Tavrenne","Geneviève Abrevignac","Brasserie Morvalle","2 fois","Voir au tour 4","Tour 2, table 20","Tour 4, table 18","Gabriel Neskault","Menuiserie Tavrenne","François Clovotte","Coopérative Rossolde","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Gabriel Neskault","Menuiserie Tavrenne","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Olivier Jusvançon","Brasserie Morvalle","Hélène Selveux","Brasserie Lavorneau","2 fois","Voir au tour 4","Tour 1, table 24","Tour 4, table 25","Gabriel Pruveux","Papeterie Estrolle","Guillaume Obrançon","Papeterie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 31","Tour 4, table 27","Manon Clovière","Ateliers Ivoranche","Marc Vandergrolcquesmirtavelle-Ostrovaubelindigues","Tannerie Aubrenc","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 10","François Obrouze","Tannerie Olbrecq","Camille Tolvumet","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 31","Tour 3, table 31","Claire Gorzeron","Menuiserie Hostrenne","Guillaume Gorzivet","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 32","Tour 4, table 8","Hélène Luskumet","Brasserie Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 8","Louis Fralvande","Ateliers Rossolde","Philippe Ivroubre","Ateliers Tavrenne","2 fois","Voir au tour 4","Tour 1, table 19","Tour 4, table 19","Isabelle Korvichon","Menuiserie Ulvardes","Marie Dulvesson","Ateliers Cassorgue","2 fois","Voir au tour 4","Tour 1, table 7","Tour 4, table 10","Isabelle Korvichon","Menuiserie Ulvardes","Karim Clovivet","Fonderie Kalvenne","2 fois","Voir au tour 3","Tour 2, table 18","Tour 3, table 23","Fatima Tolvoubre","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 33","Zoé Gorzière","Menuiserie Olbrecq","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 2, table 7","Tour 3, table 25","Antoine Obreval","Ateliers Cassorgue","Alexandre Ivreux","Tannerie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 25","Tour 2, table 6","Antoine Obreval","Ateliers Cassorgue","Hugo Bralmouze","Tannerie Falvigne","2 fois","Voir au tour 4","Tour 3, table 23","Tour 4, table 23","Michel Korveron","Fonderie Sorbagne","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 8","Marie Dulvesson","Ateliers Cassorgue","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 3","Tour 2, table 16","Tour 3, table 17","Youssef Jusvard","Tannerie Aubrenc","Simon Hulvumet","Ateliers Ivoranche","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 21","Gabriel Mirvotte","Tannerie Belvarre","Paul Neskivet","Comptoir Jolvane","2 fois","Voir au tour 4","Tour 3, table 21","Tour 4, table 7","Marc Luskouze","Ateliers Rossolde","Isabelle Selvichon","Tannerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 21","Tour 3, table 8","Louis Hulvichon","Ateliers Falvigne","Nicolas Ivrichon","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 17","Tour 2, table 24","Pierre Pruveval","Comptoir Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 1, table 10","Tour 3, table 8","Geneviève Abrevignac","Brasserie Morvalle","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 7","Olivier Bralmançon","Comptoir Lavorneau","Véronique Jusvouze","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 6","Marc Luskoubre","Verrerie Vaubrenne","Thomas Quilmichon","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 33","Tour 4, table 5","Camille Jusvumet","Fonderie Estrolle","Guillaume Eskotte","Verrerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 27","Tour 3, table 11","Antoine Selvière","Coopérative Dravenne","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 1, table 11","Tour 3, table 9","Antoine Bralmault","Fabrique Sorbagne","Amina Rozvichon","Verrerie Olbrecq","2 fois","Voir au tour 3","Tour 2, table 4","Tour 3, table 4","Antoine Bralmault","Fabrique Sorbagne","Antoine Pruvouze","Imprimerie Yzorne","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 4","Émilie Abrevière","Imprimerie Yzorne","Fatima Hulvard","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 29","Émilie Abrevière","Imprimerie Yzorne","Geneviève Obresson","Coopérative Gravelune","2 fois","Voir au tour 3","Tour 1, table 29","Tour 3, table 29","Émilie Abrevière","Imprimerie Yzorne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 4","Tour 3, table 29","Tour 4, table 29","Olivier Tolvichon","Fonderie Xandrelle","Étienne Gorzeval","Papeterie Ulvardes","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 6","Félix Korveval","Tannerie Nervanche","Thomas Selvignac","Brasserie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 28","Tour 3, table 28","Émilie Dulvichon","Menuiserie Ulvardes","Lucie Voskeron","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Émilie Dulvichon","Menuiserie Ulvardes","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Claire Jusvivet","Imprimerie Yzorne","Hugo Voskumet","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 20","Tour 3, table 20","Amina Quilmault","Coopérative Jolvane","Philippe Abreveval","Ateliers Falvigne","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 4","Hélène Gorzumet","Fonderie Aubrenc","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 4","Tour 1, table 9","Tour 4, table 21","Sophie Ivrault","Coopérative Morvalle","Philippe Fralvignac","Menuiserie Estrolle","2 fois","Voir au tour 4","Tour 3, table 13","Tour 4, table 26","Nicolas Korvande","Comptoir Sorbagne","Chantal Obrignac","Imprimerie Yzorne","2 fois","Voir au tour 3","Tour 2, table 27","Tour 3, table 22","Fatima Urvignac","Ateliers Aubrenc","Claire Bralmotte","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 21","François Clovotte","Coopérative Rossolde","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Philippe Dulvoubre","Brasserie Belvarre","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 2","Tour 1, table 9","Tour 2, table 10","Chantal Mirvumet","Menuiserie Gravelune","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 29","Camille Neskard","Menuiserie Gravelune","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 2, table 16","Tour 4, table 16","Sophie Pruvière","Ateliers Rossolde","Raphaël Jusvault","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 16","Tour 2, table 2","Fatima Abrevançon","Tannerie Nervanche","Caroline Jusvoubre","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 13","Fatima Abrevançon","Tannerie Nervanche","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 13","Tour 4, table 13","Karim Clovançon","Fabrique Sorbagne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 17","Félix Eskouze","Filature Zelvaine","Sylvie Abreveux","Comptoir Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 19","Olivier Korvière","Ateliers Falvigne","Manon Pruvivet","Menuiserie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 20","Tour 2, table 10","Félix Voskande","Ateliers Falvigne","Guillaume Mirvoubre","Comptoir Sorbagne","2 fois","Voir au tour 4","Tour 2, table 7","Tour 4, table 7","Lucie Voskeron","Verrerie Ivoranche","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Thomas Selvignac","Brasserie Sorbagne","Étienne Voskançon","Menuiserie Olbrecq","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 28","Jean Neskeron","Filature Zelvaine","Zoé Mirveval","Fabrique Kalvenne","2 fois","Voir au tour 2","Tour 1, table 11","Tour 2, table 33","Sophie Clovard","Brasserie Belvarre","Marc Rozvouze","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 12","Alexandre Eskançon","Menuiserie Hostrenne","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 1, table 17","Tour 3, table 25","Qui a rencontré qui","La matrice n'est pas dessinée : 260 personnes dépassent le seuil de 40. La fiche de chaque personne porte ses rencontres.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","3","4","50","100","150","200","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 3 animateurs rencontrés, 29 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucune personne présente ne porte d'étiquette : seule la colonne des appartenances se dessine.","Appartenances rencontrées en animant","le moins varié","17","le plus varié","27","au minimum","1","Diversité rencontrée en animant, sur la soirée","0","10","20","François Ivrivet","4 tours animés, 23 personnes rencontrées en animant","Samuel Bralmeux","4 tours animés, 23 personnes rencontrées en animant","Geneviève Dulvumet","4 tours animés, 24 personnes rencontrées en animant","François Obrouze","4 tours animés, 23 personnes rencontrées en animant","Antoine Bralmault","4 tours animés, 25 personnes rencontrées en animant","Catherine Hulveron","4 tours animés, 26 personnes rencontrées en animant","Camille Neskard","4 tours animés, 27 personnes rencontrées en animant","Guillaume Luskichon","4 tours animés, 27 personnes rencontrées en animant","Philippe Ivroubre","4 tours animés, 27 personnes rencontrées en animant","Marie Urvard","4 tours animés, 28 personnes rencontrées en animant","Sophie Pruvotte","4 tours animés, 28 personnes rencontrées en animant","Thomas Selvignac","4 tours animés, 26 personnes rencontrées en animant","Philippe Voskeval","4 tours animés, 27 personnes rencontrées en animant","Manon Urvançon","4 tours animés, 27 personnes rencontrées en animant","Marc Vandergrolcquesmirta…","4 tours animés, 27 personnes rencontrées en animant","Fatima Abrevançon","4 tours animés, 26 personnes rencontrées en animant","Claire Jusvivet","4 tours animés, 27 personnes rencontrées en animant","Félix Voskande","4 tours animés, 27 personnes rencontrées en animant","Louise Neskichon","4 tours animés, 28 personnes rencontrées en animant","Gabriel Abrevault","4 tours animés, 28 personnes rencontrées en animant","Émilie Abrevière","4 tours animés, 25 personnes rencontrées en animant","Youssef Jusvard","4 tours animés, 27 personnes rencontrées en animant","Manon Tolveron","4 tours animés, 27 personnes rencontrées en animant","Hugo Bralmouze","4 tours animés, 27 personnes rencontrées en animant","Marie Bralmesson","4 tours animés, 28 personnes rencontrées en animant","Louis Selvivet","4 tours animés, 27 personnes rencontrées en animant","Michel Korveron","4 tours animés, 27 personnes rencontrées en animant","Youssef Neskière","4 tours animés, 28 personnes rencontrées en animant","Jean Fralvumet","4 tours animés, 28 personnes rencontrées en animant","Fatima Korvouze","4 tours animés, 27 personnes rencontrées en animant","Gabriel Ivreval","4 tours animés, 28 personnes rencontrées en animant","Guillaume Dulvivet","4 tours animés, 28 personnes rencontrées en animant","Étienne Tolvançon","4 tours animés, 28 personnes rencontrées en animant","Appartenances rencontrées en animant","Appartenances rencontrées en animant","Le moins varié rencontre 17 appartenances en animant ; 1 animateur au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","2 000 mouvements évalués sur 2 000","durée observée 2,5 s","1 cœur de calcul","cadence 4 000 mouvements par seconde","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","5","10","15","20","1","10","100","2 000","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 21 ; au dernier : 23.","écart au plafond a priori, aux points de relevé","0","2","4","6","1","10","100","2 000","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 6 ; au dernier : 4.","excédent de collisions, aux points de relevé","0","1","2","3","4","1","10","100","2 000","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 3 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","20","40","60","1","10","100","2 000","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 67 ; au dernier : 52.","rencontres répétées, aux points de relevé","0","50","100","1","10","100","2 000","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 145 ; au dernier : 103.","redondance d'appartenance, aux points de relevé","0","500","1 000","1","10","100","2 000","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 1 298 ; au dernier : 1 288.","Une valeur a changé au dernier point de relevé, à 2 000 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"b82822b5a3a215dabc05deba4456ee91e4265ed108ccf3eb69b49bd5a0bddfd9","etape":"10","etat":"998f656fb722cc8b40bfb0a1e0202acb706637ef24a0b775dce60f72fb74cdd6","facteurEchelle":1,"fichier":"15a-qualite-objectifs","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"bdb8012f5ab0c11dfc32a9f6d9703ff95b2c0f9e578b370360f26b9f697677cc"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-avis","ratio":6.58,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-reste","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-avis","ratio":8.93,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-reste","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.02,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Soirée d’essai","14 participants","3 tables · 28 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Le placement retenu et les propositions n° 1, 2, 3, 4 et 5 ne décrivent plus la liste ou les tables actuelles : ils sont gardés, et rien n'est effacé.","Ouvrir les propositions","Placement retenu","Iris Ombrelle, ajoutée ou réintégrée depuis, n'y est pas placée.","Le nombre de tours est passé de 3 à 4.","Proposition n°","1","Iris Ombrelle, ajoutée ou réintégrée depuis, n'y est pas placée.","La table 3 a été ajoutée depuis.","Le nombre de tours est passé de 3 à 4.","Proposition n°","2","Iris Ombrelle, ajoutée ou réintégrée depuis, n'y est pas placée.","La table 3 a été ajoutée depuis.","Le nombre de tours est passé de 3 à 4.","Proposition n°","3","Iris Ombrelle, ajoutée ou réintégrée depuis, n'y est pas placée.","La table 3 a été ajoutée depuis.","Le nombre de tours est passé de 3 à 4.","Proposition n°","4","Iris Ombrelle, ajoutée ou réintégrée depuis, n'y est pas placée.","La table 3 a été ajoutée depuis.","Le nombre de tours est passé de 3 à 4.","Proposition n°","5","Iris Ombrelle, ajoutée ou réintégrée depuis, n'y est pas placée.","La table 3 a été ajoutée depuis.","Le nombre de tours est passé de 3 à 4.","Le placement retenu, issu de la proposition n° 3, enfreint 3 règles que la dérive ne dit pas. Le placement retenu n'honore pas la réservation de la personne n° 4 à la table d'identifiant 3 au tour 1 : il la place ailleurs. Le placement retenu n'honore pas la réservation de la personne n° 4 à la table d'identifiant 3 au tour 2 : il la place ailleurs. Le placement retenu n'honore pas la réservation de la personne n° 4 à la table d'identifiant 3 au tour 3 : il la place ailleurs.","Qualité","Placement mesuré :","Proposition n° 9, vue seule","Revenir au placement retenu","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 13 personnes, 1 exclue à part.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","9","81 %","minimum 9 sur 11","chez Ysaline Sablonnet","plafond réalisé 11","plafond a priori 11","Personnes distinctes rencontrées, minimum : mobiles","9","Personnes distinctes rencontrées, minimum : ancrés","9","Collisions d'appartenance","Collisions cumulées (paire et tour)","19","Paires distinctes de même appartenance","13","Excédent de collisions (retrouvailles au-delà de la première)","6","Rencontres répétées et retours","Rencontres répétées choisies (paires)","33","0 imposée, à part","Rencontres d'une même paire, au plus","4","Retours choisis à une table déjà occupée","16","6 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","3","chez Basile Lanterneau","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","75","Taux de diversité d(p), minimum","0,30","Manque et plafond a priori","Plus grand manque (personnes)","2","chez Ysaline Sablonnet","11 personnes au manque maximal","plafond réalisé 11","Personnes à qui il en manque","11","Écart d'itinéraire maximal (personnes)","1","Écart au plafond a priori maximal (personnes)","3","Objectifs des tables et animateurs","Personnes jamais servies","0","ne classe pas","Plus de tours hors objectif d'une personne","2","ne classe pas","Tours hors objectif (personne et tour)","3","75 % des tours possibles servis","0 personne jamais servie","Tours selon l'objectif s(p), minimum","2","50 %","minimum 2 sur 4","chez Gaspard Marbrelle","4 tours possibles","Animateurs rencontrés, minimum","1","ne classe pas","chez Bertille Cressonnier","borne des animateurs 2","Animateurs non rencontrés","2","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","5","10","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","partiellement fixé","Minimum 9 personnes rencontrées, 2 personnes au minimum, 11 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","partiellement fixé","La personne au rang 1, Ysaline Sablonnet, rencontre","81 %","minimum 9 sur 11","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Chœur de l’Anse","effectif 4, 5 paires distinctes, excédent 3","Société des Hérons","effectif 4, 5 paires distinctes, excédent 2","Cercle des Saules","effectif 3, 3 paires distinctes, excédent 1","prouvé inévitable","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Chœur de l’Anse » : 3 collisions.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 3","Table 2","Tour 1","Tour 2","Tour 3","Tour 4","7","7","7","8","8","7","7","7","7","6","6","7","La table 1 porte la case la plus haute : 8.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 33 sur 33","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Anselme Givrecœur","Apolline Coudraie","Chœur de l’Anse","4 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 3","Tour 3, table 2","Tour 4, table 1","Basile Lanterneau","n° 9","Chœur de l’Anse","Brunœil","Cercle des Saules","4 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Tour 3, table 3","Tour 4, table 3","Basile Lanterneau","n° 1","Chœur de l’Anse","Côme Fenouillet","Société des Hérons","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Tour 4, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Iris Ombrelle","3 fois","Voir au tour 3","Tour 2, table 1","Tour 3, table 1","Tour 4, table 1","Capucine Pommerel","Société des Hérons","Iris Ombrelle","3 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 1","Tour 4, table 1","Gaspard Marbrelle","Cercle des Saules","Anselme Givrecœur","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 3","Tour 3, table 2","Gaspard Marbrelle","Cercle des Saules","Apolline Coudraie","Chœur de l’Anse","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 3","Tour 3, table 2","Côme Fenouillet","Société des Hérons","Basile Lanterneau","n° 9","Chœur de l’Anse","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Tour 3, table 3","Côme Fenouillet","Société des Hérons","Brunœil","Cercle des Saules","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Tour 3, table 3","Faustine Ormelin","Société des Hérons","Iris Ombrelle","3 fois","Voir au tour 2","Tour 1, table 2","Tour 2, table 1","Tour 3, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Capucine Pommerel","Société des Hérons","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Anselme Givrecœur","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Apolline Coudraie","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Basile Lanterneau","n° 9","Chœur de l’Anse","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Brunœil","Cercle des Saules","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Faustine Ormelin","Société des Hérons","2 fois","Voir au tour 3","Tour 2, table 1","Tour 3, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Bertille Cressonnier","Cercle des Saules","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 1","Capucine Pommerel","Société des Hérons","Anselme Givrecœur","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 1","Capucine Pommerel","Société des Hérons","Apolline Coudraie","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 1","Capucine Pommerel","Société des Hérons","Faustine Ormelin","Société des Hérons","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 1","Gaspard Marbrelle","Cercle des Saules","Ysaline Sablonnet","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 3","Gaspard Marbrelle","Cercle des Saules","Basile Lanterneau","n° 9","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 3","Gaspard Marbrelle","Cercle des Saules","Brunœil","Cercle des Saules","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 3","Ysaline Sablonnet","Chœur de l’Anse","Basile Lanterneau","n° 9","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 3, table 3","Tour 4, table 3","Ysaline Sablonnet","Chœur de l’Anse","Brunœil","Cercle des Saules","2 fois","Voir au tour 4","Tour 3, table 3","Tour 4, table 3","Ysaline Sablonnet","Chœur de l’Anse","Edgar Ardoisier","Société des Hérons","2 fois","Voir au tour 4","Tour 1, table 3","Tour 4, table 3","Anselme Givrecœur","Côme Fenouillet","Société des Hérons","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 1","Côme Fenouillet","Société des Hérons","Apolline Coudraie","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 1","Côme Fenouillet","Société des Hérons","Iris Ombrelle","2 fois","Voir au tour 4","Tour 2, table 1","Tour 4, table 1","Basile Lanterneau","n° 9","Chœur de l’Anse","Faustine Ormelin","Société des Hérons","2 fois","Voir au tour 4","Tour 2, table 1","Tour 4, table 3","Brunœil","Cercle des Saules","Faustine Ormelin","Société des Hérons","2 fois","Voir au tour 4","Tour 2, table 1","Tour 4, table 3","Faustine Ormelin","Société des Hérons","Edgar Ardoisier","Société des Hérons","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 3","Edgar Ardoisier","Société des Hérons","Bertille Cressonnier","Cercle des Saules","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 1","Qui a rencontré qui","Qui a rencontré qui","1. Ysaline Sablonnet","2. Edgar Ardoisier","3. Capucine Pommerel","4. Anselme Givrecœur","5. Apolline Coudraie","6. Faustine Ormelin","7. Iris Ombrelle","8. Gaspard Marbrelle","9. Côme Fenouillet","10. Basile Lanterneau (n° 9)","11. Brunœil","12. Basile Lanterneau (n° 1)","13. Bertille Cressonnier","1","2","3","4","5","6","7","8","9","10","11","12","13","2","1","1","1","1","0","2","1","2","2","0","0","2","1","0","0","2","1","1","0","1","1","1","2","1","1","2","2","2","3","1","1","0","0","2","1","1","0","2","4","0","1","3","2","1","1","2","1","1","0","2","4","0","1","3","2","1","1","2","1","1","2","2","0","0","3","1","1","2","2","2","1","0","1","3","1","1","3","0","2","1","1","3","1","2","1","1","3","3","1","0","1","2","2","1","1","1","0","1","2","2","1","2","1","3","3","3","1","2","1","0","1","1","2","1","2","3","4","2","1","2","1","0","1","1","2","1","2","3","4","2","1","0","1","2","2","2","2","3","1","3","2","2","2","0","2","1","1","1","1","1","1","1","1","1","2","Chaque case porte le nombre de rencontres de la paire. 33 paires choisies se revoient, la plus revue 4 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Personnes jamais servies","Chaque personne concernée est servie à un tour au moins.","75 % des tours possibles servis","0 personne jamais servie","9 servis sur 12 possibles","3 tours hors objectif, plancher 0","Tours hors objectif, tour par tour","0","1","2","Tour 2","10 assis sans table possible","Tour 1","10 assis sans table possible","Tour 3","10 assis sans table possible","Tour 4","10 assis sans table possible","reste","prouvé inévitable","reste","En tête, le tour 2, au plus grand reste : 2 au-delà de son plancher, sur 2 tours hors objectif.","Tour 2","33 %","1 servi sur 3 possibles","Tour 1","100 %","3 servis sur 3 possibles","Tour 3","100 %","3 servis sur 3 possibles","Tour 4","66 %","2 servis sur 3 possibles","Voir le tableau","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","2","4","6","8","10","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 1 animateur rencontré, 2 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Appartenances rencontrées en animant","le moins varié","3","le plus varié","3","au minimum","2","Étiquettes rencontrées en animant","le moins varié","3","le plus varié","3","au minimum","2","Diversité rencontrée en animant, sur la soirée","Appartenances rencontrées en animant","0","1","2","3","Étiquettes rencontrées en animant","0","1","2","3","Ysaline Sablonnet","4 tours animés, 9 personnes rencontrées en animant","Basile Lanterneau","4 tours animés, 11 personnes rencontrées en animant","Le moins varié rencontre 3 appartenances en animant ; 2 animateurs au minimum. Le moins varié rencontre 3 étiquettes en animant ; 2 animateurs au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 0 ; au dernier : 9.","écart au plafond a priori, aux points de relevé","0","5","10","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 11 ; au dernier : 3.","excédent de collisions, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 19 ; au dernier : 6.","collisions cumulées, aux points de relevé","0","10","20","30","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 30 ; au dernier : 19.","tours hors objectif, aux points de relevé","0","1","2","3","1","10","100","300","Mouvements évalués, échelle logarithmique","tours hors objectif","tours hors objectif","Au premier point de relevé, tours hors objectif : 1 ; au dernier : 3.","rencontres répétées, aux points de relevé","0","20","40","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 55 ; au dernier : 33.","redondance d'appartenance, aux points de relevé","0","20","40","60","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 64 ; au dernier : 75.","Aucune valeur n'a changé entre 100 et 300 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"414ed36ad23327f811f3243209a21a0ddea95ae2703fc5f9a657a7aee3d43c0b","etape":"10","etat":"15fb09087464cf5b429c79e33325a0cd64579f1c650d7fd7aeabf6c3cbf977c0","facteurEchelle":1,"fichier":"15b-qualite-animateurs","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"d12cd172d65a5bcd6fa1c6d0b120e44fe1d41483528f08c25c7acd4bf79f396a"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":3.93,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":4.96,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Grande démonstration 1","260 participants","33 tables · 260 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 260 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","23","95 %","minimum 23 sur 24","chez François Ivrivet","plafond réalisé 24","plafond a priori 24","Personnes distinctes rencontrées, minimum : mobiles","24","Personnes distinctes rencontrées, minimum : ancrés","23","Collisions d'appartenance","Collisions cumulées (paire et tour)","52","Paires distinctes de même appartenance","52","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","103","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","29","99 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","17","chez François Ivrivet","borne de diversité 24","Redondance d'appartenance, somme Σ r(p)","1 288","Taux de diversité d(p), minimum","0,64","Manque et plafond a priori","Plus grand manque (personnes)","3","chez Marc Luskouze","131 personnes au manque maximal","plafond réalisé 27","Personnes à qui il en manque","131","Écart d'itinéraire maximal (personnes)","4","Écart au plafond a priori maximal (personnes)","4","Objectifs des tables et animateurs","Animateurs rencontrés, minimum","3","ne classe pas","chez Zoé WAMMERWOLM-MAWWEMMEL","borne des animateurs 4","Animateurs non rencontrés","29","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","10","20","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","Minimum 23 personnes rencontrées, 3 personnes au minimum, 131 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","La personne au rang 1, François Ivrivet, rencontre","95 %","minimum 23 sur 24","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Imprimerie Yzorne","effectif 12, 9 paires distinctes, excédent 0","Fabrique Sorbagne","effectif 11, 7 paires distinctes, excédent 0","Ateliers Falvigne","effectif 8, 3 paires distinctes, excédent 0","Ateliers Rossolde","effectif 11, 3 paires distinctes, excédent 0","Fonderie Estrolle","effectif 9, 3 paires distinctes, excédent 0","Verrerie Vaubrenne","effectif 10, 3 paires distinctes, excédent 0","Ateliers Tavrenne","effectif 8, 2 paires distinctes, excédent 0","Fonderie Xandrelle","effectif 6, 2 paires distinctes, excédent 0","Menuiserie Estrolle","effectif 9, 2 paires distinctes, excédent 0","Tannerie Nervanche","effectif 6, 2 paires distinctes, excédent 0","Ateliers Aubrenc","effectif 3, 1 paire distincte, excédent 0","Ateliers Cassorgue","effectif 3, 1 paire distincte, excédent 0","Brasserie Xandrelle","effectif 2, 1 paire distincte, excédent 0","Comptoir Gravelune","effectif 3, 1 paire distincte, excédent 0","Coopérative Jolvane","effectif 4, 1 paire distincte, excédent 0","Fabrique Kalvenne","effectif 3, 1 paire distincte, excédent 0","Filature Zelvaine","effectif 4, 1 paire distincte, excédent 0","Fonderie Sorbagne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Gravelune","effectif 3, 1 paire distincte, excédent 0","Menuiserie Hostrenne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Quimvaux","effectif 3, 1 paire distincte, excédent 0","Menuiserie Sorbagne","effectif 3, 1 paire distincte, excédent 0","Papeterie Hostrenne","effectif 2, 1 paire distincte, excédent 0","Papeterie Ulvardes","effectif 4, 1 paire distincte, excédent 0","Tannerie Belvarre","effectif 5, 1 paire distincte, excédent 0","Verrerie Aubrenc","effectif 2, 1 paire distincte, excédent 0","Ateliers Estrolle","effectif 3, 0 paire distincte, excédent 0","Ateliers Ivoranche","effectif 4, 0 paire distincte, excédent 0","Brasserie Belvarre","effectif 9, 0 paire distincte, excédent 0","Brasserie Dravenne","effectif 1, 0 paire distincte, excédent 0","Brasserie Lavorneau","effectif 2, 0 paire distincte, excédent 0","Brasserie Morvalle","effectif 2, 0 paire distincte, excédent 0","Brasserie Sorbagne","effectif 4, 0 paire distincte, excédent 0","Brasserie Wassorel","effectif 2, 0 paire distincte, excédent 0","Comptoir Ivoranche","effectif 1, 0 paire distincte, excédent 0","Comptoir Jolvane","effectif 3, 0 paire distincte, excédent 0","Comptoir Lavorneau","effectif 1, 0 paire distincte, excédent 0","Comptoir Sorbagne","effectif 4, 0 paire distincte, excédent 0","Comptoir Xandrelle","effectif 3, 0 paire distincte, excédent 0","Comptoir Yzorne","effectif 2, 0 paire distincte, excédent 0","Coopérative Dravenne","effectif 3, 0 paire distincte, excédent 0","Coopérative Gravelune","effectif 3, 0 paire distincte, excédent 0","Coopérative Morvalle","effectif 3, 0 paire distincte, excédent 0","Coopérative Rossolde","effectif 4, 0 paire distincte, excédent 0","Fabrique Ivoranche","effectif 3, 0 paire distincte, excédent 0","Fabrique Morvalle","effectif 1, 0 paire distincte, excédent 0","Fabrique Ulvardes","effectif 3, 0 paire distincte, excédent 0","Filature Dravenne","effectif 1, 0 paire distincte, excédent 0","Filature Olbrecq","effectif 2, 0 paire distincte, excédent 0","Filature Wassorel","effectif 3, 0 paire distincte, excédent 0","Fonderie Aubrenc","effectif 2, 0 paire distincte, excédent 0","Fonderie Ivoranche","effectif 2, 0 paire distincte, excédent 0","Fonderie Kalvenne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Falvigne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Hostrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Aubrenc","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ivoranche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Jolvane","effectif 1, 0 paire distincte, excédent 0","Menuiserie Nervanche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Olbrecq","effectif 4, 0 paire distincte, excédent 0","Menuiserie Tavrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ulvardes","effectif 6, 0 paire distincte, excédent 0","Menuiserie Wassorel","effectif 1, 0 paire distincte, excédent 0","Papeterie Estrolle","effectif 3, 0 paire distincte, excédent 0","Papeterie Wassorel","effectif 1, 0 paire distincte, excédent 0","Tannerie Aubrenc","effectif 3, 0 paire distincte, excédent 0","Tannerie Falvigne","effectif 1, 0 paire distincte, excédent 0","Tannerie Olbrecq","effectif 1, 0 paire distincte, excédent 0","Tannerie Quimvaux","effectif 1, 0 paire distincte, excédent 0","Verrerie Gravelune","effectif 1, 0 paire distincte, excédent 0","Verrerie Ivoranche","effectif 6, 0 paire distincte, excédent 0","Verrerie Nervanche","effectif 1, 0 paire distincte, excédent 0","Verrerie Olbrecq","effectif 2, 0 paire distincte, excédent 0","Verrerie Pravette","effectif 2, 0 paire distincte, excédent 0","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Imprimerie Yzorne » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 4","Table 12","Table 16","Table 20","Table 26","Table 33","Table 9","Table 10","Table 15","Table 24","Table 25","Table 29","Table 31","Table 32","Table 1","Table 2","Table 5","Table 6","Table 7","Table 8","Table 13","Table 14","Table 17","Table 18","Table 19","Table 21","Table 22","Table 23","Table 27","Table 28","Table 30","Table 3","Table 11","Tour 1","Tour 2","Tour 3","Tour 4","2","1","0","0","1","2","0","0","0","0","2","1","0","0","1","2","0","2","0","1","0","1","0","2","0","0","2","0","0","1","0","1","1","1","0","0","0","1","1","0","0","1","1","0","1","0","1","0","0","1","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","1","0","0","0","0","1","0","0","0","0","0","1","0","1","0","0","0","0","0","1","0","0","0","1","1","0","0","0","1","0","0","0","0","0","1","0","0","1","0","0","0","0","0","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","0","0","0","0","0","0","La table 4 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 100 sur 103","Suivantes","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Samuel Cloveval","Menuiserie Ulvardes","Hélène Bralmeval","Brasserie Dravenne","3 fois","Voir au tour 3","Tour 1, table 23","Tour 3, table 15","Tour 4, table 32","Hugo Fralvançon","Brasserie Wassorel","Léa Fralvault","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 11","Tour 3, table 2","Hugo Fralvançon","Brasserie Wassorel","Louise Quilmançon","Menuiserie Estrolle","2 fois","Voir au tour 3","Tour 1, table 13","Tour 3, table 2","Zoé WAMMERWOLM-MAWWEMMEL","Menuiserie Ulvardes","Catherine Hulveron","Coopérative Rossolde","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 15","Catherine Urvesson","Fabrique Ulvardes","Olivier Bralmançon","Comptoir Lavorneau","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 6","Karim Hulvivet","Fonderie Xandrelle","Guillaume Luskichon","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Léa Fralvault","Fonderie Sorbagne","Lucie Tolvesson","Filature Zelvaine","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 11","Léa Fralvault","Fonderie Sorbagne","Samuel Abrevard","Filature Dravenne","2 fois","Voir au tour 4","Tour 2, table 11","Tour 4, table 4","Fatima Obrivet","Fabrique Sorbagne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 29","Philippe Voskeval","Menuiserie Estrolle","Émilie Korvard","Verrerie Vaubrenne","2 fois","Voir au tour 3","Tour 2, table 6","Tour 3, table 6","Zoé Dulveval","Menuiserie Quimvaux","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 13","Paul Korveux","Filature Olbrecq","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 1, table 15","Tour 3, table 5","Paul Korveux","Filature Olbrecq","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 3","Thomas Rozvotte","Verrerie Ivoranche","Antoine Quilmeron","Fabrique Kalvenne","2 fois","Voir au tour 4","Tour 3, table 33","Tour 4, table 26","Isabelle Bralmumet","Verrerie Aubrenc","Félix Korveval","Tannerie Nervanche","2 fois","Voir au tour 2","Tour 1, table 19","Tour 2, table 28","Isabelle Bralmumet","Verrerie Aubrenc","Louis Mirveron","Filature Wassorel","2 fois","Voir au tour 4","Tour 3, table 22","Tour 4, table 16","Simon Mirvivet","Ateliers Ivoranche","Hélène Gorzumet","Fonderie Aubrenc","2 fois","Voir au tour 3","Tour 1, table 9","Tour 3, table 18","Lucie Voskeux","Coopérative Morvalle","Samuel Cloveval","Menuiserie Ulvardes","2 fois","Voir au tour 3","Tour 2, table 14","Tour 3, table 15","Fatima Korvouze","Ateliers Tavrenne","Olivier Jusvançon","Brasserie Morvalle","2 fois","Voir au tour 3","Tour 2, table 3","Tour 3, table 3","Étienne Fralvichon","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 1, table 21","Tour 4, table 33","Louise Quilmançon","Menuiserie Estrolle","Paul Obrichon","Ateliers Rossolde","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 21","Louise Quilmançon","Menuiserie Estrolle","Étienne Eskesson","Menuiserie Ulvardes","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 7","Pierre Abreveron","Ateliers Rossolde","Manon Tolveron","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 5","Tour 3, table 5","Léa Tolvande","Ateliers Rossolde","Anne Abrevesson","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 14","Antoine Quilmeron","Fabrique Kalvenne","Samuel Bralmeux","Ateliers Rossolde","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 33","Michel Eskeux","Papeterie Wassorel","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 21","Louise Hulvault","Coopérative Jolvane","Karim Fralveval","Coopérative Gravelune","2 fois","Voir au tour 4","Tour 3, table 24","Tour 4, table 4","Catherine Hulveron","Coopérative Rossolde","Alexandre Korvotte","Menuiserie Nervanche","2 fois","Voir au tour 4","Tour 3, table 15","Tour 4, table 15","François Ivrivet","Menuiserie Sorbagne","François Gorzichon","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 32","Tour 4, table 32","Claire Fralvivet","Imprimerie Yzorne","Étienne Selvouze","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 14","Tour 3, table 27","Karim Gorzesson","Papeterie Ulvardes","Sophie Clovard","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 1, table 20","Tour 4, table 12","Manon Urvançon","Ateliers Tavrenne","Guillaume Tolvignac","Menuiserie Sorbagne","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Sylvie Quilmande","Imprimerie Yzorne","Antoine Bralmault","Fabrique Sorbagne","2 fois","Voir au tour 4","Tour 1, table 4","Tour 4, table 4","Sylvie Quilmande","Imprimerie Yzorne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 14","Sylvie Quilmande","Imprimerie Yzorne","Hélène Rozveval","Comptoir Ivoranche","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 4","Amina Pruvesson","Fonderie Sorbagne","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 1, table 18","Tour 4, table 16","Amina Pruvesson","Fonderie Sorbagne","Léa Obrard","Comptoir Sorbagne","2 fois","Voir au tour 2","Tour 1, table 18","Tour 2, table 31","Lucie Quilmière","Fabrique Ivoranche","Anne Urvivet","Fonderie Kalvenne","2 fois","Voir au tour 2","Tour 1, table 21","Tour 2, table 9","Louis Selvivet","Menuiserie Hostrenne","Guillaume Hulvotte","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 2, table 25","Tour 4, table 25","Lucie Tolvesson","Filature Zelvaine","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 4","Tour 1, table 15","Tour 4, table 25","Olivier Quilmesson","Comptoir Gravelune","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 9","Gabriel Neskault","Menuiserie Tavrenne","Geneviève Abrevignac","Brasserie Morvalle","2 fois","Voir au tour 4","Tour 2, table 20","Tour 4, table 18","Gabriel Neskault","Menuiserie Tavrenne","François Clovotte","Coopérative Rossolde","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Gabriel Neskault","Menuiserie Tavrenne","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Olivier Jusvançon","Brasserie Morvalle","Hélène Selveux","Brasserie Lavorneau","2 fois","Voir au tour 4","Tour 1, table 24","Tour 4, table 25","Gabriel Pruveux","Papeterie Estrolle","Guillaume Obrançon","Papeterie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 31","Tour 4, table 27","Manon Clovière","Ateliers Ivoranche","Marc Vandergrolcquesmirtavelle-Ostrovaubelindigues","Tannerie Aubrenc","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 10","François Obrouze","Tannerie Olbrecq","Camille Tolvumet","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 31","Tour 3, table 31","Claire Gorzeron","Menuiserie Hostrenne","Guillaume Gorzivet","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 32","Tour 4, table 8","Hélène Luskumet","Brasserie Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 8","Louis Fralvande","Ateliers Rossolde","Philippe Ivroubre","Ateliers Tavrenne","2 fois","Voir au tour 4","Tour 1, table 19","Tour 4, table 19","Isabelle Korvichon","Menuiserie Ulvardes","Marie Dulvesson","Ateliers Cassorgue","2 fois","Voir au tour 4","Tour 1, table 7","Tour 4, table 10","Isabelle Korvichon","Menuiserie Ulvardes","Karim Clovivet","Fonderie Kalvenne","2 fois","Voir au tour 3","Tour 2, table 18","Tour 3, table 23","Fatima Tolvoubre","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 33","Zoé Gorzière","Menuiserie Olbrecq","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 2, table 7","Tour 3, table 25","Antoine Obreval","Ateliers Cassorgue","Alexandre Ivreux","Tannerie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 25","Tour 2, table 6","Antoine Obreval","Ateliers Cassorgue","Hugo Bralmouze","Tannerie Falvigne","2 fois","Voir au tour 4","Tour 3, table 23","Tour 4, table 23","Michel Korveron","Fonderie Sorbagne","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 8","Marie Dulvesson","Ateliers Cassorgue","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 3","Tour 2, table 16","Tour 3, table 17","Youssef Jusvard","Tannerie Aubrenc","Simon Hulvumet","Ateliers Ivoranche","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 21","Gabriel Mirvotte","Tannerie Belvarre","Paul Neskivet","Comptoir Jolvane","2 fois","Voir au tour 4","Tour 3, table 21","Tour 4, table 7","Marc Luskouze","Ateliers Rossolde","Isabelle Selvichon","Tannerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 21","Tour 3, table 8","Louis Hulvichon","Ateliers Falvigne","Nicolas Ivrichon","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 17","Tour 2, table 24","Pierre Pruveval","Comptoir Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 1, table 10","Tour 3, table 8","Geneviève Abrevignac","Brasserie Morvalle","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 7","Olivier Bralmançon","Comptoir Lavorneau","Véronique Jusvouze","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 6","Marc Luskoubre","Verrerie Vaubrenne","Thomas Quilmichon","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 33","Tour 4, table 5","Camille Jusvumet","Fonderie Estrolle","Guillaume Eskotte","Verrerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 27","Tour 3, table 11","Antoine Selvière","Coopérative Dravenne","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 1, table 11","Tour 3, table 9","Antoine Bralmault","Fabrique Sorbagne","Amina Rozvichon","Verrerie Olbrecq","2 fois","Voir au tour 3","Tour 2, table 4","Tour 3, table 4","Antoine Bralmault","Fabrique Sorbagne","Antoine Pruvouze","Imprimerie Yzorne","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 4","Émilie Abrevière","Imprimerie Yzorne","Fatima Hulvard","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 29","Émilie Abrevière","Imprimerie Yzorne","Geneviève Obresson","Coopérative Gravelune","2 fois","Voir au tour 3","Tour 1, table 29","Tour 3, table 29","Émilie Abrevière","Imprimerie Yzorne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 4","Tour 3, table 29","Tour 4, table 29","Olivier Tolvichon","Fonderie Xandrelle","Étienne Gorzeval","Papeterie Ulvardes","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 6","Félix Korveval","Tannerie Nervanche","Thomas Selvignac","Brasserie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 28","Tour 3, table 28","Émilie Dulvichon","Menuiserie Ulvardes","Lucie Voskeron","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Émilie Dulvichon","Menuiserie Ulvardes","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Claire Jusvivet","Imprimerie Yzorne","Hugo Voskumet","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 20","Tour 3, table 20","Amina Quilmault","Coopérative Jolvane","Philippe Abreveval","Ateliers Falvigne","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 4","Hélène Gorzumet","Fonderie Aubrenc","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 4","Tour 1, table 9","Tour 4, table 21","Sophie Ivrault","Coopérative Morvalle","Philippe Fralvignac","Menuiserie Estrolle","2 fois","Voir au tour 4","Tour 3, table 13","Tour 4, table 26","Nicolas Korvande","Comptoir Sorbagne","Chantal Obrignac","Imprimerie Yzorne","2 fois","Voir au tour 3","Tour 2, table 27","Tour 3, table 22","Fatima Urvignac","Ateliers Aubrenc","Claire Bralmotte","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 21","François Clovotte","Coopérative Rossolde","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Philippe Dulvoubre","Brasserie Belvarre","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 2","Tour 1, table 9","Tour 2, table 10","Chantal Mirvumet","Menuiserie Gravelune","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 29","Camille Neskard","Menuiserie Gravelune","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 2, table 16","Tour 4, table 16","Sophie Pruvière","Ateliers Rossolde","Raphaël Jusvault","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 16","Tour 2, table 2","Fatima Abrevançon","Tannerie Nervanche","Caroline Jusvoubre","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 13","Fatima Abrevançon","Tannerie Nervanche","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 13","Tour 4, table 13","Karim Clovançon","Fabrique Sorbagne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 17","Félix Eskouze","Filature Zelvaine","Sylvie Abreveux","Comptoir Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 19","Olivier Korvière","Ateliers Falvigne","Manon Pruvivet","Menuiserie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 20","Tour 2, table 10","Félix Voskande","Ateliers Falvigne","Guillaume Mirvoubre","Comptoir Sorbagne","2 fois","Voir au tour 4","Tour 2, table 7","Tour 4, table 7","Lucie Voskeron","Verrerie Ivoranche","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Thomas Selvignac","Brasserie Sorbagne","Étienne Voskançon","Menuiserie Olbrecq","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 28","Jean Neskeron","Filature Zelvaine","Zoé Mirveval","Fabrique Kalvenne","2 fois","Voir au tour 2","Tour 1, table 11","Tour 2, table 33","Sophie Clovard","Brasserie Belvarre","Marc Rozvouze","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 12","Alexandre Eskançon","Menuiserie Hostrenne","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 1, table 17","Tour 3, table 25","Qui a rencontré qui","La matrice n'est pas dessinée : 260 personnes dépassent le seuil de 40. La fiche de chaque personne porte ses rencontres.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","3","4","50","100","150","200","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 3 animateurs rencontrés, 29 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucune personne présente ne porte d'étiquette : seule la colonne des appartenances se dessine.","Appartenances rencontrées en animant","le moins varié","17","le plus varié","27","au minimum","1","Diversité rencontrée en animant, sur la soirée","0","10","20","François Ivrivet","4 tours animés, 23 personnes rencontrées en animant","Samuel Bralmeux","4 tours animés, 23 personnes rencontrées en animant","Geneviève Dulvumet","4 tours animés, 24 personnes rencontrées en animant","François Obrouze","4 tours animés, 23 personnes rencontrées en animant","Antoine Bralmault","4 tours animés, 25 personnes rencontrées en animant","Catherine Hulveron","4 tours animés, 26 personnes rencontrées en animant","Camille Neskard","4 tours animés, 27 personnes rencontrées en animant","Guillaume Luskichon","4 tours animés, 27 personnes rencontrées en animant","Philippe Ivroubre","4 tours animés, 27 personnes rencontrées en animant","Marie Urvard","4 tours animés, 28 personnes rencontrées en animant","Sophie Pruvotte","4 tours animés, 28 personnes rencontrées en animant","Thomas Selvignac","4 tours animés, 26 personnes rencontrées en animant","Philippe Voskeval","4 tours animés, 27 personnes rencontrées en animant","Manon Urvançon","4 tours animés, 27 personnes rencontrées en animant","Marc Vandergrolcquesmirta…","4 tours animés, 27 personnes rencontrées en animant","Fatima Abrevançon","4 tours animés, 26 personnes rencontrées en animant","Claire Jusvivet","4 tours animés, 27 personnes rencontrées en animant","Félix Voskande","4 tours animés, 27 personnes rencontrées en animant","Louise Neskichon","4 tours animés, 28 personnes rencontrées en animant","Gabriel Abrevault","4 tours animés, 28 personnes rencontrées en animant","Émilie Abrevière","4 tours animés, 25 personnes rencontrées en animant","Youssef Jusvard","4 tours animés, 27 personnes rencontrées en animant","Manon Tolveron","4 tours animés, 27 personnes rencontrées en animant","Hugo Bralmouze","4 tours animés, 27 personnes rencontrées en animant","Marie Bralmesson","4 tours animés, 28 personnes rencontrées en animant","Louis Selvivet","4 tours animés, 27 personnes rencontrées en animant","Michel Korveron","4 tours animés, 27 personnes rencontrées en animant","Youssef Neskière","4 tours animés, 28 personnes rencontrées en animant","Jean Fralvumet","4 tours animés, 28 personnes rencontrées en animant","Fatima Korvouze","4 tours animés, 27 personnes rencontrées en animant","Gabriel Ivreval","4 tours animés, 28 personnes rencontrées en animant","Guillaume Dulvivet","4 tours animés, 28 personnes rencontrées en animant","Étienne Tolvançon","4 tours animés, 28 personnes rencontrées en animant","Appartenances rencontrées en animant","Appartenances rencontrées en animant","Le moins varié rencontre 17 appartenances en animant ; 1 animateur au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","2 000 mouvements évalués sur 2 000","durée observée 2,5 s","1 cœur de calcul","cadence 4 000 mouvements par seconde","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","5","10","15","20","1","10","100","2 000","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 21 ; au dernier : 23.","écart au plafond a priori, aux points de relevé","0","2","4","6","1","10","100","2 000","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 6 ; au dernier : 4.","excédent de collisions, aux points de relevé","0","1","2","3","4","1","10","100","2 000","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 3 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","20","40","60","1","10","100","2 000","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 67 ; au dernier : 52.","rencontres répétées, aux points de relevé","0","50","100","1","10","100","2 000","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 145 ; au dernier : 103.","redondance d'appartenance, aux points de relevé","0","500","1 000","1","10","100","2 000","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 1 298 ; au dernier : 1 288.","Une valeur a changé au dernier point de relevé, à 2 000 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, -{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"acdf7948686aa453b158db6ef257244fd3eed8b3d74d4941fec20687aa01d937","etape":"10","etat":"15fb09087464cf5b429c79e33325a0cd64579f1c650d7fd7aeabf6c3cbf977c0","facteurEchelle":1,"fichier":"15c-qualite-performance","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"c419e952b0f10f763016b96657372c3f427ca6446883c15892b3626ea279ce7c"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Grande démonstration 1","260 participants","33 tables · 260 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 260 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","23","95 %","minimum 23 sur 24","chez François Ivrivet","plafond réalisé 24","plafond a priori 24","Personnes distinctes rencontrées, minimum : mobiles","24","Personnes distinctes rencontrées, minimum : ancrés","23","Collisions d'appartenance","Collisions cumulées (paire et tour)","52","Paires distinctes de même appartenance","52","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","103","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","29","99 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","17","chez François Ivrivet","borne de diversité 24","Redondance d'appartenance, somme Σ r(p)","1 288","Taux de diversité d(p), minimum","0,64","Manque et plafond a priori","Plus grand manque (personnes)","3","chez Marc Luskouze","131 personnes au manque maximal","plafond réalisé 27","Personnes à qui il en manque","131","Écart d'itinéraire maximal (personnes)","4","Écart au plafond a priori maximal (personnes)","4","Objectifs des tables et animateurs","Animateurs rencontrés, minimum","3","ne classe pas","chez Zoé WAMMERWOLM-MAWWEMMEL","borne des animateurs 4","Animateurs non rencontrés","29","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","10","20","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","Minimum 23 personnes rencontrées, 3 personnes au minimum, 131 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","La personne au rang 1, François Ivrivet, rencontre","95 %","minimum 23 sur 24","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Imprimerie Yzorne","effectif 12, 9 paires distinctes, excédent 0","Fabrique Sorbagne","effectif 11, 7 paires distinctes, excédent 0","Ateliers Falvigne","effectif 8, 3 paires distinctes, excédent 0","Ateliers Rossolde","effectif 11, 3 paires distinctes, excédent 0","Fonderie Estrolle","effectif 9, 3 paires distinctes, excédent 0","Verrerie Vaubrenne","effectif 10, 3 paires distinctes, excédent 0","Ateliers Tavrenne","effectif 8, 2 paires distinctes, excédent 0","Fonderie Xandrelle","effectif 6, 2 paires distinctes, excédent 0","Menuiserie Estrolle","effectif 9, 2 paires distinctes, excédent 0","Tannerie Nervanche","effectif 6, 2 paires distinctes, excédent 0","Ateliers Aubrenc","effectif 3, 1 paire distincte, excédent 0","Ateliers Cassorgue","effectif 3, 1 paire distincte, excédent 0","Brasserie Xandrelle","effectif 2, 1 paire distincte, excédent 0","Comptoir Gravelune","effectif 3, 1 paire distincte, excédent 0","Coopérative Jolvane","effectif 4, 1 paire distincte, excédent 0","Fabrique Kalvenne","effectif 3, 1 paire distincte, excédent 0","Filature Zelvaine","effectif 4, 1 paire distincte, excédent 0","Fonderie Sorbagne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Gravelune","effectif 3, 1 paire distincte, excédent 0","Menuiserie Hostrenne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Quimvaux","effectif 3, 1 paire distincte, excédent 0","Menuiserie Sorbagne","effectif 3, 1 paire distincte, excédent 0","Papeterie Hostrenne","effectif 2, 1 paire distincte, excédent 0","Papeterie Ulvardes","effectif 4, 1 paire distincte, excédent 0","Tannerie Belvarre","effectif 5, 1 paire distincte, excédent 0","Verrerie Aubrenc","effectif 2, 1 paire distincte, excédent 0","Ateliers Estrolle","effectif 3, 0 paire distincte, excédent 0","Ateliers Ivoranche","effectif 4, 0 paire distincte, excédent 0","Brasserie Belvarre","effectif 9, 0 paire distincte, excédent 0","Brasserie Dravenne","effectif 1, 0 paire distincte, excédent 0","Brasserie Lavorneau","effectif 2, 0 paire distincte, excédent 0","Brasserie Morvalle","effectif 2, 0 paire distincte, excédent 0","Brasserie Sorbagne","effectif 4, 0 paire distincte, excédent 0","Brasserie Wassorel","effectif 2, 0 paire distincte, excédent 0","Comptoir Ivoranche","effectif 1, 0 paire distincte, excédent 0","Comptoir Jolvane","effectif 3, 0 paire distincte, excédent 0","Comptoir Lavorneau","effectif 1, 0 paire distincte, excédent 0","Comptoir Sorbagne","effectif 4, 0 paire distincte, excédent 0","Comptoir Xandrelle","effectif 3, 0 paire distincte, excédent 0","Comptoir Yzorne","effectif 2, 0 paire distincte, excédent 0","Coopérative Dravenne","effectif 3, 0 paire distincte, excédent 0","Coopérative Gravelune","effectif 3, 0 paire distincte, excédent 0","Coopérative Morvalle","effectif 3, 0 paire distincte, excédent 0","Coopérative Rossolde","effectif 4, 0 paire distincte, excédent 0","Fabrique Ivoranche","effectif 3, 0 paire distincte, excédent 0","Fabrique Morvalle","effectif 1, 0 paire distincte, excédent 0","Fabrique Ulvardes","effectif 3, 0 paire distincte, excédent 0","Filature Dravenne","effectif 1, 0 paire distincte, excédent 0","Filature Olbrecq","effectif 2, 0 paire distincte, excédent 0","Filature Wassorel","effectif 3, 0 paire distincte, excédent 0","Fonderie Aubrenc","effectif 2, 0 paire distincte, excédent 0","Fonderie Ivoranche","effectif 2, 0 paire distincte, excédent 0","Fonderie Kalvenne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Falvigne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Hostrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Aubrenc","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ivoranche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Jolvane","effectif 1, 0 paire distincte, excédent 0","Menuiserie Nervanche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Olbrecq","effectif 4, 0 paire distincte, excédent 0","Menuiserie Tavrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ulvardes","effectif 6, 0 paire distincte, excédent 0","Menuiserie Wassorel","effectif 1, 0 paire distincte, excédent 0","Papeterie Estrolle","effectif 3, 0 paire distincte, excédent 0","Papeterie Wassorel","effectif 1, 0 paire distincte, excédent 0","Tannerie Aubrenc","effectif 3, 0 paire distincte, excédent 0","Tannerie Falvigne","effectif 1, 0 paire distincte, excédent 0","Tannerie Olbrecq","effectif 1, 0 paire distincte, excédent 0","Tannerie Quimvaux","effectif 1, 0 paire distincte, excédent 0","Verrerie Gravelune","effectif 1, 0 paire distincte, excédent 0","Verrerie Ivoranche","effectif 6, 0 paire distincte, excédent 0","Verrerie Nervanche","effectif 1, 0 paire distincte, excédent 0","Verrerie Olbrecq","effectif 2, 0 paire distincte, excédent 0","Verrerie Pravette","effectif 2, 0 paire distincte, excédent 0","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Imprimerie Yzorne » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 4","Table 12","Table 16","Table 20","Table 26","Table 33","Table 9","Table 10","Table 15","Table 24","Table 25","Table 29","Table 31","Table 32","Table 1","Table 2","Table 5","Table 6","Table 7","Table 8","Table 13","Table 14","Table 17","Table 18","Table 19","Table 21","Table 22","Table 23","Table 27","Table 28","Table 30","Table 3","Table 11","Tour 1","Tour 2","Tour 3","Tour 4","2","1","0","0","1","2","0","0","0","0","2","1","0","0","1","2","0","2","0","1","0","1","0","2","0","0","2","0","0","1","0","1","1","1","0","0","0","1","1","0","0","1","1","0","1","0","1","0","0","1","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","1","0","0","0","0","1","0","0","0","0","0","1","0","1","0","0","0","0","0","1","0","0","0","1","1","0","0","0","1","0","0","0","0","0","1","0","0","1","0","0","0","0","0","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","0","0","0","0","0","0","La table 4 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 100 sur 103","Suivantes","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Samuel Cloveval","Menuiserie Ulvardes","Hélène Bralmeval","Brasserie Dravenne","3 fois","Voir au tour 3","Tour 1, table 23","Tour 3, table 15","Tour 4, table 32","Hugo Fralvançon","Brasserie Wassorel","Léa Fralvault","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 11","Tour 3, table 2","Hugo Fralvançon","Brasserie Wassorel","Louise Quilmançon","Menuiserie Estrolle","2 fois","Voir au tour 3","Tour 1, table 13","Tour 3, table 2","Zoé WAMMERWOLM-MAWWEMMEL","Menuiserie Ulvardes","Catherine Hulveron","Coopérative Rossolde","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 15","Catherine Urvesson","Fabrique Ulvardes","Olivier Bralmançon","Comptoir Lavorneau","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 6","Karim Hulvivet","Fonderie Xandrelle","Guillaume Luskichon","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Léa Fralvault","Fonderie Sorbagne","Lucie Tolvesson","Filature Zelvaine","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 11","Léa Fralvault","Fonderie Sorbagne","Samuel Abrevard","Filature Dravenne","2 fois","Voir au tour 4","Tour 2, table 11","Tour 4, table 4","Fatima Obrivet","Fabrique Sorbagne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 29","Philippe Voskeval","Menuiserie Estrolle","Émilie Korvard","Verrerie Vaubrenne","2 fois","Voir au tour 3","Tour 2, table 6","Tour 3, table 6","Zoé Dulveval","Menuiserie Quimvaux","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 13","Paul Korveux","Filature Olbrecq","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 1, table 15","Tour 3, table 5","Paul Korveux","Filature Olbrecq","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 3","Thomas Rozvotte","Verrerie Ivoranche","Antoine Quilmeron","Fabrique Kalvenne","2 fois","Voir au tour 4","Tour 3, table 33","Tour 4, table 26","Isabelle Bralmumet","Verrerie Aubrenc","Félix Korveval","Tannerie Nervanche","2 fois","Voir au tour 2","Tour 1, table 19","Tour 2, table 28","Isabelle Bralmumet","Verrerie Aubrenc","Louis Mirveron","Filature Wassorel","2 fois","Voir au tour 4","Tour 3, table 22","Tour 4, table 16","Simon Mirvivet","Ateliers Ivoranche","Hélène Gorzumet","Fonderie Aubrenc","2 fois","Voir au tour 3","Tour 1, table 9","Tour 3, table 18","Lucie Voskeux","Coopérative Morvalle","Samuel Cloveval","Menuiserie Ulvardes","2 fois","Voir au tour 3","Tour 2, table 14","Tour 3, table 15","Fatima Korvouze","Ateliers Tavrenne","Olivier Jusvançon","Brasserie Morvalle","2 fois","Voir au tour 3","Tour 2, table 3","Tour 3, table 3","Étienne Fralvichon","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 1, table 21","Tour 4, table 33","Louise Quilmançon","Menuiserie Estrolle","Paul Obrichon","Ateliers Rossolde","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 21","Louise Quilmançon","Menuiserie Estrolle","Étienne Eskesson","Menuiserie Ulvardes","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 7","Pierre Abreveron","Ateliers Rossolde","Manon Tolveron","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 5","Tour 3, table 5","Léa Tolvande","Ateliers Rossolde","Anne Abrevesson","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 14","Antoine Quilmeron","Fabrique Kalvenne","Samuel Bralmeux","Ateliers Rossolde","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 33","Michel Eskeux","Papeterie Wassorel","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 21","Louise Hulvault","Coopérative Jolvane","Karim Fralveval","Coopérative Gravelune","2 fois","Voir au tour 4","Tour 3, table 24","Tour 4, table 4","Catherine Hulveron","Coopérative Rossolde","Alexandre Korvotte","Menuiserie Nervanche","2 fois","Voir au tour 4","Tour 3, table 15","Tour 4, table 15","François Ivrivet","Menuiserie Sorbagne","François Gorzichon","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 32","Tour 4, table 32","Claire Fralvivet","Imprimerie Yzorne","Étienne Selvouze","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 14","Tour 3, table 27","Karim Gorzesson","Papeterie Ulvardes","Sophie Clovard","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 1, table 20","Tour 4, table 12","Manon Urvançon","Ateliers Tavrenne","Guillaume Tolvignac","Menuiserie Sorbagne","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Sylvie Quilmande","Imprimerie Yzorne","Antoine Bralmault","Fabrique Sorbagne","2 fois","Voir au tour 4","Tour 1, table 4","Tour 4, table 4","Sylvie Quilmande","Imprimerie Yzorne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 14","Sylvie Quilmande","Imprimerie Yzorne","Hélène Rozveval","Comptoir Ivoranche","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 4","Amina Pruvesson","Fonderie Sorbagne","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 1, table 18","Tour 4, table 16","Amina Pruvesson","Fonderie Sorbagne","Léa Obrard","Comptoir Sorbagne","2 fois","Voir au tour 2","Tour 1, table 18","Tour 2, table 31","Lucie Quilmière","Fabrique Ivoranche","Anne Urvivet","Fonderie Kalvenne","2 fois","Voir au tour 2","Tour 1, table 21","Tour 2, table 9","Louis Selvivet","Menuiserie Hostrenne","Guillaume Hulvotte","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 2, table 25","Tour 4, table 25","Lucie Tolvesson","Filature Zelvaine","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 4","Tour 1, table 15","Tour 4, table 25","Olivier Quilmesson","Comptoir Gravelune","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 9","Gabriel Neskault","Menuiserie Tavrenne","Geneviève Abrevignac","Brasserie Morvalle","2 fois","Voir au tour 4","Tour 2, table 20","Tour 4, table 18","Gabriel Neskault","Menuiserie Tavrenne","François Clovotte","Coopérative Rossolde","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Gabriel Neskault","Menuiserie Tavrenne","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Olivier Jusvançon","Brasserie Morvalle","Hélène Selveux","Brasserie Lavorneau","2 fois","Voir au tour 4","Tour 1, table 24","Tour 4, table 25","Gabriel Pruveux","Papeterie Estrolle","Guillaume Obrançon","Papeterie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 31","Tour 4, table 27","Manon Clovière","Ateliers Ivoranche","Marc Vandergrolcquesmirtavelle-Ostrovaubelindigues","Tannerie Aubrenc","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 10","François Obrouze","Tannerie Olbrecq","Camille Tolvumet","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 31","Tour 3, table 31","Claire Gorzeron","Menuiserie Hostrenne","Guillaume Gorzivet","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 32","Tour 4, table 8","Hélène Luskumet","Brasserie Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 8","Louis Fralvande","Ateliers Rossolde","Philippe Ivroubre","Ateliers Tavrenne","2 fois","Voir au tour 4","Tour 1, table 19","Tour 4, table 19","Isabelle Korvichon","Menuiserie Ulvardes","Marie Dulvesson","Ateliers Cassorgue","2 fois","Voir au tour 4","Tour 1, table 7","Tour 4, table 10","Isabelle Korvichon","Menuiserie Ulvardes","Karim Clovivet","Fonderie Kalvenne","2 fois","Voir au tour 3","Tour 2, table 18","Tour 3, table 23","Fatima Tolvoubre","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 33","Zoé Gorzière","Menuiserie Olbrecq","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 2, table 7","Tour 3, table 25","Antoine Obreval","Ateliers Cassorgue","Alexandre Ivreux","Tannerie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 25","Tour 2, table 6","Antoine Obreval","Ateliers Cassorgue","Hugo Bralmouze","Tannerie Falvigne","2 fois","Voir au tour 4","Tour 3, table 23","Tour 4, table 23","Michel Korveron","Fonderie Sorbagne","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 8","Marie Dulvesson","Ateliers Cassorgue","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 3","Tour 2, table 16","Tour 3, table 17","Youssef Jusvard","Tannerie Aubrenc","Simon Hulvumet","Ateliers Ivoranche","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 21","Gabriel Mirvotte","Tannerie Belvarre","Paul Neskivet","Comptoir Jolvane","2 fois","Voir au tour 4","Tour 3, table 21","Tour 4, table 7","Marc Luskouze","Ateliers Rossolde","Isabelle Selvichon","Tannerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 21","Tour 3, table 8","Louis Hulvichon","Ateliers Falvigne","Nicolas Ivrichon","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 17","Tour 2, table 24","Pierre Pruveval","Comptoir Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 1, table 10","Tour 3, table 8","Geneviève Abrevignac","Brasserie Morvalle","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 7","Olivier Bralmançon","Comptoir Lavorneau","Véronique Jusvouze","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 6","Marc Luskoubre","Verrerie Vaubrenne","Thomas Quilmichon","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 33","Tour 4, table 5","Camille Jusvumet","Fonderie Estrolle","Guillaume Eskotte","Verrerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 27","Tour 3, table 11","Antoine Selvière","Coopérative Dravenne","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 1, table 11","Tour 3, table 9","Antoine Bralmault","Fabrique Sorbagne","Amina Rozvichon","Verrerie Olbrecq","2 fois","Voir au tour 3","Tour 2, table 4","Tour 3, table 4","Antoine Bralmault","Fabrique Sorbagne","Antoine Pruvouze","Imprimerie Yzorne","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 4","Émilie Abrevière","Imprimerie Yzorne","Fatima Hulvard","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 29","Émilie Abrevière","Imprimerie Yzorne","Geneviève Obresson","Coopérative Gravelune","2 fois","Voir au tour 3","Tour 1, table 29","Tour 3, table 29","Émilie Abrevière","Imprimerie Yzorne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 4","Tour 3, table 29","Tour 4, table 29","Olivier Tolvichon","Fonderie Xandrelle","Étienne Gorzeval","Papeterie Ulvardes","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 6","Félix Korveval","Tannerie Nervanche","Thomas Selvignac","Brasserie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 28","Tour 3, table 28","Émilie Dulvichon","Menuiserie Ulvardes","Lucie Voskeron","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Émilie Dulvichon","Menuiserie Ulvardes","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Claire Jusvivet","Imprimerie Yzorne","Hugo Voskumet","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 20","Tour 3, table 20","Amina Quilmault","Coopérative Jolvane","Philippe Abreveval","Ateliers Falvigne","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 4","Hélène Gorzumet","Fonderie Aubrenc","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 4","Tour 1, table 9","Tour 4, table 21","Sophie Ivrault","Coopérative Morvalle","Philippe Fralvignac","Menuiserie Estrolle","2 fois","Voir au tour 4","Tour 3, table 13","Tour 4, table 26","Nicolas Korvande","Comptoir Sorbagne","Chantal Obrignac","Imprimerie Yzorne","2 fois","Voir au tour 3","Tour 2, table 27","Tour 3, table 22","Fatima Urvignac","Ateliers Aubrenc","Claire Bralmotte","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 21","François Clovotte","Coopérative Rossolde","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Philippe Dulvoubre","Brasserie Belvarre","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 2","Tour 1, table 9","Tour 2, table 10","Chantal Mirvumet","Menuiserie Gravelune","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 29","Camille Neskard","Menuiserie Gravelune","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 2, table 16","Tour 4, table 16","Sophie Pruvière","Ateliers Rossolde","Raphaël Jusvault","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 16","Tour 2, table 2","Fatima Abrevançon","Tannerie Nervanche","Caroline Jusvoubre","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 13","Fatima Abrevançon","Tannerie Nervanche","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 13","Tour 4, table 13","Karim Clovançon","Fabrique Sorbagne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 17","Félix Eskouze","Filature Zelvaine","Sylvie Abreveux","Comptoir Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 19","Olivier Korvière","Ateliers Falvigne","Manon Pruvivet","Menuiserie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 20","Tour 2, table 10","Félix Voskande","Ateliers Falvigne","Guillaume Mirvoubre","Comptoir Sorbagne","2 fois","Voir au tour 4","Tour 2, table 7","Tour 4, table 7","Lucie Voskeron","Verrerie Ivoranche","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Thomas Selvignac","Brasserie Sorbagne","Étienne Voskançon","Menuiserie Olbrecq","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 28","Jean Neskeron","Filature Zelvaine","Zoé Mirveval","Fabrique Kalvenne","2 fois","Voir au tour 2","Tour 1, table 11","Tour 2, table 33","Sophie Clovard","Brasserie Belvarre","Marc Rozvouze","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 12","Alexandre Eskançon","Menuiserie Hostrenne","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 1, table 17","Tour 3, table 25","Qui a rencontré qui","La matrice n'est pas dessinée : 260 personnes dépassent le seuil de 40. La fiche de chaque personne porte ses rencontres.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","3","4","50","100","150","200","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 3 animateurs rencontrés, 29 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucune personne présente ne porte d'étiquette : seule la colonne des appartenances se dessine.","Appartenances rencontrées en animant","le moins varié","17","le plus varié","27","au minimum","1","Diversité rencontrée en animant, sur la soirée","0","10","20","François Ivrivet","4 tours animés, 23 personnes rencontrées en animant","Samuel Bralmeux","4 tours animés, 23 personnes rencontrées en animant","Geneviève Dulvumet","4 tours animés, 24 personnes rencontrées en animant","François Obrouze","4 tours animés, 23 personnes rencontrées en animant","Antoine Bralmault","4 tours animés, 25 personnes rencontrées en animant","Catherine Hulveron","4 tours animés, 26 personnes rencontrées en animant","Camille Neskard","4 tours animés, 27 personnes rencontrées en animant","Guillaume Luskichon","4 tours animés, 27 personnes rencontrées en animant","Philippe Ivroubre","4 tours animés, 27 personnes rencontrées en animant","Marie Urvard","4 tours animés, 28 personnes rencontrées en animant","Sophie Pruvotte","4 tours animés, 28 personnes rencontrées en animant","Thomas Selvignac","4 tours animés, 26 personnes rencontrées en animant","Philippe Voskeval","4 tours animés, 27 personnes rencontrées en animant","Manon Urvançon","4 tours animés, 27 personnes rencontrées en animant","Marc Vandergrolcquesmirta…","4 tours animés, 27 personnes rencontrées en animant","Fatima Abrevançon","4 tours animés, 26 personnes rencontrées en animant","Claire Jusvivet","4 tours animés, 27 personnes rencontrées en animant","Félix Voskande","4 tours animés, 27 personnes rencontrées en animant","Louise Neskichon","4 tours animés, 28 personnes rencontrées en animant","Gabriel Abrevault","4 tours animés, 28 personnes rencontrées en animant","Émilie Abrevière","4 tours animés, 25 personnes rencontrées en animant","Youssef Jusvard","4 tours animés, 27 personnes rencontrées en animant","Manon Tolveron","4 tours animés, 27 personnes rencontrées en animant","Hugo Bralmouze","4 tours animés, 27 personnes rencontrées en animant","Marie Bralmesson","4 tours animés, 28 personnes rencontrées en animant","Louis Selvivet","4 tours animés, 27 personnes rencontrées en animant","Michel Korveron","4 tours animés, 27 personnes rencontrées en animant","Youssef Neskière","4 tours animés, 28 personnes rencontrées en animant","Jean Fralvumet","4 tours animés, 28 personnes rencontrées en animant","Fatima Korvouze","4 tours animés, 27 personnes rencontrées en animant","Gabriel Ivreval","4 tours animés, 28 personnes rencontrées en animant","Guillaume Dulvivet","4 tours animés, 28 personnes rencontrées en animant","Étienne Tolvançon","4 tours animés, 28 personnes rencontrées en animant","Appartenances rencontrées en animant","Appartenances rencontrées en animant","Le moins varié rencontre 17 appartenances en animant ; 1 animateur au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","2 000 mouvements évalués sur 2 000","durée observée 2,5 s","1 cœur de calcul","cadence 4 000 mouvements par seconde","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","5","10","15","20","1","10","100","2 000","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 21 ; au dernier : 23.","écart au plafond a priori, aux points de relevé","0","2","4","6","1","10","100","2 000","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 6 ; au dernier : 4.","excédent de collisions, aux points de relevé","0","1","2","3","4","1","10","100","2 000","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 3 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","20","40","60","1","10","100","2 000","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 67 ; au dernier : 52.","rencontres répétées, aux points de relevé","0","50","100","1","10","100","2 000","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 145 ; au dernier : 103.","redondance d'appartenance, aux points de relevé","0","500","1 000","1","10","100","2 000","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 1 298 ; au dernier : 1 288.","Une valeur a changé au dernier point de relevé, à 2 000 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"db2a5503c3ec5021e50bb1f1bd5d1d978b9af9eb00b89eea325f33723a36c7e1","etape":"10","etat":"15fb09087464cf5b429c79e33325a0cd64579f1c650d7fd7aeabf6c3cbf977c0","facteurEchelle":1,"fichier":"15-pas-de-matrice","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"f936fecf7b31e46cebecb896a16b2a8b624dbc82f1da6e2627adb29ddd5e186a"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-action-encre","ratio":8.29,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-encre","ratio":9.62,"role":"texte","seuil":4.5},{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Grande démonstration 1","260 participants","33 tables · 260 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 260 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","23","95 %","minimum 23 sur 24","chez François Ivrivet","plafond réalisé 24","plafond a priori 24","Personnes distinctes rencontrées, minimum : mobiles","24","Personnes distinctes rencontrées, minimum : ancrés","23","Collisions d'appartenance","Collisions cumulées (paire et tour)","52","Paires distinctes de même appartenance","52","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","103","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","29","99 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","17","chez François Ivrivet","borne de diversité 24","Redondance d'appartenance, somme Σ r(p)","1 288","Taux de diversité d(p), minimum","0,64","Manque et plafond a priori","Plus grand manque (personnes)","3","chez Marc Luskouze","131 personnes au manque maximal","plafond réalisé 27","Personnes à qui il en manque","131","Écart d'itinéraire maximal (personnes)","4","plancher 1","Écart au plafond a priori maximal (personnes)","4","Objectifs des tables et animateurs","Animateurs rencontrés, minimum","3","ne classe pas","chez Zoé WAMMERWOLM-MAWWEMMEL","borne des animateurs 4","Animateurs non rencontrés","29","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","10","20","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","Minimum 23 personnes rencontrées, 3 personnes au minimum, 131 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","La personne au rang 1, François Ivrivet, rencontre","95 %","minimum 23 sur 24","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Imprimerie Yzorne","effectif 12, 9 paires distinctes, excédent 0","Fabrique Sorbagne","effectif 11, 7 paires distinctes, excédent 0","Ateliers Falvigne","effectif 8, 3 paires distinctes, excédent 0","Ateliers Rossolde","effectif 11, 3 paires distinctes, excédent 0","Fonderie Estrolle","effectif 9, 3 paires distinctes, excédent 0","Verrerie Vaubrenne","effectif 10, 3 paires distinctes, excédent 0","Ateliers Tavrenne","effectif 8, 2 paires distinctes, excédent 0","Fonderie Xandrelle","effectif 6, 2 paires distinctes, excédent 0","Menuiserie Estrolle","effectif 9, 2 paires distinctes, excédent 0","Tannerie Nervanche","effectif 6, 2 paires distinctes, excédent 0","Ateliers Aubrenc","effectif 3, 1 paire distincte, excédent 0","Ateliers Cassorgue","effectif 3, 1 paire distincte, excédent 0","Brasserie Xandrelle","effectif 2, 1 paire distincte, excédent 0","Comptoir Gravelune","effectif 3, 1 paire distincte, excédent 0","Coopérative Jolvane","effectif 4, 1 paire distincte, excédent 0","Fabrique Kalvenne","effectif 3, 1 paire distincte, excédent 0","Filature Zelvaine","effectif 4, 1 paire distincte, excédent 0","Fonderie Sorbagne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Gravelune","effectif 3, 1 paire distincte, excédent 0","Menuiserie Hostrenne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Quimvaux","effectif 3, 1 paire distincte, excédent 0","Menuiserie Sorbagne","effectif 3, 1 paire distincte, excédent 0","Papeterie Hostrenne","effectif 2, 1 paire distincte, excédent 0","Papeterie Ulvardes","effectif 4, 1 paire distincte, excédent 0","Tannerie Belvarre","effectif 5, 1 paire distincte, excédent 0","Verrerie Aubrenc","effectif 2, 1 paire distincte, excédent 0","Ateliers Estrolle","effectif 3, 0 paire distincte, excédent 0","Ateliers Ivoranche","effectif 4, 0 paire distincte, excédent 0","Brasserie Belvarre","effectif 9, 0 paire distincte, excédent 0","Brasserie Dravenne","effectif 1, 0 paire distincte, excédent 0","Brasserie Lavorneau","effectif 2, 0 paire distincte, excédent 0","Brasserie Morvalle","effectif 2, 0 paire distincte, excédent 0","Brasserie Sorbagne","effectif 4, 0 paire distincte, excédent 0","Brasserie Wassorel","effectif 2, 0 paire distincte, excédent 0","Comptoir Ivoranche","effectif 1, 0 paire distincte, excédent 0","Comptoir Jolvane","effectif 3, 0 paire distincte, excédent 0","Comptoir Lavorneau","effectif 1, 0 paire distincte, excédent 0","Comptoir Sorbagne","effectif 4, 0 paire distincte, excédent 0","Comptoir Xandrelle","effectif 3, 0 paire distincte, excédent 0","Comptoir Yzorne","effectif 2, 0 paire distincte, excédent 0","Coopérative Dravenne","effectif 3, 0 paire distincte, excédent 0","Coopérative Gravelune","effectif 3, 0 paire distincte, excédent 0","Coopérative Morvalle","effectif 3, 0 paire distincte, excédent 0","Coopérative Rossolde","effectif 4, 0 paire distincte, excédent 0","Fabrique Ivoranche","effectif 3, 0 paire distincte, excédent 0","Fabrique Morvalle","effectif 1, 0 paire distincte, excédent 0","Fabrique Ulvardes","effectif 3, 0 paire distincte, excédent 0","Filature Dravenne","effectif 1, 0 paire distincte, excédent 0","Filature Olbrecq","effectif 2, 0 paire distincte, excédent 0","Filature Wassorel","effectif 3, 0 paire distincte, excédent 0","Fonderie Aubrenc","effectif 2, 0 paire distincte, excédent 0","Fonderie Ivoranche","effectif 2, 0 paire distincte, excédent 0","Fonderie Kalvenne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Falvigne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Hostrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Aubrenc","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ivoranche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Jolvane","effectif 1, 0 paire distincte, excédent 0","Menuiserie Nervanche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Olbrecq","effectif 4, 0 paire distincte, excédent 0","Menuiserie Tavrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ulvardes","effectif 6, 0 paire distincte, excédent 0","Menuiserie Wassorel","effectif 1, 0 paire distincte, excédent 0","Papeterie Estrolle","effectif 3, 0 paire distincte, excédent 0","Papeterie Wassorel","effectif 1, 0 paire distincte, excédent 0","Tannerie Aubrenc","effectif 3, 0 paire distincte, excédent 0","Tannerie Falvigne","effectif 1, 0 paire distincte, excédent 0","Tannerie Olbrecq","effectif 1, 0 paire distincte, excédent 0","Tannerie Quimvaux","effectif 1, 0 paire distincte, excédent 0","Verrerie Gravelune","effectif 1, 0 paire distincte, excédent 0","Verrerie Ivoranche","effectif 6, 0 paire distincte, excédent 0","Verrerie Nervanche","effectif 1, 0 paire distincte, excédent 0","Verrerie Olbrecq","effectif 2, 0 paire distincte, excédent 0","Verrerie Pravette","effectif 2, 0 paire distincte, excédent 0","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Imprimerie Yzorne » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 4","Table 12","Table 16","Table 20","Table 26","Table 33","Table 9","Table 10","Table 15","Table 24","Table 25","Table 29","Table 31","Table 32","Table 1","Table 2","Table 5","Table 6","Table 7","Table 8","Table 13","Table 14","Table 17","Table 18","Table 19","Table 21","Table 22","Table 23","Table 27","Table 28","Table 30","Table 3","Table 11","Tour 1","Tour 2","Tour 3","Tour 4","2","1","0","0","1","2","0","0","0","0","2","1","0","0","1","2","0","2","0","1","0","1","0","2","0","0","2","0","0","1","0","1","1","1","0","0","0","1","1","0","0","1","1","0","1","0","1","0","0","1","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","1","0","0","0","0","1","0","0","0","0","0","1","0","1","0","0","0","0","0","1","0","0","0","1","1","0","0","0","1","0","0","0","0","0","1","0","0","1","0","0","0","0","0","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","0","0","0","0","0","0","La table 4 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 100 sur 103","Suivantes","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Samuel Cloveval","Menuiserie Ulvardes","Hélène Bralmeval","Brasserie Dravenne","3 fois","Voir au tour 3","Tour 1, table 23","Tour 3, table 15","Tour 4, table 32","Hugo Fralvançon","Brasserie Wassorel","Léa Fralvault","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 11","Tour 3, table 2","Hugo Fralvançon","Brasserie Wassorel","Louise Quilmançon","Menuiserie Estrolle","2 fois","Voir au tour 3","Tour 1, table 13","Tour 3, table 2","Zoé WAMMERWOLM-MAWWEMMEL","Menuiserie Ulvardes","Catherine Hulveron","Coopérative Rossolde","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 15","Catherine Urvesson","Fabrique Ulvardes","Olivier Bralmançon","Comptoir Lavorneau","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 6","Karim Hulvivet","Fonderie Xandrelle","Guillaume Luskichon","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Léa Fralvault","Fonderie Sorbagne","Lucie Tolvesson","Filature Zelvaine","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 11","Léa Fralvault","Fonderie Sorbagne","Samuel Abrevard","Filature Dravenne","2 fois","Voir au tour 4","Tour 2, table 11","Tour 4, table 4","Fatima Obrivet","Fabrique Sorbagne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 29","Philippe Voskeval","Menuiserie Estrolle","Émilie Korvard","Verrerie Vaubrenne","2 fois","Voir au tour 3","Tour 2, table 6","Tour 3, table 6","Zoé Dulveval","Menuiserie Quimvaux","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 13","Paul Korveux","Filature Olbrecq","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 1, table 15","Tour 3, table 5","Paul Korveux","Filature Olbrecq","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 3","Thomas Rozvotte","Verrerie Ivoranche","Antoine Quilmeron","Fabrique Kalvenne","2 fois","Voir au tour 4","Tour 3, table 33","Tour 4, table 26","Isabelle Bralmumet","Verrerie Aubrenc","Félix Korveval","Tannerie Nervanche","2 fois","Voir au tour 2","Tour 1, table 19","Tour 2, table 28","Isabelle Bralmumet","Verrerie Aubrenc","Louis Mirveron","Filature Wassorel","2 fois","Voir au tour 4","Tour 3, table 22","Tour 4, table 16","Simon Mirvivet","Ateliers Ivoranche","Hélène Gorzumet","Fonderie Aubrenc","2 fois","Voir au tour 3","Tour 1, table 9","Tour 3, table 18","Lucie Voskeux","Coopérative Morvalle","Samuel Cloveval","Menuiserie Ulvardes","2 fois","Voir au tour 3","Tour 2, table 14","Tour 3, table 15","Fatima Korvouze","Ateliers Tavrenne","Olivier Jusvançon","Brasserie Morvalle","2 fois","Voir au tour 3","Tour 2, table 3","Tour 3, table 3","Étienne Fralvichon","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 1, table 21","Tour 4, table 33","Louise Quilmançon","Menuiserie Estrolle","Paul Obrichon","Ateliers Rossolde","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 21","Louise Quilmançon","Menuiserie Estrolle","Étienne Eskesson","Menuiserie Ulvardes","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 7","Pierre Abreveron","Ateliers Rossolde","Manon Tolveron","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 5","Tour 3, table 5","Léa Tolvande","Ateliers Rossolde","Anne Abrevesson","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 14","Antoine Quilmeron","Fabrique Kalvenne","Samuel Bralmeux","Ateliers Rossolde","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 33","Michel Eskeux","Papeterie Wassorel","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 21","Louise Hulvault","Coopérative Jolvane","Karim Fralveval","Coopérative Gravelune","2 fois","Voir au tour 4","Tour 3, table 24","Tour 4, table 4","Catherine Hulveron","Coopérative Rossolde","Alexandre Korvotte","Menuiserie Nervanche","2 fois","Voir au tour 4","Tour 3, table 15","Tour 4, table 15","François Ivrivet","Menuiserie Sorbagne","François Gorzichon","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 32","Tour 4, table 32","Claire Fralvivet","Imprimerie Yzorne","Étienne Selvouze","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 14","Tour 3, table 27","Karim Gorzesson","Papeterie Ulvardes","Sophie Clovard","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 1, table 20","Tour 4, table 12","Manon Urvançon","Ateliers Tavrenne","Guillaume Tolvignac","Menuiserie Sorbagne","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Sylvie Quilmande","Imprimerie Yzorne","Antoine Bralmault","Fabrique Sorbagne","2 fois","Voir au tour 4","Tour 1, table 4","Tour 4, table 4","Sylvie Quilmande","Imprimerie Yzorne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 14","Sylvie Quilmande","Imprimerie Yzorne","Hélène Rozveval","Comptoir Ivoranche","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 4","Amina Pruvesson","Fonderie Sorbagne","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 1, table 18","Tour 4, table 16","Amina Pruvesson","Fonderie Sorbagne","Léa Obrard","Comptoir Sorbagne","2 fois","Voir au tour 2","Tour 1, table 18","Tour 2, table 31","Lucie Quilmière","Fabrique Ivoranche","Anne Urvivet","Fonderie Kalvenne","2 fois","Voir au tour 2","Tour 1, table 21","Tour 2, table 9","Louis Selvivet","Menuiserie Hostrenne","Guillaume Hulvotte","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 2, table 25","Tour 4, table 25","Lucie Tolvesson","Filature Zelvaine","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 4","Tour 1, table 15","Tour 4, table 25","Olivier Quilmesson","Comptoir Gravelune","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 9","Gabriel Neskault","Menuiserie Tavrenne","Geneviève Abrevignac","Brasserie Morvalle","2 fois","Voir au tour 4","Tour 2, table 20","Tour 4, table 18","Gabriel Neskault","Menuiserie Tavrenne","François Clovotte","Coopérative Rossolde","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Gabriel Neskault","Menuiserie Tavrenne","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Olivier Jusvançon","Brasserie Morvalle","Hélène Selveux","Brasserie Lavorneau","2 fois","Voir au tour 4","Tour 1, table 24","Tour 4, table 25","Gabriel Pruveux","Papeterie Estrolle","Guillaume Obrançon","Papeterie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 31","Tour 4, table 27","Manon Clovière","Ateliers Ivoranche","Marc Vandergrolcquesmirtavelle-Ostrovaubelindigues","Tannerie Aubrenc","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 10","François Obrouze","Tannerie Olbrecq","Camille Tolvumet","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 31","Tour 3, table 31","Claire Gorzeron","Menuiserie Hostrenne","Guillaume Gorzivet","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 32","Tour 4, table 8","Hélène Luskumet","Brasserie Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 8","Louis Fralvande","Ateliers Rossolde","Philippe Ivroubre","Ateliers Tavrenne","2 fois","Voir au tour 4","Tour 1, table 19","Tour 4, table 19","Isabelle Korvichon","Menuiserie Ulvardes","Marie Dulvesson","Ateliers Cassorgue","2 fois","Voir au tour 4","Tour 1, table 7","Tour 4, table 10","Isabelle Korvichon","Menuiserie Ulvardes","Karim Clovivet","Fonderie Kalvenne","2 fois","Voir au tour 3","Tour 2, table 18","Tour 3, table 23","Fatima Tolvoubre","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 33","Zoé Gorzière","Menuiserie Olbrecq","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 2, table 7","Tour 3, table 25","Antoine Obreval","Ateliers Cassorgue","Alexandre Ivreux","Tannerie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 25","Tour 2, table 6","Antoine Obreval","Ateliers Cassorgue","Hugo Bralmouze","Tannerie Falvigne","2 fois","Voir au tour 4","Tour 3, table 23","Tour 4, table 23","Michel Korveron","Fonderie Sorbagne","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 8","Marie Dulvesson","Ateliers Cassorgue","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 3","Tour 2, table 16","Tour 3, table 17","Youssef Jusvard","Tannerie Aubrenc","Simon Hulvumet","Ateliers Ivoranche","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 21","Gabriel Mirvotte","Tannerie Belvarre","Paul Neskivet","Comptoir Jolvane","2 fois","Voir au tour 4","Tour 3, table 21","Tour 4, table 7","Marc Luskouze","Ateliers Rossolde","Isabelle Selvichon","Tannerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 21","Tour 3, table 8","Louis Hulvichon","Ateliers Falvigne","Nicolas Ivrichon","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 17","Tour 2, table 24","Pierre Pruveval","Comptoir Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 1, table 10","Tour 3, table 8","Geneviève Abrevignac","Brasserie Morvalle","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 7","Olivier Bralmançon","Comptoir Lavorneau","Véronique Jusvouze","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 6","Marc Luskoubre","Verrerie Vaubrenne","Thomas Quilmichon","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 33","Tour 4, table 5","Camille Jusvumet","Fonderie Estrolle","Guillaume Eskotte","Verrerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 27","Tour 3, table 11","Antoine Selvière","Coopérative Dravenne","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 1, table 11","Tour 3, table 9","Antoine Bralmault","Fabrique Sorbagne","Amina Rozvichon","Verrerie Olbrecq","2 fois","Voir au tour 3","Tour 2, table 4","Tour 3, table 4","Antoine Bralmault","Fabrique Sorbagne","Antoine Pruvouze","Imprimerie Yzorne","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 4","Émilie Abrevière","Imprimerie Yzorne","Fatima Hulvard","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 29","Émilie Abrevière","Imprimerie Yzorne","Geneviève Obresson","Coopérative Gravelune","2 fois","Voir au tour 3","Tour 1, table 29","Tour 3, table 29","Émilie Abrevière","Imprimerie Yzorne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 4","Tour 3, table 29","Tour 4, table 29","Olivier Tolvichon","Fonderie Xandrelle","Étienne Gorzeval","Papeterie Ulvardes","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 6","Félix Korveval","Tannerie Nervanche","Thomas Selvignac","Brasserie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 28","Tour 3, table 28","Émilie Dulvichon","Menuiserie Ulvardes","Lucie Voskeron","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Émilie Dulvichon","Menuiserie Ulvardes","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Claire Jusvivet","Imprimerie Yzorne","Hugo Voskumet","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 20","Tour 3, table 20","Amina Quilmault","Coopérative Jolvane","Philippe Abreveval","Ateliers Falvigne","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 4","Hélène Gorzumet","Fonderie Aubrenc","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 4","Tour 1, table 9","Tour 4, table 21","Sophie Ivrault","Coopérative Morvalle","Philippe Fralvignac","Menuiserie Estrolle","2 fois","Voir au tour 4","Tour 3, table 13","Tour 4, table 26","Nicolas Korvande","Comptoir Sorbagne","Chantal Obrignac","Imprimerie Yzorne","2 fois","Voir au tour 3","Tour 2, table 27","Tour 3, table 22","Fatima Urvignac","Ateliers Aubrenc","Claire Bralmotte","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 21","François Clovotte","Coopérative Rossolde","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Philippe Dulvoubre","Brasserie Belvarre","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 2","Tour 1, table 9","Tour 2, table 10","Chantal Mirvumet","Menuiserie Gravelune","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 29","Camille Neskard","Menuiserie Gravelune","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 2, table 16","Tour 4, table 16","Sophie Pruvière","Ateliers Rossolde","Raphaël Jusvault","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 16","Tour 2, table 2","Fatima Abrevançon","Tannerie Nervanche","Caroline Jusvoubre","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 13","Fatima Abrevançon","Tannerie Nervanche","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 13","Tour 4, table 13","Karim Clovançon","Fabrique Sorbagne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 17","Félix Eskouze","Filature Zelvaine","Sylvie Abreveux","Comptoir Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 19","Olivier Korvière","Ateliers Falvigne","Manon Pruvivet","Menuiserie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 20","Tour 2, table 10","Félix Voskande","Ateliers Falvigne","Guillaume Mirvoubre","Comptoir Sorbagne","2 fois","Voir au tour 4","Tour 2, table 7","Tour 4, table 7","Lucie Voskeron","Verrerie Ivoranche","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Thomas Selvignac","Brasserie Sorbagne","Étienne Voskançon","Menuiserie Olbrecq","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 28","Jean Neskeron","Filature Zelvaine","Zoé Mirveval","Fabrique Kalvenne","2 fois","Voir au tour 2","Tour 1, table 11","Tour 2, table 33","Sophie Clovard","Brasserie Belvarre","Marc Rozvouze","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 12","Alexandre Eskançon","Menuiserie Hostrenne","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 1, table 17","Tour 3, table 25","Qui a rencontré qui","La matrice n'est pas dessinée : 260 personnes dépassent le seuil de 44. La fiche de chaque personne porte ses rencontres.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","3","4","50","100","150","200","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 3 animateurs rencontrés, 29 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucune personne présente ne porte d'étiquette : seule la colonne des appartenances se dessine.","Appartenances rencontrées en animant","le moins varié","17","le plus varié","27","au minimum","1","Diversité rencontrée en animant, sur la soirée","0","10","20","François Ivrivet","4 tours animés, 23 personnes rencontrées en animant","Samuel Bralmeux","4 tours animés, 23 personnes rencontrées en animant","Geneviève Dulvumet","4 tours animés, 24 personnes rencontrées en animant","François Obrouze","4 tours animés, 23 personnes rencontrées en animant","Antoine Bralmault","4 tours animés, 25 personnes rencontrées en animant","Catherine Hulveron","4 tours animés, 26 personnes rencontrées en animant","Camille Neskard","4 tours animés, 27 personnes rencontrées en animant","Guillaume Luskichon","4 tours animés, 27 personnes rencontrées en animant","Philippe Ivroubre","4 tours animés, 27 personnes rencontrées en animant","Marie Urvard","4 tours animés, 28 personnes rencontrées en animant","Sophie Pruvotte","4 tours animés, 28 personnes rencontrées en animant","Thomas Selvignac","4 tours animés, 26 personnes rencontrées en animant","Philippe Voskeval","4 tours animés, 27 personnes rencontrées en animant","Manon Urvançon","4 tours animés, 27 personnes rencontrées en animant","Marc Vandergrolcquesmir…","4 tours animés, 27 personnes rencontrées en animant","Fatima Abrevançon","4 tours animés, 26 personnes rencontrées en animant","Claire Jusvivet","4 tours animés, 27 personnes rencontrées en animant","Félix Voskande","4 tours animés, 27 personnes rencontrées en animant","Louise Neskichon","4 tours animés, 28 personnes rencontrées en animant","Gabriel Abrevault","4 tours animés, 28 personnes rencontrées en animant","Émilie Abrevière","4 tours animés, 25 personnes rencontrées en animant","Youssef Jusvard","4 tours animés, 27 personnes rencontrées en animant","Manon Tolveron","4 tours animés, 27 personnes rencontrées en animant","Hugo Bralmouze","4 tours animés, 27 personnes rencontrées en animant","Marie Bralmesson","4 tours animés, 28 personnes rencontrées en animant","Louis Selvivet","4 tours animés, 27 personnes rencontrées en animant","Michel Korveron","4 tours animés, 27 personnes rencontrées en animant","Youssef Neskière","4 tours animés, 28 personnes rencontrées en animant","Jean Fralvumet","4 tours animés, 28 personnes rencontrées en animant","Fatima Korvouze","4 tours animés, 27 personnes rencontrées en animant","Gabriel Ivreval","4 tours animés, 28 personnes rencontrées en animant","Guillaume Dulvivet","4 tours animés, 28 personnes rencontrées en animant","Étienne Tolvançon","4 tours animés, 28 personnes rencontrées en animant","Appartenances rencontrées en animant","Appartenances rencontrées en animant","Le moins varié rencontre 17 appartenances en animant ; 1 animateur au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","2 000 mouvements évalués sur 2 000","durée observée 2,5 s","1 cœur de calcul","cadence 4 000 mouvements par seconde","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","5","10","15","20","1","10","100","2 000","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 21 ; au dernier : 23.","écart au plafond a priori, aux points de relevé","0","2","4","6","1","10","100","2 000","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 6 ; au dernier : 4.","excédent de collisions, aux points de relevé","0","1","2","3","4","1","10","100","2 000","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 3 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","20","40","60","1","10","100","2 000","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 67 ; au dernier : 52.","rencontres répétées, aux points de relevé","0","50","100","1","10","100","2 000","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 145 ; au dernier : 103.","redondance d'appartenance, aux points de relevé","0","500","1 000","1","10","100","2 000","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 1 298 ; au dernier : 1 288.","Une valeur a changé au dernier point de relevé, à 2 000 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"b76e44dd940056ebdb2b7d519e4d74d2ba55ee03dfdbecc0ccaca32af965fb93","etape":"10","etat":"ccdfbf3cc50cf887b1f29019f0b5961f4e09bc6fe29b221feffe100e2792e625","facteurEchelle":1,"fichier":"15a-qualite-objectifs","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"4c0fde51e2f785f124149ff21bb942ee698709b658e5e9289c5e9f7cf6cb0848"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-reste","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-reste","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.02,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Soirée d’essai","14 participants","3 tables · 28 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 9, vue seule","Revenir au placement retenu","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 13 personnes, 1 exclue à part.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","9","81 %","minimum 9 sur 11","chez Ysaline Sablonnet","plafond réalisé 11","plafond a priori 11","Personnes distinctes rencontrées, minimum : mobiles","9","Personnes distinctes rencontrées, minimum : ancrés","9","Collisions d'appartenance","Collisions cumulées (paire et tour)","19","plancher 8","Paires distinctes de même appartenance","13","plancher 2","Excédent de collisions (retrouvailles au-delà de la première)","6","Rencontres répétées et retours","Rencontres répétées choisies (paires)","33","0 imposée, à part","Rencontres d'une même paire, au plus","4","Retours choisis à une table déjà occupée","16","6 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","3","chez Basile Lanterneau","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","75","Taux de diversité d(p), minimum","0,30","Manque et plafond a priori","Plus grand manque (personnes)","2","chez Ysaline Sablonnet","11 personnes au manque maximal","plafond réalisé 11","Personnes à qui il en manque","11","Écart d'itinéraire maximal (personnes)","1","Écart au plafond a priori maximal (personnes)","3","Objectifs des tables et animateurs","Personnes jamais servies","0","ne classe pas","Plus de tours hors objectif d'une personne","2","ne classe pas","Tours hors objectif (personne et tour)","3","75 % des tours possibles servis","0 personne jamais servie","Tours selon l'objectif s(p), minimum","2","50 %","minimum 2 sur 4","chez Gaspard Marbrelle","4 tours possibles","Animateurs rencontrés, minimum","1","ne classe pas","chez Bertille Cressonnier","borne des animateurs 2","Animateurs non rencontrés","2","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","5","10","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","partiellement fixé","Minimum 9 personnes rencontrées, 2 personnes au minimum, 11 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","partiellement fixé","La personne au rang 1, Ysaline Sablonnet, rencontre","81 %","minimum 9 sur 11","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Chœur de l’Anse","effectif 4, 5 paires distinctes, excédent 3","Société des Hérons","effectif 4, 5 paires distinctes, excédent 2","Cercle des Saules","effectif 3, 3 paires distinctes, excédent 1","prouvé inévitable","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Chœur de l’Anse » : 3 collisions.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 3","Table 2","Tour 1","Tour 2","Tour 3","Tour 4","7","7","7","8","8","7","7","7","7","6","6","7","La table 1 porte la case la plus haute : 8.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 33 sur 33","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Anselme Givrecœur","Apolline Coudraie","Chœur de l’Anse","4 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 3","Tour 3, table 2","Tour 4, table 1","Basile Lanterneau","n° 9","Chœur de l’Anse","Brunœil","Cercle des Saules","4 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Tour 3, table 3","Tour 4, table 3","Basile Lanterneau","n° 1","Chœur de l’Anse","Côme Fenouillet","Société des Hérons","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Tour 4, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Iris Ombrelle","3 fois","Voir au tour 3","Tour 2, table 1","Tour 3, table 1","Tour 4, table 1","Capucine Pommerel","Société des Hérons","Iris Ombrelle","3 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 1","Tour 4, table 1","Gaspard Marbrelle","Cercle des Saules","Anselme Givrecœur","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 3","Tour 3, table 2","Gaspard Marbrelle","Cercle des Saules","Apolline Coudraie","Chœur de l’Anse","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 3","Tour 3, table 2","Côme Fenouillet","Société des Hérons","Basile Lanterneau","n° 9","Chœur de l’Anse","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Tour 3, table 3","Côme Fenouillet","Société des Hérons","Brunœil","Cercle des Saules","3 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Tour 3, table 3","Faustine Ormelin","Société des Hérons","Iris Ombrelle","3 fois","Voir au tour 2","Tour 1, table 2","Tour 2, table 1","Tour 3, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Capucine Pommerel","Société des Hérons","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Anselme Givrecœur","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Apolline Coudraie","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Basile Lanterneau","n° 9","Chœur de l’Anse","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Brunœil","Cercle des Saules","2 fois","Voir au tour 2","Tour 1, table 1","Tour 2, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Faustine Ormelin","Société des Hérons","2 fois","Voir au tour 3","Tour 2, table 1","Tour 3, table 1","Basile Lanterneau","n° 1","Chœur de l’Anse","Bertille Cressonnier","Cercle des Saules","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 1","Capucine Pommerel","Société des Hérons","Anselme Givrecœur","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 1","Capucine Pommerel","Société des Hérons","Apolline Coudraie","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 1","Capucine Pommerel","Société des Hérons","Faustine Ormelin","Société des Hérons","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 1","Gaspard Marbrelle","Cercle des Saules","Ysaline Sablonnet","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 3","Gaspard Marbrelle","Cercle des Saules","Basile Lanterneau","n° 9","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 3","Gaspard Marbrelle","Cercle des Saules","Brunœil","Cercle des Saules","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 3","Ysaline Sablonnet","Chœur de l’Anse","Basile Lanterneau","n° 9","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 3, table 3","Tour 4, table 3","Ysaline Sablonnet","Chœur de l’Anse","Brunœil","Cercle des Saules","2 fois","Voir au tour 4","Tour 3, table 3","Tour 4, table 3","Ysaline Sablonnet","Chœur de l’Anse","Edgar Ardoisier","Société des Hérons","2 fois","Voir au tour 4","Tour 1, table 3","Tour 4, table 3","Anselme Givrecœur","Côme Fenouillet","Société des Hérons","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 1","Côme Fenouillet","Société des Hérons","Apolline Coudraie","Chœur de l’Anse","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 1","Côme Fenouillet","Société des Hérons","Iris Ombrelle","2 fois","Voir au tour 4","Tour 2, table 1","Tour 4, table 1","Basile Lanterneau","n° 9","Chœur de l’Anse","Faustine Ormelin","Société des Hérons","2 fois","Voir au tour 4","Tour 2, table 1","Tour 4, table 3","Brunœil","Cercle des Saules","Faustine Ormelin","Société des Hérons","2 fois","Voir au tour 4","Tour 2, table 1","Tour 4, table 3","Faustine Ormelin","Société des Hérons","Edgar Ardoisier","Société des Hérons","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 3","Edgar Ardoisier","Société des Hérons","Bertille Cressonnier","Cercle des Saules","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 1","Qui a rencontré qui","Qui a rencontré qui","1. Ysaline Sablonnet","2. Edgar Ardoisier","3. Capucine Pommerel","4. Anselme Givrecœur","5. Apolline Coudraie","6. Faustine Ormelin","7. Iris Ombrelle","8. Gaspard Marbrelle","9. Côme Fenouillet","10. Basile Lanterneau (n° 9)","11. Brunœil","12. Basile Lanterneau (n° 1)","13. Bertille Cressonnier","1","2","3","4","5","6","7","8","9","10","11","12","13","2","1","1","1","1","0","2","1","2","2","0","0","2","1","0","0","2","1","1","0","1","1","1","2","1","1","2","2","2","3","1","1","0","0","2","1","1","0","2","4","0","1","3","2","1","1","2","1","1","0","2","4","0","1","3","2","1","1","2","1","1","2","2","0","0","3","1","1","2","2","2","1","0","1","3","1","1","3","0","2","1","1","3","1","2","1","1","3","3","1","0","1","2","2","1","1","1","0","1","2","2","1","2","1","3","3","3","1","2","1","0","1","1","2","1","2","3","4","2","1","2","1","0","1","1","2","1","2","3","4","2","1","0","1","2","2","2","2","3","1","3","2","2","2","0","2","1","1","1","1","1","1","1","1","1","2","Chaque case porte le nombre de rencontres de la paire. 33 paires choisies se revoient, la plus revue 4 fois.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Personnes jamais servies","Chaque personne concernée est servie à un tour au moins.","75 % des tours possibles servis","0 personne jamais servie","9 servis sur 12 possibles","3 tours hors objectif, plancher 0","Tours hors objectif, tour par tour","0","1","2","Tour 2","10 assis sans table possible","Tour 1","10 assis sans table possible","Tour 3","10 assis sans table possible","Tour 4","10 assis sans table possible","reste","prouvé inévitable","reste","En tête, le tour 2, au plus grand reste : 2 au-delà de son plancher, sur 2 tours hors objectif.","Tour 2","33 %","1 servi sur 3 possibles","Tour 1","100 %","3 servis sur 3 possibles","Tour 3","100 %","3 servis sur 3 possibles","Tour 4","66 %","2 servis sur 3 possibles","Voir le tableau","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","2","4","6","8","10","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 1 animateur rencontré, 2 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Appartenances rencontrées en animant","le moins varié","3","le plus varié","3","au minimum","2","Étiquettes rencontrées en animant","le moins varié","3","le plus varié","3","au minimum","2","Diversité rencontrée en animant, sur la soirée","Appartenances rencontrées en animant","0","1","2","3","Étiquettes rencontrées en animant","0","1","2","3","Ysaline Sablonnet","4 tours animés, 9 personnes rencontrées en animant","Basile Lanterneau","4 tours animés, 11 personnes rencontrées en animant","Le moins varié rencontre 3 appartenances en animant ; 2 animateurs au minimum. Le moins varié rencontre 3 étiquettes en animant ; 2 animateurs au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","300 mouvements évalués sur 300","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","8","1","10","100","300","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 0 ; au dernier : 9.","écart au plafond a priori, aux points de relevé","0","5","10","1","10","100","300","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 11 ; au dernier : 3.","excédent de collisions, aux points de relevé","0","5","10","15","1","10","100","300","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 19 ; au dernier : 6.","collisions cumulées, aux points de relevé","0","10","20","30","1","10","100","300","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 30 ; au dernier : 19.","tours hors objectif, aux points de relevé","0","1","2","3","1","10","100","300","Mouvements évalués, échelle logarithmique","tours hors objectif","tours hors objectif","Au premier point de relevé, tours hors objectif : 1 ; au dernier : 3.","rencontres répétées, aux points de relevé","0","20","40","1","10","100","300","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 55 ; au dernier : 33.","redondance d'appartenance, aux points de relevé","0","20","40","60","1","10","100","300","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 64 ; au dernier : 75.","Aucune valeur n'a changé entre 100 et 300 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"4c2da4215ad1d6dcd2e7c11045e2889743cee7bddaf9488c8699d9906c4d41bd","etape":"10","etat":"15fb09087464cf5b429c79e33325a0cd64579f1c650d7fd7aeabf6c3cbf977c0","facteurEchelle":1,"fichier":"15b-qualite-animateurs","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"d12cd172d65a5bcd6fa1c6d0b120e44fe1d41483528f08c25c7acd4bf79f396a"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":3.93,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-borne","ratio":4.96,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Grande démonstration 1","260 participants","33 tables · 260 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 260 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","23","95 %","minimum 23 sur 24","chez François Ivrivet","plafond réalisé 24","plafond a priori 24","Personnes distinctes rencontrées, minimum : mobiles","24","Personnes distinctes rencontrées, minimum : ancrés","23","Collisions d'appartenance","Collisions cumulées (paire et tour)","52","Paires distinctes de même appartenance","52","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","103","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","29","99 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","17","chez François Ivrivet","borne de diversité 24","Redondance d'appartenance, somme Σ r(p)","1 288","Taux de diversité d(p), minimum","0,64","Manque et plafond a priori","Plus grand manque (personnes)","3","chez Marc Luskouze","131 personnes au manque maximal","plafond réalisé 27","Personnes à qui il en manque","131","Écart d'itinéraire maximal (personnes)","4","plancher 1","Écart au plafond a priori maximal (personnes)","4","Objectifs des tables et animateurs","Animateurs rencontrés, minimum","3","ne classe pas","chez Zoé WAMMERWOLM-MAWWEMMEL","borne des animateurs 4","Animateurs non rencontrés","29","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","10","20","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","Minimum 23 personnes rencontrées, 3 personnes au minimum, 131 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","La personne au rang 1, François Ivrivet, rencontre","95 %","minimum 23 sur 24","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Imprimerie Yzorne","effectif 12, 9 paires distinctes, excédent 0","Fabrique Sorbagne","effectif 11, 7 paires distinctes, excédent 0","Ateliers Falvigne","effectif 8, 3 paires distinctes, excédent 0","Ateliers Rossolde","effectif 11, 3 paires distinctes, excédent 0","Fonderie Estrolle","effectif 9, 3 paires distinctes, excédent 0","Verrerie Vaubrenne","effectif 10, 3 paires distinctes, excédent 0","Ateliers Tavrenne","effectif 8, 2 paires distinctes, excédent 0","Fonderie Xandrelle","effectif 6, 2 paires distinctes, excédent 0","Menuiserie Estrolle","effectif 9, 2 paires distinctes, excédent 0","Tannerie Nervanche","effectif 6, 2 paires distinctes, excédent 0","Ateliers Aubrenc","effectif 3, 1 paire distincte, excédent 0","Ateliers Cassorgue","effectif 3, 1 paire distincte, excédent 0","Brasserie Xandrelle","effectif 2, 1 paire distincte, excédent 0","Comptoir Gravelune","effectif 3, 1 paire distincte, excédent 0","Coopérative Jolvane","effectif 4, 1 paire distincte, excédent 0","Fabrique Kalvenne","effectif 3, 1 paire distincte, excédent 0","Filature Zelvaine","effectif 4, 1 paire distincte, excédent 0","Fonderie Sorbagne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Gravelune","effectif 3, 1 paire distincte, excédent 0","Menuiserie Hostrenne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Quimvaux","effectif 3, 1 paire distincte, excédent 0","Menuiserie Sorbagne","effectif 3, 1 paire distincte, excédent 0","Papeterie Hostrenne","effectif 2, 1 paire distincte, excédent 0","Papeterie Ulvardes","effectif 4, 1 paire distincte, excédent 0","Tannerie Belvarre","effectif 5, 1 paire distincte, excédent 0","Verrerie Aubrenc","effectif 2, 1 paire distincte, excédent 0","Ateliers Estrolle","effectif 3, 0 paire distincte, excédent 0","Ateliers Ivoranche","effectif 4, 0 paire distincte, excédent 0","Brasserie Belvarre","effectif 9, 0 paire distincte, excédent 0","Brasserie Dravenne","effectif 1, 0 paire distincte, excédent 0","Brasserie Lavorneau","effectif 2, 0 paire distincte, excédent 0","Brasserie Morvalle","effectif 2, 0 paire distincte, excédent 0","Brasserie Sorbagne","effectif 4, 0 paire distincte, excédent 0","Brasserie Wassorel","effectif 2, 0 paire distincte, excédent 0","Comptoir Ivoranche","effectif 1, 0 paire distincte, excédent 0","Comptoir Jolvane","effectif 3, 0 paire distincte, excédent 0","Comptoir Lavorneau","effectif 1, 0 paire distincte, excédent 0","Comptoir Sorbagne","effectif 4, 0 paire distincte, excédent 0","Comptoir Xandrelle","effectif 3, 0 paire distincte, excédent 0","Comptoir Yzorne","effectif 2, 0 paire distincte, excédent 0","Coopérative Dravenne","effectif 3, 0 paire distincte, excédent 0","Coopérative Gravelune","effectif 3, 0 paire distincte, excédent 0","Coopérative Morvalle","effectif 3, 0 paire distincte, excédent 0","Coopérative Rossolde","effectif 4, 0 paire distincte, excédent 0","Fabrique Ivoranche","effectif 3, 0 paire distincte, excédent 0","Fabrique Morvalle","effectif 1, 0 paire distincte, excédent 0","Fabrique Ulvardes","effectif 3, 0 paire distincte, excédent 0","Filature Dravenne","effectif 1, 0 paire distincte, excédent 0","Filature Olbrecq","effectif 2, 0 paire distincte, excédent 0","Filature Wassorel","effectif 3, 0 paire distincte, excédent 0","Fonderie Aubrenc","effectif 2, 0 paire distincte, excédent 0","Fonderie Ivoranche","effectif 2, 0 paire distincte, excédent 0","Fonderie Kalvenne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Falvigne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Hostrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Aubrenc","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ivoranche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Jolvane","effectif 1, 0 paire distincte, excédent 0","Menuiserie Nervanche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Olbrecq","effectif 4, 0 paire distincte, excédent 0","Menuiserie Tavrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ulvardes","effectif 6, 0 paire distincte, excédent 0","Menuiserie Wassorel","effectif 1, 0 paire distincte, excédent 0","Papeterie Estrolle","effectif 3, 0 paire distincte, excédent 0","Papeterie Wassorel","effectif 1, 0 paire distincte, excédent 0","Tannerie Aubrenc","effectif 3, 0 paire distincte, excédent 0","Tannerie Falvigne","effectif 1, 0 paire distincte, excédent 0","Tannerie Olbrecq","effectif 1, 0 paire distincte, excédent 0","Tannerie Quimvaux","effectif 1, 0 paire distincte, excédent 0","Verrerie Gravelune","effectif 1, 0 paire distincte, excédent 0","Verrerie Ivoranche","effectif 6, 0 paire distincte, excédent 0","Verrerie Nervanche","effectif 1, 0 paire distincte, excédent 0","Verrerie Olbrecq","effectif 2, 0 paire distincte, excédent 0","Verrerie Pravette","effectif 2, 0 paire distincte, excédent 0","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Imprimerie Yzorne » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 4","Table 12","Table 16","Table 20","Table 26","Table 33","Table 9","Table 10","Table 15","Table 24","Table 25","Table 29","Table 31","Table 32","Table 1","Table 2","Table 5","Table 6","Table 7","Table 8","Table 13","Table 14","Table 17","Table 18","Table 19","Table 21","Table 22","Table 23","Table 27","Table 28","Table 30","Table 3","Table 11","Tour 1","Tour 2","Tour 3","Tour 4","2","1","0","0","1","2","0","0","0","0","2","1","0","0","1","2","0","2","0","1","0","1","0","2","0","0","2","0","0","1","0","1","1","1","0","0","0","1","1","0","0","1","1","0","1","0","1","0","0","1","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","1","0","0","0","0","1","0","0","0","0","0","1","0","1","0","0","0","0","0","1","0","0","0","1","1","0","0","0","1","0","0","0","0","0","1","0","0","1","0","0","0","0","0","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","0","0","0","0","0","0","La table 4 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 100 sur 103","Suivantes","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Samuel Cloveval","Menuiserie Ulvardes","Hélène Bralmeval","Brasserie Dravenne","3 fois","Voir au tour 3","Tour 1, table 23","Tour 3, table 15","Tour 4, table 32","Hugo Fralvançon","Brasserie Wassorel","Léa Fralvault","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 11","Tour 3, table 2","Hugo Fralvançon","Brasserie Wassorel","Louise Quilmançon","Menuiserie Estrolle","2 fois","Voir au tour 3","Tour 1, table 13","Tour 3, table 2","Zoé WAMMERWOLM-MAWWEMMEL","Menuiserie Ulvardes","Catherine Hulveron","Coopérative Rossolde","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 15","Catherine Urvesson","Fabrique Ulvardes","Olivier Bralmançon","Comptoir Lavorneau","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 6","Karim Hulvivet","Fonderie Xandrelle","Guillaume Luskichon","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Léa Fralvault","Fonderie Sorbagne","Lucie Tolvesson","Filature Zelvaine","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 11","Léa Fralvault","Fonderie Sorbagne","Samuel Abrevard","Filature Dravenne","2 fois","Voir au tour 4","Tour 2, table 11","Tour 4, table 4","Fatima Obrivet","Fabrique Sorbagne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 29","Philippe Voskeval","Menuiserie Estrolle","Émilie Korvard","Verrerie Vaubrenne","2 fois","Voir au tour 3","Tour 2, table 6","Tour 3, table 6","Zoé Dulveval","Menuiserie Quimvaux","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 13","Paul Korveux","Filature Olbrecq","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 1, table 15","Tour 3, table 5","Paul Korveux","Filature Olbrecq","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 3","Thomas Rozvotte","Verrerie Ivoranche","Antoine Quilmeron","Fabrique Kalvenne","2 fois","Voir au tour 4","Tour 3, table 33","Tour 4, table 26","Isabelle Bralmumet","Verrerie Aubrenc","Félix Korveval","Tannerie Nervanche","2 fois","Voir au tour 2","Tour 1, table 19","Tour 2, table 28","Isabelle Bralmumet","Verrerie Aubrenc","Louis Mirveron","Filature Wassorel","2 fois","Voir au tour 4","Tour 3, table 22","Tour 4, table 16","Simon Mirvivet","Ateliers Ivoranche","Hélène Gorzumet","Fonderie Aubrenc","2 fois","Voir au tour 3","Tour 1, table 9","Tour 3, table 18","Lucie Voskeux","Coopérative Morvalle","Samuel Cloveval","Menuiserie Ulvardes","2 fois","Voir au tour 3","Tour 2, table 14","Tour 3, table 15","Fatima Korvouze","Ateliers Tavrenne","Olivier Jusvançon","Brasserie Morvalle","2 fois","Voir au tour 3","Tour 2, table 3","Tour 3, table 3","Étienne Fralvichon","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 1, table 21","Tour 4, table 33","Louise Quilmançon","Menuiserie Estrolle","Paul Obrichon","Ateliers Rossolde","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 21","Louise Quilmançon","Menuiserie Estrolle","Étienne Eskesson","Menuiserie Ulvardes","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 7","Pierre Abreveron","Ateliers Rossolde","Manon Tolveron","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 5","Tour 3, table 5","Léa Tolvande","Ateliers Rossolde","Anne Abrevesson","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 14","Antoine Quilmeron","Fabrique Kalvenne","Samuel Bralmeux","Ateliers Rossolde","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 33","Michel Eskeux","Papeterie Wassorel","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 21","Louise Hulvault","Coopérative Jolvane","Karim Fralveval","Coopérative Gravelune","2 fois","Voir au tour 4","Tour 3, table 24","Tour 4, table 4","Catherine Hulveron","Coopérative Rossolde","Alexandre Korvotte","Menuiserie Nervanche","2 fois","Voir au tour 4","Tour 3, table 15","Tour 4, table 15","François Ivrivet","Menuiserie Sorbagne","François Gorzichon","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 32","Tour 4, table 32","Claire Fralvivet","Imprimerie Yzorne","Étienne Selvouze","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 14","Tour 3, table 27","Karim Gorzesson","Papeterie Ulvardes","Sophie Clovard","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 1, table 20","Tour 4, table 12","Manon Urvançon","Ateliers Tavrenne","Guillaume Tolvignac","Menuiserie Sorbagne","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Sylvie Quilmande","Imprimerie Yzorne","Antoine Bralmault","Fabrique Sorbagne","2 fois","Voir au tour 4","Tour 1, table 4","Tour 4, table 4","Sylvie Quilmande","Imprimerie Yzorne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 14","Sylvie Quilmande","Imprimerie Yzorne","Hélène Rozveval","Comptoir Ivoranche","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 4","Amina Pruvesson","Fonderie Sorbagne","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 1, table 18","Tour 4, table 16","Amina Pruvesson","Fonderie Sorbagne","Léa Obrard","Comptoir Sorbagne","2 fois","Voir au tour 2","Tour 1, table 18","Tour 2, table 31","Lucie Quilmière","Fabrique Ivoranche","Anne Urvivet","Fonderie Kalvenne","2 fois","Voir au tour 2","Tour 1, table 21","Tour 2, table 9","Louis Selvivet","Menuiserie Hostrenne","Guillaume Hulvotte","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 2, table 25","Tour 4, table 25","Lucie Tolvesson","Filature Zelvaine","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 4","Tour 1, table 15","Tour 4, table 25","Olivier Quilmesson","Comptoir Gravelune","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 9","Gabriel Neskault","Menuiserie Tavrenne","Geneviève Abrevignac","Brasserie Morvalle","2 fois","Voir au tour 4","Tour 2, table 20","Tour 4, table 18","Gabriel Neskault","Menuiserie Tavrenne","François Clovotte","Coopérative Rossolde","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Gabriel Neskault","Menuiserie Tavrenne","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Olivier Jusvançon","Brasserie Morvalle","Hélène Selveux","Brasserie Lavorneau","2 fois","Voir au tour 4","Tour 1, table 24","Tour 4, table 25","Gabriel Pruveux","Papeterie Estrolle","Guillaume Obrançon","Papeterie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 31","Tour 4, table 27","Manon Clovière","Ateliers Ivoranche","Marc Vandergrolcquesmirtavelle-Ostrovaubelindigues","Tannerie Aubrenc","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 10","François Obrouze","Tannerie Olbrecq","Camille Tolvumet","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 31","Tour 3, table 31","Claire Gorzeron","Menuiserie Hostrenne","Guillaume Gorzivet","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 32","Tour 4, table 8","Hélène Luskumet","Brasserie Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 8","Louis Fralvande","Ateliers Rossolde","Philippe Ivroubre","Ateliers Tavrenne","2 fois","Voir au tour 4","Tour 1, table 19","Tour 4, table 19","Isabelle Korvichon","Menuiserie Ulvardes","Marie Dulvesson","Ateliers Cassorgue","2 fois","Voir au tour 4","Tour 1, table 7","Tour 4, table 10","Isabelle Korvichon","Menuiserie Ulvardes","Karim Clovivet","Fonderie Kalvenne","2 fois","Voir au tour 3","Tour 2, table 18","Tour 3, table 23","Fatima Tolvoubre","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 33","Zoé Gorzière","Menuiserie Olbrecq","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 2, table 7","Tour 3, table 25","Antoine Obreval","Ateliers Cassorgue","Alexandre Ivreux","Tannerie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 25","Tour 2, table 6","Antoine Obreval","Ateliers Cassorgue","Hugo Bralmouze","Tannerie Falvigne","2 fois","Voir au tour 4","Tour 3, table 23","Tour 4, table 23","Michel Korveron","Fonderie Sorbagne","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 8","Marie Dulvesson","Ateliers Cassorgue","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 3","Tour 2, table 16","Tour 3, table 17","Youssef Jusvard","Tannerie Aubrenc","Simon Hulvumet","Ateliers Ivoranche","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 21","Gabriel Mirvotte","Tannerie Belvarre","Paul Neskivet","Comptoir Jolvane","2 fois","Voir au tour 4","Tour 3, table 21","Tour 4, table 7","Marc Luskouze","Ateliers Rossolde","Isabelle Selvichon","Tannerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 21","Tour 3, table 8","Louis Hulvichon","Ateliers Falvigne","Nicolas Ivrichon","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 17","Tour 2, table 24","Pierre Pruveval","Comptoir Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 1, table 10","Tour 3, table 8","Geneviève Abrevignac","Brasserie Morvalle","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 7","Olivier Bralmançon","Comptoir Lavorneau","Véronique Jusvouze","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 6","Marc Luskoubre","Verrerie Vaubrenne","Thomas Quilmichon","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 33","Tour 4, table 5","Camille Jusvumet","Fonderie Estrolle","Guillaume Eskotte","Verrerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 27","Tour 3, table 11","Antoine Selvière","Coopérative Dravenne","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 1, table 11","Tour 3, table 9","Antoine Bralmault","Fabrique Sorbagne","Amina Rozvichon","Verrerie Olbrecq","2 fois","Voir au tour 3","Tour 2, table 4","Tour 3, table 4","Antoine Bralmault","Fabrique Sorbagne","Antoine Pruvouze","Imprimerie Yzorne","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 4","Émilie Abrevière","Imprimerie Yzorne","Fatima Hulvard","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 29","Émilie Abrevière","Imprimerie Yzorne","Geneviève Obresson","Coopérative Gravelune","2 fois","Voir au tour 3","Tour 1, table 29","Tour 3, table 29","Émilie Abrevière","Imprimerie Yzorne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 4","Tour 3, table 29","Tour 4, table 29","Olivier Tolvichon","Fonderie Xandrelle","Étienne Gorzeval","Papeterie Ulvardes","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 6","Félix Korveval","Tannerie Nervanche","Thomas Selvignac","Brasserie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 28","Tour 3, table 28","Émilie Dulvichon","Menuiserie Ulvardes","Lucie Voskeron","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Émilie Dulvichon","Menuiserie Ulvardes","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Claire Jusvivet","Imprimerie Yzorne","Hugo Voskumet","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 20","Tour 3, table 20","Amina Quilmault","Coopérative Jolvane","Philippe Abreveval","Ateliers Falvigne","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 4","Hélène Gorzumet","Fonderie Aubrenc","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 4","Tour 1, table 9","Tour 4, table 21","Sophie Ivrault","Coopérative Morvalle","Philippe Fralvignac","Menuiserie Estrolle","2 fois","Voir au tour 4","Tour 3, table 13","Tour 4, table 26","Nicolas Korvande","Comptoir Sorbagne","Chantal Obrignac","Imprimerie Yzorne","2 fois","Voir au tour 3","Tour 2, table 27","Tour 3, table 22","Fatima Urvignac","Ateliers Aubrenc","Claire Bralmotte","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 21","François Clovotte","Coopérative Rossolde","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Philippe Dulvoubre","Brasserie Belvarre","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 2","Tour 1, table 9","Tour 2, table 10","Chantal Mirvumet","Menuiserie Gravelune","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 29","Camille Neskard","Menuiserie Gravelune","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 2, table 16","Tour 4, table 16","Sophie Pruvière","Ateliers Rossolde","Raphaël Jusvault","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 16","Tour 2, table 2","Fatima Abrevançon","Tannerie Nervanche","Caroline Jusvoubre","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 13","Fatima Abrevançon","Tannerie Nervanche","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 13","Tour 4, table 13","Karim Clovançon","Fabrique Sorbagne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 17","Félix Eskouze","Filature Zelvaine","Sylvie Abreveux","Comptoir Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 19","Olivier Korvière","Ateliers Falvigne","Manon Pruvivet","Menuiserie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 20","Tour 2, table 10","Félix Voskande","Ateliers Falvigne","Guillaume Mirvoubre","Comptoir Sorbagne","2 fois","Voir au tour 4","Tour 2, table 7","Tour 4, table 7","Lucie Voskeron","Verrerie Ivoranche","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Thomas Selvignac","Brasserie Sorbagne","Étienne Voskançon","Menuiserie Olbrecq","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 28","Jean Neskeron","Filature Zelvaine","Zoé Mirveval","Fabrique Kalvenne","2 fois","Voir au tour 2","Tour 1, table 11","Tour 2, table 33","Sophie Clovard","Brasserie Belvarre","Marc Rozvouze","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 12","Alexandre Eskançon","Menuiserie Hostrenne","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 1, table 17","Tour 3, table 25","Qui a rencontré qui","La matrice n'est pas dessinée : 260 personnes dépassent le seuil de 44. La fiche de chaque personne porte ses rencontres.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","3","4","50","100","150","200","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 3 animateurs rencontrés, 29 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucune personne présente ne porte d'étiquette : seule la colonne des appartenances se dessine.","Appartenances rencontrées en animant","le moins varié","17","le plus varié","27","au minimum","1","Diversité rencontrée en animant, sur la soirée","0","10","20","François Ivrivet","4 tours animés, 23 personnes rencontrées en animant","Samuel Bralmeux","4 tours animés, 23 personnes rencontrées en animant","Geneviève Dulvumet","4 tours animés, 24 personnes rencontrées en animant","François Obrouze","4 tours animés, 23 personnes rencontrées en animant","Antoine Bralmault","4 tours animés, 25 personnes rencontrées en animant","Catherine Hulveron","4 tours animés, 26 personnes rencontrées en animant","Camille Neskard","4 tours animés, 27 personnes rencontrées en animant","Guillaume Luskichon","4 tours animés, 27 personnes rencontrées en animant","Philippe Ivroubre","4 tours animés, 27 personnes rencontrées en animant","Marie Urvard","4 tours animés, 28 personnes rencontrées en animant","Sophie Pruvotte","4 tours animés, 28 personnes rencontrées en animant","Thomas Selvignac","4 tours animés, 26 personnes rencontrées en animant","Philippe Voskeval","4 tours animés, 27 personnes rencontrées en animant","Manon Urvançon","4 tours animés, 27 personnes rencontrées en animant","Marc Vandergrolcquesmir…","4 tours animés, 27 personnes rencontrées en animant","Fatima Abrevançon","4 tours animés, 26 personnes rencontrées en animant","Claire Jusvivet","4 tours animés, 27 personnes rencontrées en animant","Félix Voskande","4 tours animés, 27 personnes rencontrées en animant","Louise Neskichon","4 tours animés, 28 personnes rencontrées en animant","Gabriel Abrevault","4 tours animés, 28 personnes rencontrées en animant","Émilie Abrevière","4 tours animés, 25 personnes rencontrées en animant","Youssef Jusvard","4 tours animés, 27 personnes rencontrées en animant","Manon Tolveron","4 tours animés, 27 personnes rencontrées en animant","Hugo Bralmouze","4 tours animés, 27 personnes rencontrées en animant","Marie Bralmesson","4 tours animés, 28 personnes rencontrées en animant","Louis Selvivet","4 tours animés, 27 personnes rencontrées en animant","Michel Korveron","4 tours animés, 27 personnes rencontrées en animant","Youssef Neskière","4 tours animés, 28 personnes rencontrées en animant","Jean Fralvumet","4 tours animés, 28 personnes rencontrées en animant","Fatima Korvouze","4 tours animés, 27 personnes rencontrées en animant","Gabriel Ivreval","4 tours animés, 28 personnes rencontrées en animant","Guillaume Dulvivet","4 tours animés, 28 personnes rencontrées en animant","Étienne Tolvançon","4 tours animés, 28 personnes rencontrées en animant","Appartenances rencontrées en animant","Appartenances rencontrées en animant","Le moins varié rencontre 17 appartenances en animant ; 1 animateur au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","2 000 mouvements évalués sur 2 000","durée observée 2,5 s","1 cœur de calcul","cadence 4 000 mouvements par seconde","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","5","10","15","20","1","10","100","2 000","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 21 ; au dernier : 23.","écart au plafond a priori, aux points de relevé","0","2","4","6","1","10","100","2 000","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 6 ; au dernier : 4.","excédent de collisions, aux points de relevé","0","1","2","3","4","1","10","100","2 000","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 3 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","20","40","60","1","10","100","2 000","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 67 ; au dernier : 52.","rencontres répétées, aux points de relevé","0","50","100","1","10","100","2 000","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 145 ; au dernier : 103.","redondance d'appartenance, aux points de relevé","0","500","1 000","1","10","100","2 000","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 1 298 ; au dernier : 1 288.","Une valeur a changé au dernier point de relevé, à 2 000 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, +{"cadre":{"hauteur":700,"largeur":1366},"empreinte":"c3241b2e91a1f3440d7dad52724ef6d6fd66f9e4da29f0567818e7650d840518","etape":"10","etat":"15fb09087464cf5b429c79e33325a0cd64579f1c650d7fd7aeabf6c3cbf977c0","facteurEchelle":1,"fichier":"15c-qualite-performance","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"c419e952b0f10f763016b96657372c3f427ca6446883c15892b3626ea279ce7c"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.64,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":5.1,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-graphique-axe","ratio":5.38,"role":"marque","seuil":3},{"jeton":"--couleur-graphique-serie-1","ratio":6.89,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Grande démonstration 1","260 participants","33 tables · 260 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 5 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 260 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","23","95 %","minimum 23 sur 24","chez François Ivrivet","plafond réalisé 24","plafond a priori 24","Personnes distinctes rencontrées, minimum : mobiles","24","Personnes distinctes rencontrées, minimum : ancrés","23","Collisions d'appartenance","Collisions cumulées (paire et tour)","52","Paires distinctes de même appartenance","52","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","103","0 imposée, à part","Rencontres d'une même paire, au plus","3","Retours choisis à une table déjà occupée","29","99 imposés, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","17","chez François Ivrivet","borne de diversité 24","Redondance d'appartenance, somme Σ r(p)","1 288","Taux de diversité d(p), minimum","0,64","Manque et plafond a priori","Plus grand manque (personnes)","3","chez Marc Luskouze","131 personnes au manque maximal","plafond réalisé 27","Personnes à qui il en manque","131","Écart d'itinéraire maximal (personnes)","4","plancher 1","Écart au plafond a priori maximal (personnes)","4","Objectifs des tables et animateurs","Animateurs rencontrés, minimum","3","ne classe pas","chez Zoé WAMMERWOLM-MAWWEMMEL","borne des animateurs 4","Animateurs non rencontrés","29","ne classe pas","atteignabilité inconnue","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","10","20","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","ancré","Minimum 23 personnes rencontrées, 3 personnes au minimum, 131 personnes sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","50","100","150","200","250","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","ancré","La personne au rang 1, François Ivrivet, rencontre","95 %","minimum 23 sur 24","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Collisions d'appartenance, par appartenance","0","2","4","6","8","Imprimerie Yzorne","effectif 12, 9 paires distinctes, excédent 0","Fabrique Sorbagne","effectif 11, 7 paires distinctes, excédent 0","Ateliers Falvigne","effectif 8, 3 paires distinctes, excédent 0","Ateliers Rossolde","effectif 11, 3 paires distinctes, excédent 0","Fonderie Estrolle","effectif 9, 3 paires distinctes, excédent 0","Verrerie Vaubrenne","effectif 10, 3 paires distinctes, excédent 0","Ateliers Tavrenne","effectif 8, 2 paires distinctes, excédent 0","Fonderie Xandrelle","effectif 6, 2 paires distinctes, excédent 0","Menuiserie Estrolle","effectif 9, 2 paires distinctes, excédent 0","Tannerie Nervanche","effectif 6, 2 paires distinctes, excédent 0","Ateliers Aubrenc","effectif 3, 1 paire distincte, excédent 0","Ateliers Cassorgue","effectif 3, 1 paire distincte, excédent 0","Brasserie Xandrelle","effectif 2, 1 paire distincte, excédent 0","Comptoir Gravelune","effectif 3, 1 paire distincte, excédent 0","Coopérative Jolvane","effectif 4, 1 paire distincte, excédent 0","Fabrique Kalvenne","effectif 3, 1 paire distincte, excédent 0","Filature Zelvaine","effectif 4, 1 paire distincte, excédent 0","Fonderie Sorbagne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Gravelune","effectif 3, 1 paire distincte, excédent 0","Menuiserie Hostrenne","effectif 5, 1 paire distincte, excédent 0","Menuiserie Quimvaux","effectif 3, 1 paire distincte, excédent 0","Menuiserie Sorbagne","effectif 3, 1 paire distincte, excédent 0","Papeterie Hostrenne","effectif 2, 1 paire distincte, excédent 0","Papeterie Ulvardes","effectif 4, 1 paire distincte, excédent 0","Tannerie Belvarre","effectif 5, 1 paire distincte, excédent 0","Verrerie Aubrenc","effectif 2, 1 paire distincte, excédent 0","Ateliers Estrolle","effectif 3, 0 paire distincte, excédent 0","Ateliers Ivoranche","effectif 4, 0 paire distincte, excédent 0","Brasserie Belvarre","effectif 9, 0 paire distincte, excédent 0","Brasserie Dravenne","effectif 1, 0 paire distincte, excédent 0","Brasserie Lavorneau","effectif 2, 0 paire distincte, excédent 0","Brasserie Morvalle","effectif 2, 0 paire distincte, excédent 0","Brasserie Sorbagne","effectif 4, 0 paire distincte, excédent 0","Brasserie Wassorel","effectif 2, 0 paire distincte, excédent 0","Comptoir Ivoranche","effectif 1, 0 paire distincte, excédent 0","Comptoir Jolvane","effectif 3, 0 paire distincte, excédent 0","Comptoir Lavorneau","effectif 1, 0 paire distincte, excédent 0","Comptoir Sorbagne","effectif 4, 0 paire distincte, excédent 0","Comptoir Xandrelle","effectif 3, 0 paire distincte, excédent 0","Comptoir Yzorne","effectif 2, 0 paire distincte, excédent 0","Coopérative Dravenne","effectif 3, 0 paire distincte, excédent 0","Coopérative Gravelune","effectif 3, 0 paire distincte, excédent 0","Coopérative Morvalle","effectif 3, 0 paire distincte, excédent 0","Coopérative Rossolde","effectif 4, 0 paire distincte, excédent 0","Fabrique Ivoranche","effectif 3, 0 paire distincte, excédent 0","Fabrique Morvalle","effectif 1, 0 paire distincte, excédent 0","Fabrique Ulvardes","effectif 3, 0 paire distincte, excédent 0","Filature Dravenne","effectif 1, 0 paire distincte, excédent 0","Filature Olbrecq","effectif 2, 0 paire distincte, excédent 0","Filature Wassorel","effectif 3, 0 paire distincte, excédent 0","Fonderie Aubrenc","effectif 2, 0 paire distincte, excédent 0","Fonderie Ivoranche","effectif 2, 0 paire distincte, excédent 0","Fonderie Kalvenne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Falvigne","effectif 3, 0 paire distincte, excédent 0","Imprimerie Hostrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Aubrenc","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ivoranche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Jolvane","effectif 1, 0 paire distincte, excédent 0","Menuiserie Nervanche","effectif 1, 0 paire distincte, excédent 0","Menuiserie Olbrecq","effectif 4, 0 paire distincte, excédent 0","Menuiserie Tavrenne","effectif 1, 0 paire distincte, excédent 0","Menuiserie Ulvardes","effectif 6, 0 paire distincte, excédent 0","Menuiserie Wassorel","effectif 1, 0 paire distincte, excédent 0","Papeterie Estrolle","effectif 3, 0 paire distincte, excédent 0","Papeterie Wassorel","effectif 1, 0 paire distincte, excédent 0","Tannerie Aubrenc","effectif 3, 0 paire distincte, excédent 0","Tannerie Falvigne","effectif 1, 0 paire distincte, excédent 0","Tannerie Olbrecq","effectif 1, 0 paire distincte, excédent 0","Tannerie Quimvaux","effectif 1, 0 paire distincte, excédent 0","Verrerie Gravelune","effectif 1, 0 paire distincte, excédent 0","Verrerie Ivoranche","effectif 6, 0 paire distincte, excédent 0","Verrerie Nervanche","effectif 1, 0 paire distincte, excédent 0","Verrerie Olbrecq","effectif 2, 0 paire distincte, excédent 0","Verrerie Pravette","effectif 2, 0 paire distincte, excédent 0","reste","prouvé inévitable","reste","L'excédent le plus grand est celui de « Imprimerie Yzorne » : 0 collision.","Voir le tableau","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 4","Table 12","Table 16","Table 20","Table 26","Table 33","Table 9","Table 10","Table 15","Table 24","Table 25","Table 29","Table 31","Table 32","Table 1","Table 2","Table 5","Table 6","Table 7","Table 8","Table 13","Table 14","Table 17","Table 18","Table 19","Table 21","Table 22","Table 23","Table 27","Table 28","Table 30","Table 3","Table 11","Tour 1","Tour 2","Tour 3","Tour 4","2","1","0","0","1","2","0","0","0","0","2","1","0","0","1","2","0","2","0","1","0","1","0","2","0","0","2","0","0","1","0","1","1","1","0","0","0","1","1","0","0","1","1","0","1","0","1","0","0","1","0","1","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","1","1","0","0","0","0","1","0","0","0","0","0","1","0","1","0","0","0","0","0","1","0","0","0","1","1","0","0","0","1","0","0","0","0","0","1","0","0","1","0","0","0","0","0","1","0","1","0","0","0","1","0","0","1","0","0","0","0","0","0","0","0","0","0","0","La table 4 porte la case la plus haute : 2.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Paires 1 à 100 sur 103","Suivantes","Paires que la recherche réunit plus d'une fois","Paire","Rencontres de la paire","Tours","Samuel Cloveval","Menuiserie Ulvardes","Hélène Bralmeval","Brasserie Dravenne","3 fois","Voir au tour 3","Tour 1, table 23","Tour 3, table 15","Tour 4, table 32","Hugo Fralvançon","Brasserie Wassorel","Léa Fralvault","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 11","Tour 3, table 2","Hugo Fralvançon","Brasserie Wassorel","Louise Quilmançon","Menuiserie Estrolle","2 fois","Voir au tour 3","Tour 1, table 13","Tour 3, table 2","Zoé WAMMERWOLM-MAWWEMMEL","Menuiserie Ulvardes","Catherine Hulveron","Coopérative Rossolde","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 15","Catherine Urvesson","Fabrique Ulvardes","Olivier Bralmançon","Comptoir Lavorneau","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 6","Karim Hulvivet","Fonderie Xandrelle","Guillaume Luskichon","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 2","Tour 3, table 2","Léa Fralvault","Fonderie Sorbagne","Lucie Tolvesson","Filature Zelvaine","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 11","Léa Fralvault","Fonderie Sorbagne","Samuel Abrevard","Filature Dravenne","2 fois","Voir au tour 4","Tour 2, table 11","Tour 4, table 4","Fatima Obrivet","Fabrique Sorbagne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 29","Philippe Voskeval","Menuiserie Estrolle","Émilie Korvard","Verrerie Vaubrenne","2 fois","Voir au tour 3","Tour 2, table 6","Tour 3, table 6","Zoé Dulveval","Menuiserie Quimvaux","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 2, table 15","Tour 4, table 13","Paul Korveux","Filature Olbrecq","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 3","Tour 1, table 15","Tour 3, table 5","Paul Korveux","Filature Olbrecq","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 15","Tour 2, table 3","Thomas Rozvotte","Verrerie Ivoranche","Antoine Quilmeron","Fabrique Kalvenne","2 fois","Voir au tour 4","Tour 3, table 33","Tour 4, table 26","Isabelle Bralmumet","Verrerie Aubrenc","Félix Korveval","Tannerie Nervanche","2 fois","Voir au tour 2","Tour 1, table 19","Tour 2, table 28","Isabelle Bralmumet","Verrerie Aubrenc","Louis Mirveron","Filature Wassorel","2 fois","Voir au tour 4","Tour 3, table 22","Tour 4, table 16","Simon Mirvivet","Ateliers Ivoranche","Hélène Gorzumet","Fonderie Aubrenc","2 fois","Voir au tour 3","Tour 1, table 9","Tour 3, table 18","Lucie Voskeux","Coopérative Morvalle","Samuel Cloveval","Menuiserie Ulvardes","2 fois","Voir au tour 3","Tour 2, table 14","Tour 3, table 15","Fatima Korvouze","Ateliers Tavrenne","Olivier Jusvançon","Brasserie Morvalle","2 fois","Voir au tour 3","Tour 2, table 3","Tour 3, table 3","Étienne Fralvichon","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 1, table 21","Tour 4, table 33","Louise Quilmançon","Menuiserie Estrolle","Paul Obrichon","Ateliers Rossolde","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 21","Louise Quilmançon","Menuiserie Estrolle","Étienne Eskesson","Menuiserie Ulvardes","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 7","Pierre Abreveron","Ateliers Rossolde","Manon Tolveron","Brasserie Belvarre","2 fois","Voir au tour 3","Tour 1, table 5","Tour 3, table 5","Léa Tolvande","Ateliers Rossolde","Anne Abrevesson","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 2","Tour 3, table 14","Antoine Quilmeron","Fabrique Kalvenne","Samuel Bralmeux","Ateliers Rossolde","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 33","Michel Eskeux","Papeterie Wassorel","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 1, table 1","Tour 4, table 21","Louise Hulvault","Coopérative Jolvane","Karim Fralveval","Coopérative Gravelune","2 fois","Voir au tour 4","Tour 3, table 24","Tour 4, table 4","Catherine Hulveron","Coopérative Rossolde","Alexandre Korvotte","Menuiserie Nervanche","2 fois","Voir au tour 4","Tour 3, table 15","Tour 4, table 15","François Ivrivet","Menuiserie Sorbagne","François Gorzichon","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 32","Tour 4, table 32","Claire Fralvivet","Imprimerie Yzorne","Étienne Selvouze","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 14","Tour 3, table 27","Karim Gorzesson","Papeterie Ulvardes","Sophie Clovard","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 1, table 20","Tour 4, table 12","Manon Urvançon","Ateliers Tavrenne","Guillaume Tolvignac","Menuiserie Sorbagne","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 1","Sylvie Quilmande","Imprimerie Yzorne","Antoine Bralmault","Fabrique Sorbagne","2 fois","Voir au tour 4","Tour 1, table 4","Tour 4, table 4","Sylvie Quilmande","Imprimerie Yzorne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 14","Sylvie Quilmande","Imprimerie Yzorne","Hélène Rozveval","Comptoir Ivoranche","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 4","Amina Pruvesson","Fonderie Sorbagne","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 1, table 18","Tour 4, table 16","Amina Pruvesson","Fonderie Sorbagne","Léa Obrard","Comptoir Sorbagne","2 fois","Voir au tour 2","Tour 1, table 18","Tour 2, table 31","Lucie Quilmière","Fabrique Ivoranche","Anne Urvivet","Fonderie Kalvenne","2 fois","Voir au tour 2","Tour 1, table 21","Tour 2, table 9","Louis Selvivet","Menuiserie Hostrenne","Guillaume Hulvotte","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 2, table 25","Tour 4, table 25","Lucie Tolvesson","Filature Zelvaine","Manon Quilmumet","Fonderie Sorbagne","2 fois","Voir au tour 4","Tour 1, table 15","Tour 4, table 25","Olivier Quilmesson","Comptoir Gravelune","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 2, table 33","Tour 3, table 9","Gabriel Neskault","Menuiserie Tavrenne","Geneviève Abrevignac","Brasserie Morvalle","2 fois","Voir au tour 4","Tour 2, table 20","Tour 4, table 18","Gabriel Neskault","Menuiserie Tavrenne","François Clovotte","Coopérative Rossolde","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Gabriel Neskault","Menuiserie Tavrenne","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Olivier Jusvançon","Brasserie Morvalle","Hélène Selveux","Brasserie Lavorneau","2 fois","Voir au tour 4","Tour 1, table 24","Tour 4, table 25","Gabriel Pruveux","Papeterie Estrolle","Guillaume Obrançon","Papeterie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 31","Tour 4, table 27","Manon Clovière","Ateliers Ivoranche","Marc Vandergrolcquesmirtavelle-Ostrovaubelindigues","Tannerie Aubrenc","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 10","François Obrouze","Tannerie Olbrecq","Camille Tolvumet","Fonderie Estrolle","2 fois","Voir au tour 3","Tour 2, table 31","Tour 3, table 31","Claire Gorzeron","Menuiserie Hostrenne","Guillaume Gorzivet","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 32","Tour 4, table 8","Hélène Luskumet","Brasserie Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 8","Louis Fralvande","Ateliers Rossolde","Philippe Ivroubre","Ateliers Tavrenne","2 fois","Voir au tour 4","Tour 1, table 19","Tour 4, table 19","Isabelle Korvichon","Menuiserie Ulvardes","Marie Dulvesson","Ateliers Cassorgue","2 fois","Voir au tour 4","Tour 1, table 7","Tour 4, table 10","Isabelle Korvichon","Menuiserie Ulvardes","Karim Clovivet","Fonderie Kalvenne","2 fois","Voir au tour 3","Tour 2, table 18","Tour 3, table 23","Fatima Tolvoubre","Papeterie Ulvardes","Marc Luskouze","Ateliers Rossolde","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 33","Zoé Gorzière","Menuiserie Olbrecq","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 2, table 7","Tour 3, table 25","Antoine Obreval","Ateliers Cassorgue","Alexandre Ivreux","Tannerie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 25","Tour 2, table 6","Antoine Obreval","Ateliers Cassorgue","Hugo Bralmouze","Tannerie Falvigne","2 fois","Voir au tour 4","Tour 3, table 23","Tour 4, table 23","Michel Korveron","Fonderie Sorbagne","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 4","Tour 3, table 8","Tour 4, table 8","Marie Dulvesson","Ateliers Cassorgue","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 3","Tour 2, table 16","Tour 3, table 17","Youssef Jusvard","Tannerie Aubrenc","Simon Hulvumet","Ateliers Ivoranche","2 fois","Voir au tour 4","Tour 2, table 21","Tour 4, table 21","Gabriel Mirvotte","Tannerie Belvarre","Paul Neskivet","Comptoir Jolvane","2 fois","Voir au tour 4","Tour 3, table 21","Tour 4, table 7","Marc Luskouze","Ateliers Rossolde","Isabelle Selvichon","Tannerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 21","Tour 3, table 8","Louis Hulvichon","Ateliers Falvigne","Nicolas Ivrichon","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 17","Tour 2, table 24","Pierre Pruveval","Comptoir Xandrelle","Julie Quilmignac","Menuiserie Jolvane","2 fois","Voir au tour 3","Tour 1, table 10","Tour 3, table 8","Geneviève Abrevignac","Brasserie Morvalle","Pierre Mirvard","Verrerie Ivoranche","2 fois","Voir au tour 3","Tour 1, table 1","Tour 3, table 7","Olivier Bralmançon","Comptoir Lavorneau","Véronique Jusvouze","Verrerie Vaubrenne","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 6","Marc Luskoubre","Verrerie Vaubrenne","Thomas Quilmichon","Fonderie Estrolle","2 fois","Voir au tour 4","Tour 1, table 33","Tour 4, table 5","Camille Jusvumet","Fonderie Estrolle","Guillaume Eskotte","Verrerie Nervanche","2 fois","Voir au tour 3","Tour 1, table 27","Tour 3, table 11","Antoine Selvière","Coopérative Dravenne","Jean Neskeron","Filature Zelvaine","2 fois","Voir au tour 3","Tour 1, table 11","Tour 3, table 9","Antoine Bralmault","Fabrique Sorbagne","Amina Rozvichon","Verrerie Olbrecq","2 fois","Voir au tour 3","Tour 2, table 4","Tour 3, table 4","Antoine Bralmault","Fabrique Sorbagne","Antoine Pruvouze","Imprimerie Yzorne","2 fois","Voir au tour 2","Tour 1, table 4","Tour 2, table 4","Émilie Abrevière","Imprimerie Yzorne","Fatima Hulvard","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 2, table 29","Tour 4, table 29","Émilie Abrevière","Imprimerie Yzorne","Geneviève Obresson","Coopérative Gravelune","2 fois","Voir au tour 3","Tour 1, table 29","Tour 3, table 29","Émilie Abrevière","Imprimerie Yzorne","Chantal Mirvumet","Menuiserie Gravelune","2 fois","Voir au tour 4","Tour 3, table 29","Tour 4, table 29","Olivier Tolvichon","Fonderie Xandrelle","Étienne Gorzeval","Papeterie Ulvardes","2 fois","Voir au tour 3","Tour 1, table 33","Tour 3, table 6","Félix Korveval","Tannerie Nervanche","Thomas Selvignac","Brasserie Sorbagne","2 fois","Voir au tour 3","Tour 2, table 28","Tour 3, table 28","Émilie Dulvichon","Menuiserie Ulvardes","Lucie Voskeron","Verrerie Ivoranche","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Émilie Dulvichon","Menuiserie Ulvardes","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Claire Jusvivet","Imprimerie Yzorne","Hugo Voskumet","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 1, table 20","Tour 3, table 20","Amina Quilmault","Coopérative Jolvane","Philippe Abreveval","Ateliers Falvigne","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 4","Hélène Gorzumet","Fonderie Aubrenc","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 4","Tour 1, table 9","Tour 4, table 21","Sophie Ivrault","Coopérative Morvalle","Philippe Fralvignac","Menuiserie Estrolle","2 fois","Voir au tour 4","Tour 3, table 13","Tour 4, table 26","Nicolas Korvande","Comptoir Sorbagne","Chantal Obrignac","Imprimerie Yzorne","2 fois","Voir au tour 3","Tour 2, table 27","Tour 3, table 22","Fatima Urvignac","Ateliers Aubrenc","Claire Bralmotte","Ateliers Tavrenne","2 fois","Voir au tour 3","Tour 2, table 23","Tour 3, table 21","François Clovotte","Coopérative Rossolde","Chantal Abrevotte","Ateliers Ivoranche","2 fois","Voir au tour 3","Tour 2, table 20","Tour 3, table 25","Philippe Dulvoubre","Brasserie Belvarre","Émilie Quilmeux","Ateliers Falvigne","2 fois","Voir au tour 2","Tour 1, table 9","Tour 2, table 10","Chantal Mirvumet","Menuiserie Gravelune","Geneviève Mirvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 3","Tour 4, table 29","Camille Neskard","Menuiserie Gravelune","Amina Hulvouze","Coopérative Dravenne","2 fois","Voir au tour 4","Tour 2, table 16","Tour 4, table 16","Sophie Pruvière","Ateliers Rossolde","Raphaël Jusvault","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 16","Tour 2, table 2","Fatima Abrevançon","Tannerie Nervanche","Caroline Jusvoubre","Fabrique Sorbagne","2 fois","Voir au tour 2","Tour 1, table 13","Tour 2, table 13","Fatima Abrevançon","Tannerie Nervanche","Fatima Rozvumet","Menuiserie Hostrenne","2 fois","Voir au tour 4","Tour 1, table 13","Tour 4, table 13","Karim Clovançon","Fabrique Sorbagne","Caroline Rozvançon","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 2, table 14","Tour 4, table 17","Félix Eskouze","Filature Zelvaine","Sylvie Abreveux","Comptoir Jolvane","2 fois","Voir au tour 3","Tour 1, table 3","Tour 3, table 19","Olivier Korvière","Ateliers Falvigne","Manon Pruvivet","Menuiserie Aubrenc","2 fois","Voir au tour 2","Tour 1, table 20","Tour 2, table 10","Félix Voskande","Ateliers Falvigne","Guillaume Mirvoubre","Comptoir Sorbagne","2 fois","Voir au tour 4","Tour 2, table 7","Tour 4, table 7","Lucie Voskeron","Verrerie Ivoranche","Julie Voskesson","Brasserie Belvarre","2 fois","Voir au tour 4","Tour 3, table 10","Tour 4, table 20","Thomas Selvignac","Brasserie Sorbagne","Étienne Voskançon","Menuiserie Olbrecq","2 fois","Voir au tour 4","Tour 1, table 28","Tour 4, table 28","Jean Neskeron","Filature Zelvaine","Zoé Mirveval","Fabrique Kalvenne","2 fois","Voir au tour 2","Tour 1, table 11","Tour 2, table 33","Sophie Clovard","Brasserie Belvarre","Marc Rozvouze","Ateliers Estrolle","2 fois","Voir au tour 4","Tour 3, table 1","Tour 4, table 12","Alexandre Eskançon","Menuiserie Hostrenne","François Eskard","Fonderie Xandrelle","2 fois","Voir au tour 3","Tour 1, table 17","Tour 3, table 25","Qui a rencontré qui","La matrice n'est pas dessinée : 260 personnes dépassent le seuil de 44. La fiche de chaque personne porte ses rencontres.","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Animateurs rencontrés, de la personne la moins servie à la mieux servie","0","1","2","3","4","50","100","150","200","rang","animateurs rencontrés","borne des animateurs","animateurs rencontrés","borne des animateurs","Minimum 3 animateurs rencontrés, 29 personnes au minimum.","Voir le tableau","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucune personne présente ne porte d'étiquette : seule la colonne des appartenances se dessine.","Appartenances rencontrées en animant","le moins varié","17","le plus varié","27","au minimum","1","Diversité rencontrée en animant, sur la soirée","0","10","20","François Ivrivet","4 tours animés, 23 personnes rencontrées en animant","Samuel Bralmeux","4 tours animés, 23 personnes rencontrées en animant","Geneviève Dulvumet","4 tours animés, 24 personnes rencontrées en animant","François Obrouze","4 tours animés, 23 personnes rencontrées en animant","Antoine Bralmault","4 tours animés, 25 personnes rencontrées en animant","Catherine Hulveron","4 tours animés, 26 personnes rencontrées en animant","Camille Neskard","4 tours animés, 27 personnes rencontrées en animant","Guillaume Luskichon","4 tours animés, 27 personnes rencontrées en animant","Philippe Ivroubre","4 tours animés, 27 personnes rencontrées en animant","Marie Urvard","4 tours animés, 28 personnes rencontrées en animant","Sophie Pruvotte","4 tours animés, 28 personnes rencontrées en animant","Thomas Selvignac","4 tours animés, 26 personnes rencontrées en animant","Philippe Voskeval","4 tours animés, 27 personnes rencontrées en animant","Manon Urvançon","4 tours animés, 27 personnes rencontrées en animant","Marc Vandergrolcquesmir…","4 tours animés, 27 personnes rencontrées en animant","Fatima Abrevançon","4 tours animés, 26 personnes rencontrées en animant","Claire Jusvivet","4 tours animés, 27 personnes rencontrées en animant","Félix Voskande","4 tours animés, 27 personnes rencontrées en animant","Louise Neskichon","4 tours animés, 28 personnes rencontrées en animant","Gabriel Abrevault","4 tours animés, 28 personnes rencontrées en animant","Émilie Abrevière","4 tours animés, 25 personnes rencontrées en animant","Youssef Jusvard","4 tours animés, 27 personnes rencontrées en animant","Manon Tolveron","4 tours animés, 27 personnes rencontrées en animant","Hugo Bralmouze","4 tours animés, 27 personnes rencontrées en animant","Marie Bralmesson","4 tours animés, 28 personnes rencontrées en animant","Louis Selvivet","4 tours animés, 27 personnes rencontrées en animant","Michel Korveron","4 tours animés, 27 personnes rencontrées en animant","Youssef Neskière","4 tours animés, 28 personnes rencontrées en animant","Jean Fralvumet","4 tours animés, 28 personnes rencontrées en animant","Fatima Korvouze","4 tours animés, 27 personnes rencontrées en animant","Gabriel Ivreval","4 tours animés, 28 personnes rencontrées en animant","Guillaume Dulvivet","4 tours animés, 28 personnes rencontrées en animant","Étienne Tolvançon","4 tours animés, 28 personnes rencontrées en animant","Appartenances rencontrées en animant","Appartenances rencontrées en animant","Le moins varié rencontre 17 appartenances en animant ; 1 animateur au minimum.","Voir le tableau","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","2 000 mouvements évalués sur 2 000","durée observée 2,5 s","1 cœur de calcul","cadence 4 000 mouvements par seconde","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","5","10","15","20","1","10","100","2 000","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 21 ; au dernier : 23.","écart au plafond a priori, aux points de relevé","0","2","4","6","1","10","100","2 000","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 6 ; au dernier : 4.","excédent de collisions, aux points de relevé","0","1","2","3","4","1","10","100","2 000","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 3 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","20","40","60","1","10","100","2 000","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 67 ; au dernier : 52.","rencontres répétées, aux points de relevé","0","50","100","1","10","100","2 000","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 145 ; au dernier : 103.","redondance d'appartenance, aux points de relevé","0","500","1 000","1","10","100","2 000","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 1 298 ; au dernier : 1 288.","Une valeur a changé au dernier point de relevé, à 2 000 mouvements.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"dd2e4823fb2f13cf80668bc6288b70b68a04eba74f7e1e8c908bfadd90d71fab","etape":"10","etat":"f9d1a54d55528927a5669c38fc3e8561c3565d4643ad129f3e15a25291b1b90a","facteurEchelle":1,"fichier":"16-minimum-atteint","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"b1335181328308a7446cc1481f81796528efe43c985032f1209b6777e658f667"},"instant":"2026-10-06T19:03:02-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":14.16,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte","ratio":11.23,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Petite démonstration 1","12 participants","4 tables · 12 sièges","4 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Qualité","Placement mesuré :","Proposition n° 1 : un geste y pose une réservation","Revenir aux réservations","En-tête chiffré","Profil trié des rencontres","Collisions d'appartenance","Appartenances à chaque table","Paires répétées","Objectifs des tables","Animateurs rencontrés","Diversité par animateur","Performance du calcul","En-tête chiffré","Ce placement est-il bon, et qui s'y trouve mal servi ?","Population mesurée : 12 personnes.","Personnes rencontrées","Personnes distinctes rencontrées, minimum : tous","8","100 %","minimum 8 sur 8","chez Caroline Bralmumet","plafond réalisé 8","plafond a priori 8","Personnes distinctes rencontrées, minimum : mobiles","8","Personnes distinctes rencontrées, minimum : ancrés","—","Collisions d'appartenance","Collisions cumulées (paire et tour)","0","Paires distinctes de même appartenance","0","Excédent de collisions (retrouvailles au-delà de la première)","0","Rencontres répétées et retours","Rencontres répétées choisies (paires)","0","0 imposée, à part","Rencontres d'une même paire, au plus","1","Retours choisis à une table déjà occupée","0","0 imposé, à part","Diversité d'appartenance","Appartenances rencontrées A(p), minimum","2","chez Caroline Bralmumet","borne de diversité 3","Redondance d'appartenance, somme Σ r(p)","72","Taux de diversité d(p), minimum","0,25","Manque et plafond a priori","Plus grand manque (personnes)","0","chez Caroline Bralmumet","0 personne au manque maximal","plafond réalisé 8","Personnes à qui il en manque","0","Écart d'itinéraire maximal (personnes)","0","Écart au plafond a priori maximal (personnes)","0","minimum atteint","Profil trié des rencontres","Qui est le plus mal servi, de combien, et combien sont-ils ?","Profil trié des rencontres, en comptes de personnes","0","2","4","6","8","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","rencontres","appartenances rencontrées","plafond réalisé","borne de diversité","Minimum 8 personnes rencontrées, 12 personnes au minimum, 0 personne sous leur plafond réalisé.","Profil trié des rencontres, en pourcentage du plafond réalisé","0 %","50 %","100 %","2","4","6","8","10","12","Personnes, de la moins servie à la mieux servie","rencontres","100 %","rencontres","100 %","La personne au rang 1, Caroline Bralmumet, rencontre","100 %","minimum 8 sur 8","Voir le tableau","Collisions d'appartenance","D'où vient le problème, et relancer peut-il y changer quelque chose ?","Aucune collision d'appartenance : à chaque tour, chaque table réunit des appartenances distinctes.","Appartenances à chaque table","Où les mêmes cercles se retrouvent-ils à une même table ?","Ce que la grille compte","appartenances par siège","appartenances par personne assise","doublons parmi les affiliés","Appartenances à chaque table, tables par tours","Table 1","Table 2","Table 3","Table 4","Tour 1","Tour 2","Tour 3","Tour 4","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","La table 1 porte la case la plus haute : 0.","Voir le tableau","Paires répétées","Qui revoit trop souvent la même personne ?","Aucune paire ne se revoit : chaque rencontre est unique.","Qui a rencontré qui","Qui a rencontré qui","1. Caroline Bralmumet","2. Hugo Neskault","3. Youssef Ivrotte","4. Louis Selvière","5. Youssef Selvançon","6. Amina Quilmoubre","7. Julie Voskotte","8. Paul Neskivet","9. Michel Bralmignac","10. Zoé Tolveval","11. Luc Urvard","12. Véronique Mirveval","1","2","3","4","5","6","7","8","9","10","11","12","1","1","1","0","1","1","0","1","1","1","0","1","1","0","1","1","1","1","0","1","0","1","1","1","1","1","0","0","1","1","0","1","1","1","0","1","1","1","1","1","0","1","0","1","0","1","1","1","1","1","0","1","1","1","0","1","1","0","1","1","0","1","1","0","1","1","1","1","0","1","1","0","1","1","0","1","1","0","1","1","1","0","1","1","1","1","1","0","1","0","1","0","1","1","1","1","1","0","1","1","1","0","1","1","0","0","1","1","1","1","1","0","1","0","1","1","1","1","0","1","1","0","1","1","1","0","1","1","0","1","1","1","Chaque case porte le nombre de rencontres de la paire. Aucune paire ne se revoit.","Voir le tableau","Objectifs des tables","Qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ?","Aucune personne n'est concernée par les objectifs des tables : la vue n'a rien à montrer.","Animateurs rencontrés","Qui a rencontré le moins d'animateurs ?","Aucune personne n'est concernée par les animateurs, ou aucun animateur n'est désigné : la vue n'a rien à montrer.","Diversité par animateur","Quel animateur voit le moins de diversité à sa table ?","Aucun animateur n'est désigné : la vue n'a rien à montrer.","Performance du calcul","Relancer plus longtemps aurait-il donné mieux ?","200 000 mouvements évalués sur 200 000","durée inconnue","1 cœur de calcul","génération de 5 propositions","Valeurs mesurées aux seuls points de relevé, sous les réglages courants, reliées par un trait : entre deux points, rien n'est mesuré.","minimum brut, aux points de relevé","0","2","4","6","8","1","10","100","1 000","10 000","200 000","Mouvements évalués, échelle logarithmique","minimum brut","minimum brut","Au premier point de relevé, minimum brut : 5 ; au dernier : 8.","écart au plafond a priori, aux points de relevé","0","1","2","3","1","10","100","1 000","10 000","200 000","Mouvements évalués, échelle logarithmique","écart au plafond a priori","écart au plafond a priori","Au premier point de relevé, écart au plafond a priori : 3 ; au dernier : 0.","excédent de collisions, aux points de relevé","0","1","2","3","1","10","100","1 000","10 000","200 000","Mouvements évalués, échelle logarithmique","excédent de collisions","excédent de collisions","Au premier point de relevé, excédent de collisions : 3 ; au dernier : 0.","collisions cumulées, aux points de relevé","0","5","10","15","1","10","100","1 000","10 000","200 000","Mouvements évalués, échelle logarithmique","collisions cumulées","collisions cumulées","Au premier point de relevé, collisions cumulées : 14 ; au dernier : 0.","rencontres répétées, aux points de relevé","0","5","10","1","10","100","1 000","10 000","200 000","Mouvements évalués, échelle logarithmique","rencontres répétées","rencontres répétées","Au premier point de relevé, rencontres répétées : 11 ; au dernier : 0.","redondance d'appartenance, aux points de relevé","0","20","40","60","1","10","100","1 000","10 000","200 000","Mouvements évalués, échelle logarithmique","redondance d'appartenance","redondance d'appartenance","Au premier point de relevé, redondance d'appartenance : 36 ; au dernier : 72.","Aucune valeur n'a changé entre 100 000 et 200 000 mouvements ; une autre graine est l'autre façon de chercher.","Voir le tableau"],"theme":"clair","versionReelle":"2026.10.05.01"}, {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"282726fd0366451d1bd0deaed7772ce16b81c1388e87e8b0c7b086a8abc994ab","etape":"11","etat":"b42451443701c80d433d632788edaab7dd1afea7a57add55a37fcedfdaee98ff","facteurEchelle":1,"fichier":"19-ajustement","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"d9f19ebe1086411d4198a430bf07a74d058f19ffc0da0144593b763f0cce3721"},"instant":"2026-10-06T19:02:00-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-chaise-pleine","ratio":15.09,"role":"marque","seuil":3},{"jeton":"--couleur-chaise-trait","ratio":7.44,"role":"marque","seuil":3},{"jeton":"--couleur-echelle","ratio":14.82,"role":"marque","seuil":3},{"jeton":"--couleur-fantome","ratio":4.34,"role":"marque","seuil":3},{"jeton":"--couleur-hachure","ratio":16.48,"role":"marque","seuil":3},{"jeton":"--couleur-liste-texte","ratio":14.82,"role":"texte","seuil":4.5},{"jeton":"--couleur-marque","ratio":3.63,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":13.81,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5},{"jeton":"--couleur-pastille-fond","ratio":13.44,"role":"marque","seuil":3},{"jeton":"--couleur-poignee","ratio":7.44,"role":"marque","seuil":3},{"jeton":"--couleur-table-trait","ratio":7.44,"role":"marque","seuil":3}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-chaise-pleine","ratio":14.94,"role":"marque","seuil":3},{"jeton":"--couleur-chaise-trait","ratio":8.89,"role":"marque","seuil":3},{"jeton":"--couleur-echelle","ratio":14.62,"role":"marque","seuil":3},{"jeton":"--couleur-fantome","ratio":4.1,"role":"marque","seuil":3},{"jeton":"--couleur-hachure","ratio":15.21,"role":"marque","seuil":3},{"jeton":"--couleur-marque","ratio":3.5,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.02,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5},{"jeton":"--couleur-pastille-fond","ratio":11.62,"role":"marque","seuil":3},{"jeton":"--couleur-pastille-texte","ratio":14.51,"role":"texte","seuil":4.5},{"jeton":"--couleur-poignee","ratio":11.32,"role":"marque","seuil":3},{"jeton":"--couleur-table-trait","ratio":5.59,"role":"marque","seuil":3}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Écriture","Liste des événements","Clair","Sombre","À propos","Écriture","Chaque geste s’enregistre aussitôt ; « Revenir en lecture » arrête l’écriture.","Revenir en lecture","Écriture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Soirée d’essai","13 participants","2 tables · 18 sièges","3 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Plan","Placement retenu","Tour affiché","1","2","3","Zoom +","Zoom −","Ajuster","Listes de noms","Légende","Plein écran","9","1. (réservée, tous les tours)","Basile Lanterneau","—","animation","2.","Gaspard Marbrelle","3.","Ysaline Sablonnet","4.","Anselme Givrecœur","5.","Côme Fenouillet","6.","Apolline Coudraie","7.","Brunœil","8.","Faustine Ormelin","9.","Edgar Ardoisier","10.","Bertille Cressonnier","1.","Basile Lanterneau","— titre","animation","non pourvu","2. (réservée, tour 1)","Capucine Pommerel","3. (libre)","4. (libre)","5. (libre)","6. (libre)","7. (libre)","8. (libre)","Gaspard Marbrelle","déplace dans le placement retenu","1","m","disposition relative — l'encombrement dans la salle n'est pas vérifié","Diagnostic","Chœur de l’Anse","4 personnes : au moins 6 collisions cumulées sur les 3 tours, portées par au moins 2 paires distinctes","Société des Hérons","4 personnes : au moins 6 collisions cumulées sur les 3 tours, portées par au moins 2 paires distinctes","Cercle des Saules","3 personnes : au moins 3 collisions cumulées sur les 3 tours, portées par au moins 1 paire distincte","Tout l'événement","au moins 8 appartenances recroisées par personne","plafond a priori 11 rencontres pour 1 ancré et 11 mobiles","2 retours imposés par 1 ancrage","Listes de travail","Titres de place non pourvus","table 2 : titre","animation","non pourvu","Titres pressentis sans réservation","Gaspard Marbrelle","— titre pressenti","animation","Réserve","Personnes en attente au tour 1","Personne en attente à ce tour."],"theme":"clair","versionReelle":"2026.10.05.01"}, {"cadre":{"hauteur":700,"largeur":1366},"empreinte":"f0a3386a3abb8f4c35d8ca8522c2cb3eccba7f40ac7028f88fd33327cdb1dfe6","etape":"11","etat":"e60a6d4dbb76287b287857b2175d4a784996dcdb3cf6df8e8e30cc9d4d01c14d","facteurEchelle":1,"fichier":"20-mode-lecture","graine":4242,"image":{"hauteur":700,"largeur":1366,"sha256":"d6880d68355f4944b4c9d3a8827f8873c74bc88740f6aa5320139d255162a63f"},"instant":"2026-10-06T19:02:00-04:00","mode":"chromium-headless-shell","pdf":null,"source":"navigateur","styles":{"clair":[{"jeton":"--couleur-bandeau-fond","ratio":15.94,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":6.09,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":9.05,"role":"texte","seuil":4.5},{"jeton":"--couleur-chaise-pleine","ratio":15.09,"role":"marque","seuil":3},{"jeton":"--couleur-chaise-trait","ratio":7.44,"role":"marque","seuil":3},{"jeton":"--couleur-conflit-appartenance","ratio":8.92,"role":"marque","seuil":3},{"jeton":"--couleur-contour-fort","ratio":12.3,"role":"marque","seuil":3},{"jeton":"--couleur-echelle","ratio":14.82,"role":"marque","seuil":3},{"jeton":"--couleur-hachure","ratio":16.48,"role":"marque","seuil":3},{"jeton":"--couleur-liste-texte","ratio":14.82,"role":"texte","seuil":4.5},{"jeton":"--couleur-marque","ratio":3.63,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":13.78,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":5.81,"role":"texte","seuil":4.5},{"jeton":"--couleur-pastille-fond","ratio":13.44,"role":"marque","seuil":3},{"jeton":"--couleur-poignee","ratio":7.44,"role":"marque","seuil":3},{"jeton":"--couleur-refus","ratio":8.34,"role":"texte","seuil":4.5},{"jeton":"--couleur-selection","ratio":4.57,"role":"marque","seuil":3},{"jeton":"--couleur-table-trait","ratio":7.44,"role":"marque","seuil":3}],"sombre":[{"jeton":"--couleur-action-texte","ratio":8.45,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-fond","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte","ratio":12.84,"role":"texte","seuil":4.5},{"jeton":"--couleur-bandeau-texte-secondaire","ratio":7.6,"role":"texte","seuil":4.5},{"jeton":"--couleur-chaise-pleine","ratio":14.94,"role":"marque","seuil":3},{"jeton":"--couleur-chaise-trait","ratio":8.89,"role":"marque","seuil":3},{"jeton":"--couleur-conflit-appartenance","ratio":6.81,"role":"marque","seuil":3},{"jeton":"--couleur-contour-fort","ratio":11.62,"role":"marque","seuil":3},{"jeton":"--couleur-echelle","ratio":14.62,"role":"marque","seuil":3},{"jeton":"--couleur-hachure","ratio":15.21,"role":"marque","seuil":3},{"jeton":"--couleur-marque","ratio":3.5,"role":"marque","seuil":3},{"jeton":"--couleur-page-texte","ratio":11.02,"role":"texte","seuil":4.5},{"jeton":"--couleur-page-texte-secondaire","ratio":6.72,"role":"texte","seuil":4.5},{"jeton":"--couleur-pastille-fond","ratio":11.62,"role":"marque","seuil":3},{"jeton":"--couleur-pastille-texte","ratio":14.51,"role":"texte","seuil":4.5},{"jeton":"--couleur-poignee","ratio":11.32,"role":"marque","seuil":3},{"jeton":"--couleur-refus","ratio":8.14,"role":"texte","seuil":4.5},{"jeton":"--couleur-selection","ratio":4.18,"role":"marque","seuil":3},{"jeton":"--couleur-table-trait","ratio":5.59,"role":"marque","seuil":3}]},"texte":["Gestion table tournante Libre","construction de documentation","documentation","Lecture","Liste des événements","Clair","Sombre","À propos","Lecture","Rien ne change ; « Modifier » passe en écriture.","Modifier","Lecture","Défaire","État du plan","Brouillon","Proposé","Retenu","Bloqué","Imprimer…","Soirée d’essai","13 participants","2 tables · 18 sièges","3 tours","Préparer","Import","Participants","Tables et tours","Placer","Plan","Diagnostic","Génération","Propositions","Qualité","Produire","Badges","Plan","Placement retenu","Tour affiché","1","2","3","Zoom +","Zoom −","Ajuster","Listes de noms","Légende","Plein écran","7","1. (réservée, tous les tours)","Basile Lanterneau","—","animation","2.","Ysaline Sablonnet","3.","Anselme Givrecœur","4.","Côme Fenouillet","5.","Apolline Coudraie","6.","Brunœil","7.","Faustine Ormelin","8.","Edgar Ardoisier","9.","Bertille Cressonnier","10. (libre)","1.","Gaspard Marbrelle","— titre","animation","non pourvu","2. (réservée, tour 1)","Capucine Pommerel","3.","Basile Lanterneau","4. (libre)","5. (libre)","6. (libre)","7. (libre)","8. (libre)","Table 2, siège 4","L'événement est ouvert en lecture : « Modifier » permet de le changer.","Modifier","Fermer","1","m","disposition relative — l'encombrement dans la salle n'est pas vérifié","Diagnostic","Chœur de l’Anse","4 personnes : au moins 6 collisions cumulées sur les 3 tours, portées par au moins 2 paires distinctes","Société des Hérons","4 personnes : au moins 6 collisions cumulées sur les 3 tours, portées par au moins 2 paires distinctes","Cercle des Saules","3 personnes : au moins 3 collisions cumulées sur les 3 tours, portées par au moins 1 paire distincte","Tout l'événement","au moins 8 appartenances recroisées par personne","plafond a priori 11 rencontres pour 1 ancré et 11 mobiles","2 retours imposés par 1 ancrage","Listes de travail","Titres de place non pourvus","table 2 : titre","animation","non pourvu","Titres pressentis sans réservation","Gaspard Marbrelle","— titre pressenti","animation","Réserve","Personnes en attente au tour 1","Personne en attente à ce tour.","Table 2, siège 4","4. (libre)","Choisissez d'abord une personne : dans la réserve, dans la liste des pressentis, ou par « Déplacer » dans son menu.","Portée","Tour 1","Tous les tours","Libellé du titre","Assigner","Réserver","Donner un titre","Désigner"],"theme":"clair","versionReelle":"2026.10.05.01"}, diff --git a/spec.md b/spec.md index a2c1f84..d4e157a 100644 --- a/spec.md +++ b/spec.md @@ -47,11 +47,11 @@ Le parcours est **un ordre de lecture, pas une séquence imposée**. Le logiciel n'enchaîne aucun assistant et n'exige jamais de recommencer au début : un assistant linéaire obligerait l'opérateur qui découvre une faute de saisie au moment d'imprimer à ressortir de toutes les étapes pour y revenir, or corriger -est ce qu'il fait le plus (§ 10.2). La navigation de l'événement groupe ses huit +est ce qu'il fait le plus (§ 10.2). La navigation de l'événement groupe ses neuf sections en trois phases nommées : **Préparer** (import, participants, tables et -tours), **Placer** (plan, diagnostic, génération, propositions), **Produire** -(badges). Le groupement est une lecture, non un ordre : chaque section reste -offerte depuis toutes les autres. +tours), **Placer** (plan, diagnostic, génération, propositions, qualité), +**Produire** (badges). Le groupement est une lecture, non un ordre : chaque +section reste offerte depuis toutes les autres. **Deux verrous existent pourtant, et ils sont ailleurs.** L'état **bloqué** refuse toute modification, import compris (§ 9, § 10.1) ; le **mode lecture**, @@ -190,11 +190,17 @@ logiciel nomme automatiquement l'instant qui précède chaque génération (§ 8 retenu sort en filigrane BROUILLON (§ 11.7) — nécessaire en fait pour distribuer quoi que ce soit.* L'opérateur lit la page de qualité (§ 12), compare deux propositions sur le même axe — celui du **manque** (§ 12.10) —, retient celle -qu'il préfère. Le logiciel sépare ce que le moteur a décidé de ce que les -réservations imposent (§ 5.4). Retenir fait passer le plan à l'état *Retenu* -(§ 9) ; les propositions non retenues restent disponibles. Le retenu se résume -ensuite dans la liste des événements, par la différence absolue de sa somme de -redondance à la cible de l'événement (§ 8.1). +qu'il préfère. La page de qualité est la section « Qualité » de l'événement : +elle mesure le placement que le plan montre, et chaque ligne du tableau des +propositions y mène. Elle répond à deux questions — ce placement est-il bon, qui +s'y trouve mal servi — par le profil des rencontres, les collisions +d'appartenance, les paires répétées, le mélange des appartenances à chaque +table, les objectifs des tables tour par tour, les animateurs, et la performance +du calcul qui a produit la proposition. Le logiciel sépare ce que le moteur a +décidé de ce que les réservations imposent (§ 5.4). Retenir fait passer le plan +à l'état *Retenu* (§ 9) ; les propositions non retenues restent disponibles. Le +retenu se résume ensuite dans la liste des événements, par la différence absolue +de sa somme de redondance à la cible de l'événement (§ 8.1). **11. Ajuster à la main.** *Facultative, reprenable.* Le même geste qu'à l'étape 7 déplace maintenant une personne réelle dans le placement retenu. **Le @@ -204,11 +210,11 @@ lit, elle ne recalcule rien). **12. Imprimer.** La **planche de badges** (§ 11.1), qui est le seul document PDF, et au besoin les vues imprimables : liste d'accueil, feuille par table, -plan, rapport, page de qualité (§ 11.7). Le logiciel n'interdit pas d'imprimer -un plan qui n'est ni retenu ni bloqué ; il le marque **BROUILLON** en filigrane. -**Produire la planche n'est pas une modification** : elle reste disponible en -mode lecture et sur un plan bloqué. L'opérateur bloque ensuite le plan pour le -distribuer (§ 9). +plan (§ 11.7). La page de qualité se lit à l'écran et ne s'imprime pas. Le +logiciel n'interdit pas d'imprimer un plan qui n'est ni retenu ni bloqué ; il le +marque **BROUILLON** en filigrane. **Produire la planche n'est pas une +modification** : elle reste disponible en mode lecture et sur un plan bloqué. +L'opérateur bloque ensuite le plan pour le distribuer (§ 9). **Ce qui doit avoir eu lieu.** Les étapes 2, 3, 5, 6, 7, 10 et 11 sont facultatives ; 2, 3, 4, 5, 6, 7, 9 et 11 se reprennent indéfiniment, dans @@ -741,6 +747,61 @@ au diagnostic préalable ; elles ne corrigent jamais après coup un chiffre mesuré. Deux arithmétiques pour une même quantité sont le mode de défaillance que le § 13.2 interdit. +**La page de qualité lit, en plus, des mesures qui ne classent rien.** Elles +décrivent un placement à la fois (§ 12) ; aucune n'entre dans la recherche ni +dans le classement, et aucune ne s'affiche dans le tableau des propositions. +Elles se mesurent, comme les autres, sur le plan complet, par le même parcours +des tours. + +| mesure | définition | population, et « — » | +|---|---|---| +| **capacité** — c_t | sièges de la table t (§ 4) | toute table | +| **occupants** — o_{t,r} | personnes assises à la table t au tour r | toute table, tout tour ; une table vide à un tour donne une case vide, « — » | +| **affiliés assis** — α_{t,r} | occupants qui portent une appartenance | idem | +| **appartenances à la table** — δ_{t,r} | appartenances distinctes portées par les affiliés assis | « — » quand α_{t,r} = 0 | +| **sièges sans appartenance nouvelle** — c_t − δ_{t,r} | sièges de la table au-delà du nombre de ses appartenances distinctes : siège vide, assis sans appartenance, ou second d'une appartenance ; zéro veut dire que chaque siège porte une appartenance de plus | « — » quand α_{t,r} = 0 | +| **assis sans appartenance nouvelle** — o_{t,r} − δ_{t,r} | occupants au-delà du nombre des appartenances distinctes ; zéro veut dire que chaque assis porte une appartenance de plus | idem | +| **doublons d'appartenance** — α_{t,r} − δ_{t,r} | affiliés assis au-delà du premier de leur appartenance ; zéro veut dire qu'aucune appartenance n'est assise deux fois à cette table ce tour-là | idem | +| **possibles du tour** — Π_r | couples (p, r) possibles au tour r (§ 4.5), fixés compris | personnes concernées ; « — » sans couple possible à ce tour | +| **servis du tour** — S_r | couples (p, r) servis au tour r : p assis à une table dont l'objectif en vigueur au tour r lui correspond et qu'il peut occuper | idem | +| **hors objectif du tour** | Π_r − S_r ; la somme sur les tours est le total des tours hors objectif | idem | +| **assis sans table possible** — σ_r | personnes présentes assises à une table au tour r dont le couple (p, r) n'est pas possible : concernées ou non, sans étiquette comprises ; une personne en réserve à ce tour n'y est pas | tout tour, dès qu'une personne est concernée ; écrit même quand Π_r = 0 | +| **personnes rencontrées en animant** — U_f, U_{f,r} | pour un animateur f, les personnes distinctes assises à sa table à un tour où il anime, à une table qu'elles peuvent occuper (§ 4.5), lui non compté : sur l'union de ses tours animés, U_f ; au seul tour r, U_{f,r} | animateurs présents ; « — » sans animateur | +| **appartenances rencontrées en animant** — A_f, A_{f,r} | appartenances distinctes portées par les affiliés de U_f, de U_{f,r} | idem | +| **étiquettes rencontrées en animant** — E_f, E_{f,r} | étiquettes distinctes portées par les personnes de U_f, de U_{f,r}, chaque étiquette comptée une fois quel que soit le nombre de ses porteurs | animateurs présents, quand une personne présente porte une étiquette ; « — » sinon | +| **tours animés** — T_f | tours où f anime | animateurs présents | + +Les trois comptes du mélange d'une table s'emboîtent : c_t − δ ≥ o − δ ≥ α − δ +≥ 0, chacun nul exactement quand son dénominateur ne porte que des appartenances +distinctes. + +Un couple fixé n'est possible que si sa table réservée lui correspond, et il y +est servi (§ 4.5) : Π_r − S_r = P_r − S^nf_r, où P_r compte les couples +possibles du tour dont la personne n'est pas fixée (§ 5.6) et S^nf_r les servis +non fixés. Les symboles P_r, P′_r et L_r gardent le sens du § 5.6 ; U_f se lit +comme les rencontres d'animateurs du § 4.5, qui ne comptent qu'à une table que +la personne peut occuper. + +Le compte de personnes rencontrées par chacun, défini plus haut, est déjà le +nombre de personnes **nouvelles** qu'elle rencontre : une personne revue y +compte une fois. Son mélange se lit par la répartition de ce compte (§ 12.3) et +par son pourcentage du plafond réalisé, toujours accompagné du compte. + +**Les pourcentages de la page de qualité** sont ceux de quatre rapports, et +d'eux seuls (§ 12.8) : + +| rapport | numérateur | dénominateur | +|---|---|---| +| rencontres d'une personne | rencontres(p) | plafond réalisé(p) | +| tours possibles servis, d'un tour ou de la soirée | S_r, ou Σ_r S_r | Π_r, ou Σ_r Π_r | +| tours servis d'une personne | s(p) | P(p), ses tours possibles | +| appartenances d'une table à un tour, par siège, par assis, par affilié | δ_{t,r} | c_t, o_{t,r}, α_{t,r} | + +Le moteur les calcule, par une seule fonction : ⌊100 · n / d⌋, borné à 1 et à 99 +quand 0 < n < d, et « — » quand d vaut 0. Jamais 0 % tant que le compte n'est +pas nul, jamais 100 % tant qu'un manque existe. Aucun n'entre dans la recherche, +le classement ou le tableau des propositions. + ### 5.5 Le plafond et la borne prouvée Deux notions, **deux noms, jamais trois**. @@ -783,16 +844,18 @@ base : | **plafond a priori** | maximisé sur les itinéraires admissibles | **capacités** | diagnostic § 5.6, tuile § 12.2 | | **plafond réalisé** | calculé sur l'itinéraire de la proposition | **occupation** | à côté de chaque mesure | | **borne prouvée** | l'affirmation qu'une construction atteint le plafond | — | mention « minimum atteint » | -| **manque** | plafond réalisé − rencontres | — | tuile 2, courbe de comparaison (§ 12.10) | -| **écart d'itinéraire** | plafond a priori − plafond réalisé | — | tuile 3, avec son plancher | +| **manque** | plafond réalisé − rencontres | — | tuile du manque maximal (§ 12.2), courbe de comparaison (§ 12.10) | +| **écart d'itinéraire** | plafond a priori − plafond réalisé | — | tuile de l'écart d'itinéraire maximal (§ 12.2), avec son plancher, comme au diagnostic (§ 5.6) | | **écart au plafond a priori** | manque + écart d'itinéraire | — | départage § 5.7, certificat | Ces six lignes sont la **seule** définition faisant autorité, et l'expression « l'écart », employée seule, ne paraît nulle part : trois quantités affichées sous un même libellé font conclure à l'opérateur que le logiciel compte mal. La règle « deux notions, deux noms, jamais trois » n'est pas affaiblie — aucun de -ces noms ne désigne une **borne**, et il n'existe toujours que deux bornes ; elle -est simplement tenue par un tableau plutôt que par la mémoire du rédacteur. +ces noms ne désigne une **borne**, et il n'existe toujours que deux bornes sur +les rencontres — la borne de diversité et la borne des animateurs bornent +d'autres grandeurs et ne prouvent rien — ; elle est simplement tenue par un +tableau plutôt que par la mémoire du rédacteur. Sans le partage a priori / réalisé, le diagnostic annonce 28, la page de qualité affiche 27, et l'opérateur conclut à une régression du moteur. @@ -849,17 +912,47 @@ Quand aucun chemin ne conclut, le logiciel affiche l'**écart au plafond a priori** et écrit **« atteignabilité inconnue »**, jamais « peut mieux faire » : l'un invite à relancer, l'autre dit que relancer ne prouvera rien. -**La borne de diversité.** Soit G le nombre d'appartenances déclarées et g_p -l'effectif de celle de p : +**La borne de diversité.** A(p) a sa propre borne arithmétique, calculée comme +le plafond réalisé, sur l'occupation de la proposition. Elle borne une autre +grandeur que les rencontres et ne prouve rien : elle se nomme **borne de +diversité**, jamais plafond, pour ne jamais se confondre avec le plafond des +rencontres. Soit G le nombre d'appartenances distinctes des personnes +présentes — les exclues n'en apportent aucune —, N_aff le nombre de personnes +présentes affiliées, g_p l'effectif de l'appartenance de p, et ε_p = 1 si p est +affiliée, 0 sinon : ``` -A_max(p) = min( Φ(p) , G , (N − g_p) + 1 ) +A_max(p) = min( Φ_aff(p) , G , (N_aff − g_p) + 1 ) si p est affiliée +A_max(p) = min( Φ_aff(p) , G ) sinon ``` -où Φ(p) est le plafond recalculé en ne comptant comme occupants que les -affiliés. Le « + 1 » compte sa propre appartenance, qu'un collègue rencontré -suffit à apporter : sans lui, un événement où tout le monde partage une -appartenance annoncerait A_max = 0 alors que chacun en rencontre une. +où Φ_aff(p) est le **plafond réalisé des affiliés** : la formule du plafond +réalisé, où seuls les affiliés comptent comme occupants — + +``` +Φ_aff(p) = min( N_aff − ε_p , Σ a^aff_t + min( n^aff_p , Σ v^aff_{t,r} ) ) + t∈D (t,r)∈I + + avec v^aff_{t,r} = α_{t,r} − ε_p − a^aff_t +``` + +a^aff_t compte les ancrés affiliés de t, p non compté ; n^aff_p, les mobiles et +partiellement fixés affiliés, p non compté ; α_{t,r}, les affiliés assis +(§ 5.4). Φ_aff(p) borne |F(p)|, les affiliés que p rencontre, pour la même +raison que le plafond réalisé borne ses rencontres. Le « + 1 » compte +l'appartenance de p, qu'un collègue rencontré suffit à apporter : sans lui, un +événement où tout le monde partage une appartenance annoncerait A_max = 0 alors +que chacun en rencontre une. Une personne sans appartenance n'en apporte aucune, +et ses autres termes la bornent déjà. Chaque autre appartenance comptant au +moins une personne présente, (N_aff − g_p) + 1 ne descend jamais sous G : le +terme rappelle d'où vient la borne, G la tient. + +La borne de diversité se trace sur le profil en comptes, en pointillés, sous son +nom, et s'écrit dans la tuile des appartenances distinctes rencontrées, dans le +jumeau et dans l'infobulle du profil (§ 12.2, § 12.3) ; aucun pourcentage ne la +prend pour dénominateur. La garde du § 12.3 éprouve A(p) ≤ |F(p)| ≤ Φ_aff(p) et +A(p) ≤ A_max(p). Elle ne se calcule pas a priori : le diagnostic garde sa +redondance minimale (§ 5.6). ### 5.6 Le diagnostic, avant la recherche @@ -887,8 +980,9 @@ inévitable, **combien**, et ce qui le rendrait évitable : l'événement ; - **le plancher de l'écart d'itinéraire maximal**, quand la configuration en impose un (§ 12.10.4). Le diagnostic ne l'écrit que là où il sait le prouver, - et se tait ailleurs — **jamais 0 par défaut**. Sans lui, le troisième chiffre - de la page de qualité envoie relancer indéfiniment vers un zéro que la + et se tait ailleurs — **jamais 0 par défaut** ; sur la page de qualité, la + tuile de ce chiffre l'écrit dessous (§ 12.2). Sans ce plancher, le troisième + chiffre de la page envoie relancer indéfiniment vers un zéro que la configuration interdit ; - **le manque de places**, `Σ (c_t − k_t) < n`. Ce n'est pas un refus de geste mais une **propriété de la configuration** (§ 5.9) : le diagnostic la nomme @@ -1341,6 +1435,47 @@ longue. Une proposition issue d'une recherche tronquée porterait la même grain et le même compte qu'une proposition complète, et ne s'en distinguerait dans aucun fichier. +**La recherche rapporte sa course, sans lire l'horloge.** Elle compte les +**mouvements évalués** de chaque proposition : le compte d'arrêt, ou moins quand +le n-uplet devient nul, rien ne restant à reprendre, ou zéro quand le plan +initial l'est déjà. Elle garde la meilleure affectation à chaque **point de +relevé** — 1, 10, 100, 1 000 mouvements, chaque puissance de dix strictement +sous le dernier mouvement évalué. Ce dernier est aussi un point de relevé, et +son plan est celui de la proposition, qui ne se copie pas : au plus ⌊log₁₀ +a⌋ + 1 copies de N·R entiers pour un compte d'arrêt a. Le mot « jalon » reste à +l'historique (§ 8.3). Copier une affectation ne tire rien et ne change aucune +comparaison : à graine égale, le plan est celui d'avant. Tant que la règle +d'arrêt ne lit que le compte et les mouvements déjà évalués, le point de relevé +k est exactement le plan que la même graine rend au compte d'arrêt k, la +descente ne lisant le compte qu'à sa borne de boucle ; une règle d'arrêt qui +lirait autre chose romprait cette égalité, et l'épreuve du § 14.10 la refuse. + +**La durée est celle de la génération** : l'application la prend autour du +calcul entier (§ 5.10), quel que soit le nombre de fils, et ne date aucune +proposition seule. La **cadence** de la génération est la somme des mouvements +évalués de toutes les propositions qu'elle a calculées, celles qu'elle écarte +comme identiques comprises, divisée par cette durée, par seconde : une mesure de +la génération entière, sur tous ses fils, qui ne se ramène ni à une proposition, +cherchée sur un seul fil, ni à un point de relevé ; aucune durée ne s'estime par +point. Une durée nulle ou absente s'écrit « inconnue », et la cadence avec elle. + +**Les mouvements évalués et les plans des points de relevé s'écrivent dans le +compagnon des courses** (§ 8.6), sous l'identité de la proposition : ils sont un +fait de la recherche, que la configuration courante ne change pas. **Leurs +valeurs ne s'écrivent nulle part** : la page de qualité mesure chaque point de +relevé sous les réglages courants, par le recalcul complet, quand elle montre la +proposition (§ 12.14), jamais par le score incrémental ; elle garde ces valeurs +tant que la charge ne change pas, et n'affiche jamais une valeur mesurée sous +d'autres réglages. **La durée et la cadence valent pour la séance**, comme la +durée du dernier calcul : elles ne s'écrivent ni dans le fichier d'état ni dans +le journal, et dépendent de la machine. Elles se rattachent à la génération — +chaque proposition qu'elle ajoute, sous son identifiant, sa graine, son compte +d'arrêt et son historique — : un rechargement les retire, et une proposition qui +ne porte plus la même graine ou le même historique sous son identifiant ne les +retrouve pas. Une proposition rouverte montre la course que le compagnon garde +et dit sa durée inconnue. Le coût de la course dans la boucle est un compteur +par mouvement et, par point de relevé, une copie de l'affectation. + **Le recalcul complet est la mesure**, celui dont sortent les chiffres du § 5.4 et de la page de qualité ; **l'incrémental n'existe que dans la boucle de recherche**, où il sert de score et ne s'affiche jamais. C'est l'exception nommée @@ -1886,12 +2021,11 @@ fichier : c'est une posture de la séance, pas une propriété du plan. **Ce qui reste vivant en lecture** : le sélecteur de tour, le zoom, le cadrage, l'ajustement, le plein écran, la mise en évidence, l'affichage des listes, la -**page de qualité** — son export CSV des indicateurs et son impression -(§ 11.7) —, la comparaison des propositions, la lecture de l'historique, -l'impression, et la **production de la planche de badges**, qui n'écrit aucun -fichier d'événement (§ 11.6). C'est la condition pour que la protection -tienne : si naviguer exigeait de passer en écriture, l'opérateur y resterait en -permanence et le mode lecture ne protégerait plus rien. +**page de qualité** (§ 12), la comparaison des propositions, la lecture de +l'historique, l'impression, et la **production de la planche de badges**, qui +n'écrit aucun fichier d'événement (§ 11.6). C'est la condition pour que la +protection tienne : si naviguer exigeait de passer en écriture, l'opérateur y +resterait en permanence et le mode lecture ne protégerait plus rien. **On en sort par un seul geste délibéré** — une commande « Modifier » à place fixe — et le logiciel y retourne **seul après dix minutes d'inactivité**. Ce @@ -2092,16 +2226,102 @@ a récrits après la sortie ou qu'une séance coupée a laissés. Un exécutable portable ne laisse ainsi, hors du dossier de travail, rien qui survive à la séance suivante. -**Deux fichiers par événement :** +**Deux fichiers par événement, et le compagnon des courses :** | fichier | contenu | écriture | |---|---|---| | `.gtt.json` | l'état courant, complet | réécrit en entier à chaque entrée | | `.gtt-journal.jsonl` | les entrées d'historique | **ajout en fin**, une ligne par entrée ; réécrit en entier, de façon atomique, à la conversion de format (§ 8.8) et après des lignes écartées | +| `.gtt-courses.json` | la course de la recherche de chaque proposition (§ 5.10) : ses mouvements évalués et les placements de ses points de relevé | réécrit en entier, de façon atomique, après l'état, **seulement quand les propositions changent** — une génération, un effacement, un retour qui en rend ou en retire — ; jamais à un autre geste | Les deux portent **l'identifiant interne de l'événement**, et c'est lui qui les apparie — jamais leurs noms. +**Le compagnon des courses** suit le nom du fichier d'état, et porte lui aussi +l'identifiant de l'événement. Il garde ce que la recherche a rapporté +d'elle-même (§ 5.10), que ni le fichier d'état ni le journal ne portent : une +course pèse environ cinq fois sa proposition, et chaque geste, qui réécrit +l'état en entier (§ 8.2), en paierait le poids. À part, elle ne coûte qu'à la +génération qui la produit. + +Sa première ligne porte son propre format, 1, et l'identifiant de l'événement ; +puis une ligne par proposition, `{id, graine, arret, historique, horodatage, +empreinte, course}`, puis la fermeture. `horodatage` est celui que la génération +a posé sur la proposition (§ 8.9), absent quand elle n'en porte pas. `empreinte` +est un entier de 0 à 2⁵³ − 1, l'empreinte du texte canonique du placement de la +proposition (§ 8.9) : sa réserve rangée par identifiant croissant, chaque liste +de table aussi quand `siegesAttribues` est faux ; ni l'horodatage ni la version +qui l'a produite n'y entrent. Elle n'est pas cryptographique : elle départage +deux placements qui partagent déjà les autres champs. `course` porte : + +| clé | forme | +|---|---| +| `evalues` | entier, de 0 à l'`arret` de la proposition : ses mouvements évalués | +| `releves` | liste d'un objet `{mouvements, placement}` par puissance de dix strictement inférieure à `evalues`, dans l'ordre croissant : `mouvements` vaut exactement 1, puis 10, puis 100… ; la liste est vide quand `evalues` vaut 0 ou 1. `placement` a la forme positionnelle de celui de la proposition (§ 8.9), sur ses tables, ses capacités, son nombre de tours et ses participants déclarés, mis en forme sous son drapeau `siegesAttribues` exactement comme celui de la proposition : sièges attribués, rangé par siège, chaises vides et sièges réservés compris | + +Le dernier point de relevé, à `evalues` mouvements, est le placement de la +proposition : il ne s'écrit pas deux fois. La course ne porte rien d'autre : +aucune valeur mesurée — la page de qualité mesure chaque point sous les réglages +courants (§ 12.14) —, ni durée, ni cadence, qui valent pour la séance (§ 5.10). +Une génération écrit la course de chaque proposition qu'elle ajoute, +`{"evalues":0,"releves":[]}` quand le plan initial n'avait rien à reprendre. Le +retenu n'en a pas : il lit celle de la proposition d'où il vient, tant qu'elle +est dans la liste. + +**Une entrée ne vaut que pour sa proposition** : celle de l'état qui porte +exactement son identifiant, sa graine, son compte d'arrêt, son historique, son +horodatage — ou n'en porte pas, comme l'entrée — et l'empreinte de son +placement. Les quatre premiers ne suffisent pas à désigner une recherche : le +compteur des propositions recule quand l'opérateur reprend un état d'avant une +génération (un `.precedent`), et la graine proposée peut être la même ; après un +changement qui laisse la déclaration intacte — une appartenance, une +réservation, un réglage —, la recherche suivante porte les mêmes quatre champs +et une autre course, qui finit sur un autre placement **ou sur le même**. +L'empreinte seule ne départage donc pas deux recherches ; l'horodatage, que la +génération pose une fois sur chaque proposition à la seconde de son horloge et +que les gestes suivants gardent, les départage. Deux recherches ne se confondent +que générées sous la même graine à la même seconde de leurs horloges, et finies +sur le même placement à une collision d'empreinte près : la course de l'une ne +se prête pas à la proposition de l'autre, et un retour à la première génération +réécrit le compagnon. Une proposition sans horodatage — d'un état écrit avant +que la génération ne date ses propositions — n'est reconnue qu'aux quatre champs +et à l'empreinte : deux recherches de même identité qui finissent sur le même +placement s'y confondent, et l'une peut recevoir la course de l'autre. Une +entrée périmée — laissée par une coupure entre l'état et le compagnon, par une +copie à la main, par une autre recherche de même identité — ne trouve pas sa +proposition et s'ignore. Une entrée d'une autre forme, ou dont la course +contredit sa proposition — un `evalues` hors de ses bornes, une abscisse +manquante, en trop ou hors d'ordre, un placement de relevé dont les chaises +vides, les longueurs ou le multiensemble des identifiants, réserve comprise, +contredisent la déclaration de la proposition —, s'ignore seule, les autres +gardées. La course se contrôle contre sa proposition à la lecture du compagnon, +et de nouveau quand la page de qualité la lit : **une course contradictoire +n'atteint jamais le détail**. + +**Le compagnon ne bloque jamais rien.** Ce qu'il porte se dérive de la +recherche, jamais de l'opérateur : absent, illisible, aux octets hors UTF-8, +d'un autre format ou d'un autre événement, il laisse inconnues les courses qu'il +ne confirme pas ; l'événement s'ouvre et s'écrit, et la page de qualité dit que +la course n'est pas gardée. Un fichier écrit avant le compagnon, ou par une +version antérieure, n'en a pas : ses propositions n'ont pas de course connue. Un +refus d'écrire le compagnon ne refuse pas le geste : l'état et le journal sont +écrits, la course reste connue pour la séance, et l'écriture suivante qui change +les propositions le pose. + +**Il ne s'écrit que quand les propositions changent** : le logiciel écrit les +courses qu'il connaît des propositions de l'état, et seulement quand elles ne +sont plus celles que le compagnon porte — après une génération, un effacement, +un retour qui rend ou retire des propositions. Il garde pour la séance les +courses lues et celles de ses générations, même d'une proposition retirée : un +retour qui la rend retrouve sa course et la réécrit. Après une réouverture, une +proposition effacée puis rendue par un retour n'a plus de course connue. + +**Ce qu'il coûte.** Sur la grande démonstration — 1 040 places par +proposition —, une course au compte d'arrêt de 200 000 mouvements porte six +placements de relevé, de l'ordre de 25 ko ; vingt propositions, de l'ordre de +0,5 Mo, deux cents, de l'ordre de 5 Mo. Il s'écrit au plus une fois par +génération, et sa lecture ne coûte qu'à l'ouverture. + **Le nom du fichier dérive du nom de l'événement** — un dossier d'identifiants opaques est inutilisable dans un explorateur. La dérivation retire les caractères que Windows refuse, **refuse les noms réservés quelle que soit la @@ -2111,16 +2331,16 @@ complet sur le plus long chemin que l'événement écrit**, et **retombe sur un générique** quand la dérivation ne laisse rien. Ce plus long chemin assemble les plus longues parties qu'un fichier de l'événement peut porter : le dossier daté de la corbeille (§ 8.7) au rang de collision le plus long — deux suppressions -dans la même seconde se départagent par `_2`, `_3`… jusqu'à `_99` —, le plus long -suffixe, celui de la génération de secours, `.gtt.json.precedent`, dix-neuf +dans la même seconde se départagent par `_2`, `_3`… jusqu'à `_99` —, le plus +long suffixe, celui de la génération de secours, `.gtt.json.precedent`, dix-neuf caractères, et le suffixe `.ecriture` de l'écriture atomique (§ 8.8) : `corbeille/AAAA-MM-JJ_HH-MM-SS_99/.gtt.json.precedent.ecriture`, soixante -et un caractères outre le nom. `.gtt-journal.jsonl` n'en compte que dix-huit, et -`.gtt.json` neuf : une borne posée sur l'état ou sur le journal laisserait -déborder tout le reste. **La dérivation reçoit la racine du dossier de travail -en paramètre**, celle-ci n'étant plus connue à l'écriture du code, et son test -l'exerce sur les deux issues. **L'autorité reste le nom inscrit dans le -fichier.** +et un caractères outre le nom. `.gtt-journal.jsonl` n'en compte que dix-huit, +`.gtt-courses.json` dix-sept, et `.gtt.json` neuf : une borne posée sur l'état +ou sur le journal laisserait déborder tout le reste. **La dérivation reçoit la +racine du dossier de travail en paramètre**, celle-ci n'étant plus connue à +l'écriture du code, et son test l'exerce sur les deux issues. **L'autorité reste +le nom inscrit dans le fichier.** **Pourquoi l'historique n'est pas dans le fichier d'état**, pour deux raisons distinctes. *La taille* : un plan de 260 personnes sur 4 tours pèse de l'ordre @@ -2167,6 +2387,16 @@ complète sous les nouveaux noms, puis supprime l'ancienne — jamais l'inverse. Une panne laisse alors deux paires, ce qui se voit et se répare, au lieu d'aucune. +Le compagnon des courses suit : écrit sous le nouveau nom après l'état, supprimé +avec l'ancienne paire ; quand l'écriture du nouveau est refusée, l'ancien se +déplace sous le nouveau nom, ou reste où il est si le déplacement l'est aussi, +et n'est jamais supprimé. **Copier** donne à la copie le compagnon des courses +de ses propositions, sous son identifiant ; **supprimer** le met à la corbeille +avec les autres fichiers. **Importer de l'autre emplacement** le recopie tel +quel après l'état, quand il se lit ; l'ouverture le revalide entrée par entrée, +et un refus de l'écrire ne refuse pas l'import. Un **fichier d'état venu +d'ailleurs** n'en a pas : ses courses ne sont pas connues. + **Importer** un fichier venu d'ailleurs le **copie** dans le dossier de travail. Travailler en place écrirait dans un dossier de téléchargements que l'opérateur vide régulièrement. @@ -2457,6 +2687,10 @@ propositions (§ 15.1), soit 1 040 places par proposition : | un enregistrement nommé par place (`tour`, `table`, `siege`, `participant`) | de l'ordre de 50 ko | **de l'ordre de 1 Mo** | | positionnelle, en-têtes compris | de l'ordre de 5 ko | **de l'ordre de 100 ko** | +La course de la recherche n'est pas dans ce tableau : elle est dans le compagnon +des courses (§ 8.6), sous la même forme positionnelle. Le fichier d'état et le +journal n'en portent rien, et leurs ordres de grandeur valent tels quels. + Un facteur de l'ordre de **dix**. Trois conséquences sur des chiffres écrits ailleurs : @@ -3313,22 +3547,21 @@ page ; aucune ne se découpe, aucune ne doit entrer dans une pochette. | **liste d'accueil** | l'accueil, du début à la fin de l'arrivée | la pile de badges triée la remplace **pour l'arrivée** ; elle ne la remplace ni pour « où est assise telle personne ? » posé par un tiers, ni pour un badge perdu en cours de soirée. Le logiciel la conserve : c'est une table de texte, la sortie la moins exposée au risque de pagination, et la plus manipulée | | **feuille par table** | l'animateur de table, à chaque changement de tour | chacun connaît sa table par son badge, donc la rotation se fait ; ce qui disparaît est l'appel nominal, et une place vide ne se remarque plus | | **plan de salle** | l'opérateur et le personnel, au montage | il reste à l'écran, où il est interactif ; c'est la vue qui perd le plus à n'être pas sur papier pendant le montage d'une salle sans portable | -| **rapport de placement** | l'opérateur seul, avant la soirée, pour choisir une proposition | il a l'écran sous les yeux au moment où il choisit ; le logiciel exporte en plus les indicateurs en **CSV** | -| **page de qualité** | l'opérateur seul, au même moment | idem ; ses graphiques sont en SVG, que le navigateur imprime à la résolution de l'imprimante, et chacun garde le **jumeau tabulaire** du § 12.7, qui est ce qui s'imprime proprement | **Toute impression passe par un écran d'aperçu**, que la commande « Imprimer… » de l'événement ouvre et qui se referme vers la section d'où il vient. Il offre **trois vues** : le plan, tour par tour ; la liste d'accueil ; la feuille par -table. Le rapport de placement et la page de qualité ne s'impriment pas : leurs -lignes du tableau décrivent l'impression qui accompagne la page de qualité -(§ 12), non ce que l'aperçu offre. L'aperçu imprime la source que le plan montre -— le retenu, la proposition montrée, ou les seules réservations — et n'écrit -rien dans l'événement : il vit en lecture et sur un plan bloqué. Sa commande -« Imprimer » demande à la plateforme le papier et l'orientation de la vue : la -boîte de dialogue du navigateur sous `web`, celle du système sous `electron`. Un -échec se dit sur la commande ; une annulation ne dit rien. La barre de l'aperçu, -qui ne s'imprime pas, groupe ses commandes : la vue imprimée, les réglages de la -vue, le papier et « Imprimer », puis « Fermer l'aperçu » à part. +table. Le tableau des propositions (§ 5.7) et la page de qualité (§ 12) se +lisent à l'écran, où l'opérateur choisit sa proposition : ils ne s'impriment +pas, et aucun indicateur ne s'exporte en CSV. L'aperçu imprime la source que le +plan montre — le retenu, la proposition montrée, ou les seules réservations — et +n'écrit rien dans l'événement : il vit en lecture et sur un plan bloqué. Sa +commande « Imprimer » demande à la plateforme le papier et l'orientation de la +vue : la boîte de dialogue du navigateur sous `web`, celle du système sous +`electron`. Un échec se dit sur la commande ; une annulation ne dit rien. La +barre de l'aperçu, qui ne s'imprime pas, groupe ses commandes : la vue imprimée, +les réglages de la vue, le papier et « Imprimer », puis « Fermer l'aperçu » à +part. **La feuille par table couvre la soirée** : une feuille par table, une colonne par tour, que l'animateur garde d'un tour à l'autre. L'aperçu offre aussi « Une @@ -3389,23 +3622,13 @@ le pied et, sur le plan, ses mentions, son échelle graphique et son cartouche marges ôtées, et la découpe du plan reçoit la même hauteur. Le registre n'en écrit aucune valeur (§ 14.1) : elle suit la police et le rendu. -**L'export CSV des indicateurs suit les conventions du § 10.3** : UTF-8 avec -marque d'ordre d'octets, séparé par `;`, décimale française. Un fichier séparé par -des virgules dont les nombres portent une virgule décimale s'ouvre en colonnes -fausses dans un tableur francophone, et l'opérateur en conclut que le logiciel -compte mal. L'ordre des colonnes et des lignes est **fixé** : deux exports du même -placement sont identiques octet pour octet, sans quoi les comparer dans un -tableur est un exercice de tri. Il porte **en tête une ligne qui dit qu'il n'est -pas un format d'entrée** : le CSV des lignes refusées du § 10.1, lui, se réimporte -tel quel, et deux fichiers CSV dans le même logiciel dont l'un se réimporte et -l'autre non se confondent au premier essai. - **Fiches participants : la sortie imprimée est supprimée.** Son contenu — nom, -appartenance, titre, table et siège par tour — est exactement celui du badge. Deux -sorties pour la même information divergent ; celle qui tient autour du cou gagne. -**La fiche à l'écran demeure** : le § 12.5 en fait le chemin d'accès garanti à la -ligne d'une seule personne quand la matrice n'est pas dessinée, et le § 7.4 la -range parmi les documents qui ne tronquent jamais. +appartenance, titre, table et siège par tour — est exactement celui du badge. +Deux sorties pour la même information divergent ; celle qui tient autour du cou +gagne. **La fiche à l'écran demeure** : sa rubrique « Rencontres » est le chemin +d'accès garanti à la ligne d'une seule personne quand la matrice n'est pas +dessinée (§ 12.5), et le § 7.4 la range parmi les documents qui ne tronquent +jamais. ### 11.8 Ce que le logiciel refuse encore @@ -3424,6 +3647,67 @@ range parmi les documents qui ne tronquent jamais. ## 12. La page de qualité +La page de qualité est la section « Qualité » de l'événement, dans la phase +Placer, après Propositions (§ 2.1). Elle **ne modifie rien** : elle vit en +lecture, en écriture et sur un plan bloqué, et reste ouverte pendant une +génération (§ 5.10). + +**Elle mesure le placement que le plan montre** — le retenu, ou la proposition +montrée —, comme l'aperçu d'impression (§ 11.7), et une ligne de source le +nomme : « Placement retenu », « Proposition n° 4 » ; sans placement à mesurer, +elle n'en nomme aucun et dit que le plan ne montre que les réservations, qui ne +se mesurent pas. Chaque ligne du tableau des propositions offre la commande +« Qualité », qui montre la proposition au plan et ouvre la page. Sans source +mesurable, la page ne dessine aucune vue, et quatre cas se partagent sans se +recouvrir : + +- **ni proposition ni retenu** — « aucun placement » (§ 12.6) : le diagnostic + préalable et sa phrase ; +- **des propositions, aucune montrée** : une phrase et la commande qui montre la + première proposition comparable du classement ; sans proposition comparable, + la phrase seule ; +- **la source est en dérive ou fautive** (§ 9) : ses raisons, comme au tableau + des propositions ; +- **la configuration ne se normalise pas** : la phrase du refus de la + génération, qui l'emporte sur les trois autres. + +Quand la source disparaît — une génération qui remplace la proposition montrée, +un retour à un instant de l'historique, une exclusion qui la fait dériver —, la +page suit le plan, qui revient au retenu ou aux réservations, et la ligne de +source le dit. + +**Les vues, dans leur ordre à l'écran.** Une liste en tête de page les nomme et +mène à chacune. + +| vue | question (§ 12.1) | forme | jumeau tabulaire | +|---|---|---|---| +| en-tête chiffré (§ 12.2) | les deux | une rangée de tuiles | les tuiles sont du texte | +| profil trié (§ 12.3) | qui est le plus mal servi, de combien, et combien sont-ils ? | deux graphiques au même ordre de rangs : l'escalier en comptes, deux séries, le plafond réalisé et la borne de diversité en repères ; dessous, les rencontres en pourcentage du plafond réalisé | une ligne par personne dans l'ordre du profil, comptes et pourcentage, et la répartition des rencontres | +| collisions d'appartenance (§ 12.4) | d'où vient le problème, et relancer peut-il y changer quelque chose ? | barres horizontales à deux segments | une ligne par appartenance | +| appartenances à chaque table (§ 12.11) | où les mêmes cercles se retrouvent-ils à une même table ? | un sélecteur à trois positions, puis la grille tables × tours, chaque case le compte de la position, échelle d'une teinte | une ligne par table, et par tour les trois comptes et leurs pourcentages | +| paires répétées (§ 12.5) | qui revoit trop souvent la même personne ? | tableau paginé ; matrice sous le seuil | le tableau est la vue ; la matrice a le sien | +| objectifs des tables (§ 12.12) | qui n'est jamais assis à une table qui lui correspond, et à quel tour l'objectif perd-il ? | la soirée en texte, puis des barres horizontales par tour, à deux segments, chacune avec son pourcentage et ses assis sans table possible | une ligne par tour, et la liste des personnes jamais servies | +| animateurs rencontrés (§ 12.13) | qui a rencontré le moins d'animateurs ? | escalier, une série, la borne des animateurs en repère | une ligne par personne concernée, et la répartition | +| diversité par animateur (§ 12.13) | quel animateur voit le moins de diversité à sa table ? | deux colonnes de barres horizontales juxtaposées, appartenances et étiquettes, chacune son axe, sur la soirée | une ligne par animateur sur la soirée, puis une par animateur et tour animé | +| performance du calcul (§ 12.14) | relancer plus longtemps aurait-il donné mieux ? | petits multiples, un indicateur par graphique, points aux seuls points de relevé, abscisse logarithmique | une ligne par point de relevé, une colonne par indicateur | + +Une vue sans objet — aucune personne concernée par les objectifs, aucun +animateur, aucune course connue — cède la place à sa phrase (§ 12.6), jamais à +des axes vides. + +**Un pourcentage de la page est toujours suivi, juste dessous, du pire cas en +compte** : « 88 % », puis « minimum 24 sur 27 » ; « 77 % des tours possibles +servis », puis « 3 personnes jamais servies ». Le pire cas d'une tuile, d'une +phrase de synthèse ou de la soirée est celui de sa population. **Le pourcentage +d'une ligne** — une ligne de jumeau, une infobulle — est suivi du **compte de +cette ligne**, son numérateur sur son dénominateur, une ligne n'ayant qu'un +cas : « 24 sur 27 », « 5 appartenances pour 8 sièges », « 24 servis sur 30 +possibles ». Les graduations d'un axe en pourcentages et le libellé « 100 % » de +sa règle sont des repères, non le pourcentage d'une mesure, et n'ont pas de +compte. Les rapports admis sont ceux du § 5.4, et d'eux seuls (§ 12.8). Les +pourcentages s'écrivent sur cette page seulement : le tableau des propositions +garde ses comptes (§ 5.7). + ### 12.1 Les deux questions L'opérateur n'ouvre pas cette page pour connaître une variance : @@ -3437,6 +3721,11 @@ chaque vue porte en toutes lettres la question qu'elle traite — **la vue de comparaison du § 12.10.6 comprise** : *laquelle des deux sert mieux, et qui y perd ?* +Les vues des mélanges — appartenances à chaque table, objectifs des tables, +animateurs — et celle de la performance écrivent la leur (§ 12) : chacune +précise l'une des deux, sur une table, un tour, un animateur ou un compte de +mouvements. + **Le minimum gouverne la page** : chaque vue place le cas le plus défavorable à une position **fixe et prévisible** — le premier point, la première ligne — jamais là où il faut le chercher. La moyenne des rencontres ne s'affiche pas : à @@ -3446,8 +3735,17 @@ excellente moyenne et un problème. ### 12.2 L'en-tête chiffré -Les indicateurs du § 5.4 en une rangée de tuiles, chacun avec son **plafond** et -la mention de la population mesurée. **Trois tuiles de tête**, dans cet ordre : +Les indicateurs du § 5.4 en une rangée de tuiles, chacun avec **sa borne, et +son plancher quand le diagnostic le prouve**, lus au détail du placement +(§ 12.9), et la mention de la population mesurée. **Une tuile par colonne de +mesure du tableau des propositions** (§ 5.7), dans son ordre et sous ses +groupes. Une tuile qui a sa colonne en lit la valeur, le libellé et +l'explication (§ 12.9) ; une tuile sans colonne — critère décoché, valeur que le +mode réglé ne compare pas — lit la même mesure de la ligne d'évaluation sous son +propre libellé, et dit qu'elle ne classe pas. +**Trois tuiles portent les questions de tête** — le minimum brut ouvre la +rangée, le manque maximal et l'écart d'itinéraire maximal se lisent dans le +groupe du manque, à la place de leurs colonnes : | tuile | la question qu'elle pose | |---|---| @@ -3458,6 +3756,63 @@ la mention de la population mesurée. **Trois tuiles de tête**, dans cet ordre Le chiffre de tête est une **mesure avec son unité et son plafond**, jamais un score composite. +**Chaque borne d'une tuile est celle d'une personne nommée.** Les tuiles suivent +l'ordre des colonnes, chacune avec sa population. Le minimum brut porte le +**plafond réalisé et le plafond a priori de la personne au rang 1 du profil** +(§ 12.3), qu'elle nomme ; ses deux lignes secondaires, les mobiles et les ancrés +(§ 5.4), le suivent, chacune sa tuile. Puis les collisions cumulées, les paires +distinctes et l'excédent ; les rencontres répétées choisies, les imposées +énoncées à part ; le plus grand nombre de rencontres d'une paire ; les retours +choisis, les imposés à part ; le minimum de A(p), avec la borne de diversité de +la personne au rang 1 du même tri sur A(p) (§ 5.5) — une phrase dit à sa place +qu'aucune personne présente ne porte d'appartenance — ; la somme de redondance ; +le minimum du taux de diversité d(p), au centième, comme au tableau des +propositions. Puis le manque maximal, avec l'effectif au manque maximal et le +**plafond réalisé de la personne au rang 1 du profil de manque** (§ 12.10.6) ; +l'effectif du manque ; l'écart d'itinéraire maximal et l'écart au plafond a +priori, « inconnu » quand le plafond a priori l'est (§ 12.6). Quand une personne +est concernée, les personnes jamais servies, le plus de tours hors objectif +d'une personne et les tours hors objectif, puis le minimum de s(p) avec les +tours possibles de la personne à ce minimum ; quand une personne est concernée +par les animateurs, le minimum de m(p) avec la borne des animateurs de la +personne à ce minimum, et les animateurs non rencontrés. La mention « minimum +atteint », ou « atteignabilité inconnue », suit les tuiles (§ 5.5). + +**Une tuile écrit le plancher que le diagnostic écrit pour sa mesure** (§ 5.6), +et là seulement, en dernière ligne, sous son chiffre : « plancher 4 », ou +« plancher 4 atteint : impossible de faire moins » quand la mesure que la tuile +écrit l'égale. Ces deux lignes ne parlent que de cette mesure, jamais du +placement entier, et ne nomment personne. Sept tuiles peuvent en porter un : les +collisions cumulées, les paires distinctes et l'excédent, chacun la somme des +planchers de ses appartenances en collision ; l'écart d'itinéraire maximal, +aucun quand le plafond a priori est inconnu ; les personnes jamais servies, le +plus de tours hors objectif d'une personne et les tours hors objectif, chacun +seulement quand le critère des objectifs est coché et que le mode réglé compare +sa valeur, comme au diagnostic : une tuile des objectifs qui ne classe pas n'en +porte aucun. Un plancher nul ne s'écrit jamais, pas plus qu'un 0 à sa place, et +aucune tuile n'en porte sur un plan hors du domaine des planchers (§ 12.4). Le +détail du placement en porte d'autres, qui se lisent dans leur propre vue : +ceux des collisions par appartenance (§ 12.4), ceux des objectifs par tour +(§ 12.12), que cette vue dessine même quand le critère ne classe pas. + +**Trois tuiles portent un pourcentage** (§ 5.4), écrit sous leur valeur et +suivi, juste dessous, du compte du pire : le minimum brut, le pourcentage de son +plafond réalisé qu'atteint la personne au rang 1 du profil, puis « minimum 24 +sur 27 » ; les tours hors objectif, le pourcentage des tours possibles servis +sur la soirée, puis « 3 personnes jamais servies » ; le minimum de s(p), le +pourcentage de ses tours possibles que sert la personne à ce minimum, puis +« minimum 1 sur 4 ». Le pourcentage d'une tuile est celui de la personne que sa +borne nomme, ou de la soirée pour les objectifs, jamais une moyenne de la +population. Les autres tuiles n'en portent pas : leur grandeur n'a pas de +dénominateur admis — une collision, une paire, une redondance —, ou n'a qu'une +borne (§ 5.5), qui ne prouve rien ; le taux de diversité garde sa forme au +centième. + +Les bornes, les planchers et les pourcentages qui accompagnent les tuiles +viennent du détail du placement (§ 12.9), qui les rend une fois et dit lui-même +quel plancher est atteint, sur la valeur même que la ligne d'évaluation porte : +l'en-tête ne compare rien. Un critère sans objet n'a pas de tuile. + ### 12.3 Première vue — le profil trié **Question : qui est le plus mal servi, de combien, et combien sont-ils ?** @@ -3477,26 +3832,77 @@ rencontrées. désigne toujours le même participant. La seconde courbe est donc irrégulière, et cette irrégularité est de l'information. -**Les égalités se départagent par une clé stable** — sinon deux affichages du -même placement donnent deux dessins, et deux impressions ne se superposent pas. +**Les égalités se départagent par une clé stable** : à rencontres égales, le +plafond réalisé le plus haut d'abord — son manque est le plus grand —, puis +l'identifiant croissant. Sans clé stable, deux ouvertures du même placement +donnent deux dessins. **Le plafond réalisé se trace dans le même ordre** : règle horizontale quand il est constant, **ligne en escalier** dès qu'une table est incomplète. Une règle unique mentirait. +Le plafond tracé est un **repère, pas une série** (§ 12.7) : encre neutre, trait +mince et mixte — tiret-point —, son nom posé sur le tracé ; son motif n'est ni +le plein de la première série ni les tirets de la seconde. **La borne de +diversité se trace aussi, dans le même ordre, en repère pointillé** sous son +nom : elle borne la seconde série comme le plafond borne la première, et son +trait ne se confond ni avec les tirets de la seconde série ni avec le plafond. +Le graphique porte ainsi deux séries et deux repères, sur un seul axe, en +comptes de personnes. + +**Sous lui, un second graphique dit la même chose en pourcentages** : les +rencontres de chacun en pourcentage de son plafond réalisé (§ 5.4), une seule +série, une règle à 100 % en repère — l'image du plafond réalisé, de son motif +mixte, libellée « 100 % » —, **dans le même ordre de rangs**, les abscisses des +deux graphiques alignées. Le pourcentage n'y est pas une clé de tri : trier sur +lui serait trier sur le manque relatif, que le § 12.10.3 refuse. Un rang dont le +plafond réalisé est nul n'y a pas de point, et le tracé s'interrompt. Les +appartenances rencontrées n'y ont pas de série : leur seule borne est la borne +de diversité, dont aucun pourcentage ne se prend. Deux graphiques, jamais deux +axes sur un même graphique (§ 12.7). Sa phrase de synthèse porte le pire cas en +compte : « minimum 24 sur 27 ». + **Le logiciel vérifie les trois inégalités de la ligne de décomposition du -§ 12.10.5** — `N − 1 ≥ plafond a priori ≥ plafond réalisé ≥ rencontres`. La garde -est une fonction du moteur, -`verifier_indicateurs(mesures, plafonds_a_priori, plafonds_realises)` (§ 14.12) : -avec une seule famille de plafonds, l'inégalité `a priori ≥ réalisé` — la seule -que la bascule vers l'occupation rend non triviale — ne serait éprouvée nulle -part. Si une inégalité tombe, le calcul est faux : la page **refuse de dessiner** -et le dit, plutôt que d'afficher un graphique impossible que personne ne -regardera d'assez près. +§ 12.10.5** — `N − 1 ≥ plafond a priori ≥ plafond réalisé ≥ rencontres`. La +garde est une fonction du moteur, `verifier_indicateurs(mesures, +plafonds_a_priori, plafonds_realises, complements)` (§ 14.12), dont le quatrième +paramètre est facultatif : avec une seule famille de plafonds, l'inégalité +`a priori ≥ réalisé` — la seule que la bascule vers l'occupation rend non +triviale — ne serait éprouvée nulle part. Si une inégalité tombe, le calcul est +faux : la page **refuse de dessiner** et le dit, plutôt que d'afficher un +graphique impossible que personne ne regardera d'assez près. + +La page lui passe en complément les planchers des collisions cumulées par +appartenance, les planchers des objectifs par tour (§ 12.12), la validité de ces +planchers pour le plan (§ 12.4) et les bornes de diversité : la garde éprouve +alors aussi que le segment « reste » n'est jamais négatif, ni pour une +appartenance ni pour un tour, et que A(p) ne dépasse ni les rencontres de p, +ni |F(p)|, ni sa borne de diversité, |F(p)| ne dépassant pas Φ_aff(p) (§ 5.5). +La propriété A(p) ≤ rencontres(p) fonde l'axe unique de cette vue ; elle n'est +vraie que par construction tant qu'aucune garde ne l'éprouve. Le refus vaut pour +la page entière, et nomme la mesure et les personnes en cause. **Les places contraintes sont marquées.** Sans cela, l'opérateur attribue au générateur un minimum que sa propre réservation impose. +Un point marqué porte un signe de forme, non une couleur : ancré ou +partiellement fixé, en réserve à un tour au moins, plafond réalisé nul. Les +autres rangs ne portent aucune marque : un escalier est un tracé, non 260 +points. + +**Le pointage au plus proche** (§ 12.7) désigne le rang sous le pointeur ; son +infobulle porte la ligne entière — le rang, le nom entier, l'appartenance, les +rencontres, le plafond réalisé, leur pourcentage suivi de leur compte (§ 12), le +plafond a priori, A(p), la borne de diversité, les tours non assis ; le rang +pointé est le même dans les deux graphiques. **Le jumeau tabulaire** porte une +ligne par personne dans l'ordre du profil, avec les mêmes colonnes, et **la +répartition des rencontres** : une ligne par valeur, de la plus basse à la plus +haute, avec l'effectif, l'effectif cumulé et le nombre de personnes à leur +plafond réalisé. C'est le mélange des rencontres par personne, dont le second +graphique donne la part. La phrase de synthèse, visible sous le premier +graphique, en donne l'essentiel : le minimum, l'effectif au minimum et +l'effectif sous son plafond réalisé. + **Pourquoi cette forme.** L'histogramme fait de la personne la plus mal servie une barre de quelques pixels au bord du dessin, que l'œil saute. La boîte à moustaches remplace le minimum par une convention de tracé que l'opérateur ne @@ -3546,6 +3952,35 @@ appartenance est celle qui remet le plus souvent les mêmes personnes ensemble, non celle qui porte le plus d'occurrences — c'est le même arbitrage qu'au § 5.7, et deux tris opposés dans une même page se contredisent devant l'opérateur. +À excédent égal, les collisions cumulées décroissantes, puis la clé normalisée +de l'appartenance (§ 10.1), puis sa chaîne. + +**« Prouvé inévitable » est le plancher des collisions cumulées du diagnostic** +(§ 5.6) pour cette appartenance, zéro quand le diagnostic n'en écrit pas. **Ce +plancher vaut sur un plan qui assoit chacun à chaque tour et honore les +réservations** : c'est le domaine où il se démontre. Un placement ajusté qui +laisse quelqu'un en réserve peut mesurer moins ; ses barres n'ont alors qu'un +segment, les collisions cumulées, et la vue écrit pourquoi le plancher ne s'y +applique pas. La garde n'éprouve le segment « reste » que sur le domaine. + +L'intitulé de chaque ligne porte la **pastille de l'appartenance** (§ 12.7) : +c'est une liste. Les segments ne portent ni teinte d'appartenance ni teinte de +conflit : « prouvé inévitable » et « reste » ont chacun leur jeton de graphique, +leur forme et leur libellé, posé sur la première barre où leur segment est non +nul et repris par la légende. Les barres partent de zéro, sur un axe commun à +toutes les lignes de la vue. + +**« Prouvé inévitable » se trace en contour** — un trait de 2 px de son jeton, +tenu dans la boîte du segment —, « reste » en aplat : les deux se séparent par +la forme comme par la couleur, à toute largeur, et le prouvé ne retombe jamais +en aplat. Un segment prouvé n'est donc jamais plus étroit que ses deux traits +et leur vide, 6 px : ce qui lui manque se prend sur les autres segments de la +ligne, ceux qui le suivent d'abord, puis ceux qui le précèdent, chacun jusqu'à +zéro. La barre finit ainsi au plus loin à sa valeur ou, pour une ligne plus +étroite que ces 6 px de son premier segment à sa valeur, à 6 px de son début. +L'infobulle et le jumeau nomment la part prouvée, « Prouvé +inévitable », et en portent la valeur, quelle que soit sa largeur. + **Le second segment ne s'appelle pas « évitable ».** Le plancher se calcule en relâchant les contraintes : c'est une **borne inférieure**, jamais un fait. Nommer « évitable » le complément affirmerait qu'un meilleur placement le @@ -3573,13 +4008,36 @@ ne montre qu'un grain aléatoire où l'opérateur croira voir un motif. **Ce qui la remplace** : un **tableau des paires répétées**, trié par nombre décroissant — les deux noms, leurs appartenances, le nombre de fois, les tours. -Chaque ligne est cliquable et amène sur le plan, au tour fautif. +Une ligne n'est pas cliquable : **sa première commande mène au plan au premier +tour où la paire se revoit**, la première des deux personnes mise en évidence, +et chacun de ses tours est une commande sœur vers le plan à ce tour. Les +**paires choisies** viennent d'abord, triées par nombre de fois décroissant, +puis par les identifiants ; les **paires que les réservations imposent** — +chacune de leurs rencontres a lieu à une table où les deux sont réservées ce +tour-là — suivent sous leur intitulé, triées de même : le § 5.4 les énonce à +part. Le tableau **se pagine comme celui des propositions**, par pages de cent +(§ 5.7), l'étendue et le total écrits. **Deux exceptions** : la matrice se dessine sous un seuil de participants -**mesuré sur le rendu réel**, et la **ligne d'une seule personne** reste toujours -accessible par sa **fiche à l'écran** — chemin garanti vers une personne quand la -matrice n'est pas dessinée, et c'est pourquoi la fiche écran demeure alors que sa -version imprimée est supprimée (§ 11.7). +**mesuré sur le rendu réel**, `SEUIL_MATRICE_PARTICIPANTS` (§ 19.10), et la +**ligne d'une seule personne** reste toujours accessible par la rubrique +« Rencontres » de sa **fiche à l'écran** — les personnes qu'elle a rencontrées +dans le placement que le plan montre, avec le nombre de fois et les tours, les +plus revues d'abord, sous la ligne de source de la page de qualité ; quand la +source ne se mesure pas ou que la personne est exclue, une phrase le dit ; sans +placement, la rubrique est absente —, chemin garanti vers une personne quand la +matrice n'est pas dessinée, et c'est pourquoi la fiche écran demeure alors que +sa version imprimée est supprimée (§ 11.7). + +La matrice se dessine sous ce seuil **et** quand ses cases tiennent la cible de +24 px dans la largeur réelle de la carte, que la géométrie éprouve ; sinon, la +vue écrit qu'elle ne dessine pas la matrice et pourquoi, et renvoie à la fiche. +Elle range les personnes par l'ordre du profil (§ 12.3), jamais par l'alphabet. +Une case porte le nombre de rencontres de la paire, écrit, sur l'échelle +séquentielle à **quatre niveaux** — 0, 1, 2, 3 et plus — : les trois valeurs +décisionnelles et ce qui les dépasse. La diagonale est vide et neutre. Une case +n'est pas une cible : son jumeau, le même tableau en texte, et la fiche portent +les mêmes comptes. > **Les paires répétées ne sont pas garanties sur la grande démonstration.** À > 260 personnes, 33 tables et 4 tours, chacun occupe au plus 28 créneaux de @@ -3598,11 +4056,12 @@ Une page de statistiques se casse par ses bords, et chacun se produira. |---|---| | participants exclus | retirés de toutes les statistiques, effectifs mesuré et exclu annoncés | | personne en réserve à un tour | gardée, point marqué, avec le nombre de tours non assis ; son plafond réalisé se calcule sur les seuls tours où elle est assise, **et son écart d'itinéraire porte ce que son manque ne porte pas** | -| aucun placement | le diagnostic préalable et une phrase, **jamais des axes vides** | -| une seule table | une phrase ; pas trois vues qui disent la même chose | +| aucun placement — ni proposition ni retenu | le diagnostic préalable et une phrase, **jamais des axes vides** | +| une seule table | le profil, les collisions, les appartenances à chaque table et les paires cèdent la place à une phrase : elles diraient la même chose ; les objectifs, les animateurs et la performance restent | | un seul tour | le tableau des paires est remplacé par une phrase, non par un tableau vide | -| une seule appartenance, ou aucune | une phrase ; **pas** une seconde courbe plate à zéro, qui se lit comme une panne | -| aucune collision | la deuxième vue est remplacée par sa phrase | +| une seule appartenance | le profil n'a qu'une série et pas de borne de diversité, et la phrase le dit ; les collisions et les appartenances à chaque table restent : les doublons disent où le groupe se retrouve | +| aucune appartenance | le profil n'a qu'une série et pas de borne de diversité ; les collisions et les appartenances à chaque table cèdent la place à une phrase ; **jamais** une seconde courbe plate à zéro, qui se lit comme une panne | +| aucune collision | la vue des collisions cède la place à sa phrase ; la grille des tables aussi sous la position « doublons » du sélecteur, dont toutes les cases vaudraient zéro ; sous « sièges » et « assis », la grille reste, ses comptes ne dépendant pas des collisions | | noms longs | tronqués à une largeur **mesurée**, entiers dans l'infobulle et le tableau | | homonymes | distingués par leur appartenance ; la navigation se fait par identifiant | | le manque ne prend qu'une ou deux valeurs distinctes | une phrase portant les effectifs, non une courbe à deux marches | @@ -3610,19 +4069,50 @@ Une page de statistiques se casse par ses bords, et chacun se produira. | deux profils qui alternent plusieurs fois | les trois effectifs de rangs, **sans** rang de bascule ; le jumeau tabulaire porte le détail | | populations mesurées différentes entre deux propositions — ce que produit la dérive du § 9 sur des générations accumulées | ni courbe ni dominance : la page nomme les personnes exclues de part et d'autre et le dit **non comparable** | | le plafond réalisé d'une personne vaut 0 | son manque vaut 0 et n'enseigne rien : la page marque le point et renvoie à l'écart d'itinéraire. Un manque nul n'est jamais lu comme « bien servi » sans son plafond à côté | -| le plafond a priori n'a pas pu être maximisé | l'écart d'itinéraire s'écrit **« inconnu »**, jamais 0 ; le certificat reste hors d'atteinte (§ 5.5) et le départage du § 5.7 qui en dépend est sauté, la page nommant le palier suivant | +| le plafond a priori n'a pas pu être maximisé | l'écart d'itinéraire s'écrit **« inconnu »**, jamais 0, et sans plancher (§ 12.2) ; le certificat reste hors d'atteinte (§ 5.5) et le départage du § 5.7 qui en dépend est sauté, la page nommant le palier suivant | +| des propositions, aucune montrée | une phrase, et la commande qui montre la première proposition comparable du classement ; sans proposition comparable, la phrase seule | +| la source est en dérive ou fautive | ses raisons, comme au tableau des propositions ; aucune vue | +| la configuration ne se normalise pas | la phrase du refus de la génération ; aucune vue | +| la source disparaît | la page suit le plan, qui revient au retenu ou aux réservations ; la ligne de source le dit | +| un plan qui laisse quelqu'un en réserve | collisions et objectifs sans segment « prouvé inévitable », et la phrase qui dit pourquoi (§ 12.4) ; aucune tuile n'écrit de plancher (§ 12.2) | +| un pourcentage de dénominateur nul — plafond réalisé nul, tour sans couple possible, personne sans tour possible, table vide ou sans affilié | « — », jamais 0 % ni 100 % ; le compte reste écrit | +| une table sans affilié à un tour | sa case écrit « — » sous les trois positions du sélecteur, sans couleur, et se range après les tables qui portent un compte | +| aucune personne concernée par les objectifs | la vue des objectifs cède la place à sa phrase | +| un tour sans couple possible | sa ligne écrit « — », sans barre ni pourcentage ; ses assis sans table possible restent écrits | +| aucune personne concernée par les animateurs, ou aucun animateur | les deux vues des animateurs cèdent la place à leur phrase | +| aucune étiquette portée | la diversité par animateur n'a que la colonne des appartenances, et la phrase le dit | +| aucune appartenance, ou une seule, mais des étiquettes | la diversité par animateur n'a que la colonne des étiquettes, triée sur E_f | +| ni étiquette, ni plus d'une appartenance | la diversité par animateur cède la place à sa phrase ; son jumeau garde les tours animés et les personnes rencontrées en animant | +| une grille tables × tours trop large pour ses cases | le jumeau seul, et la phrase qui le dit | +| la matrice sous le seuil, mais trop étroite pour la largeur de la carte | la phrase de la matrice non dessinée, qui renvoie à la fiche | +| le placement retenu | la performance dit qu'elle mesure une proposition ; un retenu non ajusté nomme la proposition d'où il vient et en montre la course tant qu'elle est dans la liste ; un retenu ajusté, ou dont la proposition a été effacée, n'en a aucune | +| une proposition rouverte, dont le compagnon des courses garde la course | la performance la montre, ses valeurs mesurées sous les réglages courants ; la durée et la cadence s'écrivent « inconnues » (§ 5.10) | +| une proposition dont la course n'est pas gardée — écrite avant le compagnon ou par une version antérieure, compagnon absent, illisible ou contradictoire, proposition effacée puis rendue après une réouverture (§ 8.6) | la performance cède la place à sa phrase : sa course n'est pas gardée | +| une proposition dont la recherche a atteint un n-uplet nul | la performance l'écrit : « rien à reprendre après 3 412 mouvements sur 20 000 » ; à zéro mouvement, « le plan initial n'avait rien à reprendre » | +| une génération de durée nulle ou inconnue | « durée inconnue », sans cadence | ### 12.7 Les règles de forme - **Jamais deux axes verticaux.** - **L'identité d'une série ne repose jamais sur la seule couleur** : au plus - deux séries, **étiquetées directement sur le tracé** en plus de la légende. La - page s'imprime, souvent en noir et blanc. + deux séries, **étiquetées directement sur le tracé** en plus de la légende, et + distinctes aussi par le trait — plein et tirets — ou par la forme du segment. + Une personne daltonienne, un écran en niveaux de gris et un lecteur d'écran + lisent la page sans sa couleur. Un plafond ou une borne tracés sont des + **repères**, non des séries : encre neutre, trait mince, nommés sur le tracé ; + **un plafond en trait mixte — tiret-point —, une borne en pointillés**, chacun + sous son jeton. Chaque trait d'un graphique a son motif — plein et tirets pour + les séries, mixte et pointillé pour les repères — : aucun repère n'a le motif + d'une série ni de l'autre repère. La règle à 100 % d'un graphique en + pourcentages est l'image d'un plafond, et prend son motif. **Deux grandeurs + d'unités différentes se dessinent en deux graphiques**, chacun son seul axe + vertical, au même ordre quand ils portent les mêmes rangs : le profil en + comptes, puis en pourcentages (§ 12.3). - **Les couleurs d'état sont réservées** : **les teintes de conflit** — trois, - une par règle que le plan localise (§ 7.5) — sont ici **les mêmes** que sur - le plan de salle, et ne servent à rien d'autre ; chacune ne peint que les - marques de sa règle. Elles se distinguent entre elles et des autres marques - du plan **une fois les trois dichromaties simulées**. + une par règle que le plan localise (§ 7.5) — ne peignent que le plan de salle, + et la page de qualité n'en emploie aucune ; chacune ne peint que les marques + de sa règle. Elles se distinguent entre elles et des autres marques du plan + **une fois les trois dichromaties simulées**. - **Le rouge du retrait** (`--couleur-retrait`) ne peint que la croix cerclée d'une commande qui retire, sur une carte, jamais sur le plan : c'est le seul jeton chromatique admis à moins de 30° d'une teinte de conflit. @@ -3639,7 +4129,15 @@ Une page de statistiques se casse par ses bords, et chacun se produira. pastille porte toujours le nom. - **Une échelle séquentielle est une seule teinte, du clair au foncé.** Jamais d'arc-en-ciel : un dégradé multicolore invente des frontières là où la - grandeur est continue. + grandeur est continue. Ses niveaux sont peu nombreux — quatre, 0, 1, 2, 3 et + plus, pour la matrice comme pour la grille tables × tours —, en couleurs + pleines, chaque case bordée d'un trait qui tient 3:1 sur le fond de la carte, + son compte écrit dans l'une de **deux encres neutres au plus**, chacune + déclarée pour les niveaux qu'elle sert et mesurée à 4,5:1 sur chacun. **Le + niveau zéro est le plus proche du fond de la carte dans chaque thème**, et la + grandeur croît en s'en éloignant : en thème sombre, l'échelle va du sombre au + clair. Le niveau zéro n'est pas tenu à 3:1 : il ne porte rien que la bordure + et le chiffre ne portent déjà. - **Le texte garde une encre neutre** ; la couleur est portée par la marque. Une pastille d'état, de statut ou d'appartenance est un fond teinté, un signe — icône ou point — de la teinte, et un libellé de l'encre de la page. @@ -3648,11 +4146,32 @@ Une page de statistiques se casse par ses bords, et chacun se produira. dit rien de ce que voit une personne daltonienne. **4,5:1** pour le texte, **3:1** pour les marques porteuses d'information. - **Chaque graphique a son jumeau tabulaire** : un survol n'est jamais le seul - chemin vers une valeur, et un tableau s'imprime. Celui de la vue de comparaison - est **l'escalier du manque** (§ 12.10.6), qui accepte en outre plus de deux - propositions là où le tracé s'arrête à deux. + chemin vers une valeur, et un tableau se parcourt au clavier et au lecteur + d'écran. Il s'ouvre à la demande, par une commande sous le graphique. Chaque + graphique est une image nommée par la question de sa vue et décrite par une + phrase de synthèse — le pire cas et son effectif. **Un jumeau porte au moins + les valeurs de son graphique, et peut détailler au-delà** — les trois comptes + du mélange d'une table, quand la grille n'en dessine qu'un ; la diversité de + chaque animateur tour par tour, quand le graphique dessine la soirée —, jamais + en deçà. Celui de la vue de comparaison est **l'escalier du manque** + (§ 12.10.6), qui accepte en outre plus de deux propositions là où le tracé + s'arrête à deux. - **Le pointage se fait au plus proche** : à 260 points, le pas est de quelques pixels, et sans cette couche la vue est inutilisable au pavé tactile. +- **Les jetons de graphique forment une famille** (§ 13.3) : deux séries, le + repère d'un plafond, celui d'une borne, l'axe, « prouvé inévitable » et + « reste », l'échelle séquentielle, ses encres et la bordure des cases, dans + les deux thèmes. Les deux séries se distinguent l'une de l'autre et des six + teintes d'appartenance une fois les trois dichromaties simulées, chacune à 3:1 + au moins sur le fond de la carte et à 30° au moins des teintes de conflit : + une série voisine d'une pastille se lirait comme cette appartenance. Une + grille de fond ne porte pas d'information et n'est pas tenue à 3:1 ; elle + reste en couleur pleine. +- **Le pointage au plus proche a une règle par forme** : sur un escalier, le + rang sous le pointeur ; sur des barres, la ligne sous le pointeur ; sur une + grille, la case ; sur les petits multiples, le point de relevé le plus proche + sur l'abscisse commune, désigné dans tous les graphiques à la fois. + L'infobulle porte la ligne du jumeau qui correspond. ### 12.8 Ce que le logiciel ne dessine pas @@ -3689,6 +4208,34 @@ Une page de statistiques se casse par ses bords, et chacun se produira. - **Le rapport manque / plafond** : indéfini quand le plafond vaut 0, et il fait passer un manque de 1 sur un plafond de 3 devant un manque de 3 sur 28 (§ 12.10.3). +- **Un pourcentage hors de la liste du § 5.4**, ou sans son compte : ni le + pourcentage d'une borne — la borne de diversité, la borne des animateurs, qui + ne prouvent rien —, ni le rapport manque / plafond, ni Σ rencontres / Σ + plafond réalisé, ni un pourcentage au tableau des propositions (§ 5.7), dans + un critère ou comme clé de tri. Le **taux de diversité** d(p), défini au + § 5.4, garde sa forme, au centième. +- **Un indice d'équité entre animateurs** : l'équité se lit par le moins varié, + le plus varié et l'effectif au minimum. +- **Un histogramme des rencontres** : la répartition est un tableau, le profil + trié la dessine (§ 12.3). +- **Une durée seule comme qualité du calcul** : le temps dépend de la machine ; + la performance se lit en mouvements, la durée observée à côté. + +**Les pourcentages de mélange sont une exception nommée à cette liste**, bornée +aux quatre rapports du § 5.4 : les rencontres d'une personne sur son plafond +réalisé, les tours possibles servis d'un tour ou de la soirée, les tours servis +d'une personne sur ses tours possibles, les appartenances distinctes d'une table +et d'un tour sur ses sièges, ses assis ou ses affiliés. La première est le +complément du rapport manque / plafond ; la deuxième, prise sur la soirée, est +le taux de satisfaction transposé aux objectifs. Leur défaut est celui que le +premier point de cette liste nomme — 99,8 % cache la personne à 14 sur 27 —, et +la page le corrige par la règle qui fonde l'exception : **chaque pourcentage est +suivi, juste dessous, du pire cas en compte** — « minimum 14 sur 27 », « 3 +personnes jamais servies », ou, sur une ligne, son propre compte (§ 12) —, et ne +sert ni à trier, ni à classer, ni à comparer deux propositions, qui se comparent +sur le manque (§ 12.10). Sur la soirée, les rencontres ne se somment pas : le +pourcentage d'une tuile est celui de la personne que sa borne nomme (§ 12.2), et +le taux de satisfaction reste refusé. ### 12.9 D'où viennent les chiffres @@ -3696,13 +4243,33 @@ Les statistiques sont calculées par le **moteur**, en fonctions pures, testées sous `node`. **La page ne recalcule rien** : elle lit les mêmes valeurs que le tableau d'indicateurs et que le classement. Dès que la même arithmétique existe en deux endroits, le graphique et le tableau finissent par se contredire devant -l'opérateur. La règle vaut pour **l'export CSV des indicateurs** (§ 11.7) comme -pour le dessin : il lit le même tableau, quel que soit le support. +l'opérateur. -Les trois vues se dessinent en **SVG**, avec **un module de géométrie frère** de -celui du plan — même principe, même discipline d'épreuve, mais **pas le même -module** : l'unité du plan est le centimètre réel, celle d'un graphique est le -rang et le nombre. Les confondre ferait fuir l'unité du bâtiment dans les axes. +**Le détail d'un placement** — son profil trié, ses collisions jointes aux +planchers, ses paires, sa matrice, ses mélanges, ses bornes de diversité — se +calcule pour lui seul, à l'ouverture de la page, par les fonctions du moteur, en +une lecture du plan ; jamais pour toutes les propositions, dont la table +d'évaluation se recalcule à chaque écriture. Les points de relevé de la +performance s'y ajoutent, leurs plans lus dans la course que le compagnon des +courses garde pour la proposition (§ 8.6), chacun mesuré sous les réglages +courants par la mesure qui fait foi ; les pourcentages aussi, par la seule +fonction du moteur qui les calcule (§ 5.4). Le détail d'une charge se garde tant +qu'elle ne change pas, et se refait sur la suivante : aucune valeur ne survit à +un changement de réglage. Les tuiles lisent les mesures de la ligne de cette +table. Le détail ne reçoit pas cette ligne, que la table calcule pour chaque +proposition : il mesure son placement par le même chemin qu'elle — la mesure, +les plafonds réalisés et les trois chiffres du § 12.10.4, pris d'une seule +fonction de l'application —, et ses fonctions du moteur n'en recomptent rien. +Elles rendent une fois les bornes et les planchers qui accompagnent les tuiles, +et jugent un plancher atteint sur la valeur même que la ligne porte. Les tris, +les échelles, les chemins des tracés et le pointage au plus proche sont des +fonctions pures : un composant n'en fait aucun. + +Les vues se dessinent en **SVG**, avec **un module de géométrie frère** de celui +du plan, dans la même couche (§ 13.4) — même principe, même discipline +d'épreuve, mais **pas le même module** : l'unité du plan est le centimètre réel, +celle d'un graphique est le rang et le nombre. Les confondre ferait fuir l'unité +du bâtiment dans les axes. ### 12.10 Le manque : la grandeur qui compare deux propositions @@ -3748,8 +4315,15 @@ qui ne bougera pas. Le manque absolu ne distingue pas un manque de 1 sur un plafond de 3 d'un manque de 1 sur un plafond de 28. Le logiciel **ne fait pourtant pas du rapport -manque / plafond une grandeur** : ni axe, ni clé de tri, ni tuile d'en-tête, et -il ne le calcule nulle part. +manque / plafond une grandeur** : ni clé de tri, ni critère, ni colonne du +tableau des propositions, ni grandeur de comparaison, et il ne le calcule nulle +part. Son complément, les rencontres d'une personne en pourcentage de son +plafond réalisé, s'écrit sur la page de qualité seule, sous l'exception nommée +du § 12.8 : sur l'axe du second graphique du profil, rangé dans l'ordre du +premier, dans l'infobulle et le jumeau, et dans la tuile du minimum brut pour la +personne au rang 1 — chaque fois suivi du compte du pire. Il ne gouverne rien : +l'ordre des rangs reste celui des rencontres (§ 12.3), et la relance se décide +sur le manque. | choix | mode de défaillance | |---|---| @@ -3804,18 +4378,18 @@ réserve à trois tours sur quatre a un plafond réalisé minuscule et un manque nul : elle n'apparaît ni au premier chiffre, ni au second, alors qu'elle est la plus mal servie de la soirée. Son écart d'itinéraire, lui, est énorme. -**Et c'est une borne, pas une promesse.** Un écart d'itinéraire non nul n'est pas -toujours récupérable : dans la grande démonstration, les tables de 7 offrent 112 -sièges-tours dont 16 aux animateurs, donc **96 sièges-tours mobiles** qu'un -placement ne peut pas ne pas servir ; chaque mobile n'en absorbant que 4 au plus, -**au moins 24 mobiles** terminent sous leur plafond a priori de 28, et l'écart -d'itinéraire maximal **ne descend jamais sous 1**. Il en va de même dans la -variante, où les 4 sièges vides laissent à chaque tour une table d'au moins 3 -mobiles incomplète. **La page écrit ce plancher à côté du chiffre**, comme le -diagnostic du § 5.6, et n'appelle jamais « récupérable » le complément — -exactement la discipline du § 12.4 sur « prouvé inévitable » et « reste ». Sans -ce plancher, le troisième chiffre envoie l'opérateur relancer indéfiniment vers -un 0 que la configuration interdit. +**Et c'est une borne, pas une promesse.** Un écart d'itinéraire non nul n'est +pas toujours récupérable : dans la grande démonstration, les tables de 7 offrent +112 sièges-tours dont 16 aux animateurs, donc **96 sièges-tours mobiles** qu'un +placement ne peut pas ne pas servir ; chaque mobile n'en absorbant que 4 au +plus, **au moins 24 mobiles** terminent sous leur plafond a priori de 28, et +l'écart d'itinéraire maximal **ne descend jamais sous 1**. Il en va de même dans +la variante, où les 4 sièges vides laissent à chaque tour une table d'au moins 3 +mobiles incomplète. **La page écrit ce plancher sous le chiffre** (§ 12.2), +comme le diagnostic du § 5.6, et n'appelle jamais « récupérable » le +complément — exactement la discipline du § 12.4 sur « prouvé inévitable » et +« reste ». Sans ce plancher, le troisième chiffre enverrait l'opérateur +relancer indéfiniment vers un 0 que la configuration interdit. #### 12.10.5 La décomposition, et ce qu'elle autorise à écrire @@ -3830,7 +4404,8 @@ Le logiciel **ne nomme que deux** de ces différences — celles qu'il affiche. première est le diagnostic du § 5.6, qui a déjà ses mots. Le § 5.5 pose « deux notions, deux noms, jamais trois » ; la discipline tient, parce que **aucun de ces deux noms ne désigne une borne** : ce sont des différences entre deux termes -voisins de la même ligne, et il n'existe toujours que deux bornes. +voisins de la même ligne, et il n'existe toujours que deux bornes sur les +rencontres. La décomposition tranche une ambiguïté : le certificat de « minimum atteint » se lit **contre le plafond a priori**, donc sur `manque + écart d'itinéraire`, @@ -3863,8 +4438,8 @@ pas ; dès **deux** propositions, le logiciel dessine donc l'écart lui-même. - **Le jumeau tabulaire** (§ 12.7) est **l'escalier du manque** : une ligne par valeur de manque, et par proposition une colonne d'effectif et une colonne d'effectif cumulé — la seconde est la courbe elle-même, lue à l'envers. Il - s'imprime, et il accepte plus de deux propositions là où le tracé s'arrête à - deux. Il lit le même tableau que le tracé (§ 12.9). + accepte plus de deux propositions là où le tracé s'arrête à deux. Il lit le + même tableau que le tracé (§ 12.9). **Quand aucune ne domine**, le § 12.3 dit déjà que l'arbitrage est réel. Le manque change ce qui se lit : avec des nombres bruts, un croisement peut n'être @@ -3941,6 +4516,198 @@ page. Le chemin « inconnu » reste celui du moteur, que l'application n'emprunt pas : là, le troisième chiffre s'écrit **« inconnu »** et le départage du § 5.7 qui en dépend est sauté en nommant le palier appliqué à sa place. +### 12.11 Les appartenances à chaque table + +**Question : où les mêmes cercles se retrouvent-ils à une même table ?** + +**Un sélecteur à trois positions** choisit ce que la grille compte, pour la +table t au tour r (§ 5.4) : + +| position | la case écrit et colore | son pourcentage, à l'infobulle et au jumeau | +|---|---|---| +| **appartenances par siège** — par défaut | les **sièges sans appartenance nouvelle**, c_t − δ_{t,r} | δ appartenances pour c sièges | +| **appartenances par personne assise** | les **assis sans appartenance nouvelle**, o_{t,r} − δ_{t,r} | δ appartenances pour o assis | +| **doublons parmi les affiliés** | les **doublons d'appartenance**, α_{t,r} − δ_{t,r} | δ appartenances pour α affiliés | + +La position est un état de la séance, comme le tour montré : elle survit au +changement de section, repart de « par siège » à l'ouverture d'un événement, +n'écrit rien et ne fait aucune entrée d'historique ; elle vit en lecture et sur +un plan bloqué (§ 8.4). C'est un groupe de boutons radio, au clavier. + +Une **grille**, une ligne par table, une colonne par tour. Sous chaque position, +chaque case **écrit et colore le même nombre** — le compte de la position —, sur +l'échelle séquentielle à quatre niveaux, 0, 1, 2, 3 et plus. Les trois comptes +ont le même sens : zéro veut dire que chaque siège, chaque assis ou chaque +affilié porte une appartenance de plus, et ce niveau est le plus proche du fond +de la carte (§ 12.7). Ils s'emboîtent, le compte des sièges majorant celui des +assis, qui majore les doublons (§ 5.4). Une case sans affilié, ou d'une table +vide à ce tour, écrit « — » sous les trois positions, sans couleur : une table +de bénévoles sans appartenance n'a rien à mélanger, et ne se lit pas comme la +pire de la soirée. L'infobulle d'une case porte le pourcentage de la position, +puis ses deux comptes — « 62 % », puis « 5 appartenances pour 8 sièges » —, les +occupants, les affiliés et la capacité. Une case ne porte qu'un nombre : le +pourcentage n'y tient pas à côté du compte, et la couleur ne porte que ce que la +case écrit. + +**Les tables se rangent de la pire à la meilleure, sous la position choisie** : +le plus grand compte d'une case, puis la somme des comptes sur les tours, puis +l'ordre des tables ; une table dont toutes les cases écrivent « — » vient en +dernier. La pire case est donc dans la première ligne. Le moteur rend les trois +ordres ; l'écran lit celui de la position. + +La vue décrit **la sortie**, pas les entrées : elle ne dit jamais combien chaque +appartenance compte de membres (§ 12.8, le camembert). Elle complète la vue des +collisions (§ 12.4) : celle-ci dit quelle appartenance se retrouve, la grille où +et quand ; un doublon d'appartenance non nul est exactement une table où la vue +des collisions compte au moins une collision ce tour-là. + +**Le jumeau** porte une ligne par table dans l'ordre de la position, et par tour +**les trois comptes et leurs trois pourcentages**, chaque pourcentage suivi du +compte de sa ligne (§ 12), les occupants, les affiliés et la capacité : il +détaille au-delà de la grille (§ 12.7). Une case tient son chiffre et 24 px de +côté ; une grille dont les cases ne tiennent pas dans la largeur de la carte +cède la place à son jumeau, avec la phrase qui le dit, et le sélecteur reste. +Une case n'est pas une cible : le pointage au plus proche désigne la case sous +le pointeur (§ 12.7), et le jumeau porte les mêmes valeurs. Sans collision, la +grille cède la place à la phrase de la vue des collisions sous la position +« doublons » seulement ; sans appartenance, à celle du § 12.6 sous les trois ; +avec une seule appartenance, elle reste. + +### 12.12 Les objectifs des tables + +**Question : qui n'est jamais assis à une table qui lui correspond, et à quel +tour l'objectif perd-il ?** + +**Les personnes jamais servies viennent d'abord**, nommées, chacune avec ses +tours possibles : c'est la seconde question du § 12.1, à place fixe. + +**La soirée s'écrit ensuite en texte**, non en barre : le pourcentage des tours +possibles servis, puis juste dessous le pire cas en compte — « 77 % des tours +possibles servis », « 3 personnes jamais servies » —, ses deux comptes — « 31 +servis sur 40 possibles » —, ses tours hors objectif et leur plancher. À un seul +tour, la soirée ne s'écrit pas : la ligne du tour la dit. + +Puis des **barres horizontales, une par tour**. Chaque barre porte les **tours +hors objectif** du tour, Π_r − S_r (§ 5.4), en deux segments : **prouvé +inévitable**, le **plancher du tour** max(0, P_r − L_r), avec le P_r et le L_r +du § 5.6, et **reste**. Un couple fixé possible étant servi, Π_r − S_r = P_r +− S^nf_r, et une personne servie non fixée occupe un siège libre : S^nf_r ≤ L_r, +donc le plancher du tour borne la barre. **La première barre est celle du tour +au plus grand reste**, à place fixe ; les autres tours suivent dans leur ordre ; +aucune couleur ne désigne un tour. En encre secondaire, chaque ligne porte le +pourcentage des tours possibles servis à ce tour, ses deux comptes dessous — +« 80 % », « 24 servis sur 30 possibles » —, puis **ses assis sans table +possible** σ_r (§ 5.4) : « 10 assis sans table possible ». Ce compte lit tous +les assis du tour, concernés ou non : il dit combien de personnes aucune table +ne pouvait servir, sans entrer dans le dénominateur, que le plancher borne. Un +tour sans couple possible écrit « — », sans barre ni pourcentage, et garde ses +assis sans table possible. Les mots, la forme des segments et le domaine des +planchers sont ceux du § 12.4. + +**Le diagnostic calcule le plancher de chaque tour**, que le critère classe ou +non, et en rend les termes et la somme ; le détail les lit et ne les recompte +pas (§ 13.2). La vue les dessine dans tous les cas ; la somme des planchers des +tours égale le plancher des tours hors objectif quand le diagnostic l'écrit +(§ 5.6). Le diagnostic ne calcule aucun flot : le plancher d'un tour est +immédiat, comme celui de la soirée. + +**Le jumeau** porte une ligne par tour — possibles, servis, leur pourcentage, +hors objectif, plancher, assis sans table possible —, la ligne de la soirée, la +liste des personnes jamais servies, chacune avec ses tours possibles, et la +répartition du nombre de tours hors objectif d'une personne, P(p) − s(p), de la +plus grande valeur à la plus petite, avec l'effectif. + +La vue lit les personnes concernées (§ 5.4) ; sans elles, elle cède la place à +sa phrase. Le critère décoché ne la retire pas : elle dit qu'il ne classe pas. + +### 12.13 Les animateurs + +**Les animateurs rencontrés.** *Qui a rencontré le moins d'animateurs ?* Un +**profil trié** de m(p) (§ 5.4), sur les personnes concernées par les +animateurs, de la moins servie à la mieux servie : à m égal, la borne la plus +haute d'abord, puis l'identifiant. Une seule série ; la **borne des animateurs** +B(p) tracée dans le même ordre, en repère pointillé (§ 12.7), sous ce nom — +jamais « plafond » : aucun plan ne garantit de l'atteindre (§ 4.5), et la vue +n'en tire ni manque ni pourcentage. Le jumeau porte une ligne par personne, avec +m(p), B(p) et son statut, puis la répartition de m(p), de la plus basse valeur à +la plus haute. + +**La diversité par animateur.** *Quel animateur voit le moins de diversité à sa +table ?* Pour chaque animateur, **sur la soirée** — l'union de ses tours +animés — **et à chacun de ses tours animés** : les appartenances rencontrées en +animant A_f, A_{f,r} et, quand une personne présente porte une étiquette, les +étiquettes rencontrées en animant E_f, E_{f,r} (§ 5.4). Le graphique dessine la +soirée ; les deux grandeurs se dessinent en **deux colonnes de barres +horizontales juxtaposées**, chacune avec son axe et sa graduation, les +animateurs dans le même ordre d'une colonne à l'autre : ce sont de petits +multiples, jamais deux séries empilées ni un axe commun — une appartenance et +une étiquette ne s'additionnent pas et ne se comparent pas. **Le moins varié en +tête** : A_f croissant, puis E_f, puis les personnes rencontrées en animant, +puis l'identifiant. Chaque ligne porte en encre secondaire ses tours animés et +ses personnes rencontrées en animant : un animateur d'un seul tour en rencontre +moins, et la vue le montre au lieu de le corriger. + +**Le jumeau** porte, dans l'ordre du graphique, la ligne de la soirée de chaque +animateur — tours animés, personnes, appartenances et étiquettes rencontrées en +animant —, puis sous elle une ligne par tour animé, dans l'ordre des tours, avec +les mêmes comptes pour ce tour seul : il détaille au-delà du graphique (§ 12.7), +et dit lequel des tours d'un animateur a appauvri sa soirée. Le pire (animateur, +tour) n'a pas de place fixe : la soirée gouverne l'ordre. + +**Au-dessus de chaque colonne, trois nombres** : le moins varié, le plus varié, +et combien d'animateurs sont au minimum — pour A_f, et pour E_f quand sa colonne +existe. Leurs libellés à l'écran sont « le moins varié », « le plus varié » et +« au minimum » ; le mot « équité » n'y paraît pas, réservé au libellé du mode +« l'équité d'abord » (§ 5.3). Aucun indice ne les résume (§ 12.8). + +Sans appartenance, ou avec une seule, mais avec des étiquettes, la vue ne trace +que la colonne des étiquettes, triée sur E_f puis comme ci-dessus ; les autres +cas sont au § 12.6. + +### 12.14 La performance du calcul + +**Question : relancer plus longtemps aurait-il donné mieux ?** + +La vue lit la course que le compagnon des courses garde pour la proposition +montrée (§ 8.6) : ses **mouvements évalués** sur son compte d'arrêt, et les +plans de ses points de relevé. Pour la génération qui l'a produite dans cette +séance, elle lit aussi sa **durée observée**, ses cœurs et sa **cadence** +(§ 5.10). Une durée nulle, ou absente — une proposition lue d'un fichier, une +génération d'une séance précédente —, s'écrit « inconnue », et la cadence avec +elle. Sans mouvement évalué, la vue écrit que le plan initial n'avait rien à +reprendre. + +Puis des **petits multiples** : un graphique par indicateur, une valeur par +critère que le classement applique, dans son ordre, jamais la clé pondérée d'un +palier, précédés du minimum brut. Chacun marque la valeur de l'indicateur pour +la meilleure affectation **aux seuls points de relevé** — les plans de la +course, puis le plan de la proposition au dernier —, **mesurée sous les réglages +courants** par le recalcul complet, les points reliés par un trait mince ; la +phrase de synthèse le dit, car un indicateur seul n'est pas monotone le long de +la recherche. Changer une étiquette, un objectif ou l'ordre des priorités +remesure les points : le dernier point égale toujours la ligne de la proposition +au tableau des propositions, et aucune valeur mesurée sous d'autres réglages ne +s'affiche. L'abscisse, commune, est le nombre de mouvements en échelle +logarithmique, graduée aux points de relevé ; chaque graphique a son seul axe +vertical (§ 12.7), de zéro à sa plus grande valeur. Une phrase dit le dernier +point de relevé où une valeur a changé : « aucune valeur n'a changé entre 10 000 +et 20 000 mouvements ; une autre graine est l'autre façon de chercher ». Elle +n'affirme rien des mouvements que la recherche n'a pas évalués. + +**Le jumeau** porte une ligne par point de relevé — le nombre de mouvements, +puis une colonne par indicateur. Il ne porte aucune durée : la cadence est celle +de la génération entière, répartie sur ses fils, et ne date aucun point +(§ 5.10). + +La vue mesure une proposition : sur le placement retenu, elle le dit, et montre +la course de la proposition d'où il vient quand il en vient sans ajustement et +qu'elle est encore dans la liste. Une proposition dont la course n'est pas +gardée — écrite avant le compagnon ou par une version antérieure, compagnon +absent, illisible ou contradictoire, proposition effacée puis rendue après une +réouverture — n'a pas ces données : la vue dit que sa course n'est pas gardée. +La page ne lit l'horloge que par l'application ; le moteur ne la lit jamais +(§ 14.7). + --- ## 13. Architecture @@ -4027,7 +4794,7 @@ des fonctions pures du module de géométrie. | tenir hors ligne | se compile en JavaScript ordinaire ; Vite est une dépendance de développement qui ne survit pas à la construction | | rester rapide | compile des mises à jour fines, sans arbre virtuel ni mémoïsation à poser à la main — à une exception près : la table d'évaluation des propositions, gardée dans le modèle pur sous l'identité de la charge figée de la séance, qu'une écriture remplace | | se tester sans navigateur | n'impose d'écrire aucun calcul dans un composant ; le composant ne contient que le câblage | -| être joli sans y passer des semaines | un fichier de jetons — couleurs, rayons, ombres, échelle typographique, cible principale, largeur de page — décliné en deux thèmes ; ses familles de couleur : la page, le bandeau, la carte, l'action principale, les quatre états du plan, le neutre, les appartenances, la bande de mode, les messages (avis, refus, information), le retrait, le plan, le papier | +| être joli sans y passer des semaines | un fichier de jetons — couleurs, rayons, ombres, échelle typographique, cible principale, largeur de page — décliné en deux thèmes ; ses familles de couleur : la page, le bandeau, la carte, l'action principale, les quatre états du plan, le neutre, les appartenances, la bande de mode, les messages (avis, refus, information), le retrait, le plan, le graphique, le papier | **Les candidates écartées.** Vue 3 est le second choix défendable, écarté de peu sur le poids et sur la discipline qu'exige sa réactivité. React est écarté sur la @@ -4426,9 +5193,9 @@ n'égale, octet pour octet, un fichier livré. | module (§ 13.4) | niveau | ce qui s'y éprouve | |---|---|---| -| moteur | `node` | indicateurs, plafonds et borne, diagnostic, invariants d'un plan, accord de l'incrémental et du recalcul, registre et compilation de l'ordre des priorités, correspondance des objectifs, empreintes de référence de l'ordre par défaut | -| géométrie | `node` + navigateur | conversions, ajustement, bornes de zoom, désignation d'un siège ; l'oracle du moteur de rendu au niveau 2 ; la découpe du plan en pages (§ 11.7) | -| stockage | `node` | sérialisation canonique, équivalence geste/entrée/état, reprise après panne, dérivation des noms de fichiers, forme positionnelle et champs facultatifs (§ 8.9), conversion du format 1 avec son journal | +| moteur | `node` | indicateurs, plafonds et borne, diagnostic, invariants d'un plan, accord de l'incrémental et du recalcul, registre et compilation de l'ordre des priorités, correspondance des objectifs, empreintes de référence de l'ordre par défaut, détail d'un placement pour la page de qualité, borne de diversité, points de relevé de la recherche | +| géométrie | `node` + navigateur | conversions, ajustement, bornes de zoom, désignation d'un siège ; l'oracle du moteur de rendu au niveau 2 ; la découpe du plan en pages (§ 11.7) ; les échelles, tracés et pointage des graphiques (§ 12.9) | +| stockage | `node` | sérialisation canonique, équivalence geste/entrée/état, reprise après panne, dérivation des noms de fichiers, forme positionnelle et champs facultatifs (§ 8.9), conversion du format 1 avec son journal, compagnon des courses (§ 8.6) | | analyseur CSV | `node` | encodage, séparateur, association des colonnes, réconciliation des appartenances et des étiquettes, lignes refusées, aller-retour, CSV des objectifs de table | | générateur de démonstrations | `node` | vecteur du générateur pseudo-aléatoire, empreinte des fichiers livrés, refus, noms forgés | | PDF | `node` | couche de texte, pagination, police embarquée et table `ToUnicode`, géométrie de la planche, reproductibilité | @@ -4571,6 +5338,41 @@ l'égalité.** Trois propositions inventées, dont deux égales sur la somme pondérée d'un palier : la troisième, moins bonne sur ce palier et meilleure sur le suivant, reste derrière. Il refuse le palier lu critère par critère. +**La borne de diversité tient sur tous les plans**, et s'arbitre par énumération +exhaustive comme le plafond : sur des configurations inventées de quelques +personnes, chaque plan admissible mesure A(p) ≤ A_max(p) et |F(p)| ≤ Φ_aff(p) +pour chacun, et au moins un plan atteint Φ_aff(p) pour une personne. Une seule +appartenance partagée par tous donne A_max = 1 à toute personne qui rencontre au +moins une personne ; puis un cas où Φ_aff(p) l'emporte, un où G l'emporte, et un +où (N_aff − g_p) + 1 égale G — chaque autre appartenance réduite à une +personne —, sans jamais descendre sous lui (§ 5.5). + +**Un point de relevé est le plan d'un compte d'arrêt plus court.** Pour une +graine donnée, la meilleure affectation gardée au point de relevé k égale le +plan que la même graine rend au compte d'arrêt k, à 1, 10, 100 et 1 000 +mouvements, sur la petite démonstration et la grande ; et le plan final ne +change pas quand les points de relevé sont gardés. L'épreuve refuse une copie +qui tirerait un nombre ou changerait l'ordre d'acceptation. La course écrite au +compagnon des courses se relit à l'identique (§ 8.6) : une génération écrite, +rouverte, montre les mêmes points, mesurés sous les réglages courants, et le +dernier égale la ligne de la proposition. + +**Le détail d'un placement ne recompte rien.** Ses doublons d'appartenance d'une +case sont non nuls exactement là où les collisions de ce tour et de cette table +le sont ; ses servis des tours somment s(p) ; ses paires répétées ont l'effectif +que compte `mesurer`, choisies et imposées ; ses planchers par tour sont ceux +que le diagnostic rend, leur somme est le plancher des tours hors objectif qu'il +écrit quand il l'écrit, et chacun borne les tours hors objectif de son tour sur +le domaine des planchers ; ses assis sans table possible et ses possibles d'un +tour ne dépassent pas ensemble les présents. Les trois comptes du mélange d'une +table s'emboîtent, sièges ≥ assis ≥ doublons, et chacun des trois ordres des +tables suit le sien. + +**Un pourcentage s'écrit par une seule fonction.** Elle rend « — » à +dénominateur nul, 0 à numérateur nul, 100 au numérateur égal au dénominateur, et +entre 1 et 99 partout ailleurs : 259 sur 260 donne 99, 1 sur 300 donne 1. +L'épreuve refuse un pourcentage de la page qui ne sortirait pas d'elle. + #### La géométrie **Le plan vide donne `k_ajusté = 1 px/cm`, pas `Infinity`.** Il refuse la division @@ -4607,6 +5409,14 @@ refuse la feuille de style qui ajoute un jour `transform: translateZ(0)` « pour la fluidité » : le plan répondrait faux partout, et la cause serait cherchée dans le module de géométrie. +**Le module des graphiques est frère de celui du plan, et n'en importe rien.** +Ses échelles rendent un pixel d'écran depuis un rang ou un nombre ; ses +graduations sont des entiers ronds pour des comptes ; son escalier ne trace que +des segments horizontaux et verticaux, un pas par rang ; le rang au plus proche +d'une abscisse est borné aux rangs existants, y compris hors du tracé. L'épreuve +refuse une graduation non entière sur un axe de comptes, et un escalier qui +relierait deux rangs en diagonale. + #### Le stockage **Le système de fichiers est un paramètre, pas un import** (§ 13.4). Sans @@ -4847,18 +5657,22 @@ d'être appelé** ; appelé par les commandes, il refuse au moment du geste, là § 5.9 veut les refus. **La garde du § 12.3 est une seconde fonction, de signature différente.** -`verifier_indicateurs(mesures, plafonds_a_priori, plafonds_realises)` éprouve -les **trois** inégalités de la ligne de décomposition du § 12.10.5. Quand les -mesures portent les objectifs des tables ou les animateurs (§ 5.4), elle éprouve -aussi, pour chacun, s(p) ≤ P(p), s(p) ≤ ses tours assis et m(p) ≤ B(p), puis, -sur les totaux, les personnes jamais servies contre les concernées et le plus de -tours hors objectif d'une personne contre le plus de tours possibles. P(p) ne se -compare pas aux tours assis : un plan qui laisse une personne en réserve à un -tour possible le tient au-delà. Elle ne prend pas un plan mais des mesures, et -ce qu'elle refuse n'est pas un geste mais un **dessin**. Les deux fonctions -vivent dans le moteur, sous la même discipline ; les confondre obligerait le -vérificateur de plan à recevoir des indicateurs qu'il n'a aucune raison de -connaître. +`verifier_indicateurs(mesures, plafonds_a_priori, plafonds_realises, +complements)` éprouve les **trois** inégalités de la ligne de décomposition du +§ 12.10.5. Avec ses compléments, que seule la page de qualité lui passe, elle +éprouve aussi le segment « reste » de chaque appartenance et de chaque tour sur +le domaine des planchers (§ 12.4, § 12.12) et la diversité de chacun contre ses +rencontres et sa borne (§ 5.5) ; la table d'évaluation l'appelle sans eux. Quand +les mesures portent les objectifs des tables ou les animateurs (§ 5.4), elle +éprouve aussi, pour chacun, s(p) ≤ P(p), s(p) ≤ ses tours assis et m(p) ≤ B(p), +puis, sur les totaux, les personnes jamais servies contre les concernées et le +plus de tours hors objectif d'une personne contre le plus de tours possibles. +P(p) ne se compare pas aux tours assis : un plan qui laisse une personne en +réserve à un tour possible le tient au-delà. Elle ne prend pas un plan mais des +mesures, et ce qu'elle refuse n'est pas un geste mais un **dessin**. Les deux +fonctions vivent dans le moteur, sous la même discipline ; les confondre +obligerait le vérificateur de plan à recevoir des indicateurs qu'il n'a aucune +raison de connaître. **Le vérificateur est lui-même éprouvé par mutation.** Le test prend un plan valide, déplace une personne pour qu'elle occupe deux tables au tour 2, et affirme @@ -4921,21 +5735,28 @@ d'un participant partiellement fixé, la frontière d'instantané, le renommage **La couverture se mesure et se publie par module**, jamais agrégée. Sa valeur est de **désigner ce qui n'est jamais exécuté** ; c'est une liste à lire, pas une note. -**Trois seuils durs, en branches, sur trois paires de modules.** Le module des -indicateurs et du plafond, les chemins de reprise du stockage, et le registre -des critères avec la règle de correspondance des objectifs tiennent **100 % de -branches**. Ils sont petits, purs — le deuxième à la condition d'injection du -§ 13.4 — et chaque branche non couverte y est un cas que l'opérateur rencontre -au pire moment. Une branche qu'on ne sait pas couvrir est soit du code mort — on -le retire — soit un cas que la spécification n'a pas prévu — on l'écrit. +**Des seuils durs, en branches, sur dix modules.** Le module des indicateurs +et du plafond, les chemins de reprise du stockage, le registre des critères +avec la règle de correspondance des objectifs, et les quatre modules qui +calculent la page de qualité — le détail d'un placement, les paires répétées, +la diversité par animateur et la géométrie des graphiques — tiennent **100 % +de branches**. Ils sont petits, purs — les chemins de reprise à la condition +d'injection du § 13.4 — et chaque branche non couverte y est un cas que +l'opérateur rencontre au pire moment. Ceux de la page de qualité rendent +chaque nombre qu'elle écrit, l'écran ne faisant que les mettre en forme +(§ 12.9) : une branche nue y est un chiffre affiché que rien n'éprouve. Une +branche qu'on ne sait pas couvrir est soit du code mort — on le retire — soit +un cas que la spécification n'a pas prévu — on l'écrit. **La mesure est sa propre commande**, `make couverture` : la série `node` sous instrumentation, hors des budgets du § 14.14. Elle publie un tableau par couche et par module, et un rapport à parcourir qui montre, ligne à ligne, ce qui n'est -jamais exécuté. Les seuils portent sur six fichiers — +jamais exécuté. Les seuils portent sur dix fichiers — `src/moteur/indicateurs.js` et `src/moteur/plafond.js`, `src/stockage/depot.js` et `src/stockage/journal.js`, `src/moteur/criteres.js` et -`src/moteur/correspondance.js` — et la commande échoue en deçà. Un test de +`src/moteur/correspondance.js`, `src/moteur/qualite.js`, +`src/moteur/paires.js`, `src/moteur/diversite.js` et +`src/geometrie/graphique.js` — et la commande échoue en deçà. Un test de l'arborescence refuse un seuil abaissé, un seuil global, et un seuil posé sur un fichier absent ou hors de la mesure : l'outil tiendrait ce dernier pour atteint, faute de branche à compter. Il refuse de même une commande qui ne mesure pas — @@ -5903,11 +6724,23 @@ n'interviennent qu'aux étapes où une configuration **déjà tendue** est le pr | `10-diagnostic.png` | **grande démonstration** | le diagnostic préalable (§ 5.6), le plafond a priori, les **99 retours imposés** énoncés à part, et le plancher de l'écart d'itinéraire | les valeurs affichées égalent celles du moteur pour la même entrée ; le plafond des quatre animateurs des tables de 7 vaut **24** | | `10a-ordre-priorites.png` | l'événement en construction | l'ordre des priorités : paliers numérotés, un palier de deux critères avec leurs poids — excédent de collisions × 1 et tours hors objectif × 3 —, « rencontrer le plus d'animateurs différents » marqué décoché (§ 5.3, § 5.7) | l'ordre affiché est celui que compile le moteur ; la capture `11` qui suit nomme les mêmes paliers ; le choix du mode des objectifs, à son défaut « le plus de places servies », et la commande qui rétablit le défaut sont affirmés hors de l'image | | `11-propositions.png` | l'événement en construction | plusieurs propositions comparées, l'ordre de classement **écrit dans l'interface** par paliers (§ 5.7), le tableau défilé en largeur des colonnes de diversité jusqu'à celles des objectifs | au moins trois propositions ; l'ordre affiché est celui que produit la clé de tri du moteur | -| `12-qualite-profil.png` | **grande démonstration** | la courbe en escalier, deux séries sur **un seul axe**, le plafond réalisé tracé dans le même ordre, le pire cas au premier rang (§ 12.3) | la page a **dessiné** plutôt que d'opposer son refus — c'est ainsi que la garde du § 12.3 montre qu'elle n'a pas été déclenchée | +| `12-qualite-profil.png` | **grande démonstration** | le profil en deux graphiques au même ordre de rangs : l'escalier en comptes de personnes, deux séries — rencontres en trait plein, appartenances en tirets —, le plafond réalisé en repère mixte et la borne de diversité en repère pointillé, chacun nommé sur le tracé ; dessous, les rencontres en pourcentage du plafond réalisé jusqu'à la règle à 100 %, du motif du plafond, l'axe des rangs de ce second graphique hors de l'image ; le pire cas au premier rang (§ 12.3) | la page a **dessiné** plutôt que d'opposer son refus — c'est ainsi que la garde du § 12.3 montre qu'elle n'a pas été déclenchée ; chaque graphique a un seul axe vertical ; le rang 1 est le même dans les deux ; chaque pourcentage écrit est suivi de son compte du pire ; aucun repère n'a le motif d'une série | +| `12a-qualite-sans-placement.png` | **petite démonstration, variante « conflit inévitable »**, avant sa génération | la page sans placement : la ligne de source, le diagnostic préalable et sa phrase (§ 12.6) | aucun graphique n'est dessiné ; la phrase est celle d'« aucun placement » | +| `12b-qualite-une-table.png` | **6 personnes de trois appartenances, une table de 6, 3 tours**, construite, sa génération faite | la phrase d'une seule table à la place du profil, des collisions, de la grille et des paires ; la performance (§ 12.6) | ni profil, ni barre de collision, ni grille, ni tableau des paires n'est dessiné ; la phrase est celle d'« une seule table » | +| `12c-qualite-un-tour.png` | **12 personnes de trois appartenances, 3 tables de 4, 1 tour**, construite, sa génération faite | la vue des tables entière, le sélecteur sur « par siège » et la grille d'une seule colonne, puis la phrase du tableau des paires ; le profil et les collisions, dessinés plus haut, sont affirmés sans l'image (§ 12.6) | aucun tableau des paires, vide ou non, n'est rendu ; la phrase est celle d'« un seul tour » | +| `12d-qualite-une-appartenance.png` | **12 personnes d'une même appartenance, 3 tables de 4, 3 tours**, construite, sa génération faite | le profil à une seule série et sa phrase ; les collisions et la grille des tables, qui restent (§ 12.6) | le profil porte une série et aucune borne de diversité ; les barres des collisions sont dessinées | +| `12e-qualite-sans-collision.png` | **9 personnes de neuf appartenances distinctes, 3 tables de 3, 2 tours**, construite, sa génération faite | la phrase de la vue des collisions ; la grille sous la position « par siège », qui reste (§ 12.6, § 12.11) | aucune barre de collision n'est dessinée ; le sélecteur est sur « par siège » et chaque case écrit 0 | +| `12f-qualite-reserve.png` | **petite démonstration, variante « conflit inévitable »**, sa première proposition retenue puis ajustée au plan : une personne mobile — ni ancrée ni partiellement fixée — mise en réserve au tour 2 | le premier graphique du profil, le point de la personne marqué « en réserve » ; les collisions à un seul segment et la phrase qui dit pourquoi le plancher ne s'applique pas, plus bas, sont affirmées sans l'image (§ 12.4, § 12.6) | aucun segment « prouvé inévitable » n'est dessiné ; le point de la personne porte la marque de la réserve | +| `12g-qualite-plafond-nul.png` | **5 personnes, une table de 4 et une table de 2, 2 tours**, construite : quatre réservées à la table de 4 aux deux tours, la cinquième sans réservation, que sa génération assoit seule à la table de 2 aux deux tours | le point marqué d'un plafond réalisé nul au rang 1 du profil, son infobulle ouverte ; au second graphique, ce rang sans point (§ 12.3, § 12.6) | la cinquième, ni ancrée, ni partiellement fixée, ni en réserve, porte la marque du plafond réalisé nul ; l'infobulle écrit le plafond réalisé 0 et le pourcentage « — » ; le second graphique n'a pas de point à ce rang | | `13-qualite-collisions.png` | **petite démonstration, variante « conflit inévitable »** | les barres horizontales à deux segments, « prouvé inévitable » et « reste », en **collisions cumulées**, avec l'effectif, les paires distinctes et l'**excédent** en encre secondaire | le segment prouvé vaut **4 collisions cumulées** et égale le plancher du diagnostic, au chiffre près ; les lignes sont triées sur l'excédent (§ 12.4) | -| `14-qualite-paires.png` | **12 personnes, 4 tables de 3, 6 tours**, construite | le tableau des paires répétées trié, pas la matrice (§ 12.5) | le tableau n'est pas vide, et chaque ligne mène au tour fautif | +| `13a-qualite-tables.png` | **petite démonstration, variante « conflit inévitable »** | le sélecteur à trois positions sur « par siège », la grille tables × tours, chaque case ses sièges sans appartenance nouvelle, la pire table en première ligne (§ 12.11) | la première ligne porte le plus grand compte de la position « par siège » ; chaque case écrit le nombre que son niveau colore ; une case sans affilié écrit « — » | +| `14-qualite-paires.png` | **12 personnes, 4 tables de 3, 6 tours**, construite | le tableau des paires répétées trié, pas la matrice (§ 12.5) | le tableau n'est pas vide, et la première commande de chaque ligne mène au premier tour où la paire se revoit | +| `14a-fiche-rencontres.png` | **12 personnes, 4 tables de 3, 6 tours**, construite | la rubrique « Rencontres » de la fiche d'une personne, ses premières lignes, les plus revues d'abord ; le haut de la fiche, son nom compris, hors de l'image (§ 12.5) | la ligne de la fiche égale la ligne de la personne dans le tableau des paires | | `15-pas-de-matrice.png` | **grande démonstration** | à 260 participants, le tableau et non la matrice, avec la phrase qui le dit | aucune matrice n'est dessinée | -| `16-minimum-atteint.png` | **petite démonstration** | **« minimum atteint »**, les compteurs de collision et de répétition **mesurés** à zéro, la ligne secondaire « ancrés » à **« — »** (§ 15.3) | la mention est présente, les compteurs mesurés sont nuls, et la population vide affiche un tiret, **jamais zéro** | +| `15a-qualite-objectifs.png` | l'événement en construction, la première proposition du classement montrée | les personnes jamais servies en tête, la soirée en texte, son pourcentage et le compte des jamais servies dessous, puis les barres des tours hors objectif, « prouvé inévitable » et « reste », chacune avec son pourcentage, ses deux comptes et ses assis sans table possible (§ 12.12) | la somme des planchers des tours égale le plancher du diagnostic ; possibles − servis de la soirée égale la colonne des tours hors objectif du tableau des propositions ; chaque ligne de tour écrit ses assis sans table possible | +| `15b-qualite-animateurs.png` | **grande démonstration** | le profil des animateurs rencontrés avec la borne des animateurs en repère pointillé, puis le début de la diversité par animateur sur la soirée, le moins varié en tête ; ses colonnes et leurs trois nombres, plus bas, sont affirmés sans l'image (§ 12.13) | le mot « plafond » n'est pas écrit dans la vue ; la première barre porte le minimum annoncé | +| `15c-qualite-performance.png` | **grande démonstration**, une proposition montrée, dans la séance qui l'a engendrée | la ligne de tête — mouvements évalués, durée et cadence de la génération — et les deux premiers rangs des petits multiples sur l'abscisse logarithmique ; les autres multiples et la phrase du dernier changement, plus bas, sont affirmés sans l'image (§ 12.14) | le dernier point de relevé est le plan de la proposition ; ses valeurs égalent la ligne du tableau des propositions ; la durée écrite est celle dont le parcours a avancé l'horloge | +| `16-minimum-atteint.png` | **petite démonstration** | le bas de l'en-tête chiffré : la diversité d'appartenance, le manque à zéro et **« minimum atteint »** ; les compteurs de collision et de répétition **mesurés** à zéro et la ligne secondaire « ancrés » à **« — »**, plus haut, sont affirmés sans l'image (§ 15.3) | la mention est présente, les compteurs mesurés sont nuls, et la population vide affiche un tiret, **jamais zéro** | | `17-comparaison-manque.png` | **variante sans exception** (§ 15.1) | les deux profils de manque qui se croisent, l'axe commun, le zéro libellé, les trois effectifs de rangs (§ 12.10.6) | la page écrit sa question en toutes lettres et les trois effectifs ; aucune échelle propre à une courbe | | `18-comparaison-escalier.png` | idem | l'escalier du manque, jumeau tabulaire de la vue précédente | les effectifs cumulés du tableau reproduisent la courbe | | `19-ajustement.png` | l'événement retenu | le déplacement d'une personne après la retenue, l'interface disant **lequel des deux gestes** est en cours (§ 5.8) | le libellé de l'état des données est visible | @@ -5916,6 +6749,10 @@ n'interviennent qu'aux étapes où une configuration **déjà tendue** est le pr | `22-plan-brouillon.png` / `23-plan-retenu.png` | idem | l'**aperçu d'impression** du plan (§ 11.7) avec son cartouche, son échelle graphique et son horodatage, **avec** puis **sans** le filigrane BROUILLON | **deux images, parce qu'une absence ne se photographie pas** : le filigrane présent sur l'un, absent sur l'autre, et la paire est le seul exposé lisible de la règle | | `24-badges-controle.png` / `25-badges-planche.png` | idem | la **feuille de contrôle** avec son échelle de 100 mm et ses comptes, puis une **planche** de quatre A6 et ses trois filets de coupe | voir § 19.6 — ces deux images ne viennent pas du navigateur. La paire est nécessaire : la feuille de contrôle est ce que l'opérateur mesure sous une règle avant d'engager la rame, et une planche seule ne le montre pas | +Une image montre ce que tient la surface défilante d'un cadre de 1 366 × 700 +(§ 19.4), soit 482 px de haut sous la barre du plan ; ce que la ligne du tableau +décrit au-delà s'affirme par l'épreuve, sans l'image. + **L'événement en construction est généré sous ses objectifs et son ordre réglé.** Les objectifs posés en `05a` et l'import de `05b` restent, et l'ordre réglé en `10a` reste : la capture `11` montre la phrase par paliers et les @@ -5924,15 +6761,30 @@ elles, et les captures du placement qui en découle changent avec elle. Que l'ordre par défaut rende les plans de l'ordre fixe de référence ne se photographie pas : les empreintes de référence le gardent (§ 14.10). -**Huit captures sont déclarées et reportées** : `12` à `18`, à l'étape 10, et -`21`, à l'étape 11, montrent la page de qualité, la comparaison et la vue -d'historique, que le logiciel n'offre pas. Le manifeste les porte comme -reportées, à leur étape et sans image, et le contrôle d'ordre les compte : -l'étape 10 n'est pas une étape sans capture, et leur place dans l'ordre est déjà -gardée. Les deux `07a` se photographient sur la grande démonstration, chargée -pour la capture `10` : sur la soirée que le parcours construit, deux tables, -même le zoom le plus faible laisse les sièges pour cibles, et la bascule ne se -montre pas. +**Trois captures sont déclarées et reportées** : `17` et `18`, à l'étape 10, et +`21`, à l'étape 11, montrent la comparaison et la vue d'historique, que le +logiciel n'offre pas encore. Le manifeste les porte comme reportées, à leur +étape et sans image, et le contrôle d'ordre les compte : l'étape 10 n'est pas +une étape sans capture, et leur place dans l'ordre est déjà gardée. Les deux +`07a` se photographient sur la grande démonstration, chargée pour la capture +`10` : sur la soirée que le parcours construit, deux tables, même le zoom le +plus faible laisse les sièges pour cibles, et la bascule ne se montre pas. + +Les captures de la page de qualité, `12` à `16` et leurs voisines en « a » à +« g », illustrent l'étape 10 et se prennent **à la fin du parcours**, après les +familles en lecture et sur un plan bloqué, chacune sur sa charge, pour ne rien +changer de ce que les captures précédentes reçoivent : `12`, `15`, `15b` et +`15c` sur la grande démonstration, dont le parcours engendre les propositions +sous une graine écrite et un compte réduit ; `12a`, puis `13` et `13a` après la +génération, puis `12f` après l'ajustement du retenu, sur la variante « conflit +inévitable » ; `12b`, `12c`, `12d`, `12e` et `12g` chacune sur sa configuration +construite ; `14` et `14a` sur la configuration construite des paires ; `15a` +sur l'événement en construction ; `16` sur la petite. **La durée de `15c` est +pilotée** : la génération de la grande se fait sous l'horloge pilotée, que le +parcours avance d'un pas écrit à chaque avancement du moteur ; la durée et la +cadence affichées sont alors les mêmes à chaque exécution (§ 19.4). Le parcours +rouvre ensuite l'événement, sans photographier : la même proposition montre la +même course, la durée « inconnue ». **L'aperçu d'impression est plus haut que la fenêtre.** `22` et `23` le photographient au défilement où le filigrane et le pied de la première page @@ -5960,12 +6812,14 @@ scénarios courts, et le catalogue reste à quatre entrées — sans cette règl l'étape `01-premier-ecran` change de valeur chaque fois qu'une épreuve a besoin d'une configuration de plus. -**Les cas dégénérés du § 12.6 se photographient à part**, par des scénarios courts -qui montent la configuration visée et vont droit à l'écran : aucun placement, une -seule table, un seul tour, une seule appartenance, aucune collision, une personne -en réserve, un plafond réalisé nul. La raison n'est pas la fragilité d'une chaîne -longue : **chacun exige une configuration différente**, et un parcours linéaire -n'en porte qu'une à la fois. +**Les cas dégénérés du § 12.6 se photographient à part**, par des scénarios +courts qui montent la configuration visée et vont droit à l'écran : aucun +placement (`12a`), une seule table (`12b`), un seul tour (`12c`), une seule +appartenance (`12d`), aucune collision (`12e`), une personne en réserve (`12f`), +un plafond réalisé nul (`12g`). Chacune affirme qu'aucun axe vide n'est dessiné +et que la phrase est celle du cas. Les autres cas du § 12.6 s'éprouvent sans +image. La raison n'est pas la fragilité d'une chaîne longue : **chacun exige une +configuration différente**, et un parcours linéaire n'en porte qu'une à la fois. S'y ajoute, au même titre, le fichier `participants_cas_limites_cp1252.csv` (§ 10.3) : la décision d'encodage en quatre temps du § 10.1 est le mécanisme dont @@ -6244,14 +7098,16 @@ du moteur, et **font croire au lecteur que le texte ne lui est pas destiné** après quoi il ne lit plus la section, qui est la seule réponse écrite à la question qu'il posera. -La section s'appuie sur les captures d'écran `10`, `11`, `12`, `16`, `17` et `18` : -le diagnostic, les propositions classées, le profil trié, « minimum atteint » sur -la petite démonstration, et les deux vues de comparaison. Tant que `12` à `18` -sont reportées (§ 19.3), elle s'appuie sur `10` et `11` seules, et décrit le -manque par les colonnes du tableau des propositions. Le contraste de la -variante « conflit inévitable » (§ 15.3) — une personne déplacée d'une appartenance -à l'autre, et la mention bascule — est le plus court exposé de toute la section, et -il tient en deux images. +La section s'appuie sur les captures d'écran `10`, `11`, `12`, `16`, `17` et +`18` : le diagnostic, les propositions classées, le profil trié, « minimum +atteint » sur la petite démonstration, et les deux vues de comparaison. Tant que +`17` et `18` sont reportées (§ 19.3), elle s'appuie sur `10`, `11`, `12` et +`16`, et décrit la comparaison par le manque en mots, sur les colonnes du +tableau des propositions. Le point 3 s'appuie en outre sur `15c` : la course +d'une recherche, et son plateau. Le contraste de la variante « conflit +inévitable » (§ 15.3) — une personne déplacée d'une appartenance à l'autre, et +la mention bascule — est le plus court exposé de toute la section, et il tient +en deux images. ### 19.10 Le banc de mesure @@ -6281,10 +7137,24 @@ Le banc est un projet à part, hors des trois séries, que sa seule commande lan un geste du développeur : il l'écrit au registre des constantes, la déclare mesurée et y cite la configuration du relevé. Une garde refuse ensuite une constante du banc déclarée mesurée que le relevé ne soutient pas, en valeur ou en -configuration. Deux constantes sont ainsi adoptées : le nombre de sièges lisibles, -`SEUIL_SIEGES_LISIBLES`, à **18 places**, et la tolérance de la chaîne témoin, -`TOLERANCE_CHAINE_TEMOIN`, à **0,011** — le quart de l'écart relatif qu'introduit -une famille de repli forcée, et au moins trois fois la gigue de dix mesures. +configuration. Quatre constantes sont ainsi adoptées. Deux le sont hors de la +page de qualité : le nombre de sièges lisibles, `SEUIL_SIEGES_LISIBLES`, à +**18 places**, et la tolérance de la chaîne témoin, `TOLERANCE_CHAINE_TEMOIN`, +à **0,011** — le quart de l'écart relatif qu'introduit une famille de repli +forcée, et au moins trois fois la gigue de dix mesures. + +Les deux autres sont celles de la page de qualité, relevées au même banc, +chacune avec le protocole écrit à son entrée du registre : +`SEUIL_MATRICE_PARTICIPANTS`, le nombre de participants au-delà duquel une case +de la matrice tombe sous la cible de 24 px dans la largeur de la carte, au cadre +d'affichage fixé, à **44 participants** ; et `LARGEUR_TRONCATURE_NOM_PX`, la +largeur à laquelle un nom se tronque dans une étiquette de graphique, calée sur +une longueur de nom écrite au registre, composée du glyphe le plus large de +l'alphabet visé (§ 14.1), jamais sur les noms d'une démonstration, à **168 px**. +Le seuil de la matrice borne son coût et sa lisibilité au cadre fixé ; la page +éprouve en plus, par la géométrie, que les cases tiennent 24 px dans la largeur +réelle de la carte (§ 12.5). Le nombre de valeurs distinctes de manque sous +lequel la courbe cède la place à une phrase appartient à la comparaison. **Le relevé nomme la classe de la machine, jamais la machine.** Sa configuration est une liste fermée : le cadre d'affichage, le facteur d'échelle, le navigateur et diff --git a/src/application/evaluation.js b/src/application/evaluation.js index 9413249..1609ae4 100644 --- a/src/application/evaluation.js +++ b/src/application/evaluation.js @@ -128,6 +128,18 @@ function exigerAPriori(fonction, plafondsAPriori) { // jamais. const seCompare = (placement, charge) => fautes(placement).length === 0 && derive(placement, charge).length === 0; +// La mesure d'un plan indexé que porte sa ligne d'évaluation : mesurer, +// les plafonds réalisés et les trois chiffres sous le plafond a priori +// aPriori, null quand il est inconnu. ligneDe et detaillerQualite la +// prennent ici l'une et l'autre : la tuile écrit la valeur de la ligne, et +// le détail juge un plancher atteint sur la même, sans la recompter +// autrement. +function mesureDuPlan(instance, tableDe, aPriori) { + const mesures = mesurer(instance, tableDe); + const realises = plafondsRealises(instance, tableDe); + return { mesures, realises, chiffres: troisChiffres(instance, mesures, aPriori, realises) }; +} + // Une ligne qui ne se mesure pas. const nonMesuree = (id, statut, raisons) => ({ id, @@ -171,9 +183,7 @@ export function evaluer(charge, { plafondsAPriori = 'calcul' } = {}) { const raisons = deriveSansRevalider(placement, charge); if (raisons.length > 0) return nonMesuree(id, 'derive', raisons); const plan = planSansRevalider(placement); - const tableDe = indexerPlan(instance, plan); - const mesures = mesurer(instance, tableDe); - const realises = plafondsRealises(instance, tableDe); + const { mesures, realises, chiffres } = mesureDuPlan(instance, indexerPlan(instance, plan), aPriori); return { id, statut: 'comparable', @@ -181,7 +191,7 @@ export function evaluer(charge, { plafondsAPriori = 'calcul' } = {}) { violations: verifierInvariants(instance, plan, { reserveAutorisee: true }).filter(({ code }) => code === 'RESERVATION'), mesures, plafondsRealises: realises, - troisChiffres: troisChiffres(instance, mesures, aPriori, realises), + troisChiffres: chiffres, ecartAuPlafondAPrioriMax: plusGrand(ecartsAuPlafondAPriori(mesures, aPriori)), minimumAtteint: minimumAtteint(mesures, aPriori), refusDessin: verifierIndicateurs(mesures, aPriori, realises).map((violation) => ({ @@ -527,6 +537,7 @@ function enIdentifiants(instance, brut, critere) { animateurs: avecId(bornes.animateurs), objectifs: avecId(bornes.objectifs), soiree: bornes.soiree, + planchers: bornes.planchers, }, profil: brut.profil.map(avecId), synthese: brut.synthese, @@ -594,7 +605,9 @@ function placementDe(charge, id) { * La configuration figée et l'instance sont celles de la charge, comme dans * evaluer ; le placement se valide une fois (fautes), puis se lit sans * seconde validation. Fautif ou en dérive, il rend ses raisons et chaque - * champ de mesure à null. Sinon : le diagnostic une fois ; les planchers + * champ de mesure à null. Sinon : le diagnostic une fois ; le plan mesuré + * comme sa ligne d'évaluation le mesure (mesureDuPlan), dont detailler lit + * les trois chiffres pour juger un plancher atteint ; les planchers * valent sur un plan qui assoit chacun à chaque tour et ne laisse aucune * réservation non tenue (D31) ; la borne de diversité ; detailler, en une * lecture du plan, la matrice seulement jusqu'à SEUIL_MATRICE_PARTICIPANTS @@ -647,8 +660,7 @@ export function detaillerQualite(charge, id, options = {}) { const aPriori = plafondsAPriori === 'calcul' ? diagnostic.plafondAPriori.parPersonne : null; const plan = planSansRevalider(placement); const tableDe = indexerPlan(instance, plan); - const mesures = mesurer(instance, tableDe); - const realises = plafondsRealises(instance, tableDe); + const { mesures, realises, chiffres } = mesureDuPlan(instance, tableDe, aPriori); const nonTenues = verifierInvariants(instance, plan, { reserveAutorisee: true }).filter(({ code }) => code === 'RESERVATION'); const planchersValides = nonTenues.length === 0 && mesures.toursAssis.every((assis) => assis === instance.R); const { phiAffilies, aMax } = borner(instance, tableDe); @@ -661,6 +673,7 @@ export function detaillerQualite(charge, id, options = {}) { mesures, plafondsRealises: realises, plafondsAPriori: aPriori, + troisChiffres: chiffres, planchersValides, cle: cleNormalisee, ordreMatrice, diff --git a/src/application/evaluation.test.js b/src/application/evaluation.test.js index 9e73f9b..7eac12b 100644 --- a/src/application/evaluation.test.js +++ b/src/application/evaluation.test.js @@ -987,6 +987,53 @@ describe('detaillerQualite : une seule arithmétique (§ 12.9, § 13.2, contrain assert.ok(detail.collisions.lignes.every((ligne) => !Object.hasOwn(ligne, 'g'))); }); + test('les planchers des tuiles passent tels que le moteur les rend, sur des plans écrits à la main', () => { + // La petite démonstration au conflit : l'appartenance de cinq pour + // quatre tables prouve 4 collisions cumulées, une par tour, et 1 paire + // distincte ; l'excédent, 4 sous C(5, 2), ne s'écrit pas. « (4, 1) » + // atteint les deux, « (4, 2) » les cumulées seules, « (6, 6) » aucun. + const charge = structuredClone(chargeDemo('petite-conflit')); + charge.propositions = PLANS_CONFLIT.map(({ tours }, rang) => propositionDe(charge, rang + 1, tours)); + charge.prochainsIds.proposition = 5; + charge.evenement.etat = 'propose'; + figer(charge); + const collisionsDe = (id) => { + const { collisionsCumulees, pairesDistinctes, excedentCollisions } = detaillerQualite(charge, id).bornes.planchers; + return [collisionsCumulees, pairesDistinctes, excedentCollisions]; + }; + assert.deepEqual(collisionsDe(1), [{ plancher: 4, atteint: true }, { plancher: 1, atteint: true }, null]); + assert.deepEqual(collisionsDe(2), [{ plancher: 4, atteint: true }, { plancher: 1, atteint: false }, null]); + assert.deepEqual(collisionsDe(3), [{ plancher: 4, atteint: false }, { plancher: 1, atteint: false }, null]); + }); + + test('l’écart d’itinéraire porte son plancher sous le plafond a priori calculé, aucun sous un plafond a priori inconnu', () => { + // Cinq personnes, une table de trois et une de deux, deux tours : le + // diagnostic prouve un écart d'itinéraire maximal de 1 au moins. Le + // plan qui fait passer quatre personnes par la table de deux l'atteint, + // celui qui y garde les deux mêmes laisse 4 et 5 deux sous leur plafond + // a priori. + const charge = chargeDeN(5); + charge.tables = [3, 2].map((sieges, rang) => ({ id: rang + 1, numero: rang + 1, sieges, forme: 'ronde', position: { x: 300 * rang, y: 0 } })); + charge.prochainsIds.table = 3; + charge.propositions = [ + propositionDe(charge, 1, [ + [[1, 2, 3], [4, 5]], + [[1, 4, 5], [2, 3]], + ]), + propositionDe(charge, 2, [ + [[1, 2, 3], [4, 5]], + [[1, 2, 3], [4, 5]], + ]), + ]; + charge.prochainsIds.proposition = 3; + charge.evenement.etat = 'propose'; + figer(charge); + assert.deepEqual(detaillerQualite(charge, 1).bornes.planchers.ecartItineraireMax, { plancher: 1, atteint: true }); + assert.deepEqual(detaillerQualite(charge, 2).bornes.planchers.ecartItineraireMax, { plancher: 1, atteint: false }); + assert.equal(evaluer(charge).propositions.find(({ id }) => id === 2).troisChiffres.ecartItineraireMax.tous, 2); + for (const id of [1, 2]) assert.equal(detaillerQualite(charge, id, { plafondsAPriori: null }).bornes.planchers.ecartItineraireMax, null); + }); + test("chaque personne en entier — appartenance ou null, statut ancré, partiel ou mobile — et le numéro de chaque table, distinct de son identifiant", () => { const charge = structuredClone(chargeDemo('petite-conflit')); const [premiere, seconde] = [...charge.tables].sort((a, b) => a.id - b.id); @@ -1101,6 +1148,9 @@ describe('detaillerQualite : la garde à quatre paramètres (§ 12.3, D31, D42)' assert.equal(detail.statut, 'comparable', `${id}`); assert.equal(detail.collisions.planchersValides, false, `${id}`); assert.ok(detail.collisions.lignes.every(({ prouve, reste }) => prouve === null && reste === null), `${id}`); + // Aucune tuile ne porte de plancher, pas même des 1000 relevés. + const planchers = Object.entries(detail.bornes.planchers).filter(([, plancher]) => plancher !== null); + assert.deepEqual(planchers, [], `${id}`); const codes = detail.refusDessin.map(({ code }) => code); assert.equal(codes.includes('RESTE_NEGATIF'), false, `${id}`); assert.equal(codes.includes('RESTE_OBJECTIFS_NEGATIF'), false, `${id}`); diff --git a/src/geometrie/constantes.js b/src/geometrie/constantes.js index eb6ada7..ea534e0 100644 --- a/src/geometrie/constantes.js +++ b/src/geometrie/constantes.js @@ -293,7 +293,7 @@ export const CONSTANTES = Object.freeze( }, { nom: 'SEUIL_MATRICE_PARTICIPANTS', - valeur: 40, + valeur: 44, unite: 'participants', mesure: "nombre de participants au-delà duquel une case de la matrice « qui a rencontré qui » tombe sous la " + @@ -302,9 +302,11 @@ export const CONSTANTES = Object.freeze( 'au-delà, la matrice coûte et ne se lit plus : la vue renvoie à la fiche de chaque personne, qui porte ' + 'ses rencontres (§ 12.5). La page éprouve en plus, par la géométrie, que les cases tiennent 24 px ' + 'dans la largeur réelle de la carte', - configuration: 'banc de mesure, cadre de 1 366 × 700 px, facteur 1, vue des paires de la page de qualité', + configuration: + 'banc de mesure, cadre de 1 366 × 700 px, facteur 1, Chromium 153.0.8010.12, Node v26.10.0, ' + + '16 processeurs logiques, processeur non ralenti, police Noto Sans, vue des paires de la page de qualité', proprietaire: 'banc', - statut: 'defautDeTravail', + statut: 'mesuree', protocole: 'banc de mesure, cadre de 1 366 × 700 px : le plus grand nombre de participants dont la case de la ' + 'matrice tient 24 px dans la largeur de la carte de la vue, noms en tête compris, relevé sur le rendu ; ' + @@ -312,15 +314,17 @@ export const CONSTANTES = Object.freeze( }, { nom: 'LARGEUR_TRONCATURE_NOM_PX', - valeur: 180, + valeur: 168, unite: 'px', mesure: "largeur à laquelle un nom se tronque dans une étiquette de graphique", raison: "un nom plus long déborderait sur le tracé ou sur l'étiquette voisine ; le nom entier reste dans " + "l'infobulle et dans le jumeau (§ 12.6)", - configuration: "banc de mesure, cadre de 1 366 × 700 px, facteur 1, police Noto Sans, corps des étiquettes de graphique", + configuration: + 'banc de mesure, cadre de 1 366 × 700 px, facteur 1, Chromium 153.0.8010.12, Node v26.10.0, ' + + '16 processeurs logiques, processeur non ralenti, police Noto Sans, corps des étiquettes de graphique', proprietaire: 'banc', - statut: 'defautDeTravail', + statut: 'mesuree', protocole: `banc de mesure, police Noto Sans : la largeur rendue d'un nom de ${LONGUEUR_NOM_REFERENCE} caractères, ` + "chacun le glyphe le plus large de l'alphabet visé, au corps des étiquettes de graphique, dans la marge " + diff --git a/src/geometrie/constantes.test.js b/src/geometrie/constantes.test.js index eb6e428..c141a50 100644 --- a/src/geometrie/constantes.test.js +++ b/src/geometrie/constantes.test.js @@ -7,10 +7,11 @@ // l'accord du registre avec le relevé committé du banc : le banc écrit un // relevé, jamais le registre, et une constante du banc déclarée mesurée // porte la valeur que le relevé propose, sur la configuration qu'il décrit. -// Deux valeurs du relevé sont adoptées — le seuil de sièges lisibles et la -// tolérance de la chaîne témoin — ; le ralentissement à pleine charge garde -// son défaut de travail : la machine de référence est le poste de -// développement, ρ à son défaut (Q13 b). +// Quatre valeurs du relevé sont adoptées — le seuil de sièges lisibles, la +// tolérance de la chaîne témoin, et les deux seuils de la page de qualité, +// celui de la matrice et la largeur de troncature des noms — ; le +// ralentissement à pleine charge garde son défaut de travail : la machine de +// référence est le poste de développement, ρ à son défaut (Q13 b). import assert from 'node:assert/strict'; import { describe, test } from '../../test/lanceur.js'; import { accordRegistre } from '../../scripts/banc/releve.js'; @@ -38,12 +39,12 @@ const CONTRAT = [ ['HAUTEUR_BANDE_IMPRESSION', null, 'mm', 'execution', 'mesuree'], ['TOLERANCE_CHAINE_TEMOIN', 0.011, 'rapport', 'banc', 'mesuree'], ['RALENTISSEMENT_PLEINE_CHARGE', 2, '×', 'banc', 'defautDeTravail'], - ['SEUIL_MATRICE_PARTICIPANTS', 40, 'participants', 'banc', 'defautDeTravail'], - ['LARGEUR_TRONCATURE_NOM_PX', 180, 'px', 'banc', 'defautDeTravail'], + ['SEUIL_MATRICE_PARTICIPANTS', 44, 'participants', 'banc', 'mesuree'], + ['LARGEUR_TRONCATURE_NOM_PX', 168, 'px', 'banc', 'mesuree'], ]; // Les constantes du banc dont le registre a adopté la valeur relevée. -const ADOPTEES = ['SEUIL_SIEGES_LISIBLES', 'TOLERANCE_CHAINE_TEMOIN']; +const ADOPTEES = ['SEUIL_SIEGES_LISIBLES', 'TOLERANCE_CHAINE_TEMOIN', 'SEUIL_MATRICE_PARTICIPANTS', 'LARGEUR_TRONCATURE_NOM_PX']; // Une copie du registre, entrée par entrée, que l'épreuve peut altérer. const copie = () => CONSTANTES.map((entree) => ({ ...entree })); @@ -76,7 +77,7 @@ describe('constantes : le registre (§ 14.1, § 19.10)', () => { assert.match(entree('TOLERANCE_CHAINE_TEMOIN').protocole, /repli/); }); - test('les deux seuils de la page de qualité attendent le banc, protocole écrit (B29) ; la troncature se cale sur une longueur de nom écrite ici', () => { + test('les deux seuils de la page de qualité sont adoptés du banc, protocole écrit (B29) ; la troncature se cale sur une longueur de nom écrite ici', () => { const entree = (nom) => CONSTANTES.find((c) => c.nom === nom); const matrice = entree('SEUIL_MATRICE_PARTICIPANTS'); assert.match(matrice.mesure, /24 px/); @@ -88,11 +89,13 @@ describe('constantes : le registre (§ 14.1, § 19.10)', () => { assert.match(troncature.protocole, /glyphe le plus large/); // Jamais les noms d'une démonstration, que sa régénération change. assert.match(troncature.protocole, /jamais un nom de démonstration/); - // Le banc les relève ; le registre garde leur défaut de travail jusqu'à - // l'adoption à la main d'une valeur relevée. + // Le banc les relève ; le registre les déclare mesurés, sur la + // configuration du relevé non ralenti, ce que l'accord avec le relevé + // committé éprouve à son tour. for (const seuil of [matrice, troncature]) { assert.equal(seuil.proprietaire, 'banc', seuil.nom); - assert.equal(seuil.statut, 'defautDeTravail', seuil.nom); + assert.equal(seuil.statut, 'mesuree', seuil.nom); + assert.match(seuil.configuration, /processeur non ralenti, police Noto Sans/, seuil.nom); } }); diff --git a/src/interface/libelles/qualite.js b/src/interface/libelles/qualite.js index fda424c..a3a059a 100644 --- a/src/interface/libelles/qualite.js +++ b/src/interface/libelles/qualite.js @@ -26,8 +26,11 @@ export const TABLE = new Map([ // --- La source et les cas sans source mesurable (§ 12, B9, § 12.6) --------- // La ligne de source nomme le placement mesuré, après cet intitulé, par le // libellé que la barre de vue du plan lui donne (plan.source.*) ; une - // proposition fautive, que le plan ne montre jamais, a le sien. + // proposition fautive, que le plan ne montre jamais, a le sien. Sans + // placement à mesurer, elle n'en nomme aucun : les réservations que le + // plan montre alors ne se mesurent pas. ['qualite.source.intitule', 'Placement mesuré :'], + ['qualite.source.aucun', 'aucun, le plan ne montre que les réservations'], ['qualite.source.propositionFautive', ({ proposition }) => `Proposition n° ${proposition}, fautive : le plan ne la montre pas`], ['qualite.source.montrerPremiere', ({ proposition }) => `Montrer la proposition n° ${proposition}`], [ @@ -101,6 +104,7 @@ export const TABLE = new Map([ ['qualite.tuile.borneDiversite', ({ borne }) => `borne de diversité ${borne}`], ['qualite.tuile.borneAnimateurs', ({ borne }) => `borne des animateurs ${borne}`], ['qualite.tuile.plancher', ({ plancher }) => `plancher ${plancher}`], + ['qualite.tuile.plancherAtteint', ({ plancher }) => `plancher ${plancher} atteint : impossible de faire moins`], ['qualite.tuile.toursPossibles', ({ possibles }) => compte(possibles, 'tour possible', 'tours possibles')], ['qualite.tuile.imposees', ({ imposees }) => `${compte(imposees, 'imposée', 'imposées')}, à part`], ['qualite.tuile.imposes', ({ imposes }) => `${compte(imposes, 'imposé', 'imposés')}, à part`], diff --git a/src/interface/parcours.navigateur.test.js b/src/interface/parcours.navigateur.test.js index 33b6811..4aa8ec0 100644 --- a/src/interface/parcours.navigateur.test.js +++ b/src/interface/parcours.navigateur.test.js @@ -3321,7 +3321,9 @@ describe('la page de qualité (§ 12, § 19.3, B27)', { timeout: DUREE }, () => expect(texteDe(phrase)).toBe(plat(t('qualite.phrase.aucunPlacement'))); expect(phrasesQualite()).toEqual(['aucunPlacement']); expect(tous('[data-section="qualite"] svg[data-graphique]')).toEqual([]); - expect(dans('[data-section="qualite"] [data-source-qualite]')).not.toBeNull(); + // La ligne de source ne nomme aucun placement mesuré : les réservations + // que le plan montre ne se mesurent pas. + expect(texteDe(dans('[data-section="qualite"] [data-source-qualite]'))).toBe(plat(`${t('qualite.source.intitule')} ${t('qualite.source.aucun')}`)); expect(tous('[data-section="qualite"] [data-phrase]').length, 'le diagnostic préalable').toBeGreaterThan(0); await photographier(m, '12a-qualite-sans-placement', { condition: ['[data-section="qualite"] [data-source-qualite]', '[data-section="qualite"] [data-phrase-qualite="aucunPlacement"]'], @@ -3625,7 +3627,26 @@ describe('la page de qualité (§ 12, § 19.3, B27)', { timeout: DUREE }, () => await uneEntree(r, 'débloquer'); await passerEnEcriture(); await generer(); + // Le retenu que les familles laissent et les propositions d'avant elles + // ne décrivent plus la liste : leur annonce couvrirait l'image. La + // première du classement est retenue — la fenêtre confirmée quand le + // retenu qu'elle remplace est ajusté —, puis l'effacement garde d'elle + // seule. + await ouvrirSection('propositions'); + const classee = await attendre('le tableau classé', () => dans('[data-section="propositions"] [data-classement] tr[data-proposition]')); + const retenue = Number(classee.dataset.proposition); + let entree = revision(); + await cliquer(`[data-section="propositions"] tr[data-proposition="${retenue}"] [data-commande="retenir"]`); + await attendre('le retenu, ou sa fenêtre', () => revision() > entree || dans('dialog[open]')); + if (revision() === entree) await appuyer(dans('dialog[open] [data-commande="confirmer"]'), 'confirmer retenir'); + await uneEntree(entree, 'retenir'); + entree = revision(); + await cliquer('[data-section="propositions"] [data-commande="effacer"]'); + await uneEntree(entree, 'effacer les propositions'); + expect(charge().propositions.map((proposition) => proposition.id)).toEqual([retenue]); + expect(charge().retenu.proposition).toBe(retenue); const id = await qualiteDeLaPremiere(); + expect(id).toBe(retenue); const vue = vueQualite('objectifs'); expect(vue.querySelector('[data-jamais-servies]')).not.toBeNull(); const soiree = vue.querySelector('[data-soiree-objectifs]'); @@ -3661,6 +3682,9 @@ describe('la page de qualité (§ 12, § 19.3, B27)', { timeout: DUREE }, () => const objectifs = vueQualite('objectifs'); await cadrerDansLaSurface([objectifs.querySelector('[data-jamais-servies]'), objectifs.querySelector('ol.tours')]); + // L'image montre les objectifs sans annonce : aucun placement de la + // charge ne contredit la liste. + expect(tous('[data-avertissement]').map((annonce) => annonce.dataset.avertissement)).toEqual([]); await photographier(m, '15a-qualite-objectifs', { condition: ['[data-vue-qualite="objectifs"] [data-soiree-objectifs]', '[data-vue-qualite="objectifs"] ol.tours'], graine: GRAINE, diff --git a/src/interface/qualite/Profil.navigateur.test.js b/src/interface/qualite/Profil.navigateur.test.js index a14746c..ebafaa3 100644 --- a/src/interface/qualite/Profil.navigateur.test.js +++ b/src/interface/qualite/Profil.navigateur.test.js @@ -222,6 +222,22 @@ describe('l’en-tête chiffré (§ 12.2, B11, D48)', () => { expect(copie.textContent).not.toContain('%'); }); + test('rouge : un plancher prouvé s’écrit dans le texte de sa tuile, sous son chiffre, rendu et lu par l’assistance', async () => { + // Cinq de la Coopérative Aubier pour deux tables de trois : au moins + // quatre collisions par tour, douze sur trois tours, que tout plan + // atteint. + const charge = chargeSix(); + for (const personne of charge.participants) personne.appartenance = personne.id <= 5 ? 'Coopérative Aubier' : null; + const cible = await monter(VueEntete, vueDe(generee(charge))); + const tuile = tuileDe(cible, 'collisionsCumulees'); + const ligne = t('qualite.tuile.plancherAtteint', { plancher: 12 }); + const porteuse = [...tuile.querySelectorAll('.borne')].find((element) => texteDe(element) === ligne); + expect(porteuse, texteDe(tuile)).toBeDefined(); + expect(porteuse.compareDocumentPosition(tuile.querySelector('.valeur')) & Node.DOCUMENT_POSITION_PRECEDING).toBeTruthy(); + expect(porteuse.closest('[aria-hidden="true"], [hidden]')).toBeNull(); + expect(porteuse.checkVisibility({ visibilityProperty: true })).toBe(true); + }); + test('le libellé d’une tuile s’explique au focus du clavier : l’infobulle porte l’explication de la colonne', async () => { const cible = await monter(VueEntete, vueDe(generee(chargeSix()))); const terme = tuileDe(cible, 'manqueMax').querySelector('[data-terme]'); diff --git a/src/interface/qualite/Qualite.navigateur.test.js b/src/interface/qualite/Qualite.navigateur.test.js index d403d19..b0ce6ca 100644 --- a/src/interface/qualite/Qualite.navigateur.test.js +++ b/src/interface/qualite/Qualite.navigateur.test.js @@ -313,7 +313,7 @@ describe('les quatre cas sans source mesurable (§ 12, § 12.6, B9)', () => { expect(texteDe(page(m).querySelector('[data-phrase-qualite="aucunPlacement"]'))).toBe(t('qualite.phrase.aucunPlacement')); expect(texteDe(page(m))).toContain(t('coquille.section.diagnostic')); expect(page(m).querySelector('[data-enonce]')).not.toBeNull(); - expect(ligneDeSource(m)).toBe(attendueDeSource('plan.source.reservations')); + expect(ligneDeSource(m)).toBe(attendueDeSource('qualite.source.aucun')); expect(vuesRendues(m)).toEqual([]); expect(page(m).querySelector('svg, nav')).toBeNull(); }); @@ -404,7 +404,7 @@ describe('une source qui disparaît sous la page ouverte (§ 12, B9)', () => { await m.seance.executer('enregistrerGeneration', { propositions, configuration, produitVersion: V1 }); await attendre(() => expect(phrases(m)).toEqual(['aucuneMontree'])); expect(charge(m).propositions.some((proposition) => proposition.id === id)).toBe(false); - expect(ligneDeSource(m)).toBe(attendueDeSource('plan.source.reservations')); + expect(ligneDeSource(m)).toBe(attendueDeSource('qualite.source.aucun')); expect(vuesRendues(m)).toEqual([]); const revenir = commande(page(m), 'revenir'); expect(texteDe(revenir)).toBe(t('plan.source.revenirReservations')); diff --git a/src/interface/qualite/VueEntete.svelte b/src/interface/qualite/VueEntete.svelte index ea6c3fa..3c28bfa 100644 --- a/src/interface/qualite/VueEntete.svelte +++ b/src/interface/qualite/VueEntete.svelte @@ -14,9 +14,11 @@ // Une tuile porte son libellé, sa valeur écrite comme au tableau, « ne // classe pas » quand le tableau ne porte pas sa colonne, son pourcentage // et le compte du pire (Pourcentage) sur trois tuiles seulement, puis les - // lignes de sa borne, chacune d'une personne nommée. Le libellé est un - // terme : le survol et le focus du clavier ouvrent l'infobulle de son - // explication, celle de la colonne au tableau (Infobulle, primitive). + // lignes de sa borne, celles d'une personne qu'elle nomme, et en dernier, + // quand le détail en porte un, son plancher, qui ne nomme personne : il + // borne la mesure de la tuile. Le libellé est un terme : le survol et le + // focus du clavier ouvrent l'infobulle de son explication, celle de la + // colonne au tableau (Infobulle, primitive). // // Désignations : data-vue-qualite sur le

qui enveloppe la carte, // que la carte ne transmet pas ; data-tuile sur chaque tuile, par le nom diff --git a/src/interface/qualite/entete.js b/src/interface/qualite/entete.js index c66a4f2..eb89eae 100644 --- a/src/interface/qualite/entete.js +++ b/src/interface/qualite/entete.js @@ -17,10 +17,13 @@ // // Les bornes des tuiles viennent du détail du placement (detail.bornes), // chacune celle d'une personne nommée, que la tuile nomme : rien ne s'y -// recompte, rien ne s'y moyenne. Les tours hors objectif portent le -// plancher de la soirée (detail.objectifs) quand le diagnostic en écrit -// un — non nul, sous des planchers valides — ; les rencontres répétées et -// les retours choisis énoncent à part les imposés, lus dans la ligne +// recompte, rien ne s'y moyenne. Le plancher, lui, ne nomme personne : il +// borne la mesure de la tuile. Chaque tuile dont le détail porte le plancher +// (detail.bornes.planchers, là où le diagnostic du § 5.6 l'écrit) l'écrit +// en dernière ligne, sous son chiffre, et dit « atteint : impossible de +// faire moins » quand le détail le dit atteint ; sans plancher, aucune +// ligne, jamais un 0. Les rencontres répétées +// et les retours choisis énoncent à part les imposés, lus dans la ligne // d'évaluation et dans la table. Trois tuiles portent un pourcentage, un // entier que le détail porte déjà, suivi du compte du pire : le minimum // brut (la personne au rang 1 du profil), les tours hors objectif (la @@ -42,7 +45,8 @@ const EN_TETES = new Map(COLONNES.map(({ nom, cle }) => [nom, cle])); * @property {string} texte la valeur, écrite comme au tableau * @property {boolean} classe vrai quand le tableau porte la colonne * @property {string|null} neClassePas la mention, null quand elle classe - * @property {string[]} bornes les lignes de la borne, traduites + * @property {string[]} bornes les lignes de la borne, traduites, la + * ligne du plancher en dernier quand il est prouvé * @property {{texte: string|null, compte: string}|null} pourcentage * le pourcentage écrit, null quand son dénominateur est nul, et * le compte du pire ; null hors des trois tuiles @@ -85,9 +89,7 @@ function bornesDe(nom, { detail, ligne, table, t, nommer, lire }) { case 'toursHorsObjectif': { const { soiree } = bornes; if (soiree === null) return rendu([]); - const plancher = detail.objectifs?.soiree.plancher ?? null; - const ecrit = detail.collisions.planchersValides && plancher !== null && plancher > 0; - return rendu(ecrit ? [t('qualite.tuile.plancher', { plancher })] : [], { + return rendu([], { texte: soiree.pourcent === null ? null : t('qualite.pourcentage.servis', { pourcent: soiree.pourcent }), compte: t('qualite.tuile.pireJamaisServies', { personnes: soiree.jamaisServies }), }); @@ -114,6 +116,24 @@ function bornesDe(nom, { detail, ligne, table, t, nommer, lire }) { } } +// La ligne du plancher de la tuile nom, lue dans le détail : {plancher, +// atteint} ou null, que le moteur ne rend que prouvé et non nul. Une liste +// d'une ligne, ou vide. +function plancherDe(nom, { detail, t }) { + const { planchers } = detail.bornes; + const lu = Object.hasOwn(planchers, nom) ? planchers[nom] : null; + if (lu === null) return []; + const { plancher, atteint } = lu; + return [t(atteint ? 'qualite.tuile.plancherAtteint' : 'qualite.tuile.plancher', { plancher })]; +} + +// Les lignes de la borne d'une tuile, son plancher en dernier, et son +// pourcentage. +function bornesEtPlancher(nom, contexte) { + const { bornes, pourcentage } = bornesDe(nom, contexte); + return { bornes: [...bornes, ...plancherDe(nom, contexte)], pourcentage }; +} + /** * L'en-tête chiffré d'une source mesurée, sous le contrat de propriétés des * vues : null sans détail comparable, sans ligne ou sans table. @@ -156,7 +176,7 @@ export function enteteDe({ detail, ligne, table }, { t, format }) { texte: texteCellule(cellule, { t, format }), classe, neClassePas: classe ? null : t('qualite.tuile.neClassePas'), - ...bornesDe(nom, contexte), + ...bornesEtPlancher(nom, contexte), }); } if (deGroupe.length > 0) groupes.push({ cle, libelle: t(cle), tuiles: deGroupe }); diff --git a/src/interface/qualite/entete.test.js b/src/interface/qualite/entete.test.js index 2bdb1c9..a2d4312 100644 --- a/src/interface/qualite/entete.test.js +++ b/src/interface/qualite/entete.test.js @@ -6,8 +6,9 @@ // propositions, dans son ordre et sous ses groupes, la cellule même du // tableau quand la colonne y est ; une tuile sans colonne lit la même // mesure et dit qu'elle ne classe pas ; un critère sans objet n'a pas de -// tuile ; chaque borne est celle d'une personne nommée, lue dans le détail ; -// trois tuiles seulement portent un pourcentage, suivi du compte du pire. +// tuile ; chaque borne est celle d'une personne nommée, lue dans le détail, +// et le plancher, là où le diagnostic l'écrit, ne nomme personne ; trois +// tuiles seulement portent un pourcentage, suivi du compte du pire. // Les charges s'écrivent ici ou partent des démonstrations livrées ; leurs // propositions s'enregistrent par la commande. Les noms d'épreuve sont // inventés. @@ -88,6 +89,21 @@ const tuile = (entete, nom) => { const nomDe = (detail, id) => detail.personnes.find((personne) => personne.id === id).nom; const valeur = (pourcent) => t('qualite.pourcentage.valeur', { pourcent }); +// Les tuiles qui portent un plancher quand le diagnostic en prouve un. +const TUILES_A_PLANCHER = [ + 'collisionsCumulees', + 'pairesDistinctes', + 'excedentCollisions', + 'ecartItineraireMax', + 'jamaisServies', + 'horsObjectifMax', + 'toursHorsObjectif', +]; +// La ligne qu'une tuile écrit pour son plancher, et les lignes de plancher +// parmi les bornes d'une tuile. +const ligneDuPlancher = ({ plancher, atteint }) => t(atteint ? 'qualite.tuile.plancherAtteint' : 'qualite.tuile.plancher', { plancher }); +const lignesDePlancher = (bornes) => bornes.filter((ligne) => ligne.startsWith('plancher')); + // Les tuiles des objectifs et des animateurs. const SIXIEME = ['jamaisServies', 'horsObjectifMax', 'toursHorsObjectif', 'toursSelonObjectif', 'animateursRencontres', 'animateursNonRencontres']; @@ -264,23 +280,80 @@ describe('enteteDe : les bornes, chacune d’une personne nommée (§ 12.2, B11, }); }); - test('les tours hors objectif : le plancher de la soirée quand le diagnostic en écrit un, sous des planchers valides ; aucun sinon', () => { + test('rouge : chaque tuile au plancher prouvé l’écrit sous son chiffre, « atteint » quand il l’est ; aucune autre', () => { + const vue = vueDe(generee(chargeSix({ objectifs: true }))); + assert.deepEqual(Object.keys(vue.detail.bornes.planchers).sort(), [...TUILES_A_PLANCHER].sort()); + for (const nom of TUILES_A_PLANCHER) { + for (const atteint of [false, true]) { + const detail = structuredClone(vue.detail); + detail.bornes.planchers = Object.fromEntries(TUILES_A_PLANCHER.map((autre) => [autre, null])); + detail.bornes.planchers[nom] = { plancher: 3, atteint }; + const entete = enteteDe({ ...vue, detail }, outils); + const attendue = t(atteint ? 'qualite.tuile.plancherAtteint' : 'qualite.tuile.plancher', { plancher: 3 }); + assert.equal(tuile(entete, nom).bornes.at(-1), attendue, nom); + assert.deepEqual(lignesDePlancher(tuile(entete, nom).bornes), [attendue], nom); + for (const autre of tuiles(entete)) if (autre.nom !== nom) assert.deepEqual(lignesDePlancher(autre.bornes), [], `${nom} : ${autre.nom}`); + } + } + // Sans plancher prouvé, aucune ligne, jamais « plancher 0 ». + const detail = structuredClone(vue.detail); + detail.bornes.planchers = Object.fromEntries(TUILES_A_PLANCHER.map((nom) => [nom, null])); + for (const autre of tuiles(enteteDe({ ...vue, detail }, outils))) assert.deepEqual(lignesDePlancher(autre.bornes), [], autre.nom); + }); + + test('rouge : cinq membres d’une appartenance pour deux tables de trois : 12 collisions cumulées au moins, atteintes ; chaque plancher du détail écrit', () => { + const charge = chargeSix(); + for (const personne of charge.participants) personne.appartenance = personne.id <= 5 ? 'Coopérative Aubier' : null; + const vue = vueDe(generee(charge)); + assert.equal(vue.ligne.mesures.collisionsCumulees, 12); + assert.deepEqual(vue.detail.bornes.planchers.collisionsCumulees, { plancher: 12, atteint: true }); + const entete = enteteDe(vue, outils); + assert.deepEqual(tuile(entete, 'collisionsCumulees').bornes, [t('qualite.tuile.plancherAtteint', { plancher: 12 })]); + for (const nom of TUILES_A_PLANCHER) { + const plancher = vue.detail.bornes.planchers[nom]; + const ecrites = tuiles(entete).some((candidate) => candidate.nom === nom) ? lignesDePlancher(tuile(entete, nom).bornes) : []; + assert.deepEqual(ecrites, plancher === null ? [] : [ligneDuPlancher(plancher)], nom); + } + }); + + test('les tours hors objectif : le plancher de la soirée, sous son pourcentage et le compte du pire', () => { // Quatre personnes attendues à une table de trois places, deux autres // réservées à l'autre table : au moins trois tours hors objectif. const vue = vueDe(generee(chargeSix({ objectifs: true, finance: 4, reservees: true }))); - const { soiree } = vue.detail.objectifs; - assert.equal(vue.detail.collisions.planchersValides, true); - assert.ok(soiree.plancher > 0, `plancher ${soiree.plancher}`); - const ligneDuPlancher = t('qualite.tuile.plancher', { plancher: soiree.plancher }); - assert.ok(tuile(enteteDe(vue, outils), 'toursHorsObjectif').bornes.includes(ligneDuPlancher)); - // Hors du domaine des planchers, le même plancher ne s'écrit pas. - const detail = structuredClone(vue.detail); - detail.collisions.planchersValides = false; - assert.ok(!tuile(enteteDe({ ...vue, detail }, outils), 'toursHorsObjectif').bornes.some((ligne) => ligne.startsWith('plancher'))); - // Un plancher nul : le diagnostic se tait, aucune ligne. - detail.collisions.planchersValides = true; - detail.objectifs.soiree = { ...detail.objectifs.soiree, plancher: 0 }; - assert.ok(!tuile(enteteDe({ ...vue, detail }, outils), 'toursHorsObjectif').bornes.some((ligne) => ligne.startsWith('plancher'))); + const plancher = vue.detail.bornes.planchers.toursHorsObjectif; + assert.ok(plancher !== null && plancher.plancher === vue.detail.objectifs.soiree.plancher, JSON.stringify(plancher)); + const horsObjectif = tuile(enteteDe(vue, outils), 'toursHorsObjectif'); + assert.notEqual(horsObjectif.pourcentage, null); + assert.deepEqual(horsObjectif.bornes, [ligneDuPlancher(plancher)]); + }); + + test('rouge : les deux lignes du plancher, mot pour mot, ne disent rien que de la mesure de leur tuile', () => { + assert.equal(t('qualite.tuile.plancher', { plancher: 4 }), 'plancher 4'); + assert.equal(t('qualite.tuile.plancherAtteint', { plancher: 4 }), 'plancher 4 atteint : impossible de faire moins'); + }); + + test('rouge : une tuile des objectifs qui ne classe pas n’écrit aucun plancher, même prouvé, comme le diagnostic (§ 5.6)', () => { + // Quatre personnes attendues à une table de trois places : 3 tours hors + // objectif au moins, et 1 au moins pour une personne. + const sous = (reglages) => { + const vue = vueDe(generee(chargeSix({ objectifs: true, finance: 4, reservees: true, reglages }))); + return { vue, entete: enteteDe(vue, outils) }; + }; + const places = sous({}); + assert.equal(tuile(places.entete, 'horsObjectifMax').classe, false); + assert.deepEqual(lignesDePlancher(tuile(places.entete, 'horsObjectifMax').bornes), []); + assert.equal(lignesDePlancher(tuile(places.entete, 'toursHorsObjectif').bornes).length, 1); + const minimum = sous({ modeObjectifs: 'minimum' }); + const auPlus = minimum.vue.detail.bornes.planchers.horsObjectifMax; + assert.equal(auPlus.plancher, 1); + assert.equal(tuile(minimum.entete, 'horsObjectifMax').classe, true); + assert.deepEqual(lignesDePlancher(tuile(minimum.entete, 'horsObjectifMax').bornes), [ligneDuPlancher(auPlus)]); + // Le critère décoché ne compare rien : ses tuiles restent, sans plancher. + const decoche = sous({ respecterObjectifs: false }); + for (const nom of ['jamaisServies', 'horsObjectifMax', 'toursHorsObjectif']) { + assert.equal(tuile(decoche.entete, nom).classe, false, nom); + assert.deepEqual(lignesDePlancher(tuile(decoche.entete, nom).bornes), [], nom); + } }); test('les rencontres répétées et les retours : les choisis en valeur, les imposés énoncés à part', () => { diff --git a/src/interface/qualite/graphiques/pointage.js b/src/interface/qualite/graphiques/pointage.js index e7675a2..0d81810 100644 --- a/src/interface/qualite/graphiques/pointage.js +++ b/src/interface/qualite/graphiques/pointage.js @@ -619,21 +619,42 @@ export function dispositionBarres({ largeur, lignes, segments = null, colonnes = ? geometries.map((g, k) => ({ ...g.lignes[indice].segments[0], genre: parts[k].genre, colonne: k })) : geometries[0].lignes[indice].segments.map((s, k) => ({ ...s, genre: parts[k].genre, colonne: k })); // Empilé, un segment qui suit un segment non nul s'en écarte. Un - // segment en contour garde LARGEUR_MIN_CONTOUR_PX ; empilé, ce qu'il - // gagne au-delà de sa fin se retranche du segment qui le suit, sans le - // rendre négatif : la barre finit où sa valeur la fait finir, sauf quand - // le segment en contour est seul. - let gagne = 0; - const tracees = traces - .filter((s) => l.valeurs[s.colonne] > 0) - .map((s) => { - const ecart = !juxtaposees && s.colonne > 0 && l.valeurs[s.colonne - 1] > 0 ? ECART_SEGMENTS_PX : 0; - const x = s.x + ecart + gagne; - const propre = Math.max(0, s.x + s.largeur - x); - const largeurTracee = REMPLISSAGES[s.genre].contour ? Math.max(propre, LARGEUR_MIN_CONTOUR_PX) : propre; - gagne = juxtaposees ? 0 : Math.max(0, x + largeurTracee - (s.x + s.largeur)); - return { ...s, x, largeur: largeurTracee, y, hauteur: hauteurLigne, ...REMPLISSAGES[s.genre] }; - }); + // segment en contour garde au moins LARGEUR_MIN_CONTOUR_PX, et la + // barre finit au plus loin à sa limite : la fin de sa valeur, ou, pour + // une ligne plus étroite que le contour minimal de son premier segment à + // sa valeur, son premier segment plus ce minimum. Ce que le contour + // gagne au-delà de sa fin se prend sur les segments qui le suivent, dans + // l'ordre, chacun jusqu'à zéro ; ce qui dépasse encore la limite, sur + // ceux qui le précèdent, du plus proche au premier, chacun jusqu'à zéro + // — un segment ramené à zéro cède aussi l'écart qui le suivait —, et le + // contour recule d'autant. Seul le prouvé se trace en contour, et deux + // segments n'ont jamais le même genre : ce qui précède le contour est en + // aplat. Juxtaposé, chaque segment est seul sur son axe, et sa limite est + // la sienne. + const visibles = traces.filter((s) => l.valeurs[s.colonne] > 0); + const limiteDe = (premier, dernier) => Math.max(dernier.x + dernier.largeur, premier.x + LARGEUR_MIN_CONTOUR_PX); + const limiteEmpilee = visibles.length === 0 ? 0 : limiteDe(visibles[0], visibles.at(-1)); + let finPrecedente = null; + const tracees = visibles.map((s) => { + const ecart = !juxtaposees && s.colonne > 0 && l.valeurs[s.colonne - 1] > 0 ? ECART_SEGMENTS_PX : 0; + const limite = juxtaposees ? limiteDe(s, s) : limiteEmpilee; + const depart = juxtaposees || finPrecedente === null ? s.x : Math.max(s.x, finPrecedente); + const x = Math.min(limite, depart + ecart); + const propre = Math.max(0, s.x + s.largeur - x); + const largeurTracee = REMPLISSAGES[s.genre].contour ? Math.max(propre, LARGEUR_MIN_CONTOUR_PX) : propre; + finPrecedente = x + largeurTracee; + return { ...s, x, largeur: largeurTracee, y, hauteur: hauteurLigne, ...REMPLISSAGES[s.genre] }; + }); + let depasse = juxtaposees || finPrecedente === null ? 0 : finPrecedente - limiteEmpilee; + for (let i = tracees.length - 2; depasse > 0 && i >= 0; i -= 1) { + const s = tracees[i]; + const ecartSuivant = tracees[i + 1].x - (s.x + s.largeur); + const pris = Math.min(depasse, s.largeur); + s.largeur -= pris; + const recul = pris + (s.largeur === 0 ? Math.min(ecartSuivant, depasse - pris) : 0); + for (let j = i + 1; j < tracees.length; j += 1) tracees[j].x -= recul; + depasse -= recul; + } const intitule = intitules[indice]; const centre = y + hauteurLigne / 2; const pastille = diff --git a/src/interface/qualite/graphiques/pointage.test.js b/src/interface/qualite/graphiques/pointage.test.js index d9679fd..95d0c9b 100644 --- a/src/interface/qualite/graphiques/pointage.test.js +++ b/src/interface/qualite/graphiques/pointage.test.js @@ -365,6 +365,105 @@ describe('pointage : les barres (§ 12.4)', () => { assert.equal(large.largeur, ordinaire.ex.versPx(1) - ordinaire.ex.versPx(0), 'un prouvé assez large garde sa largeur'); }); + test('rouge : une barre ne finit jamais au-delà de sa valeur ; seule une ligne plus étroite que le contour minimal s’allonge, jusqu’à lui', () => { + // Une première ligne de 600 fixe l'axe : une unité y fait moins de + // 2 px, si bien qu'un prouvé de 1 et un reste de 2 tiennent dans moins + // que LARGEUR_MIN_CONTOUR_PX. + const axe = { id: 'a', nom: 'Coopérative Aubier', appartenance: 1, valeurs: [0, 600] }; + const unite = (() => { + const d = disposer({ lignes: [axe] }); + return d.ex.versPx(1) - d.ex.versPx(0); + })(); + assert.ok(3 * unite < LARGEUR_MIN_CONTOUR_PX, `une unité : ${unite} px`); + // Le plus petit reste qui fait la ligne au moins aussi large que le + // contour minimal, sans lui laisser l'écart d'un second segment. + const reste = Math.ceil(LARGEUR_MIN_CONTOUR_PX / unite) - 1; + assert.ok((1 + reste) * unite < LARGEUR_MIN_CONTOUR_PX + ECART_SEGMENTS_PX, `un plus ${reste} : ${(1 + reste) * unite} px`); + const d = disposer({ + lignes: [ + axe, + { id: 'b', nom: 'Atelier Ressac', appartenance: 2, valeurs: [1, 2] }, + { id: 'c', nom: 'Iris Ombrelle', appartenance: null, valeurs: [1, reste] }, + ], + }); + const zero = d.ex.versPx(0); + const finDe = (segment) => segment.x + segment.largeur; + // 1 et 2, plus étroite que le contour minimal : la barre s'allonge + // jusqu'à lui, et pas d'un pixel de plus. + const etroite = d.lignes[1]; + assert.equal(etroite.segments[0].largeur, LARGEUR_MIN_CONTOUR_PX); + assert.ok(Math.abs(etroite.fin - (zero + LARGEUR_MIN_CONTOUR_PX)) < 1e-9, `fin ${etroite.fin - zero} px`); + assert.ok(etroite.segments.every((s) => finDe(s) <= etroite.fin + 1e-9 && s.largeur >= 0)); + // 1 et le reste, au moins aussi large : le prouvé garde son contour, le + // reste cède ce qu'il faut, jusqu'à zéro, et la barre finit à sa valeur. + const juste = d.lignes[2]; + const valeur = d.ex.versPx(1 + reste); + assert.equal(juste.segments[0].largeur, LARGEUR_MIN_CONTOUR_PX); + assert.ok(Math.abs(juste.fin - valeur) < 1e-9, `fin ${juste.fin - zero} px, valeur ${valeur - zero} px`); + for (const s of juste.segments) assert.ok(finDe(s) <= valeur + 1e-9 && s.x <= valeur + 1e-9 && s.largeur >= 0, `${s.genre} : ${s.x - zero} + ${s.largeur}`); + // La hauteur réservée reste celle du dessin. + assert.equal(d.hauteurTotale, hauteurBarres({ n: 3, juxtaposees: false, hauteurTexte: HAUTEUR_TEXTE })); + // Un prouvé en dernier n'a aucun segment après lui où prendre : il ne + // passe pas la valeur de sa ligne, plus large que le contour minimal. + const inverse = disposer({ + segments: [...segments].reverse(), + lignes: [ + { ...axe, valeurs: [600, 0] }, + { id: 'd', nom: 'Théo Pervenche', appartenance: null, valeurs: [reste + 1, 1] }, + ], + }); + const derniere = inverse.lignes[1]; + const fin = inverse.ex.versPx(reste + 2); + assert.equal(derniere.segments.at(-1).genre, 'prouve'); + assert.ok(Math.abs(derniere.fin - fin) < 1e-9, `fin ${derniere.fin - inverse.ex.versPx(0)} px, valeur ${fin - inverse.ex.versPx(0)} px`); + for (const s of derniere.segments) assert.ok(finDe(s) <= fin + 1e-9 && s.largeur >= 0, `${s.genre} : ${s.x} + ${s.largeur}`); + }); + + test('rouge : un prouvé en dernier garde aussi le contour minimal, pris sur le segment qui le précède ; la barre ne passe sa valeur que pour une ligne plus étroite que lui', () => { + const d = disposer({ + segments: [...segments].reverse(), + lignes: [ + { id: 'a', nom: 'Coopérative Aubier', appartenance: 1, valeurs: [300, 0] }, + { id: 'b', nom: 'Atelier Ressac', appartenance: 2, valeurs: [9, 1] }, + { id: 'c', nom: 'Iris Ombrelle', appartenance: null, valeurs: [1, 1] }, + { id: 'd', nom: 'Théo Pervenche', appartenance: null, valeurs: [0, 1] }, + ], + }); + const zero = d.ex.versPx(0); + const unite = d.ex.versPx(1) - zero; + assert.ok(2 * unite < LARGEUR_MIN_CONTOUR_PX && 10 * unite > LARGEUR_MIN_CONTOUR_PX + ECART_SEGMENTS_PX, `une unité : ${unite} px`); + const proche = (a, b) => Math.abs(a - b) < 1e-9; + // 9 et 1 : le prouvé prend son contour sur le reste, qui le précède ; + // la barre finit à sa valeur. + const [reste, prouve] = d.lignes[1].segments; + assert.deepEqual([reste.genre, prouve.genre], ['reste', 'prouve']); + assert.equal(prouve.largeur, LARGEUR_MIN_CONTOUR_PX); + assert.ok(proche(prouve.x + prouve.largeur, d.ex.versPx(10)), `fin ${prouve.x + prouve.largeur - zero} px`); + assert.ok(proche(d.lignes[1].fin, d.ex.versPx(10))); + assert.equal(reste.x, zero); + assert.ok(proche(reste.x + reste.largeur + ECART_SEGMENTS_PX, prouve.x), 'le reste cède, l’écart reste'); + // 1 et 1, plus étroite que le contour minimal : le reste cède tout, + // l'écart avec lui, et la barre s'allonge jusqu'au contour minimal. + const [vide, seul] = d.lignes[2].segments; + assert.equal(vide.largeur, 0); + assert.equal(seul.x, zero); + assert.equal(seul.largeur, LARGEUR_MIN_CONTOUR_PX); + assert.ok(proche(d.lignes[2].fin, zero + LARGEUR_MIN_CONTOUR_PX)); + // Un prouvé seul : le contour minimal, depuis zéro. + assert.deepEqual( + d.lignes[3].segments.map(({ genre, x, largeur }) => [genre, x, largeur]), + [['prouve', zero, LARGEUR_MIN_CONTOUR_PX]], + ); + // Aucun segment prouvé plus étroit que le contour minimal, aucun segment + // de largeur négative ; la hauteur réservée reste celle du dessin. + const traces = d.lignes.flatMap((ligne) => ligne.segments); + assert.ok(traces.every((s) => s.largeur >= 0)); + const prouves = traces.filter((s) => s.contour); + assert.equal(prouves.length, 3); + assert.ok(prouves.every((s) => s.largeur >= LARGEUR_MIN_CONTOUR_PX), prouves.map((s) => s.largeur).join(', ')); + assert.equal(d.hauteurTotale, hauteurBarres({ n: 4, juxtaposees: false, hauteurTexte: HAUTEUR_TEXTE })); + }); + test('rouge : le libellé de chaque segment se pose sur la première barre où il est non nul', () => { const d = disposer(); assert.deepEqual(d.etiquettesSegments.map((e) => [e.genre, e.indice]), [['prouve', 1], ['reste', 0]]); diff --git a/src/interface/qualite/source.js b/src/interface/qualite/source.js index 5f44c53..4186b74 100644 --- a/src/interface/qualite/source.js +++ b/src/interface/qualite/source.js @@ -15,15 +15,17 @@ // La ligne de source reprend le libellé que la barre de vue du plan donne à // ce placement (sourceMontree, plan/vue_plan.js), sa commande de retour // comprise, configuration normalisée ou non ; une proposition fautive, que la -// barre ne nomme jamais, a le sien, qui dit que le plan ne la montre pas. La -// ligne d'évaluation est celle de la table d'évaluation de la charge -// (evaluation, propositions/modele.js), la même que le tableau des -// propositions lit : rien ne se mesure ici. Sans source mesurable, quatre cas -// se partagent la page sans se recouvrir, éprouvés dans l'ordre de -// CAS_QUALITE : la configuration qui ne se normalise pas l'emporte ; puis ni -// proposition ni retenu ; puis des propositions sans source, avec la première -// comparable du classement (premiereDuClassement) ; puis une source en dérive -// ou fautive, avec ses raisons. +// barre ne nomme jamais, a le sien, qui dit que le plan ne la montre pas ; +// sans placement à mesurer, elle n'en nomme aucun, et dit que le plan ne +// montre que les réservations, qui ne se mesurent pas. La ligne +// d'évaluation est celle de la table d'évaluation de la charge (evaluation, +// propositions/modele.js), la même que le tableau des propositions lit : +// rien ne se mesure ici. Sans source mesurable, quatre cas se partagent la +// page sans se recouvrir, éprouvés dans l'ordre de CAS_QUALITE : la +// configuration qui ne se normalise pas l'emporte ; puis ni proposition ni +// retenu ; puis des propositions sans source, avec la première comparable +// du classement (premiereDuClassement) ; puis une source en dérive ou +// fautive, avec ses raisons. import { formeNommeeDe } from '../../application/commandes.js'; import { diagnostiquerCharge } from '../../application/diagnostic.js'; import { premiereDuClassement } from '../../application/evaluation.js'; @@ -45,9 +47,10 @@ const raisonDe = (raison) => ({ cle: raison.code, details: raison, participant: // le placement id ('retenu', un identifiant de proposition, ou null) : ceux // que la barre de vue du plan donne à ce placement, l'état des places // qu'elle lit étant reconstitué sans tour ; une proposition fautive a le -// sien. Fautif se lit aux fautes du placement (formeNommeeDe), comme la -// barre le lit, et non à la table d'évaluation, nulle quand la -// configuration ne se normalise pas. +// sien, et l'absence de placement (id null) aussi, la commande de retour +// restant celle de la barre. Fautif se lit aux fautes du placement +// (formeNommeeDe), comme la barre le lit, et non à la table d'évaluation, +// nulle quand la configuration ne se normalise pas. function ligneDeSource(charge, demandee, id) { const retenu = charge.retenu !== null; const cible = id === 'retenu' ? { retenu: true } : { proposition: id }; @@ -61,7 +64,8 @@ function ligneDeSource(charge, demandee, id) { etat = { source: 'reservations', refus: null }; } const montree = sourceMontree(etat, demandee, retenu); - if (id === null || id === 'retenu' || !fautif) return montree; + if (id === null) return { libelle: { cle: 'qualite.source.aucun', details: {} }, revenir: montree.revenir }; + if (id === 'retenu' || !fautif) return montree; return { libelle: { cle: 'qualite.source.propositionFautive', details: { proposition: id } }, revenir: montree.revenir }; } diff --git a/src/interface/qualite/source.test.js b/src/interface/qualite/source.test.js index 9f08c0c..c1d491f 100644 --- a/src/interface/qualite/source.test.js +++ b/src/interface/qualite/source.test.js @@ -97,12 +97,12 @@ describe('la source de la page de qualité (§ 12, B9, D25)', () => { assert.ok(Object.isFrozen(CAS_QUALITE)); }); - test('ni proposition ni retenu : aucun placement, la barre dit les réservations, rien à mesurer', () => { + test('ni proposition ni retenu : aucun placement, la barre dit les réservations, la ligne de source « aucun », rien à mesurer', () => { const charge = chargeSix(); const source = sourceQualite(charge); assert.deepEqual(sourceDuPlan(charge, null), { source: 'reservations', proposition: null, refus: null }); assert.equal(source.cas, 'aucunPlacement'); - assert.deepEqual(source.libelle, { cle: 'plan.source.reservations', details: {} }); + assert.deepEqual(source.libelle, { cle: 'qualite.source.aucun', details: {} }); assert.equal(source.revenir, null); assert.equal(source.id, null); assert.equal(source.ligne, null); @@ -118,7 +118,7 @@ describe('la source de la page de qualité (§ 12, B9, D25)', () => { const source = sourceQualite(charge); assert.equal(source.cas, 'aucuneMontree'); assert.equal(source.premiere, premiere.id); - assert.deepEqual(source.libelle, { cle: 'plan.source.reservations', details: {} }); + assert.deepEqual(source.libelle, { cle: 'qualite.source.aucun', details: {} }); assert.equal(source.id, null); assert.equal(source.ligne, null); }); @@ -182,6 +182,7 @@ describe('la source de la page de qualité (§ 12, B9, D25)', () => { assert.deepEqual(sourceDuPlan(sansElle, disparue), { source: 'reservations', proposition: null, refus: null }); const aucune = sourceQualite(sansElle, { demandee: disparue }); assert.equal(aucune.cas, 'aucuneMontree'); + assert.deepEqual(aucune.libelle, { cle: 'qualite.source.aucun', details: {} }); assert.equal(aucune.revenir, 'plan.source.revenirReservations'); // Une génération qui remplace la liste sous un retenu : le retenu revient. const retenue = executer(generees, 'retenirProposition', { id: generees.propositions[1].id }); @@ -249,6 +250,15 @@ describe('la source de la page de qualité (§ 12, B9, D25)', () => { assert.equal(source.revenir, 'plan.source.revenirRetenu'); }); + test('une configuration qui ne se normalise pas, sans proposition ni retenu : la ligne de source n’en nomme aucun', () => { + const charge = avec(chargeSix(), enConflit); + assert.equal(charge.retenu, null); + assert.equal(charge.propositions.length, 0); + const source = sourceQualite(charge); + assert.equal(source.cas, 'configuration'); + assert.deepEqual(source.libelle, { cle: 'qualite.source.aucun', details: {} }); + }); + test('une configuration qui ne se normalise pas l’emporte : sans placement, avec des propositions, avec un retenu, le refus de la génération', () => { const generees = generee(chargeSix()); const retenue = executer(generees, 'retenirProposition', { id: generees.propositions[0].id }); diff --git a/src/interface/transversal.navigateur.test.js b/src/interface/transversal.navigateur.test.js index 69fb547..4f977b3 100644 --- a/src/interface/transversal.navigateur.test.js +++ b/src/interface/transversal.navigateur.test.js @@ -6,9 +6,10 @@ // témoin, erreurs par leur libellé, contrastes et marques dans les deux // thèmes, aucune atténuation, jamais la seule couleur, teinte réservée, aucun // emoji, balisage littéral, bandeau, formulaires, transitions annulées ; la -// page de qualité — chaque pourcentage suivi de son compte, le signe « % » -// à ses seules places, chaque niveau de l'échelle rendu, les motifs des -// tracés, ses graphiques nommés et décrits, ses jumeaux au clavier ; puis +// page de qualité — chaque pourcentage suivi de son compte, celui de sa +// ligne sur une ligne, le signe « % » à ses seules places, chaque niveau de +// l'échelle rendu, les motifs des tracés, ses graphiques nommés et décrits, +// ses jumeaux au clavier ; puis // le mécanisme des captures d'écran (§ 19.4, § 19.5, § 19.7, § 19.11), // chaque contrôle montré en train d'échouer sur un dossier d'épreuve. // @@ -38,6 +39,7 @@ import { analyser } from '../stockage/document.js'; import { lireEtiquettes } from '../stockage/etiquettes.js'; import { lireJournal } from '../stockage/journal.js'; import { SUFFIXES } from '../stockage/noms.js'; +import { pourcentage } from '../moteur/qualite.js'; import { VERSION } from '../version.genere.js'; import INDEX from '../../index.html?raw'; import { @@ -592,15 +594,62 @@ function pourcentAdmis(element) { return texte.getAttribute('text-anchor') === 'end' && !texte.hasAttribute('data-serie') && !texte.hasAttribute('data-repere'); } +// Les entiers qu'écrit un texte, dans son ordre. +const entiersDe = (texte) => (texte.match(/\d+/g) ?? []).map(Number); + +// Le compte qui suit un pourcentage est-il le sien (contrainte 44, D34) ? +// Sur une ligne — d'un jumeau ou d'une infobulle —, le compte est celui de +// la ligne : son numérateur puis son dénominateur, ses deux seuls entiers ; +// seule une ligne sans rien à compter, sa valeur « — », écrit à la place +// une phrase sans entier (« aucun affilié à ce tour »). Partout, un compte +// de deux entiers redonne, par pourcentage du moteur, la valeur écrite — +// son premier entier, ou « — » quand le dénominateur est nul : le compte +// d'une autre ligne ou d'une autre population se trahit ainsi dès que leurs +// rapports diffèrent. Le pire cas d'une population écrit d'un seul entier +// (« 3 personnes jamais servies ») ne se recoupe pas. → null, ou la faute. +function fauteDuCompte(valeur, compte) { + const texte = compte.textContent.trim(); + const entiers = entiersDe(texte); + const ecrit = entiersDe(valeur.textContent)[0] ?? null; + if (entiers.length !== 2) { + if (valeur.closest('[data-jumeau], [role="tooltip"]') === null) return null; + if (ecrit === null && entiers.length === 0) return null; + return `« ${extrait(texte)} » n’est pas le compte de sa ligne, numérateur sur dénominateur`; + } + const [n, d] = entiers; + const attendu = pourcentage(n, d); + if (ecrit === attendu) return null; + return `son compte ${extrait(texte)} donne ${attendu === null ? '\u{2014}' : `${attendu}\u{202F}%`}`; +} + +// Vrai quand une ligne de jumeau porte deux comptes de même numérateur, de +// dénominateurs qui donnent deux pourcentages distincts — les sièges et les +// assis d'une table incomplète : un compte permuté avec l'autre y redonne +// un pourcentage qui n'est pas le sien, et fauteDuCompte le relève. +function ligneQuiDistingue(rangee) { + const parNumerateur = new Map(); + for (const compte of rangee.querySelectorAll('[data-compte-pire]')) { + const entiers = entiersDe(compte.textContent); + if (entiers.length !== 2) continue; + const [n, d] = entiers; + const autres = parNumerateur.get(n) ?? []; + if (autres.some((autre) => pourcentage(n, autre) !== pourcentage(n, d))) return true; + parNumerateur.set(n, [...autres, d]); + } + return false; +} + /** * Les pourcentages et le signe « % » rendus sous racine (contrainte 44, * D34) : chaque [data-pourcentage] rendu suivi, son voisin immédiat dans - * le composant Pourcentage, d'un [data-compte-pire] rendu et non vide ; et - * chaque texte rendu — nœud de texte ou attribut annoncé — qui porte « % » - * hors des places que pourcentAdmis admet. → { lus, dansInfobulle, - * dansJumeaux, fautes, signes: { lus, fautes } }, lus le nombre de - * pourcentages rendus, dansInfobulle et dansJumeaux ceux d'une infobulle - * et d'un jumeau ; signes.lus le nombre de textes rendus qui portent « % ». + * le composant Pourcentage, d'un [data-compte-pire] rendu, non vide et + * qui est le sien (fauteDuCompte) ; et chaque texte rendu — nœud de texte + * ou attribut annoncé — qui porte « % » hors des places que pourcentAdmis + * admet. → { lus, dansInfobulle, dansJumeaux, lignesQuiDistinguent, fautes, + * signes: { lus, fautes } }, lus le nombre de pourcentages rendus, + * dansInfobulle et dansJumeaux ceux d'une infobulle et d'un jumeau ; + * lignesQuiDistinguent, les lignes de jumeau rendues où ligneQuiDistingue + * est vrai ; signes.lus le nombre de textes rendus qui portent « % ». */ export function releverPourcentages(racine) { const fautes = []; @@ -616,7 +665,12 @@ export function releverPourcentages(racine) { const nomme = `${situer(valeur)} « ${extrait(valeur.textContent)} »`; if (compte === null || !compte.matches('[data-compte-pire]')) fautes.push(`${nomme} : aucun [data-compte-pire] ne le suit`); else if (!rendu(compte) || compte.textContent.trim() === '') fautes.push(`${nomme} : son compte du pire est vide`); + else { + const faute = fauteDuCompte(valeur, compte); + if (faute !== null) fautes.push(`${nomme} : ${faute}`); + } } + const lignesQuiDistinguent = [...racine.querySelectorAll('[data-jumeau] tbody tr')].filter((rangee) => rendu(rangee) && ligneQuiDistingue(rangee)).length; const signes = { lus: 0, fautes: [] }; const marcheur = document.createTreeWalker(racine, NodeFilter.SHOW_TEXT); for (let noeud = marcheur.nextNode(); noeud !== null; noeud = marcheur.nextNode()) { @@ -635,7 +689,7 @@ export function releverPourcentages(racine) { signes.fautes.push(`${situer(element)}[${nom}] : « ${extrait(valeur)} »`); } } - return { lus, dansInfobulle, dansJumeaux, fautes, signes }; + return { lus, dansInfobulle, dansJumeaux, lignesQuiDistinguent, fautes, signes }; } /** Les niveaux de l'échelle que chaque grille rend sous racine (§ 12.7, @@ -1161,6 +1215,36 @@ describe('les gardes relèvent la faute qu’un fragment porte (§ 14.2)', () => expect(signes.fautes.join('\n')).toContain('[aria-label] : « 9 % »'); }); + test('qualité, pourcentages : le compte d’une ligne est le sien, numérateur sur dénominateur ; deux entiers rendent la valeur écrite', () => { + const paire = (valeur, compte) => `${valeur}${compte}`; + const ligne = (valeur, compte) => `${paire(valeur, compte)}`; + const { lus, fautes } = avecFragment( + `

${paire('88\u{202F}%', 'minimum 24 sur 27')}

${paire('77\u{202F}% des tours possibles servis', '3 personnes jamais servies')}

` + + '' + + ligne('62\u{202F}%', '5 appartenances pour 8 sièges') + + ligne('80\u{202F}%', '24 servis sur 30 possibles') + + ligne('1\u{202F}%', '1 sur 250') + + ligne('\u{2014}', '0 sur 0') + + ligne('\u{2014}', 'aucun affilié à ce tour') + + ligne('12\u{202F}%', 'aucun affilié à ce tour') + + ligne('9\u{202F}%', '1 sur 14') + + ligne('\u{2014}', '2 sur 5') + + ligne('40\u{202F}%', '2 sur 0') + + '
' + + `
${paire('50\u{202F}%', '3 personnes jamais servies')}
` + + `

${paire('70\u{202F}%', 'minimum 24 sur 27')}

`, + (c) => releverPourcentages(c), + ); + expect(lus).toBe(13); + expect(fautes).toHaveLength(6); + expect(fautes[0]).toContain('« aucun affilié à ce tour » n’est pas le compte de sa ligne'); + expect(fautes[1]).toMatch(/« 9\s% » : son compte 1 sur 14 donne 7\u{202F}%$/u); + expect(fautes[2]).toContain('2 sur 5 donne 40\u{202F}%'); + expect(fautes[3]).toContain('2 sur 0 donne \u{2014}'); + expect(fautes[4]).toContain('« 3 personnes jamais servies » n’est pas le compte de sa ligne'); + expect(fautes[5]).toContain('minimum 24 sur 27 donne 88\u{202F}%'); + }); + test('qualité, niveaux : une grille rend les niveaux que portent ses cases, lus sur leur remplissage calculé ; une forme hors d’une case ne compte pas', () => { const cases = [0, 2, 2] .map((k, i) => ``) @@ -1570,9 +1654,12 @@ describe('la page de qualité, sur chacun de ses écrans (§ 12.7, § 14.5, D30, } const q = (nom) => releveDe(nom)?.qualite ?? null; if (q('qualite.infobulle') !== null && q('qualite.infobulle').pourcentages.dansInfobulle === 0) fautes.push('qualite.infobulle : aucun pourcentage dans l’infobulle'); - for (const nom of ['qualite.jumeaux', 'qualite.objectifs', 'qualite.performance']) { + for (const nom of ['qualite.jumeaux', 'qualite.objectifs', 'qualite.performance', 'qualite.tables.assis']) { if (q(nom) !== null && q(nom).pourcentages.dansJumeaux === 0) fautes.push(`${nom} : aucun pourcentage dans un jumeau`); } + if (q('qualite.tables.assis') !== null && q('qualite.tables.assis').pourcentages.lignesQuiDistinguent === 0) { + fautes.push('qualite.tables.assis : aucune ligne du jumeau où sièges et assis donnent deux pourcentages, une permutation passerait'); + } if (q('qualite.objectifs') !== null && !q('qualite.objectifs').vuesJumeau.includes('objectifs')) fautes.push('qualite.objectifs : le jumeau des objectifs fermé'); if (q('qualite.performance') !== null && !q('qualite.performance').vuesJumeau.includes('performance')) fautes.push('qualite.performance : le jumeau de la performance fermé'); if (q('qualite.collisions.etroit') !== null && !q('qualite.collisions.etroit').prouvesCollisions.some((largeur) => largeur <= PROUVE_ETROIT_PX)) { @@ -1603,7 +1690,7 @@ describe('la page de qualité, sur chacun de ses écrans (§ 12.7, § 14.5, D30, aucuneFaute(fautes, 'jumeau en lecture et bloqué'); }); - test('chaque pourcentage rendu est suivi, dans son composant, de son compte du pire, sur chaque écran de la page, infobulle et jumeaux compris — le jumeau de chaque vue qui en porte un ouvert sur un écran au moins', () => { + test('chaque pourcentage rendu est suivi, dans son composant, de son compte du pire — celui de sa ligne sur une ligne —, sur chaque écran de la page, infobulle et jumeaux compris — le jumeau de chaque vue qui en porte un ouvert sur un écran au moins', () => { expect(deQualite().reduce((n, r) => n + r.qualite.pourcentages.lus, 0), 'pourcentages lus').toBeGreaterThan(0); expect(VUES_A_JUMEAU.length, 'vues à jumeau').toBeGreaterThan(0); const ouvertes = new Set(deQualite().flatMap((r) => r.qualite.vuesJumeau)); diff --git a/src/moteur/qualite.js b/src/moteur/qualite.js index d07f08f..5ded2c2 100644 --- a/src/moteur/qualite.js +++ b/src/moteur/qualite.js @@ -12,7 +12,8 @@ // Le détail ne recompte rien (§ 13.2) : les comptes par paire, par table et // par tour sortent de parcourirTours (indicateurs.js), l'occupation de // occupations (plafond.js), les planchers du diagnostic (diagnostic.js), les -// valeurs par personne des mesures et des plafonds que l'appelant passe. +// valeurs par personne des mesures et des plafonds que l'appelant passe, +// comme les trois chiffres de la ligne d'évaluation du plan (manque.js). // Chaque pourcentage sort de pourcentage, la seule division d'un // pourcentage (D52), et se rend à côté de ses deux comptes. // @@ -216,7 +217,7 @@ function premier(N, estCandidat, avant) { /** * Les bornes des tuiles (§ 12.2, D29, D34, D52, B11), chacune celle d'une - * personne nommée : + * personne nommée, et les planchers, qui ne nomment personne : * - rang1 : la personne au rang 1 du profil, ses rencontres, son plafond * réalisé, son plafond a priori et leur pourcentage ; null sans personne ; * - manque : la tête du profil de manque (profilManque, § 12.10.6) et son @@ -231,18 +232,27 @@ function premier(N, estCandidat, avant) { * possibles et leur pourcentage ; null sans personne concernée ; * - soiree : Σ S_r, Σ Π_r et leur pourcentage, lus dans les objectifs par * tour, et les personnes jamais servies de la mesure ; null sans personne - * concernée. + * concernée ; + * - planchers : le plancher de chaque tuile qui en porte un, le même + * pour toute personne (planchersDe). * - * @param {import('./types.js').Instance} instance N, ids, indexDe et - * groupes sont lus + * @param {import('./types.js').Instance} instance N, ids, indexDe, statut, + * groupes et etatCriteres sont lus * @param {{mesures: import('./indicateurs.js').Mesures, * plafondsRealises: ArrayLike, aMax: ArrayLike, * profil: LigneProfil[], animateurs: Array|null, - * objectifs: Object|null}} lus + * objectifs: Object|null, + * diagnostic: import('./diagnostic.js').Diagnostic, + * planchersValides: boolean, + * troisChiffres: import('./manque.js').TroisChiffres}} lus * profil, profilRencontres ; animateurs, profilAnimateurs ; - * objectifs, objectifsParTour + * objectifs, objectifsParTour ; diagnostic, celui de la + * configuration ; planchersValides, vrai sur un plan du domaine des + * planchers ; troisChiffres, ceux que la ligne d'évaluation du plan + * porte, lus sans être recomptés */ -export function bornesDesTuiles(instance, { mesures, plafondsRealises, aMax, profil, animateurs, objectifs }) { +export function bornesDesTuiles(instance, lus) { + const { mesures, plafondsRealises, aMax, profil, animateurs, objectifs } = lus; const { N, indexDe, groupes } = instance; let rang1 = null; let manque = null; @@ -278,9 +288,75 @@ export function bornesDesTuiles(instance, { mesures, plafondsRealises, aMax, pro animateurs: animateurs === null ? null : { p: animateurs[0].p, borne: animateurs[0].borne }, objectifs: parObjectif, soiree, + planchers: planchersDe(instance, lus), }; } +// Un plancher strictement positif et la valeur mesurée qu'il borne : +// {plancher, atteint}, atteint quand la valeur l'égale ; null pour un +// plancher nul, que le diagnostic ne prouve pas. +const plancherDe = (plancher, valeur) => (plancher > 0 ? { plancher, atteint: valeur === plancher } : null); + +// La somme d'un champ des planchers de collisions du diagnostic, un par +// appartenance en collision ; un champ null compte pour 0. +const sommeDe = (collisions, champ) => collisions.reduce((total, ligne) => total + (ligne[champ] ?? 0), 0); + +// Le nom du critère des objectifs dans instance.etatCriteres, et, pour +// chaque valeur qu'il peut comparer, sous le nom de sa colonne, le champ +// qui la porte dans objectifsInevitables comme dans mesures.objectifs. +const CRITERE_DES_OBJECTIFS = 'toursHorsObjectif'; +const CHAMPS_DES_OBJECTIFS = [ + ['jamaisServies', 'jamaisServies'], + ['horsObjectifMax', 'horsObjectifMax'], + ['toursHorsObjectif', 'horsObjectif'], +]; + +// Le plancher de chaque tuile qui en porte un (§ 5.6, § 12.2, B11), sous le +// nom de sa colonne (§ 5.7), {plancher, atteint} ou null, jamais 0 — là où +// le diagnostic écrit le sien, et là seulement : +// - collisionsCumulees, pairesDistinctes, excedentCollisions : la somme des +// planchers de chaque appartenance en collision ; chaque mesure somme +// celles des appartenances, et chaque plancher minore la sienne ; +// - ecartItineraireMax : le plancher de l'écart d'itinéraire maximal, null +// quand la ligne n'a pas d'écart d'itinéraire — plafond a priori inconnu, +// la tuile écrit « inconnu » ; +// - jamaisServies, horsObjectifMax, toursHorsObjectif : le plancher de +// chaque valeur que le critère des objectifs compare sous le mode réglé, +// null pour une autre, et tous null quand le critère est décoché ou sans +// objet, qui ne compare rien. +// atteint compare au plancher la valeur même que la tuile écrit, lue sans +// recompte : les mesures du plan, et l'écart d'itinéraire maximal des trois +// chiffres de sa ligne d'évaluation. Hors du domaine des planchers — un plan +// qui laisse quelqu'un en réserve ou ne tient pas une réservation —, aucun +// ne tient : tous null. +function planchersDe({ etatCriteres }, { mesures, troisChiffres, diagnostic, planchersValides }) { + const planchers = { + collisionsCumulees: null, + pairesDistinctes: null, + excedentCollisions: null, + ecartItineraireMax: null, + jamaisServies: null, + horsObjectifMax: null, + toursHorsObjectif: null, + }; + if (!planchersValides) return planchers; + const { collisions, ecartItineraire, objectifsInevitables } = diagnostic; + planchers.collisionsCumulees = plancherDe(sommeDe(collisions, 'plancherCumulees'), mesures.collisionsCumulees); + planchers.pairesDistinctes = plancherDe(sommeDe(collisions, 'plancherPairesDistinctes'), mesures.pairesDistinctes); + planchers.excedentCollisions = plancherDe(sommeDe(collisions, 'plancherExcedent'), mesures.excedentCollisions); + const { ecartItineraireMax } = troisChiffres; + if (ecartItineraire !== null && ecartItineraireMax !== null) { + planchers.ecartItineraireMax = plancherDe(ecartItineraire.plancher, ecartItineraireMax.tous); + } + const critere = etatCriteres.find(({ nom }) => nom === CRITERE_DES_OBJECTIFS); + if (critere.coche && !critere.sansObjet) { + for (const [colonne, champ] of CHAMPS_DES_OBJECTIFS) { + if (critere.valeurs.includes(colonne)) planchers[colonne] = plancherDe(objectifsInevitables[champ], mesures.objectifs[champ]); + } + } + return planchers; +} + /** * Le plancher des collisions cumulées de chaque appartenance (§ 5.6), dans * l'ordre de instance.groupes, lu dans le diagnostic : 0 pour une @@ -545,7 +621,9 @@ export function profilAnimateurs({ N, statut }, mesures) { * occupations se lisent une fois chacun, et chaque partie en dérive. * * - profil, synthese, repartitionRencontres, bornes : profilRencontres et ce - * qu'on en tire ; + * qu'on en tire, les planchers des tuiles lus dans le diagnostic sous + * planchersValides, jugés atteints sur les mesures et les trois chiffres + * reçus ; * - collisions : {planchersValides, lignes}, les barres, les planchers lus * dans diagnostic.collisions ; * - tables : mixTables ; paires : pairesRepetees ; @@ -568,13 +646,14 @@ export function profilAnimateurs({ N, statut }, mesures) { * mesures: import('./indicateurs.js').Mesures, * plafondsRealises: ArrayLike, * plafondsAPriori: ArrayLike|null, + * troisChiffres: import('./manque.js').TroisChiffres, * planchersValides: boolean, * cle: (libelle: string) => string, * ordreMatrice?: number[]|null, * aMax?: ArrayLike}} options */ export function detailler(instance, tableDe, options) { - const { diagnostic, mesures, plafondsRealises, plafondsAPriori, planchersValides, cle, ordreMatrice = null } = options; + const { diagnostic, mesures, plafondsRealises, plafondsAPriori, troisChiffres, planchersValides, cle, ordreMatrice = null } = options; const aMax = options.aMax ?? borneDiversite(instance, tableDe).aMax; const parcours = parcourirTours(instance, tableDe); const occupation = occupations(instance, tableDe, { affilies: true }); @@ -592,10 +671,13 @@ export function detailler(instance, tableDe, options) { bornes: bornesDesTuiles(instance, { mesures, plafondsRealises, + troisChiffres, aMax, profil, animateurs: profilDesAnimateurs, objectifs, + diagnostic, + planchersValides, }), collisions: { planchersValides, lignes: barresCollisions(instance, mesures, planchers, planchersValides, cle) }, tables: mixTables(instance, tableDe, occupation, parcours), diff --git a/src/moteur/qualite.test.js b/src/moteur/qualite.test.js index 740326d..8d2dd8d 100644 --- a/src/moteur/qualite.test.js +++ b/src/moteur/qualite.test.js @@ -18,6 +18,7 @@ import { LIBRE, indexerPlan, normaliser } from './configuration.js'; import { diagnostiquer } from './diagnostic.js'; import { diversiteAnimateurs } from './diversite.js'; import { mesurer, parcourirTours } from './indicateurs.js'; +import { troisChiffres } from './manque.js'; import { matriceRencontres, pairesRepetees } from './paires.js'; import { borneDiversite, occupations, plafondsAPriori, plafondsRealises } from './plafond.js'; import { @@ -64,8 +65,8 @@ const participant = ([id, appartenance = null, etiquettes, anime]) => ({ // Configuration, instance et plan indexé. tables : [id, capacité], dans // l'ordre de la configuration ; plan[r] associe à un identifiant de table // les identifiants qui s'y assoient au tour r + 1 ; un présent absent d'un -// tour est en réserve. -function preparer({ personnes, tables, plan, reservations = [], objectifs = [], contraintes = SANS_CONTRAINTE }) { +// tour est en réserve ; modeObjectifs, facultatif, le mode des objectifs. +function preparer({ personnes, tables, plan, reservations = [], objectifs = [], contraintes = SANS_CONTRAINTE, modeObjectifs }) { const configuration = { participants: personnes.map(participant), tables: tables.map(([id, capacite], i) => ({ id, numero: i + 1, capacite })), @@ -73,6 +74,7 @@ function preparer({ personnes, tables, plan, reservations = [], objectifs = [], reservations, contraintes, ...(objectifs.length === 0 ? {} : { objectifs }), + ...(modeObjectifs === undefined ? {} : { modeObjectifs }), }; const instance = normaliser(configuration); const ids = configuration.tables.map(({ id }) => id); @@ -96,6 +98,22 @@ function mesurerTout(prepare) { }; } +// Les options de detailler sur un plan préparé et ses mesures : le +// diagnostic de sa configuration, les trois chiffres de sa ligne +// d'évaluation, aucune matrice. +function optionsDe({ configuration, instance }, { mesures, realises, aPriori }, planchersValides = true) { + return { + diagnostic: diagnostiquer(configuration), + mesures, + plafondsRealises: realises, + plafondsAPriori: aPriori, + troisChiffres: troisChiffres(instance, mesures, aPriori, realises), + planchersValides, + cle, + ordreMatrice: null, + }; +} + const index = (instance, id) => instance.indexDe.get(id); const idsDe = (instance, lignes) => lignes.map(({ p }) => instance.ids[p]); const somme = (valeurs) => valeurs.reduce((total, valeur) => total + valeur, 0); @@ -659,13 +677,42 @@ describe('profilAnimateurs (§ 12.13, D37)', () => { }); }); +// Ce que bornesDesTuiles lit pour les planchers des tuiles : le diagnostic +// de la configuration préparée, sur un plan du domaine des planchers sauf +// demande contraire, et les trois chiffres que la ligne d'évaluation du +// plan porte sous le plafond a priori reçu. +const duDiagnostic = ({ configuration, instance, tableDe }, plafondsAPriori, planchersValides = true) => ({ + diagnostic: diagnostiquer(configuration), + planchersValides, + troisChiffres: troisChiffres(instance, mesurer(instance, tableDe), plafondsAPriori, plafondsRealises(instance, tableDe)), +}); + +// Les sept tuiles qui peuvent porter un plancher, chacune sans plancher. +const SANS_PLANCHER = { + collisionsCumulees: null, + pairesDistinctes: null, + excedentCollisions: null, + ecartItineraireMax: null, + jamaisServies: null, + horsObjectifMax: null, + toursHorsObjectif: null, +}; + describe('bornesDesTuiles (§ 12.2, D29, D34, D52, B11)', () => { test('le rang 1 du profil, la tête du profil de manque, le minimum de A(p) au même tri : chacun une personne nommée', () => { const prepare = preparer(PROFIL); const { instance } = prepare; const { mesures, realises, aPriori, aMax } = mesurerTout(prepare); const profil = profilRencontres(instance, mesures, realises, aPriori, aMax); - const bornes = bornesDesTuiles(instance, { mesures, plafondsRealises: realises, aMax, profil, animateurs: null, objectifs: null }); + const bornes = bornesDesTuiles(instance, { + mesures, + plafondsRealises: realises, + aMax, + profil, + animateurs: null, + objectifs: null, + ...duDiagnostic(prepare, aPriori), + }); const un = index(instance, 1); assert.deepEqual(bornes.rang1, { p: un, rencontres: 2, plafondRealise: 2, plafondAPriori: aPriori[un], pourcent: 100 }); // Manque 1 pour 4 et 5, au même plafond 4 : l'identifiant le plus petit. @@ -683,7 +730,15 @@ describe('bornesDesTuiles (§ 12.2, D29, D34, D52, B11)', () => { const { mesures, realises, aPriori, aMax } = mesurerTout(avec); const profil = profilRencontres(instance, mesures, realises, aPriori, aMax); const { objectifs } = objectifsDe(avec); - const bornes = bornesDesTuiles(instance, { mesures, plafondsRealises: realises, aMax, profil, animateurs: null, objectifs }); + const bornes = bornesDesTuiles(instance, { + mesures, + plafondsRealises: realises, + aMax, + profil, + animateurs: null, + objectifs, + ...duDiagnostic(avec, aPriori), + }); // s(p) = 0 pour 4 et 5 : 5, aux tours possibles les plus nombreux. assert.deepEqual(bornes.objectifs, { p: index(instance, 5), servis: 0, possibles: 2, pourcent: 0 }); assert.deepEqual(bornes.soiree, { servis: 5, possibles: 11, pourcent: 45, jamaisServies: 2 }); @@ -711,6 +766,7 @@ describe('bornesDesTuiles (§ 12.2, D29, D34, D52, B11)', () => { profil: profilRencontres(servis.instance, lu.mesures, lu.realises, lu.aPriori, lu.aMax), animateurs: null, objectifs: objectifsDe(servis).objectifs, + ...duDiagnostic(servis, lu.aPriori), }); assert.deepEqual(lu.mesures.objectifs.tours, [1, 1, 1, 1, 1, 2, 0, 0, 0]); // s(p) = 1 pour 1, 2, 3, 5 à P(p) = 2 et pour 4 à P(p) = 1 : 1, le @@ -728,22 +784,304 @@ describe('bornesDesTuiles (§ 12.2, D29, D34, D52, B11)', () => { profil: profilA, animateurs: profilAnimateurs(animes.instance, m), objectifs: null, + ...duDiagnostic(animes, tout.aPriori), }); assert.deepEqual(deAnimateurs.animateurs, { p: index(animes.instance, 5), borne: 2 }); }); test('sans personne présente : ni rang 1, ni tête de manque', () => { - const vide = normaliser({ + const configuration = { participants: [{ id: 1, nom: 'P1', appartenance: AUBIER, exclu: true }], tables: [{ id: 1, numero: 1, capacite: 2 }], tours: 1, reservations: [], contraintes: SANS_CONTRAINTE, - }); + }; + const vide = normaliser(configuration); const plan = new Int32Array(0); const mesures = mesurer(vide, plan); - const bornes = bornesDesTuiles(vide, { mesures, plafondsRealises: [], aMax: [], profil: [], animateurs: null, objectifs: null }); - assert.deepEqual(bornes, { rang1: null, manque: null, diversite: null, animateurs: null, objectifs: null, soiree: null }); + const bornes = bornesDesTuiles(vide, { + mesures, + plafondsRealises: [], + aMax: [], + profil: [], + animateurs: null, + objectifs: null, + ...duDiagnostic({ configuration, instance: vide, tableDe: plan }, []), + }); + assert.deepEqual(bornes, { + rang1: null, + manque: null, + diversite: null, + animateurs: null, + objectifs: null, + soiree: null, + planchers: SANS_PLANCHER, + }); + }); +}); + +// Les bornes des tuiles d'un plan préparé, sous le diagnostic de sa +// configuration ; aPrioriConnu faux passe un plafond a priori inconnu. +function bornesDuPlan(prepare, { planchersValides = true, aPrioriConnu = true } = {}) { + const { instance } = prepare; + const { mesures, realises, aPriori, aMax } = mesurerTout(prepare); + const plafonds = aPrioriConnu ? aPriori : null; + return bornesDesTuiles(instance, { + mesures, + plafondsRealises: realises, + aMax, + profil: profilRencontres(instance, mesures, realises, plafonds, aMax), + animateurs: null, + objectifs: objectifsDe(prepare).objectifs, + ...duDiagnostic(prepare, plafonds, planchersValides), + }); +} + +// Cinq de la Coopérative Aubier et une personne sans appartenance, deux +// tables de trois, trois tours : chaque tour assied trois membres à une +// table et deux à l'autre, quatre collisions. Le diagnostic prouve 12 +// collisions cumulées, 4 paires distinctes — le plus grand minimum d'un +// tour — et un excédent de 12 − C(5, 2) = 2. +const CINQ_MEMBRES = { + personnes: [[1, AUBIER], [2, AUBIER], [3, AUBIER], [4, AUBIER], [5, AUBIER], [6]], + tables: [[1, 3], [2, 3]], +}; +// Les mêmes tables à chaque tour : 4 paires distinctes, revues trois fois, +// excédent 8. +const MEMES_TABLES = [ + { 1: [1, 2, 3], 2: [4, 5, 6] }, + { 1: [1, 2, 3], 2: [4, 5, 6] }, + { 1: [1, 2, 3], 2: [4, 5, 6] }, +]; +// Chaque tour ne revoit que 1 et 2 : les dix paires de l'appartenance, +// excédent 2. +const TABLES_VARIEES = [ + { 1: [1, 2, 3], 2: [4, 5, 6] }, + { 1: [1, 2, 4], 2: [3, 5, 6] }, + { 1: [1, 2, 5], 2: [3, 4, 6] }, +]; + +// Cinq personnes sans appartenance, une table de trois et une de deux, deux +// tours : le diagnostic prouve un écart d'itinéraire maximal de 1 au moins +// (diagnostic.test.js, § 12.10.4). Le plan qui fait passer quatre personnes +// distinctes par la table de deux l'atteint ; celui qui y garde les deux +// mêmes laisse 4 et 5 à deux sous leur plafond a priori de 4. +const ITINERAIRE = { personnes: [[1], [2], [3], [4], [5]], tables: [[10, 3], [20, 2]] }; +const PAR_LA_TABLE_DE_DEUX = [ + { 10: [1, 2, 3], 20: [4, 5] }, + { 10: [1, 4, 5], 20: [2, 3] }, +]; +const MEMES_A_LA_TABLE_DE_DEUX = [ + { 10: [1, 2, 3], 20: [4, 5] }, + { 10: [1, 2, 3], 20: [4, 5] }, +]; + +// Cinq « finance » et une autre personne, une table de deux qui attend +// « finance » et une de quatre, deux tours : cinq couples possibles pour +// deux sièges à chaque tour. Le diagnostic prouve 3 + 3 = 6 tours hors +// objectif, 5 − (2 + 2) = 1 personne jamais servie et ⌈6 / 5⌉ = 2 tours +// hors objectif au moins pour une personne. +const DEUX_SIEGES = { + personnes: [[1, null, ['finance']], [2, null, ['finance']], [3, null, ['finance']], [4, null, ['finance']], [5, null, ['finance']], [6]], + tables: [[1, 2], [2, 4]], + objectifs: [{ table: 1, tour: null, regle: 'ou', etiquettes: ['finance'] }], +}; +// Quatre « finance » servies une fois chacune, 5 jamais : chaque plancher +// atteint. +const QUATRE_SERVIES = [ + { 1: [1, 2], 2: [3, 4, 5, 6] }, + { 1: [3, 4], 2: [1, 2, 5, 6] }, +]; + +describe('bornesDesTuiles : les planchers des tuiles (§ 12.2, § 5.6, B11)', () => { + test('rouge : les collisions cumulées, les paires distinctes et l’excédent portent la somme des planchers du diagnostic ; atteint quand la mesure les égale', () => { + const memes = preparer({ ...CINQ_MEMBRES, plan: MEMES_TABLES }); + const lu = mesurer(memes.instance, memes.tableDe); + assert.deepEqual([lu.collisionsCumulees, lu.pairesDistinctes, lu.excedentCollisions], [12, 4, 8]); + assert.deepEqual( + diagnostiquer(memes.configuration).collisions.map(({ plancherCumulees, plancherPairesDistinctes, plancherExcedent }) => [ + plancherCumulees, + plancherPairesDistinctes, + plancherExcedent, + ]), + [[12, 4, 2]], + ); + assert.deepEqual(bornesDuPlan(memes).planchers, { + ...SANS_PLANCHER, + collisionsCumulees: { plancher: 12, atteint: true }, + pairesDistinctes: { plancher: 4, atteint: true }, + excedentCollisions: { plancher: 2, atteint: false }, + }); + const variees = preparer({ ...CINQ_MEMBRES, plan: TABLES_VARIEES }); + assert.equal(mesurer(variees.instance, variees.tableDe).pairesDistinctes, 10); + assert.deepEqual(bornesDuPlan(variees).planchers, { + ...SANS_PLANCHER, + collisionsCumulees: { plancher: 12, atteint: true }, + pairesDistinctes: { plancher: 4, atteint: false }, + excedentCollisions: { plancher: 2, atteint: true }, + }); + }); + + test('rouge : deux appartenances en collision : chaque plancher somme ceux des deux, l’excédent ceux qui en écrivent un', () => { + // Trois de la Coopérative Aubier et trois de l'Atelier Ressac, deux + // tables de trois, trois tours : un tour réunit au moins deux membres + // de chacune, une collision ; 3 cumulées, 1 distincte, excédent 3 − 3 = + // 0, que le diagnostic n'écrit pas, pour chacune. + const deux = preparer({ + personnes: [[1, AUBIER], [2, AUBIER], [3, AUBIER], [4, RESSAC], [5, RESSAC], [6, RESSAC]], + tables: [[1, 3], [2, 3]], + plan: [ + { 1: [1, 2, 4], 2: [3, 5, 6] }, + { 1: [1, 3, 5], 2: [2, 4, 6] }, + { 1: [2, 3, 6], 2: [1, 4, 5] }, + ], + }); + assert.deepEqual( + diagnostiquer(deux.configuration).collisions.map(({ plancherCumulees, plancherPairesDistinctes, plancherExcedent }) => [ + plancherCumulees, + plancherPairesDistinctes, + plancherExcedent, + ]), + [[3, 1, null], [3, 1, null]], + ); + const lu = mesurer(deux.instance, deux.tableDe); + assert.deepEqual([lu.collisionsCumulees, lu.pairesDistinctes], [6, 6]); + assert.deepEqual(bornesDuPlan(deux).planchers, { + ...SANS_PLANCHER, + collisionsCumulees: { plancher: 6, atteint: true }, + pairesDistinctes: { plancher: 2, atteint: false }, + }); + }); + + test('rouge : l’écart d’itinéraire maximal porte le plancher du diagnostic, atteint ou non ; aucun sous un plafond a priori inconnu', () => { + const distincts = preparer({ ...ITINERAIRE, plan: PAR_LA_TABLE_DE_DEUX }); + assert.deepEqual(diagnostiquer(distincts.configuration).ecartItineraire, { plancher: 1, mobilesAuMoins: 2 }); + assert.deepEqual(bornesDuPlan(distincts).planchers, { ...SANS_PLANCHER, ecartItineraireMax: { plancher: 1, atteint: true } }); + const memes = preparer({ ...ITINERAIRE, plan: MEMES_A_LA_TABLE_DE_DEUX }); + assert.deepEqual(bornesDuPlan(memes).planchers, { ...SANS_PLANCHER, ecartItineraireMax: { plancher: 1, atteint: false } }); + assert.deepEqual(bornesDuPlan(distincts, { aPrioriConnu: false }).planchers, SANS_PLANCHER); + }); + + test('rouge : l’écart d’itinéraire se dit atteint sur la valeur que la ligne d’évaluation porte, reçue, jamais recomptée', () => { + const memes = preparer({ ...ITINERAIRE, plan: MEMES_A_LA_TABLE_DE_DEUX }); + const { instance } = memes; + const { mesures, realises, aPriori, aMax } = mesurerTout(memes); + const ligne = troisChiffres(instance, mesures, aPriori, realises); + assert.equal(ligne.ecartItineraireMax.tous, 2); + const lus = { + mesures, + plafondsRealises: realises, + aMax, + profil: profilRencontres(instance, mesures, realises, aPriori, aMax), + animateurs: null, + objectifs: null, + diagnostic: diagnostiquer(memes.configuration), + planchersValides: true, + }; + // Une ligne qui porterait 1 : le détail la lit telle quelle, sans + // remesurer le plan, qui en donnerait 2. + const recue = { ...ligne, ecartItineraireMax: { ...ligne.ecartItineraireMax, tous: 1 } }; + assert.deepEqual(bornesDesTuiles(instance, { ...lus, troisChiffres: recue }).planchers.ecartItineraireMax, { + plancher: 1, + atteint: true, + }); + // Une ligne sans écart d'itinéraire, sous un plafond a priori inconnu : + // la tuile écrit « inconnu », et aucun plancher. + const sansEcart = { ...ligne, ecartItineraireMax: null }; + assert.equal(bornesDesTuiles(instance, { ...lus, troisChiffres: sansEcart }).planchers.ecartItineraireMax, null); + }); + + test('rouge : les personnes jamais servies, le plus de tours hors objectif d’une personne et les tours hors objectif portent ceux du diagnostic, chacun sous le mode qui le compare', () => { + const servies = preparer({ ...DEUX_SIEGES, plan: QUATRE_SERVIES }); + assert.deepEqual(diagnostiquer(servies.configuration).objectifsInevitables, { + horsObjectif: 6, + jamaisServies: 1, + horsObjectifMax: 2, + parTour: [3, 3], + }); + const objectifsDuPlan = (prepare) => { + const { jamaisServies, horsObjectifMax, toursHorsObjectif } = bornesDuPlan(prepare).planchers; + return [jamaisServies, horsObjectifMax, toursHorsObjectif]; + }; + assert.deepEqual(objectifsDuPlan(preparer({ ...DEUX_SIEGES, plan: QUATRE_SERVIES, modeObjectifs: 'chacun' })), [ + { plancher: 1, atteint: true }, + null, + { plancher: 6, atteint: true }, + ]); + assert.deepEqual(objectifsDuPlan(preparer({ ...DEUX_SIEGES, plan: QUATRE_SERVIES, modeObjectifs: 'minimum' })), [ + null, + { plancher: 2, atteint: true }, + { plancher: 6, atteint: true }, + ]); + // 1 et 2 servies aux deux tours : autant de tours hors objectif, mais 3, + // 4 et 5 jamais servies. + const memes = [ + { 1: [1, 2], 2: [3, 4, 5, 6] }, + { 1: [1, 2], 2: [3, 4, 5, 6] }, + ]; + const chacun = preparer({ ...DEUX_SIEGES, plan: memes, modeObjectifs: 'chacun' }); + assert.equal(mesurer(chacun.instance, chacun.tableDe).objectifs.jamaisServies, 3); + assert.deepEqual(objectifsDuPlan(chacun), [{ plancher: 1, atteint: false }, null, { plancher: 6, atteint: true }]); + assert.deepEqual(objectifsDuPlan(preparer({ ...DEUX_SIEGES, plan: memes, modeObjectifs: 'minimum' })), [ + null, + { plancher: 2, atteint: true }, + { plancher: 6, atteint: true }, + ]); + // Le siège d'une « finance » donné à 6, qui n'attend rien : un tour + // hors objectif de plus. + const cede = bornesDuPlan(preparer({ ...DEUX_SIEGES, plan: [QUATRE_SERVIES[0], { 1: [3, 6], 2: [1, 2, 4, 5] }] })).planchers; + assert.deepEqual(cede.toursHorsObjectif, { plancher: 6, atteint: false }); + }); + + test('rouge : un plancher des objectifs ne s’écrit que pour une valeur que le mode réglé compare, critère coché, comme au diagnostic (§ 5.6)', () => { + // Sous le mode par défaut, seuls les tours hors objectif se comparent : + // le diagnostic prouve 1 personne jamais servie et 2 tours hors + // objectif pour une personne, et aucune tuile ne les écrit. + const desObjectifs = ({ jamaisServies, horsObjectifMax, toursHorsObjectif }) => [jamaisServies, horsObjectifMax, toursHorsObjectif]; + const parDefaut = bornesDuPlan(preparer({ ...DEUX_SIEGES, plan: QUATRE_SERVIES })).planchers; + assert.deepEqual(desObjectifs(parDefaut), [null, null, { plancher: 6, atteint: true }]); + // Le critère décoché ne compare rien, sous aucun mode, et les mesures + // des objectifs restent : aucun plancher. + for (const modeObjectifs of ['places', 'chacun', 'minimum']) { + const decoche = preparer({ + ...DEUX_SIEGES, + plan: QUATRE_SERVIES, + modeObjectifs, + contraintes: { ...SANS_CONTRAINTE, respecterObjectifs: false }, + }); + assert.notEqual(mesurer(decoche.instance, decoche.tableDe).objectifs, null, modeObjectifs); + assert.deepEqual(desObjectifs(bornesDuPlan(decoche).planchers), [null, null, null], modeObjectifs); + } + }); + + test('rouge : hors du domaine des planchers, aucun ; un plancher nul ne s’écrit pas, jamais 0', () => { + assert.deepEqual(bornesDuPlan(preparer({ ...CINQ_MEMBRES, plan: MEMES_TABLES }), { planchersValides: false }).planchers, SANS_PLANCHER); + assert.deepEqual(bornesDuPlan(preparer({ ...DEUX_SIEGES, plan: QUATRE_SERVIES }), { planchersValides: false }).planchers, SANS_PLANCHER); + // Deux membres par appartenance pour deux tables, aucune table + // inférieure, aucun objectif : le diagnostic ne prouve rien. + const rien = preparer(PROFIL); + const diagnostic = diagnostiquer(rien.configuration); + assert.deepEqual([diagnostic.collisions, diagnostic.ecartItineraire], [[], null]); + assert.deepEqual(bornesDuPlan(rien).planchers, SANS_PLANCHER); + // Cinq sièges pour cinq « finance » : des planchers des objectifs nuls, + // que la tuile tait. + const large = preparer({ + ...DEUX_SIEGES, + tables: [[1, 5], [2, 2]], + plan: [ + { 1: [1, 2, 3, 4, 5], 2: [6] }, + { 1: [1, 2, 3, 4, 5], 2: [6] }, + ], + }); + assert.deepEqual(diagnostiquer(large.configuration).objectifsInevitables, { + horsObjectif: 0, + jamaisServies: 0, + horsObjectifMax: 0, + parTour: [0, 0], + }); + const planchers = bornesDuPlan(large).planchers; + assert.deepEqual([planchers.jamaisServies, planchers.horsObjectifMax, planchers.toursHorsObjectif], [null, null, null]); }); }); @@ -848,17 +1186,9 @@ describe('detailler (§ 12.9, D27)', () => { personnes: OBJECTIFS.personnes.map(([id, , etiquettes], i) => [id, [AUBIER, RESSAC, null][i % 3], etiquettes, id === 7 ? [2] : undefined]), reservations: [...OBJECTIFS.reservations, auTour(7, 1, 2)], }); - const { configuration, instance, tableDe } = prepare; + const { instance, tableDe } = prepare; const { mesures, realises, aPriori, aMax } = mesurerTout(prepare); - const options = { - diagnostic: diagnostiquer(configuration), - mesures, - plafondsRealises: realises, - plafondsAPriori: aPriori, - planchersValides: true, - cle, - ordreMatrice: null, - }; + const options = optionsDe(prepare, { mesures, realises, aPriori }); return { prepare, instance, tableDe, mesures, realises, aPriori, aMax, options }; } @@ -887,7 +1217,20 @@ describe('detailler (§ 12.9, D27)', () => { repartition: repartition(animateurs.map(({ rencontres }) => rencontres), null), diversite: diversiteAnimateurs(instance, tableDe), }); - assert.deepEqual(detail.bornes, bornesDesTuiles(instance, { mesures, plafondsRealises: realises, aMax, profil, animateurs, objectifs })); + assert.deepEqual( + detail.bornes, + bornesDesTuiles(instance, { + mesures, + plafondsRealises: realises, + aMax, + profil, + animateurs, + objectifs, + diagnostic: options.diagnostic, + planchersValides: true, + troisChiffres: options.troisChiffres, + }), + ); assert.equal(detail.matrice, null); }); @@ -904,23 +1247,51 @@ describe('detailler (§ 12.9, D27)', () => { test('sans animateur ni personne concernée, les animateurs valent null ; hors du domaine, les barres n’ont qu’un segment', () => { const prepare = preparer(PROFIL); - const { configuration, instance, tableDe } = prepare; - const { mesures, realises, aPriori } = mesurerTout(prepare); - const detail = detailler(instance, tableDe, { - diagnostic: diagnostiquer(configuration), - mesures, - plafondsRealises: realises, - plafondsAPriori: aPriori, - planchersValides: false, - cle, - ordreMatrice: null, - }); + const { instance, tableDe } = prepare; + const detail = detailler(instance, tableDe, optionsDe(prepare, mesurerTout(prepare), false)); assert.equal(detail.animateurs, null); assert.equal(detail.objectifs, null); assert.ok(detail.collisions.lignes.every(({ prouve, reste }) => prouve === null && reste === null)); assert.equal(detail.collisions.planchersValides, false); }); + test('hors du domaine des planchers, aucune tuile ne porte de plancher, même prouvé par le diagnostic', () => { + // Cinq membres d'une appartenance, 5 en réserve à chaque tour : deux + // collisions par tour, 6 en tout, sous les 12 que le diagnostic prouve + // pour un plan qui assoit chacun. Ce plancher ne tient pas ici. + const prepare = preparer({ ...CINQ_MEMBRES, plan: [0, 1, 2].map(() => ({ 1: [1, 2, 6], 2: [3, 4] })) }); + const { instance, tableDe } = prepare; + const lu = mesurerTout(prepare); + const options = optionsDe(prepare, lu, false); + assert.deepEqual(options.diagnostic.collisions.map(({ plancherCumulees }) => plancherCumulees), [12]); + assert.equal(lu.mesures.collisionsCumulees, 6); + const detail = detailler(instance, tableDe, options); + assert.deepEqual(detail.bornes.planchers, SANS_PLANCHER); + assert.equal(detail.collisions.planchersValides, false); + }); + + test('rouge : les trois chiffres reçus passent aux tuiles : le plancher de l’écart d’itinéraire, atteint ou non, aucun sous un plafond a priori inconnu', () => { + for (const [plan, atteint] of [ + [PAR_LA_TABLE_DE_DEUX, true], + [MEMES_A_LA_TABLE_DE_DEUX, false], + ]) { + const prepare = preparer({ ...ITINERAIRE, plan }); + const lu = mesurerTout(prepare); + const detail = detailler(prepare.instance, prepare.tableDe, optionsDe(prepare, lu)); + assert.deepEqual(detail.bornes.planchers, { ...SANS_PLANCHER, ecartItineraireMax: { plancher: 1, atteint } }, `${atteint}`); + const inconnu = detailler(prepare.instance, prepare.tableDe, optionsDe(prepare, { ...lu, aPriori: null })); + assert.deepEqual(inconnu.bornes.planchers, SANS_PLANCHER, `${atteint}`); + } + // Les chiffres reçus font foi, même quand le plan en donnerait + // d'autres : 1 reçu pour les mêmes à la table de deux, qui mesurent 2. + const memes = preparer({ ...ITINERAIRE, plan: MEMES_A_LA_TABLE_DE_DEUX }); + const options = optionsDe(memes, mesurerTout(memes)); + assert.equal(options.troisChiffres.ecartItineraireMax.tous, 2); + const recus = { ...options.troisChiffres, ecartItineraireMax: { ...options.troisChiffres.ecartItineraireMax, tous: 1 } }; + const detail = detailler(memes.instance, memes.tableDe, { ...options, troisChiffres: recus }); + assert.deepEqual(detail.bornes.planchers.ecartItineraireMax, { plancher: 1, atteint: true }); + }); + test('des animateurs sans personne concernée : le profil et sa répartition valent null, la diversité reste', () => { // 1 anime, seul présent : il ne se rencontre pas lui-même, et personne // d'autre ne peut le rejoindre. @@ -930,18 +1301,10 @@ describe('detailler (§ 12.9, D27)', () => { reservations: [auTour(1, 1, 1)], plan: [{ 1: [1] }], }); - const { configuration, instance, tableDe } = prepare; - const { mesures, realises, aPriori } = mesurerTout(prepare); - assert.equal(mesures.animateurs, null); - const detail = detailler(instance, tableDe, { - diagnostic: diagnostiquer(configuration), - mesures, - plafondsRealises: realises, - plafondsAPriori: aPriori, - planchersValides: true, - cle, - ordreMatrice: null, - }); + const { instance, tableDe } = prepare; + const lu = mesurerTout(prepare); + assert.equal(lu.mesures.animateurs, null); + const detail = detailler(instance, tableDe, optionsDe(prepare, lu)); assert.equal(detail.animateurs.profil, null); assert.equal(detail.animateurs.repartition, null); assert.equal(detail.animateurs.diversite.lignes.length, 1); @@ -951,6 +1314,12 @@ describe('detailler (§ 12.9, D27)', () => { describe('qualite : la source du module', () => { const source = readFileSync(new URL('./qualite.js', import.meta.url), 'utf8'); + test('rouge : aucune mesure de la ligne d’évaluation recomptée : les trois chiffres se reçoivent', () => { + assert.doesNotMatch(source, /\btroisChiffres\(/); + // Ni importés sous un autre nom : aucun import n'en nomme. + assert.doesNotMatch(source, /^import[^;]*\btroisChiffres\b/m); + }); + test('aucun couple possible ni correspondance relus : les comptes par tour viennent de parcourirTours', () => { assert.doesNotMatch(source, /\bpossible\[/); assert.doesNotMatch(source, /\bcorrespond\[/); diff --git a/src/stockage/depot.test.js b/src/stockage/depot.test.js index 1323269..af134dd 100644 --- a/src/stockage/depot.test.js +++ b/src/stockage/depot.test.js @@ -2380,6 +2380,26 @@ describe('dépôt : le compagnon des courses (§ 8.6, § 8.9, B31)', () => { assert.equal(fs.contenu('documents', COURSES), valide); }); + test("une lecture du compagnon que le système refuse n'empêche pas l'ouverture : ses courses sont inconnues ; une erreur qui ne vient pas du stockage remonte telle quelle", async () => { + const charge = chargeEssai(); + const [p] = charge.propositions; + const { disque } = disqueAvec([[ETAT, etatTexte(charge)], [COURSES, texteDesCourses('evt-lucioles', [entreeDe(p)])]]); + // Un lecteur du disque dont la lecture du compagnon rejette l'erreur + // que rend erreurDe(chemin), les autres fichiers lus comme d'ordinaire. + const refusant = (erreurDe) => { + const fs = creerFichiersSimules({ disque }); + const lire = fs.lireTexte; + fs.lireTexte = (racine, chemin) => (chemin === COURSES ? Promise.reject(erreurDe(chemin)) : lire(racine, chemin)); + return fs; + }; + assert.equal(courseDe(await rouvrir(disque, BASE), 1).evalues, 100); + const refuse = await ouvrir(refusant((chemin) => new ErreurStockage('LECTURE', { chemin, dossier: DOCUMENTS, cause: 'EACCES' })), DOC, BASE); + assert.deepEqual(refuse.avertissements, []); + assert.equal(courseDe(refuse, 1), null); + const panne = new TypeError('lecteur en panne'); + await assert.rejects(ouvrir(refusant(() => panne), DOC, BASE), (erreur) => erreur === panne); + }); + test("un refus d'écrire le compagnon n'empêche pas le geste : journal et état écrits, la course connue de l'Ouvert pour la séance ; le geste qui change ensuite les propositions le réécrit", async () => { const { fs } = nouveauDisque(); const ouvert = await creer(fs, DOC, chargeEssai(), CREATION); diff --git a/test/navigateur/ecrans.js b/test/navigateur/ecrans.js index 0704bac..1280ee3 100644 --- a/test/navigateur/ecrans.js +++ b/test/navigateur/ecrans.js @@ -271,11 +271,13 @@ const NIVEAUX = Object.freeze([ [[1, 2, 3, 4], [5, 6, 9, 10], [7, 8, 11, 12], [13, 14, 15, 16]], ]); -/** Seize personnes inventées, quatre tables de quatre, trois tours : les - * quatre de la première appartenance réservées ensemble à la table 1 pour - * tous les tours, et la proposition NIVEAUX, écrite à la main, où la - * grille des tables, sous chaque position, et la matrice des rencontres - * portent les quatre niveaux de l'échelle (§ 12.7, D33, D35). */ +/** Seize personnes inventées, trois tables de quatre et une de cinq, trois + * tours : les quatre de la première appartenance réservées ensemble à la + * table 1 pour tous les tours, et la proposition NIVEAUX, écrite à la + * main, où la grille des tables, sous chaque position, et la matrice des + * rencontres portent les quatre niveaux de l'échelle (§ 12.7, D33, D35). + * La table 4 garde un siège vide à chaque tour : ses sièges et ses assis + * diffèrent, et leurs deux pourcentages aussi aux tours 1 et 2. */ export function chargeNiveaux() { const appartenances = [ ...Array(4).fill(AUBIER), @@ -286,6 +288,7 @@ export function chargeNiveaux() { ...Array(5).fill(null), ]; let charge = chargeInventee({ appartenances, tables: 4, sieges: 4, tours: 3 }); + charge.tables[3].sieges = 5; for (const participant of [1, 2, 3, 4]) { charge = executer(charge, 'reserver', { participant, table: 1, siege: participant, portee: 'tous', tour: null }); } @@ -575,12 +578,14 @@ async function jumeauSansEcriture(contexte, charge) { } // La page de qualité de chargeNiveaux, son sélecteur du mélange des tables -// posé sur la position donnée par un clic. +// posé sur la position donnée par un clic, et son jumeau ouvert : chaque +// ligne y écrit les trois pourcentages, chacun suivi du compte de sa ligne. async function tablesSurPosition(contexte, position) { const m = await ouvrirQualite(contexte, chargeNiveaux()); await cliquer(m, `[data-vue-qualite="tables"] [data-position-tables="${position}"]`); await attendre(`la position « ${position} » choisie`, () => m.racine.querySelector(`[data-position-tables="${position}"]`)?.checked === true); await qualiteDessinee(m); + await ouvrirJumeaux(m, '[data-vue-qualite="tables"]'); return m.racine; }