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 kernelsacquisition– 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.