Experiment blocks: stopping + external archive¶
Experimental observation and stopping hooks
These experiment-spec hooks are Experimental. They record traces inside a canonical run artifact, but their observation behavior is not an additional stable algorithm API. See Stability and versioning.
Use these blocks within a CLI experiment configuration. A complete NSGA-II/ZDT1 configuration shows both together. Start with two-objective, unconstrained runs: the hook observes objective vectors and does not independently enforce feasibility.
stopping.hv_convergence¶
Enable HV-based convergence stopping driven by a hypervolume trace sampled during the run.
Configuration fragment:
stopping:
hv_convergence:
enabled: true
every_k: 200
window: 10
patience: 5
epsilon: 1e-4
epsilon_mode: rel # abs|rel
statistic: median # mean|median|min
min_points: 25
confidence: null # e.g. 0.95 to enable bootstrap CI
bootstrap_samples: 300
ref_point: [2.0, 2.0] # must match n_obj (or use "auto")
Canonical record:
manifest.jsonoutcome metrics underhooks.stopping, including the bounded trace
Notes:
- This hook computes HV for exactly two objectives. For more objectives it records an unavailable-HV reason and cannot apply HV-convergence stopping; installing another backend does not change this hook's dimensionality guard.
ref_point: "auto"derives a reference point from the currently observed set. Use an explicit fixed reference point for an interpretable convergence trace and comparisons across runs. A changing reference point changes the metric.- The trace uses the hook archive when enabled, otherwise the observed objective
vectors. Sampling occurs at generation/checkpoint boundaries;
every_kis a sampling interval, not a request for extra objective evaluations.
archive.external¶
Enable an objective-space observation archive with explicit pruning
policies. This hook archive is separate from an algorithm's result archive;
enabling it does not change which decisions or objectives result.X and
result.F return.
Configuration fragment:
archive:
external:
enabled: true
capacity: 200
truncate_size: 200
pruning: crowding # crowding|hv|mc_hv|knn|maxmin|ref_dirs
hv_ref_point: null # optional; required for hv-based policies
rng_seed: 0
objective_tolerance: 1.0e-10
deduplicate_in: objective # objective|decision|both
decision_tolerance: 1.0e-32
Canonical record:
manifest.jsonoutcome metrics underhooks.archive, including the bounded trace
Notes:
- Set a finite
capacityexplicitly; the hook parser defaults to 200. It does not inherit population size from a tuning space. - The hook stores objective vectors, not a decision-aligned result archive.
Use
deduplicate_in: objectivefor this observation workflow. pruning: hvuses exact HV contributions in 2D and, whenmoocoreis installed, exact higher-dimensional contributions.mc_hvuses a Monte Carlo estimate. Archive pruning support does not remove the two-objective restriction of the convergence monitor.- For an algorithm result archive, use its public configuration builder and
inspect the resolved
result_mode; see Algorithms and backends. Since VAMOS 1.0.1, the SMPSO search leaders and optional external result archive are separate, and explicitpopulationmode returns the final swarm. See the changes since 1.0.0. - Since VAMOS 1.0.1, the tuning CLI excludes result-archive controls from its ordinary search and scores the feasible non-dominated final population. See Tuning version differences.
Reproducibility¶
Runs should be launched with fixed seeds and fixed budgets. Early stopping changes executed evaluations, but the run still reports the original max budget in the resolved spec. Use the stopping payload and trace in manifest outcome metrics for analysis.