pub struct ChebyshevScalarization<M> {
pub objectives: M,
pub sharpness: f64,
pub ideal: Vec<f64>,
pub weight: Option<Vec<f64>>,
}Expand description
The Chebyshev (weighted-max) scalarization likelihood with a latent weight vector:
w ~ Uniform(simplex)
π_β(x, w) ∝ p(x) · exp(−β · s · max_i w_i · (f_i(x) − z_i))where z is the ideal point (a reference component-wise ≤ the
objective values of interest, e.g. per-objective minima or a slightly
optimistic estimate). Minimizing the weighted Chebyshev norm over x
reaches every weakly Pareto-optimal point as w varies over the simplex
(Miettinen 1999) — in particular the non-convex front regions where a
weighted sum’s interior stationary point is a maximum and all its mass
collapses onto the front’s endpoints. Use this when the front may be
non-convex; use ParetoScalarization when it is known convex (the
weighted sum is smoother).
Fields§
§objectives: MThe multi-objective fitness (objectives minimized).
sharpness: f64Sharpness of the scalarized likelihood (see ParetoScalarization).
ideal: Vec<f64>The ideal/reference point z (one entry per objective).
weight: Option<Vec<f64>>None: the weight is a latent site (subject to the marginal-tilt
caveat in the module docs). Some(w): a fixed weight — the
posterior concentrates on that weight’s own front point, which is the
mode to use for sweeping the front uniformly.
Implementations§
Source§impl<M> ChebyshevScalarization<M>
impl<M> ChebyshevScalarization<M>
Sourcepub fn new(objectives: M, sharpness: f64, ideal: Vec<f64>) -> Self
pub fn new(objectives: M, sharpness: f64, ideal: Vec<f64>) -> Self
Create a Chebyshev-scalarization likelihood with a latent weight.
Sourcepub fn with_weight(self, weight: Vec<f64>) -> Self
pub fn with_weight(self, weight: Vec<f64>) -> Self
Fix the scalarization weight (front-sweeping mode): the posterior targets this weight’s own scalarized optimum — reaching interior points of non-convex fronts that no weighted sum can select.
Trait Implementations§
Source§impl<M: Clone> Clone for ChebyshevScalarization<M>
impl<M: Clone> Clone for ChebyshevScalarization<M>
Source§fn clone(&self) -> ChebyshevScalarization<M>
fn clone(&self) -> ChebyshevScalarization<M>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<G, M> GenomeLikelihood<G> for ChebyshevScalarization<M>
impl<G, M> GenomeLikelihood<G> for ChebyshevScalarization<M>
Auto Trait Implementations§
impl<M> Freeze for ChebyshevScalarization<M>where
M: Freeze,
impl<M> RefUnwindSafe for ChebyshevScalarization<M>where
M: RefUnwindSafe,
impl<M> Send for ChebyshevScalarization<M>where
M: Send,
impl<M> Sync for ChebyshevScalarization<M>where
M: Sync,
impl<M> Unpin for ChebyshevScalarization<M>where
M: Unpin,
impl<M> UnsafeUnpin for ChebyshevScalarization<M>where
M: UnsafeUnpin,
impl<M> UnwindSafe for ChebyshevScalarization<M>where
M: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.