Enum Searcher
pub enum Searcher {
Random,
Sobol,
Tpe,
Cmaes,
IsotropicEs,
}Expand description
Which searcher a run drives.
The three from the sampler-quality gate (SamplerKind) plus the two
CMA-ES-specific ones: the real [Cmaes] and the covariance-free ablation
(IsotropicEs) its regression sentinel measures against.
Sobol, TPE and CMA-ES run their earlier defaults (each promoted
setting’s with_*(false): sorted-name QMC, univariate TPE, and CMA-ES
without Optuna initialization). Those are the configurations the oracle’s
measured table and floors were taken on, and the ones the rotation argument
needs: the default TPE is multivariate, so it can represent a rotated
valley, and the ablation mirrors the earlier CMA-ES initialization.
Variants§
Random
Uniform independent sampling — the baseline, and axis-aligned by definition.
Sobol
The Sobol low-discrepancy sequence — space-filling, and also axis-aligned.
Tpe
The univariate Tree-structured Parzen Estimator (the earlier default, every promoted setting off): the strong learning baseline, whose densities are per-dimension, so it has no representation of a rotated valley.
Cmaes
The real CMA-ES, without Optuna initialization (the earlier default).
IsotropicEs
CMA-ES with the covariance update deleted (C ≡ I) — the sentinel.
Implementations§
§impl Searcher
impl Searcher
pub const fn models_dimensions_independently(self) -> bool
pub const fn models_dimensions_independently(self) -> bool
Whether this searcher models the dimensions independently — i.e. whether its search distribution has no off-diagonal terms.
This is the property the rotated fixture attacks, and it is true for
four of the five: uniform random and Sobol draw each coordinate on its
own, TPE fits a 1-D Parzen density per dimension, and the ablation’s
covariance is the identity by construction. Only [Cmaes] can represent a
valley that runs at an angle to the axes.
Note the ablation is isotropic, not literally axis-preferring — a spherical distribution has no favourite direction at all. What it shares with the other three is the thing that matters here: no way to encode a correlation between two parameters.
Trait Implementations§
impl Copy for Searcher
impl Eq for Searcher
impl StructuralPartialEq for Searcher
Auto Trait Implementations§
impl Freeze for Searcher
impl RefUnwindSafe for Searcher
impl Send for Searcher
impl Sync for Searcher
impl Unpin for Searcher
impl UnsafeUnpin for Searcher
impl UnwindSafe for Searcher
Blanket Implementations§
impl<T> Boilerplate for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T, U> Imply<T> for U
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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