BoTorch MC Samplers¶
BoTorchMCSampler is a configuration wrapper around BoTorch’s Monte Carlo
samplers, used by Monte Carlo acquisition functions (qEI, qNEI, qUCB) to
approximate expectations over the posterior. It supports Sobol quasi-Monte Carlo
sampling ("sobol", recommended for better coverage) and independent sampling
("iid"), with a configurable sample count and optional seed for reproducibility.
It is not a search function: pass it to BoTorchAcquisition via the sampler
argument to control how acquisition values are estimated.
Monte Carlo samplers for BoTorch acquisition functions.
This module provides sampler configurations used by BoTorch acquisition functions to approximate expectations via Monte Carlo sampling.
- class alf_tools.optimizer.acquisition_functions.botorch_samplers.BoTorchMCSampler(sampler_type='sobol', num_samples=512, seed=None)[source]¶
Bases:
objectWrapper for BoTorch Monte Carlo samplers.
This class provides a unified interface to BoTorch’s MC samplers, which are used by acquisition functions to approximate expectations via Monte Carlo.
Different samplers offer different trade-offs: - Sobol QMC: Quasi-Monte Carlo with better coverage (recommended) - IID: Independent sampling (faster but less efficient)
The sampler is not a search function itself - it’s a configuration object that gets passed to BoTorch acquisition functions to control how they approximate the acquisition value.
Example
>>> from alf_tools.optimizer.acquisition_functions import BoTorchMCSampler >>> from alf_tools.optimizer.acquisition_functions import BoTorchAcquisition >>> >>> # Create Sobol QMC sampler >>> sampler = BoTorchMCSampler(sampler_type="sobol", num_samples=512) >>> >>> # Pass to acquisition function >>> acq_fn = BoTorchAcquisition( ... acquisition_type="qEI", ... sampler=sampler, ... bounds=[[0, 1], [0, 1]] ... )
- Parameters:
sampler_type (
Literal['sobol','iid']) – Type of sampler to use. Options: - “sobol”: Sobol QMC sampler (better coverage, recommended) - “iid”: Independent sampling (faster)num_samples (
int) – Number of MC samples to draw. More samples = more accurate but slower. Typical values: 256-512 for Sobol, 1024+ for IID.seed (
int|None) – Random seed for reproducibility. If None, uses random seed.
- Raises:
ValueError – If sampler_type is not ‘sobol’ or ‘iid’, or if num_samples is not positive.
- get_sampler()[source]¶
Create and return the configured BoTorch sampler.
- Returns:
A BoTorch sampler instance (SobolQMCNormalSampler or IIDNormalSampler).
- Raises:
ValueError – If sampler_type is unknown.
Example
>>> sampler_config = BoTorchMCSampler("sobol", 512) >>> sampler = sampler_config.get_sampler() >>> # Use with BoTorch acquisition function