Disciplines · Compliance

Optimizer Card — nsga-ii v1.0.0

crowding-distance multi-objective evolutionary search.

9sections3 minread

On this page

1. Identity#

  • Optimizer name: nsga-ii
  • Algorithm family: NSGA-II (Deb et al. 2002) — non-dominated sorting + crowding-distance multi-objective evolutionary search.
  • Implementation source: libs/nous/agreement-search/src/nsga-ii.ts plus shared GA primitives in ga-operators.ts.
  • Intended use: approximating the Pareto frontier when parties or mediators must see genuinely different agreement families (60/40 vs 40/60, early-payout vs long-term royalty, restorative vs restitutive). Used by the workbench frontier view (§179.4.3.1).

2. Scoring rule#

  • Utility aggregation: none — multi-objective. One objective per party by default (maximize each party's mean utility minus BATNA); callers may pass { id, direction } objectives to add fairness-metric or domain objectives.
  • Fairness metrics reported: caller-selected; full fairness-metrics.ts set attaches to the run summary.
  • Handling of hard constraints: filtered by filterCandidates before the candidate enters the population.
  • Handling of uncertainty: objectives may consume posterior mean, LCB, or Thompson-sampled draws; the kernel is agnostic and uses whatever the caller's evaluate returns.

3. Inputs#

  • Candidate space: same as nash-genetic — sandboxed clause-mutator DSL; same DEFAULT_ENABLED_MUTATORS.
  • Initial population / seeds: §179.4.1.1 sources.
  • Time / iteration budget: generations × population size; tournament selection on (rank, crowding) is binary by default.
  • Randomness: seeded mulberry32.

4. Outputs#

  • Accepted candidate contract: the entire final non-dominated front F_1 plus dominated fronts F_2, F_3, ..., each annotated with rank and crowding distance.
  • Pareto-frontier diagnostics: rank histogram, per-front crowding distribution, dominated/dominating counts. The workbench renders these as the diversity panel (§179.4.3.1).
  • Uncertainty propagation: every front member carries the same posterior detail nash-genetic emits.

5. Evaluation#

Metric Value Evaluator card Date
Pareto-front coverage hypervolume vs Nash-GA single survivor baseline-benchmark-gate 2026-04-25
strictly higher (multi-objective)
Diversity preservation crowding distance preserved by n/a — nsga-ii.test.ts 2026-04-25
(µ + λ) selection
Fairness (Nash / KS / max-min) reported per front member; gate runs fairness-suite 2026-04-25
against §179.10.6 baseline
Regret vs oracle bounded by acquisition objectives baseline-benchmark-gate 2026-04-25
Specification-gaming resistance spec-gaming-audit.ts runs on every fairness-suite 2026-04-25
front member
Runtime (typical) seconds for ~50 clauses, 100 n/a — deterministic synchronous kernel 2026-04-25
population, 50 generations
Cost per run $0 once preference fits cached n/a — orchestrator scoring-cost trace 2026-04-25

6. Known limitations#

  • Crowding distance assumes objectives are roughly normalized; large scale mismatches between objectives degrade diversity preservation.
  • (µ + λ) selection can still mode-collapse in pathological landscapes; pair with MAP-Elites if behavioural diversity is required.
  • Mutation rate hyperparameters are caller-supplied; misconfigured rates can stall exploration.

7. Guardrails#

  • Candidate safety gate: filterCandidates on every child.
  • Clause static validation: §179.2.3.4 static validation inside filterCandidates.
  • Redline separation: hard constraints filtered before the population.
  • Pareto-coercion audit: the workbench rendering layer (pareto-explanations.ts) cannot reorder fronts to manipulate party perception; the rendering is from the kernel's record.

8. References#

  • libs/nous/agreement-search/src/nsga-ii.ts
  • Deb, Pratap, Agarwal, Meyarivan (2002), "A fast and elitist multiobjective genetic algorithm: NSGA-II".
  • docs/research/bibliography.md §pareto-frontier