diff --git a/src/multi_objective.rs b/src/multi_objective.rs index a82b1ad..9b924f3 100644 --- a/src/multi_objective.rs +++ b/src/multi_objective.rs @@ -55,7 +55,7 @@ use crate::distribution::Distribution; use crate::param::ParamValue; use crate::parameter::{ParamId, Parameter}; use crate::pruner::NopPruner; -use crate::sampler::random::RandomSampler; +use crate::sampler::random::RandomMultiObjectiveSampler; use crate::sampler::{CompletedTrial, Sampler}; use crate::trial::{AttrValue, Trial}; use crate::types::{Direction, TrialState}; @@ -154,31 +154,6 @@ pub trait MultiObjectiveSampler: Send + Sync { ) -> ParamValue; } -// --------------------------------------------------------------------------- -// RandomMultiObjectiveSampler -// --------------------------------------------------------------------------- - -/// Default MO sampler that delegates to [`RandomSampler`]. -pub(crate) struct RandomMultiObjectiveSampler(RandomSampler); - -impl RandomMultiObjectiveSampler { - pub(crate) fn new() -> Self { - Self(RandomSampler::new()) - } -} - -impl MultiObjectiveSampler for RandomMultiObjectiveSampler { - fn sample( - &self, - distribution: &Distribution, - trial_id: u64, - _history: &[MultiObjectiveTrial], - _directions: &[Direction], - ) -> ParamValue { - self.0.sample(distribution, trial_id, &[]) - } -} - // --------------------------------------------------------------------------- // MoSamplerBridge — bridges MultiObjectiveSampler to Sampler trait // --------------------------------------------------------------------------- diff --git a/src/sampler/random.rs b/src/sampler/random.rs index 292fe4a..7dc31ef 100644 --- a/src/sampler/random.rs +++ b/src/sampler/random.rs @@ -30,9 +30,11 @@ use parking_lot::Mutex; use crate::distribution::Distribution; +use crate::multi_objective::{MultiObjectiveSampler, MultiObjectiveTrial}; use crate::param::ParamValue; use crate::rng_util; use crate::sampler::{CompletedTrial, Sampler}; +use crate::types::Direction; /// Uniform independent random sampler. /// @@ -79,6 +81,27 @@ impl RandomSampler { } } +/// Default multi-objective sampler that delegates to [`RandomSampler`]. +pub(crate) struct RandomMultiObjectiveSampler(RandomSampler); + +impl RandomMultiObjectiveSampler { + pub(crate) fn new() -> Self { + Self(RandomSampler::new()) + } +} + +impl MultiObjectiveSampler for RandomMultiObjectiveSampler { + fn sample( + &self, + distribution: &Distribution, + trial_id: u64, + _history: &[MultiObjectiveTrial], + _directions: &[Direction], + ) -> ParamValue { + self.0.sample(distribution, trial_id, &[]) + } +} + impl Default for RandomSampler { fn default() -> Self { Self::new()