Skip to main content

Module pareto

Module pareto 

Source
Expand description

Multi-objective optimization as Bayesian inference: the Pareto posterior

Classic multi-objective EC (NSGA-II) has no scalar target, so it cannot be a posterior sampler. The Bayesian counterpart puts the scalarization weight inside the model: with objectives f_1..f_k (minimized, per the MultiObjectiveFitness convention) and a uniform prior over the weight simplex,

    w ~ Uniform(simplex)          (stick-breaking Beta sites)
    π_β(x, w) ∝ p(x) · exp(−β · ⟨w, f(x)⟩)

the joint posterior spreads over front-adjacent configurations: each weight vector w selects a scalarized optimum on the front, and each particle’s trace carries its own w (at pareto#v{i} stick-breaking sites), telling you where on the front that particle lives — a posterior over front positions, with the usual inference dividends (uncertainty, evidence), which NSGA-II cannot express.

Marginal-tilt caveat (read this): in the latent-w model the w-marginal is not uniform — it is tilted by exp(−s·m(w)), where m(w) is the scalarized optimum’s value at w, so weights whose optima score better attract more mass, and high sharpness or heavy annealing concentrates the population near the best-scoring front regions (often the endpoints). The conditional x | w is what tracks the front. For uniform front coverage, sweep fixed weights (ChebyshevScalarization::with_weight) across a grid, or keep sharpness moderate and read positions off particle_weights.

ParetoScalarization uses weighted-sum scalarization, which recovers the convex part of the front; ChebyshevScalarization uses the weighted Chebyshev (weighted-max) norm, which reaches every (weakly) Pareto-optimal point — including non-convex front regions where every weighted-sum optimum collapses to the front’s endpoints.

Structs§

ChebyshevScalarization
The Chebyshev (weighted-max) scalarization likelihood with a latent weight vector:
ParetoScalarization
A scalarization likelihood with a latent weight vector: the Bayesian multi-objective target. See the module docs.

Functions§

particle_weights
Read a particle’s weight vector back off its trace (the stick-breaking sites), i.e. where on the front the particle lives. Returns None when the sites are absent (e.g. a prior-only trace).