quantrs2_anneal/bayesian_hyperopt/
acquisition.rs

1//! Acquisition Function Configuration Types
2
3/// Acquisition function configuration
4#[derive(Debug, Clone)]
5pub struct AcquisitionConfig {
6    /// Type of acquisition function
7    pub function_type: AcquisitionFunctionType,
8    /// Exploration-exploitation balance parameter
9    pub exploration_factor: f64,
10    /// Number of random restarts for acquisition optimization
11    pub num_restarts: usize,
12    /// Batch acquisition strategy
13    pub batch_strategy: BatchAcquisitionStrategy,
14    /// Acquisition function optimization method
15    pub optimization_method: AcquisitionOptimizationMethod,
16}
17
18impl Default for AcquisitionConfig {
19    fn default() -> Self {
20        Self {
21            function_type: AcquisitionFunctionType::ExpectedImprovement,
22            exploration_factor: 0.1,
23            num_restarts: 10,
24            batch_strategy: BatchAcquisitionStrategy::LocalPenalization,
25            optimization_method: AcquisitionOptimizationMethod::LBFGS,
26        }
27    }
28}
29
30/// Types of acquisition functions
31#[derive(Debug, Clone, PartialEq, Eq)]
32pub enum AcquisitionFunctionType {
33    /// Expected Improvement
34    ExpectedImprovement,
35    /// Upper Confidence Bound
36    UpperConfidenceBound,
37    /// Probability of Improvement
38    ProbabilityOfImprovement,
39    /// Entropy Search
40    EntropySearch,
41    /// Knowledge Gradient
42    KnowledgeGradient,
43    /// Multi-objective Expected Hypervolume Improvement
44    ExpectedHypervolumeImprovement,
45    /// Thompson Sampling
46    ThompsonSampling,
47}
48
49/// Batch acquisition strategies
50#[derive(Debug, Clone, PartialEq, Eq)]
51pub enum BatchAcquisitionStrategy {
52    /// Local penalization method
53    LocalPenalization,
54    /// Constant liar strategy
55    ConstantLiar,
56    /// Kriging believer approach
57    KrigingBeliever,
58    /// Monte Carlo acquisition functions
59    MonteCarlo,
60}
61
62/// Acquisition function optimization methods
63#[derive(Debug, Clone, PartialEq, Eq)]
64pub enum AcquisitionOptimizationMethod {
65    /// Limited-memory BFGS
66    LBFGS,
67    /// Differential Evolution
68    DifferentialEvolution,
69    /// Particle Swarm Optimization
70    ParticleSwarm,
71    /// Random search
72    RandomSearch,
73    /// Gradient-free methods
74    GradientFree,
75}
76
77/// Acquisition function implementation
78#[derive(Debug, Clone)]
79pub struct AcquisitionFunction {
80    pub function_type: AcquisitionFunctionType,
81    pub exploration_factor: f64,
82}
83
84impl Default for AcquisitionFunction {
85    fn default() -> Self {
86        Self {
87            function_type: AcquisitionFunctionType::ExpectedImprovement,
88            exploration_factor: 0.1,
89        }
90    }
91}