Algorithms and backends¶
Choose a built-in algorithm through its public identifier in optimize(). Start with the NSGA-II guide for a complete executable example and an explanation of the result. The configuration pages below document exact interfaces; they are not performance rankings.
Algorithm catalogue¶
| Algorithm | Identifier | Teaching guide | Configuration reference |
|---|---|---|---|
| NSGA-II | nsgaii |
Run and understand NSGA-II | NSGAIIConfig |
| NSGA-III | nsgaiii |
Use the configuration reference | NSGAIIIConfig |
| MOEA/D | moead |
Use the configuration reference | MOEADConfig |
| SMS-EMOA | smsemoa |
Use the configuration reference | SMSEMOAConfig |
| SPEA2 | spea2 |
Use the configuration reference | SPEA2Config |
| IBEA | ibea |
Use the configuration reference | IBEAConfig |
| SMPSO | smpso |
Use the configuration reference | SMPSOConfig |
| AGE-MOEA | agemoea |
Use the configuration reference | AGEMOEAConfig |
| RVEA | rvea |
Use the configuration reference | RVEAConfig |
Additional teaching pages will be linked when their examples have been validated. To query the installed registry, use available_algorithms() from vamos.algorithms; see discovery. Compatibility commitments are defined in the stability policy.
Implementation notes¶
- 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.data["archive"]alongsideresult.data["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.