Skip to main content

Module bayesian

Module bayesian 

Source
Expand description

Bayesian Optimization module for scirs2-optimize.

Provides a comprehensive Bayesian optimization framework for black-box, expensive-to-evaluate objective functions. The approach uses a Gaussian Process surrogate to model the objective and acquisition functions to decide where to sample next.

§Architecture

+-----------------+     +-------------------+     +------------------+
|  GP Surrogate   |<--->| Acquisition Func  |<--->| Bayesian Optim   |
|  (gp.rs)        |     | (acquisition.rs)  |     | (optimizer.rs)   |
+-----------------+     +-------------------+     +------------------+
       ^                                                  |
       |                 +-------------------+            |
       +-----------------| Sampling Design   |<-----------+
                         | (sampling.rs)     |
                         +-------------------+

§Modules

  • gp – Gaussian Process surrogate with multiple kernels
  • acquisition – Acquisition functions (EI, PI, UCB, KG, Thompson, batch variants)
  • optimizer – Main optimizer loop (sequential, batch, constrained, multi-objective)
  • sampling – Initial design strategies (LHS, Sobol, Halton, random)

§Quick Start

use scirs2_optimize::bayesian::optimize;
use scirs2_core::ndarray::ArrayView1;

// Minimize a simple quadratic function
let result = optimize(
    |x: &ArrayView1<f64>| x[0].powi(2) + x[1].powi(2),
    &[(-5.0, 5.0), (-5.0, 5.0)],
    20,
    None,
).expect("optimization failed");

println!("Best x: {:?}", result.x_best);
println!("Best f: {:.6}", result.f_best);

§Advanced Usage

§Custom Kernel & Acquisition

use scirs2_optimize::bayesian::{
    BayesianOptimizer, BayesianOptimizerConfig,
    MaternKernel, MaternVariant,
    AcquisitionType, GpSurrogateConfig,
};
use scirs2_core::ndarray::ArrayView1;

let config = BayesianOptimizerConfig {
    acquisition: AcquisitionType::UCB { kappa: 2.5 },
    n_initial: 8,
    seed: Some(42),
    gp_config: GpSurrogateConfig {
        noise_variance: 1e-4,
        optimize_hyperparams: false,
        ..Default::default()
    },
    ..Default::default()
};

let kernel = Box::new(MaternKernel::new(MaternVariant::FiveHalves, 1.0, 1.0));
let mut opt = BayesianOptimizer::with_kernel(
    vec![(-5.0, 5.0), (-5.0, 5.0)],
    kernel,
    config,
).expect("create optimizer");

let result = opt.optimize(
    |x: &ArrayView1<f64>| x[0].powi(2) + x[1].powi(2),
    20,
).expect("optimization ok");

Re-exports§

pub use gp::GpSurrogate;
pub use gp::GpSurrogateConfig;
pub use gp::MaternKernel;
pub use gp::MaternVariant;
pub use gp::ProductKernel;
pub use gp::RationalQuadraticKernel;
pub use gp::RbfKernel;
pub use gp::SumKernel;
pub use gp::SurrogateKernel;
pub use acquisition::AcquisitionFn;
pub use acquisition::AcquisitionType;
pub use acquisition::BatchExpectedImprovement;
pub use acquisition::BatchUpperConfidenceBound;
pub use acquisition::ExpectedImprovement;
pub use acquisition::KnowledgeGradient;
pub use acquisition::ProbabilityOfImprovement;
pub use acquisition::ThompsonSampling;
pub use acquisition::UpperConfidenceBound;
pub use optimizer::optimize;
pub use optimizer::BayesianOptResult;
pub use optimizer::BayesianOptimizer;
pub use optimizer::BayesianOptimizerConfig;
pub use optimizer::Constraint;
pub use optimizer::Observation;
pub use sampling::generate_samples;
pub use sampling::SamplingConfig;
pub use sampling::SamplingStrategy;

Modules§

acquisition
Acquisition functions for Bayesian optimization.
gp
Gaussian Process surrogate model for Bayesian optimization.
optimizer
Bayesian Optimizer – the main driver for Bayesian optimization.
sampling
Sampling strategies for initial experimental design in Bayesian optimization.