pub struct AdaptiveTuner<A: Float> { /* private fields */ }Expand description
Adaptive tuner for dynamic optimization
Implementations§
Source§impl<A: Float + Send + Sync> AdaptiveTuner<A>
impl<A: Float + Send + Sync> AdaptiveTuner<A>
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new adaptive tuner.
The default strategy is greedy hill climbing, which needs no search-space
budget beyond the parameters themselves; register those with
AdaptiveTuner::add_parameter before calling AdaptiveTuner::tune.
Sourcepub fn random_seed(&self) -> u64
pub fn random_seed(&self) -> u64
Seed the stochastic searches draw from.
Sourcepub fn set_random_seed(&mut self, seed: u64)
pub fn set_random_seed(&mut self, seed: u64)
Set the seed the stochastic searches draw from.
Two AdaptiveTuner::tune calls with the same seed, search space and
evaluator produce the same sequence of candidates.
Sourcepub fn performance_target(&self) -> A
pub fn performance_target(&self) -> A
Performance the search stops at once reached.
Sourcepub fn set_performance_target(&mut self, target: A)
pub fn set_performance_target(&mut self, target: A)
Set the performance target.
Sourcepub fn strategy(&self) -> &TuningStrategy
pub fn strategy(&self) -> &TuningStrategy
Search strategy in use.
Sourcepub fn set_strategy(&mut self, strategy: TuningStrategy)
pub fn set_strategy(&mut self, strategy: TuningStrategy)
Select the search strategy.
Sourcepub fn add_parameter(&mut self, parameter: TunableParameter<A>) -> Result<()>
pub fn add_parameter(&mut self, parameter: TunableParameter<A>) -> Result<()>
Register a parameter the search may move.
Sourcepub fn parameters(&self) -> &[TunableParameter<A>]
pub fn parameters(&self) -> &[TunableParameter<A>]
Parameters the search may move.
Sourcepub fn current_params(&self) -> &HashMap<String, A>
pub fn current_params(&self) -> &HashMap<String, A>
Best candidate found so far.
Sourcepub fn best_performance(&self) -> Option<A>
pub fn best_performance(&self) -> Option<A>
Performance measured for AdaptiveTuner::current_params.
Sourcepub fn tuning_history(&self) -> &[TuningRecord<A>]
pub fn tuning_history(&self) -> &[TuningRecord<A>]
Every measurement taken so far, oldest first, bounded to the most recent
MAX_TUNING_HISTORY entries.
Sourcepub fn total_evaluations(&self) -> usize
pub fn total_evaluations(&self) -> usize
Total candidates evaluated over the tuner’s lifetime.
Sourcepub fn max_evaluations(&self) -> usize
pub fn max_evaluations(&self) -> usize
Evaluation budget for a single AdaptiveTuner::tune call.
Sourcepub fn set_max_evaluations(&mut self, max_evaluations: usize)
pub fn set_max_evaluations(&mut self, max_evaluations: usize)
Set the evaluation budget for a single AdaptiveTuner::tune call.
Sourcepub fn tune<F>(&mut self, evaluate: F) -> Result<TuningOutcome<A>>
pub fn tune<F>(&mut self, evaluate: F) -> Result<TuningOutcome<A>>
Run the search behind the configured TuningStrategy.
evaluate measures one candidate parameter set; it is called at most
AdaptiveTuner::max_evaluations times. The search maximizes
TuningObservation::performance and stops early once a candidate
reaches AdaptiveTuner::performance_target.
The previous best candidate is used as the starting point for greedy search, but the recorded best performance is reset first: the objective a caller measures now (a different workload, a different platform) is not comparable with one measured before, and keeping the old number would silently veto every new measurement.
Sourcepub fn cheapest_candidate_meeting_target(&self) -> Option<&TuningRecord<A>>
pub fn cheapest_candidate_meeting_target(&self) -> Option<&TuningRecord<A>>
Best resource usage recorded among the candidates that met the performance target, if any.
Surfaces TuningRecord::resource_usage, which is otherwise only
reachable by walking the history: the cheapest candidate that still hits
the target is usually the one a caller wants to deploy.
Trait Implementations§
Auto Trait Implementations§
impl<A> Freeze for AdaptiveTuner<A>where
A: Freeze,
impl<A> RefUnwindSafe for AdaptiveTuner<A>where
A: RefUnwindSafe,
impl<A> Send for AdaptiveTuner<A>where
A: Send,
impl<A> Sync for AdaptiveTuner<A>where
A: Sync,
impl<A> Unpin for AdaptiveTuner<A>where
A: Unpin,
impl<A> UnsafeUnpin for AdaptiveTuner<A>where
A: UnsafeUnpin,
impl<A> UnwindSafe for AdaptiveTuner<A>where
A: 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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.