Algorithms and backends
Algorithms (internal)
- NSGA-II: continuous, permutation, binary, integer, mixed; supports archive, adaptive operators, HV early-stop.
result_modeaccepts onlynon_dominated(default) orpopulation.- External archive configuration (
.external_archive(...)) becomes the default result source unless you explicitly setresult_mode="population". - When archive is enabled, results still include
result["archive"]alongsideresult["population"]. - Supported external-archive prune policies are
crowding,hv,mc_hv,knn,maxmin, andref_dirs. hvuses exact hypervolume contributions in 2D and exact higher-dimensional contributions whenmoocoreis available;mc_hvkeeps the Monte Carlo approximation path.- NSGA-III: many-objective real/binary/integer; reference direction support. Matching
pop_sizeto the number of reference directions is recommended (with divisions p:comb(p + n_obj - 1, n_obj - 1)); mismatches emit a warning unless strict enforcement is enabled. - MOEA/D: real/binary/integer; aggregation methods (tchebycheff, weighted sum, pbi). Defaults align with jMetalPy (PBI aggregation, DE crossover CR=1.0/F=0.5, packaged weight vectors for n_obj > 2).
result_modeacceptsnon_dominated(default) orpopulation.- External archive configuration (
.external_archive(...)) becomes the default result source unless you explicitly setresult_mode="population". - SMS-EMOA: real/binary/integer; adaptive reference points.
result_modeacceptsnon_dominated(default) orpopulation.- External archive configuration (
.external_archive(...)) becomes the default result source unless you explicitly setresult_mode="population". - SPEA2: real/binary/integer with constraint handling.
- IBEA: epsilon or hypervolume indicator variants.
- SMPSO: real-coded, archive support.
- AGE-MOEA: adaptive geometry estimation for many-objective search.
result_modeacceptsnon_dominated(default) orpopulation.- External archive configuration (
.external_archive(...)) becomes the default result source unless you explicitly setresult_mode="population". - RVEA: reference-vector guided many-objective search.
result_modeacceptsnon_dominated(default) orpopulation.- External archive configuration (
.external_archive(...)) becomes the default result source unless you explicitly setresult_mode="population".
Optional baselines (install extras)
- PyMOO NSGA-II (real and permutation), jMetalPy NSGA-II (real and permutation), PyGMO NSGA-II.
- Enabled via
--include-externaland extrasresearch.
Backends
- NumPy (default): vectorized CPU kernels.
- Numba: JIT acceleration for supported kernels (set
VAMOS_USE_NUMBA_VARIATION=1for permutation/binary/integer variation). - MooCore: accelerated kernels via
moocore(installcomputeextra).
Backend capability matrix
| Backend | Status | Best use |
|---|---|---|
numpy |
Stable | Exact reference backend and deterministic default. |
numba |
Stable optional | Faster core kernels: mutation, tournament selection, and MOEA/D neighborhood updates. |
moocore |
Stable optional | Hypervolume and related quality-indicator acceleration. |
Probability shorthand
- Operator probabilities accept either a numeric value or the string literal
"1/n". "1/n"resolves to1.0 / n_varat runtime and is the recommended mutation default for many encodings.- Example:
NSGAIIConfig.builder().mutation("pm", prob="1/n", eta=20.0)
Comparative benchmarking
- Kernel-focused benchmarks:
python tools/benchmark_kernels.py --smoke --output artifacts/performance/kernel_smoke.json - VAMOS vs pymoo seeded comparisons:
python tools/benchmark_compare_pymoo.py --output artifacts/performance/pymoo_comparison.json --markdown artifacts/performance/pymoo_comparison.md
Live visualization
Enable --live-viz to stream Pareto fronts during runs (--live-viz-interval, --live-viz-max-points). Saves a live_pareto.png at run end.