Saltar al contenido
DispatchAtlas
Buscar

Exportaciones de análisis

dispatchatlas.analytica convierte repositorios de campañas completadas en resúmenes estadísticos, figuras deterministas, paquetes de evidencia y conjuntos de datos listos para el portal. El paquete consume manifiestos JSON estables y no importa el tiempo de ejecución de la campaña.

Ejemplo ejecutable: examples/analyze_results.py resume un conjunto de resultados con estadística no paramétrica, tamaños de efecto, intervalos de confianza, tablas deterministas y figuras de doble formato.

📥 Entradas

El cargador de análisis espera un directorio de campaña que contenga:

  • checkpoint.json con ids de ejecuciones completadas, fallidas y pendientes.
  • plan.json con el orden de ejecución y las etiquetas de divulgación.
  • environment.json con datos de entorno no secretos.
  • results/*.json filas de ejecuciones completadas.
  • failures/*.json filas de intentos fallidos cuando estén presentes.

Puntos de control, hashes de contenido, valores de objetivo o etiquetas de divulgación faltantes hacen fallar la ingestión antes de que el análisis empiece.

📊 Métodos estadísticos

Un registro de métodos con nombre declara cada método de análisis con sus supuestos de datos, su regla de muestra mínima, su modo de fallo y su nivel de evidencia más bajo. Cada método inferencial e indicador de calidad requiere al menos 30 ejecuciones independientes por celda estocástica solver-instancia; una muestra bajo-el-piso se enruta a la superficie de limitaciones en lugar de producir un resultado inválido.

Para cada objetivo, la capa de resumen reporta conteos de solver, conteos factibles, media, mediana, desviación estándar, intervalos de confianza por bootstrap corregido-por-sesgo y acelerado (BCa), la prueba de Wilcoxon de rangos con signo con los tamaños de efecto A12 de Vargha-Delaney y delta de Cliff para comparación por pares, la prueba ómnibus de Friedman con un post-hoc de diferencia-crítica de Nemenyi sobre el campo multi-solver, corrección de Holm o Hochberg sobre la familia por pares, y rangos promedio por problema de benchmark. Los frentes multi-objetivo además reportan los indicadores de calidad hipervolumen (primario), IGD+, epsilon-indicador aditivo y dispersión.

El objetivo por defecto es makespan con semántica de minimización. La prueba de Wilcoxon usa la distribución nula exacta para muestras pequeñas sin empates y la aproximación normal corregida-por-empates en caso contrario. Los intervalos de confianza usan remuestreo bootstrap determinista con una semilla registrada; describen la muestra de campaña observada y no son por sí solos afirmaciones de campaña completa.

Junto a la prueba de signo bayesiana de forma cerrada, bayesian_signed_rank_test extrae una posterior de proceso de Dirichlet sembrada sobre los promedios de Walsh de las diferencias emparejadas, de modo que las métricas continuas obtienen la comparación bayesiana consciente de la magnitud de Benavoli, Corani, Demšar y Zaffalon (2017); la prueba de signo sigue siendo el valor por defecto de forma cerrada. La familia de comparación múltiple añade el procedimiento estático descendente de Shaffer, que explota las restricciones lógicas de una familia completa de comparación todos-contra-todos y falla en cerrado sobre una parcial (Shaffer 1986), y el ajuste descendente de Finner, una ganancia de potencia más simple que acepta cualquier familia (Finner 1993); Holm sigue siendo el valor por defecto configurado. La desviación porcentual relativa se suma a los métodos de brecha-de-optimalidad: arpd_rows puntúa cada ejecución factible contra un valor de referencia mejor-conocido suministrado por quien llama con procedencia explícita, y ensure_equal_budgets verifica el protocolo de presupuesto-igual escalado-con-el-tamaño que hay detrás — un presupuesto idéntico por problema entre solvers, con presupuestos libres de crecer con el tamaño de instancia (Vallada, Ruiz y Framiñan 2015). Las comparaciones de hipervolumen multi-objetivo archivan su punto de referencia compartido: multiobjective_indicator_report deriva el punto bajo una regla con nombre — el valor por defecto de fracción-de-margen o el escalado ishibuchi-h — registra el ideal, el nadir, la regla, el parámetro y un vocabulario de procedencia que falla en cerrado en un ReferencePointRecord, y ensure_shared_reference_points se niega a comparar artefactos cuyos puntos archivados difieren (Ishibuchi, Imada, Setoguchi y Nojima 2018; el desplazamiento publicado exacto permanece marcado como APPROXIMATE a la espera del texto completo revisado por el operador). Una regla estricta guarda cada tabla exportada: un valor-p nunca se envía sin un tamaño de efecto y un intervalo a su lado. ensure_effect_sizes_beside_p_values verifica las cabeceras dentro de los constructores de tablas y de nuevo en el momento de escritura del paquete, fallando en cerrado ante cualquier columna de significancia desnuda (Carrasco, García, Rueda, Das y Herrera 2020).

🖼️ Figuras y tablas

Los paquetes de evidencia incluyen tablas Markdown para resúmenes de solvers, comparaciones por pares, rankings, cobertura de benchmarks y filas infactibles. Las figuras SVG llevan metadatos accesibles title y desc para barras de ranking, perfiles de rendimiento, tendencias de objetivo por orden de ejecución, el diagrama de diferencia-crítica de Nemenyi, compromisos tiempo-calidad, trayectorias de convergencia, el balance exploración-explotación, escalabilidad de tiempo de ejecución por tamaño de instancia, estabilidad de semilla (coeficiente de variación), robustez (riesgo de cola CVaR) y caracterización de benchmarks. Un manifiesto de figuras registra el rol, la procedencia y la nota de accesibilidad de cada figura. Las figuras que dependen de diagnósticos que una campaña no registró (tiempo de ejecución, traza de convergencia, diversidad de población, escala de instancia) o de múltiples semillas (estabilidad de semilla) renderizan un aviso de limitaciones. Un supplement/limitations.md recopila todo método enrutado a limitaciones.

Volver a ejecutar la misma exportación contra las mismas entradas produce las mismas cargas útiles JSON, de tabla y de figura.

El perfil de rendimiento de Dolan-Moré viaja con su compañero de Moré-Wild: data_profile_svg y data_profile_tex grafican la fracción de celdas (solver, problema) resueltas a una precisión objetivo dentro de un presupuesto de grupos de evaluación — la adaptación a grupos-de-evaluación de la unidad de gradiente-simplex — a partir de las mismas trazas de convergencia que consumen las figuras de convergencia, y un conjunto de datos sin trazas se enruta a la figura de limitaciones. Los perfiles de rendimiento que comparan más de dos solvers llevan una advertencia de interpretación en ambas formas de salida: un perfil clasifica cada solver solo contra el mejor por problema, de modo que el orden relativo de los solvers no-mejores no queda implicado (Gould y Scott 2016).

⚖️ Comparación de plataformas

Las exportaciones de comparación de plataformas renderizan filas de capacidad de frameworks rivales, una matriz de cobertura de riqueza-de-características, una evaluación de puente de brecha-con-la-realidad y filas de inspección de artefactos. Cada fila lleva una etiqueta de fuente-de-evidencia (documented, measured, artifact-inspected, vendor-claim o unsupported), y cualquier fila no soportada se enruta a una superficie de limitaciones-y-trabajo-futuro. La exportación lleva una línea de guarda permanente: las tablas comparan capacidades, características y artefactos de plataforma, y no son afirmaciones de rendimiento directas — la evidencia de rendimiento vive en las exportaciones de análisis estadístico.

🥊 Carril de comparación cara a cara

El carril cara a cara compara un solver focal contra una cohorte base con nombre usando las mismas pruebas no paramétricas con nombre, orienta cada fila hacia el solver focal, y condiciona una afirmación de vence-a-la-cohorte a que el solver focal mantenga el mejor rango promedio y gane cada comparación por pares al nivel de significancia corregido con el tamaño de efecto a su favor. Constructores de tablas de complejidad-algorítmica y de amenazas-a-la-validez de constructo/internas/externas acompañan el carril para el consumo en informes.

🔒 Política de divulgación

Las exportaciones se filtran a través de políticas de divulgación ejecutables:

  • core permite solo evidencia central/pública.
  • speed permite evidencia central, de velocidad y pública.
  • quality permite evidencia central, de velocidad, de calidad y pública.
  • platform permite evidencia de plataforma mientras sigue bloqueando fuente redactada y términos de narrativa-obsoleta.

Las filas prohibidas se excluyen de la evidencia y de los conjuntos de datos del portal y se escriben en un manifiesto de exclusiones suplementario con el motivo.

🗂️ Disposición del paquete

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 lista cada archivo generado y hashea la carga útil canónica del manifiesto, de modo que cada tabla, figura y suplemento permanece dentro de un único manifiesto rastreado y direccionado-por-contenido.

⌨️ Comando

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

El comando escribe un paquete de evidencia más un conjunto de datos del portal opcional. El paquete de evidencia incluye tablas, figuras y exclusiones suplementarias. El JSON del portal incluye etiquetas buscables, etiquetas de divulgación, valores de objetivo, ids de ejecución y metadatos de campaña enlazados por hash. --target-dir debe resolverse dentro de --authorized-output-root; la raíz autorizada por defecto es el directorio de trabajo actual.

Ejecuta uv run dispatchatlas export --help para descripciones de opciones y ejemplos. Los errores de entrada en tiempo de ejecución imprimen un mensaje de recuperación por defecto; pasa --debug antes del subcomando cuando se necesite un traceback de Python para el desarrollo.

📝 Andamiajes de informe

La capa de análisis también convierte un paquete de evidencia filtrado por divulgación en un andamiaje de informe determinista por nivel de evidencia. Un ReportScaffoldSpec declara la afirmación de contribución, la justificación de diseño y las puertas de afirmación; write_report_scaffold escribe el paquete de evidencia más un plan de secciones comprehensivo, una afirmación de contribución, un libro mayor de puertas-de-afirmación, y un informe de redacción bajo report/. Cada sección se ancla a un artefacto de evidencia filtrado, y el andamiaje generado se escanea de modo que un mecanismo de nivel posterior o un marcador interno restringido hace fallar la escritura en cerrado.

Las puertas de afirmación fallan en cerrado: una afirmación a nivel de diseño se abre incondicionalmente, mientras que una afirmación comparativa permanece cerrada hasta que una comparación cara a cara venza a la cohorte con cada conteo emparejado en o por encima del piso de potencia estadística. Una contribution_partition sobre los niveles de evidencia prueba una contribución de solapamiento-cero por nivel, y redaction_report acepta un registro suministrado por la persona llamante de modo que un borrador no-público pueda comprobarse sin que ese registro entre nunca en la fuente publicada.

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