Metrics and Results
This document explains what EDAF records, where it records it, and how to interpret it.
1) Event-Centric Data Model
Each run emits events. Sinks serialize these events into different storage backends.
Main lifecycle sequence:
run_started- multiple
iteration_completed - optional
checkpoint_saved - optional
run_resumed run_completedorrun_failed
2) Iteration Metrics
Default per-iteration scalar metrics:
bestmeanstddiversityentropyevaluationsiteration
These are emitted by DefaultMetricCollector.
Latent-knowledge additions are merged into the same numeric map:
- binary examples:
binary_mean_entropybinary_fixation_ratiodrift_binary_prob_l2diversity_hamming_population- permutation examples:
perm_position_entropy_meandrift_consensus_kendalldiversity_kendall_population- real examples:
real_sigma_meandrift_gaussian_kl_diagdiversity_euclidean_population- adaptive:
adaptive_event_count
3) Model Diagnostics
Model.diagnostics() returns numeric key-value pairs.
Examples by model family:
- Bernoulli UMDA: model entropy, mean probability
- Diagonal Gaussian: sigma min/max, condition number
- Full Gaussian: covariance condition number
- EHM: edge entropy
- advanced models: diagnostics include family-specific metrics
4) Sink Outputs
Console
- real-time progress bar
- compact summaries
- final run summary
CSV
File: results/<run-id>.csv
Columns:
- timestamp
- run_id
- iteration
- evaluations
- population_size
- elite_size
- best_fitness
- mean_fitness
- std_fitness
- metrics_json
- diagnostics_json
- latent_json
- adaptive_actions_json
JSONL
File: results/<run-id>.jsonl (or configured path)
- one event JSON per line
- suitable for stream ingestion and replay tools
Per-run artifact bundle (results/.../runs/<runId>/) includes:
telemetry.jsonl(one row per generation with latent payload)events.jsonl(all events includingadaptive_action)metrics.csv(compact numeric series for quick import)summary.json(highlights and artifact pointers)report.html(static charted report)
Rotating File
File: configured logging.logFile
- line-oriented structured event records
- automatic size-based rotation
JDBC
Tables:
experimentsexperiment_paramsrunsrun_objectivesiterationscheckpointsevents
See Database Schema.
iterations.diagnostics_json contains:
populationSizeeliteSizemodelDiagnosticslatentTelemetryadaptiveActions
5) Recommended Analysis Patterns
Convergence trend
Use iterations.best_fitness over iteration index.
Stability and diversity
Use:
std_fitnessmetrics_json.diversitymetrics_json.entropymetrics_json.drift_*metrics_json.diversity_*diagnostics_json.latentTelemetry.metrics
Failure diagnosis
Use:
runs.statusruns.error_message- tail of
events.payload_json
Adaptive behavior diagnosis
Use:
events.event_type = 'adaptive_action'events.payload_json(trigger,actionType,reason,details)iterations.diagnostics_json.adaptiveActionsmetrics_json.adaptive_event_count
Parameter trace
Use flattened config:
experiment_params.param_pathexperiment_params.value_*
6) Example Queries
Top runs by best fitness:
SELECT run_id, status, best_fitness, runtime_millis
FROM runs
ORDER BY best_fitness DESC
LIMIT 20;
Iterations for one run:
SELECT iteration, evaluations, best_fitness, mean_fitness, std_fitness
FROM iterations
WHERE run_id = 'umda-onemax-v3'
ORDER BY iteration;
Adaptive events for one run:
SELECT created_at, event_type, payload_json
FROM events
WHERE run_id = 'latent-adaptive-showcase-onemax'
AND event_type = 'adaptive_action'
ORDER BY created_at;
Extract latent family and fixation ratio from diagnostics:
SELECT
iteration,
json_extract(diagnostics_json, '$.latentTelemetry.representationFamily') AS family,
json_extract(diagnostics_json, '$.latentTelemetry.metrics.binary_fixation_ratio') AS fixation_ratio
FROM iterations
WHERE run_id = 'latent-adaptive-showcase-onemax'
ORDER BY iteration;
Search configs containing maxDepth:
SELECT experiment_id, param_path, value_text, value_json
FROM experiment_params
WHERE param_path LIKE '%maxDepth%';
7) Report Generation Flow
ReportService query path:
- fetch
RunSummaryfrom repository - fetch iteration series
- render requested format generators
Current generators:
HtmlReportGeneratorLatexReportGenerator
8) Reproducibility Recommendations
- lock
masterSeed - persist DB + JSONL for auditability
- keep config snapshots in DB (
config_yaml,config_json) - use checkpoints for long-running or interruptible jobs
9) Caveats
- Advanced model families expose concrete diagnostics (dependency, covariance, entropy, gradient and rank-dependence metrics).
run_objectivescurrently stores final scalar-like metrics from the latest iteration payload.- Some heavy latent computations (for example dependency edges) are configurable; disable or reduce top-K/dimension caps for very high-dimensional runs.
10) Signal Interpretation Quick Guide
- rising
binary_fixation_ratiovery early: - model is committing quickly; consider enabling adaptive exploration boost
- near-zero
diversity_*+ flat best fitness: - likely stagnation; partial restart threshold is too weak or disabled
- repeated high
drift_*spikes: - model update is unstable; consider larger elite, smoothing, or reduced learning pressure
- real family low
real_sigma_meantoo early: - premature collapse in sampling distribution; use sigma/adaptive thresholds
For full metric semantics and YAML controls: - Latent Insights and Adaptive Control
Visual Summary
flowchart LR
A["EDAF"] --> B["metrics and results"]
B --> C["Configure"]
B --> D["Execute"]
B --> E["Inspect"]
E --> F["Iterate"]
Estimation of Distribution Algorithms Framework
Copyright (c) 2026 Dr. Karlo Knezevic
Licensed under the Apache License, Version 2.0.