Aller au contenu
DispatchAtlas
Rechercher

Exports d'analyse

dispatchatlas.analytica transforme les dépôts de campagnes terminées en résumés statistiques, figures déterministes, lots de preuves et jeux de données prêts pour le portail. Le paquet consomme des manifestes JSON stables et n'importe pas le runtime de campagne.

Exemple exécutable : examples/analyze_results.py résume un ensemble de résultats avec des statistiques non paramétriques, des tailles d'effet, des intervalles de confiance, des tableaux déterministes et des figures à double format.

📥 Entrées

Le chargeur d'analyse attend un répertoire de campagne contenant :

  • checkpoint.json avec les ids d'exécutions terminées, échouées et en attente.
  • plan.json avec l'ordre d'exécution et les étiquettes de divulgation.
  • environment.json avec des faits d'environnement non secrets.
  • results/*.json lignes d'exécutions terminées.
  • failures/*.json lignes de tentatives échouées lorsqu'elles sont présentes.

Des points de contrôle, hachages de contenu, valeurs d'objectif ou étiquettes de divulgation manquants font échouer l'ingestion avant le début de l'analyse.

📊 Méthodes statistiques

Un registre de méthodes nommées déclare chaque méthode d'analyse avec ses hypothèses de données, sa règle d'échantillon minimal, son mode d'échec et son niveau de preuve le plus bas. Chaque méthode inférentielle et indicateur de qualité requiert au moins 30 exécutions indépendantes par cellule stochastique solveur-instance ; un échantillon sous-le-plancher est routé vers la surface de limitations plutôt que de produire un résultat invalide.

Pour chaque objectif, la couche de résumé rapporte les compteurs de solveur, les compteurs faisables, la moyenne, la médiane, l'écart-type, les intervalles de confiance par bootstrap corrigé-du-biais et accéléré (BCa), le test de Wilcoxon des rangs signés avec les tailles d'effet A12 de Vargha-Delaney et delta de Cliff pour la comparaison par paires, le test omnibus de Friedman avec un post-hoc de différence-critique de Nemenyi sur le champ multi-solveur, la correction de Holm ou Hochberg sur la famille par paires, et les rangs moyens par problème de benchmark. Les fronts multi-objectifs rapportent en outre les indicateurs de qualité hypervolume (primaire), IGD+, epsilon-indicateur additif et dispersion.

L'objectif par défaut est makespan avec une sémantique de minimisation. Le test de Wilcoxon utilise la distribution nulle exacte pour les petits échantillons sans égalités et l'approximation normale corrigée-des-égalités sinon. Les intervalles de confiance utilisent un rééchantillonnage bootstrap déterministe avec une graine enregistrée ; ils décrivent l'échantillon de campagne observé et ne sont pas à eux seuls des affirmations de campagne complète.

À côté du test de signe bayésien en forme close, bayesian_signed_rank_test tire un postérieur de processus de Dirichlet à graine sur les moyennes de Walsh des différences appariées, si bien que les métriques continues reçoivent la comparaison bayésienne sensible à la magnitude de Benavoli, Corani, Demšar et Zaffalon (2017) ; le test de signe reste le défaut en forme close. La famille de comparaisons multiples ajoute la procédure statique pas-à-pas descendante de Shaffer, qui exploite les contraintes logiques d'une famille complète de comparaisons toutes-paires et échoue en position fermée sur une famille partielle (Shaffer 1986), et l'ajustement pas-à-pas descendant de Finner, un gain de puissance plus simple qui accepte toute famille (Finner 1993) ; Holm reste le défaut configuré. La déviation relative en pourcentage rejoint les méthodes d'écart-à-l'optimalité : arpd_rows évalue chaque exécution faisable face à une valeur de référence meilleure-connue fournie par l'appelant avec une provenance explicite, et ensure_equal_budgets vérifie le protocole de budget-égal mis à l'échelle par la taille qui la sous-tend — un budget identique par problème à travers les solveurs, les budgets libres de croître avec la taille d'instance (Vallada, Ruiz et Framiñan 2015). Les comparaisons d'hypervolume multi-objectif archivent leur point de référence partagé : multiobjective_indicator_report dérive le point sous une règle nommée — le défaut margin-fraction ou la mise à l'échelle ishibuchi-h — enregistre l'idéal, le nadir, la règle, le paramètre et un vocabulaire de provenance échouant en position fermée dans un ReferencePointRecord, et ensure_shared_reference_points refuse de comparer des artefacts dont les points archivés diffèrent (Ishibuchi, Imada, Setoguchi et Nojima 2018 ; le décalage exact publié reste marqué APPROXIMATE en attendant le texte intégral revu par l'opérateur). Une règle stricte garde chaque tableau exporté : une p-valeur n'est jamais livrée sans une taille d'effet et un intervalle à côté d'elle. ensure_effect_sizes_beside_p_values vérifie les en-têtes à l'intérieur des constructeurs de tableaux et de nouveau au moment de l'écriture du lot, échouant en position fermée sur toute colonne de signification nue (Carrasco, García, Rueda, Das et Herrera 2020).

🖼️ Figures et tableaux

Les lots de preuves incluent des tableaux Markdown pour les résumés de solveurs, les comparaisons par paires, les classements, la couverture de benchmarks et les lignes infaisables. Les figures SVG portent des métadonnées accessibles title et desc pour les barres de classement, les profils de performance, les tendances d'objectif par ordre d'exécution, le diagramme de différence-critique de Nemenyi, les compromis temps-qualité, les trajectoires de convergence, l'équilibre exploration-exploitation, la scalabilité du temps d'exécution par taille d'instance, la stabilité de graine (coefficient de variation), la robustesse (risque de queue CVaR) et la caractérisation de benchmarks. Un manifeste de figures enregistre le rôle, la provenance et la note d'accessibilité de chaque figure. Les figures qui dépendent de diagnostics qu'une campagne n'a pas enregistrés (temps d'exécution, trace de convergence, diversité de population, échelle d'instance) ou de multiples graines (stabilité de graine) rendent un avis de limitations. Un supplement/limitations.md rassemble toute méthode routée vers les limitations.

Réexécuter le même export face aux mêmes entrées produit les mêmes charges utiles JSON, de tableau et de figure.

Le profil de performance de Dolan-Moré voyage avec son compagnon de Moré-Wild : data_profile_svg et data_profile_tex tracent la part des cellules (solveur, problème) résolues à une précision cible dans un budget de groupes d'évaluation — l'adaptation en groupes d'évaluation de l'unité de gradient-du-simplexe — à partir des mêmes traces de convergence que les figures de convergence consomment, et un jeu de données sans traces est routé vers la figure de limitations. Les profils de performance qui comparent plus de deux solveurs portent une mise en garde d'interprétation sous les deux formes de sortie : un profil classe chaque solveur uniquement face au meilleur par problème, si bien que l'ordre relatif des solveurs non-meilleurs n'est pas impliqué (Gould et Scott 2016).

⚖️ Comparaison des plateformes

Les exports de comparaison de plateformes rendent des lignes de capacité de frameworks rivaux, une matrice de couverture de richesse-fonctionnelle, une évaluation de pont d'écart-avec-la-réalité et des lignes d'inspection d'artefacts. Chaque ligne porte une étiquette de source-de-preuve (documented, measured, artifact-inspected, vendor-claim ou unsupported), et toute ligne non prise en charge est routée vers une surface de limitations-et-travaux-futurs. L'export porte une ligne de garde permanente : les tableaux comparent les capacités, fonctionnalités et artefacts de plateforme, et ne sont pas des affirmations de performance directes — les preuves de performance vivent dans les exports d'analyse statistique.

🥊 Couloir de comparaison en tête-à-tête

Le couloir tête-à-tête compare un solveur focal à une cohorte de référence nommée en utilisant les mêmes tests non paramétriques nommés, oriente chaque ligne vers le solveur focal, et conditionne une affirmation de bat-la-cohorte à ce que le solveur focal détienne le meilleur rang moyen et gagne chaque comparaison par paires au niveau de signification corrigé avec la taille d'effet en sa faveur. Des constructeurs de tableaux de complexité-algorithmique et de menaces-à-la-validité de construit/internes/externes accompagnent le couloir pour la consommation en rapport.

🔒 Politique de divulgation

Les exports sont filtrés à travers des politiques de divulgation exécutables :

  • core permet uniquement les preuves centrales/publiques.
  • speed permet les preuves centrales, de vitesse et publiques.
  • quality permet les preuves centrales, de vitesse, de qualité et publiques.
  • platform permet les preuves de plateforme tout en bloquant la source caviardée et les termes de narrative-obsolète.

Les lignes interdites sont exclues des preuves et des jeux de données du portail et écrites dans un manifeste d'exclusions supplémentaire avec le motif.

🗂️ Disposition du lot

evidence-bundle/
  bundle.json
  tables/
    solver-summary.md
    pairwise-comparisons.md
    rankings.md
    benchmarks.md
    infeasible-rows.md
  figures/
    performance-profile.svg
    solver-rankings.svg
    run-order-trend.svg
    critical-difference.svg
    runtime-quality.svg
    convergence.svg
    characterization.svg
    exploration-exploitation.svg
    scalability.svg
    stability.svg
    robustness.svg
    figure-manifest.json
  supplement/
    exclusions.json
    limitations.md

bundle.json liste chaque fichier généré et hache la charge utile canonique du manifeste, de sorte que chaque tableau, figure et supplément reste dans un unique manifeste suivi et adressé-par-contenu.

⌨️ Commande

uv run dispatchatlas export `
  --campaign-dir .\experiments\results\smoke-pilot `
  --target-dir .\exports\smoke-pilot `
  --authorized-output-root .\exports `
  --tier core `
  --objective makespan `
  --portal

La commande écrit un lot de preuves plus un jeu de données du portail optionnel. Le lot de preuves inclut tableaux, figures et exclusions supplémentaires. Le JSON du portail inclut des étiquettes cherchables, des étiquettes de divulgation, des valeurs d'objectif, des ids d'exécution et des métadonnées de campagne liées par hachage. --target-dir doit se résoudre à l'intérieur de --authorized-output-root ; la racine autorisée par défaut est le répertoire de travail actuel.

Exécutez uv run dispatchatlas export --help pour les descriptions d'options et les exemples. Les erreurs d'entrée au runtime impriment un message de récupération par défaut ; passez --debug avant la sous-commande lorsqu'un traceback Python est nécessaire pour le développement.

📝 Ébauches de rapport

La couche d'analyse transforme aussi un lot de preuves filtré par divulgation en une ébauche de rapport déterministe indexée par niveau de preuve. Un ReportScaffoldSpec déclare l'affirmation de contribution, la justification de conception et les portes d'affirmation ; write_report_scaffold écrit le lot de preuves plus un plan de sections complet, une affirmation de contribution, un registre de portes-d'affirmation, et un rapport de caviardage sous report/. Chaque section s'ancre à un artefact de preuve filtré, et l'ébauche générée est scannée de sorte qu'un mécanisme de niveau ultérieur ou un marqueur interne restreint fasse échouer l'écriture en position fermée.

Les portes d'affirmation échouent en position fermée : une affirmation au niveau conception s'ouvre inconditionnellement, tandis qu'une affirmation comparative reste fermée jusqu'à ce qu'une comparaison tête-à-tête batte la cohorte avec chaque compteur apparié au niveau ou au-dessus du plancher de puissance statistique. Une contribution_partition sur les niveaux de preuve prouve une contribution à chevauchement-zéro par niveau, et redaction_report accepte un registre fourni par l'appelant de sorte qu'un brouillon non-public puisse être vérifié sans que ce registre n'entre jamais dans la source publiée.

uv run dispatchatlas report `
  --campaign-dir .\experiments\results\smoke-pilot `
  --target-dir .\scaffolds\smoke-pilot `
  --authorized-output-root .\scaffolds `
  --tier core