| """Global configuration for the Physics-Informed Bayesian Optimization platform."""
|
|
|
| from dataclasses import dataclass, field
|
| from enum import Enum
|
| from typing import Optional
|
|
|
|
|
| class OptimizerBackend(Enum):
|
| BOTORCH = "botorch"
|
| AX = "ax"
|
| BOFIRE = "bofire"
|
|
|
|
|
| class AcquisitionType(Enum):
|
| EXPECTED_IMPROVEMENT = "EI"
|
| UPPER_CONFIDENCE_BOUND = "UCB"
|
| PROBABILITY_OF_IMPROVEMENT = "PI"
|
| KNOWLEDGE_GRADIENT = "KG"
|
| NOISY_EXPECTED_IMPROVEMENT = "NEI"
|
| PHYSICS_INFORMED_EI = "PI_EI"
|
|
|
|
|
| @dataclass
|
| class OptimizationConfig:
|
| """Configuration for a Bayesian optimization run."""
|
|
|
|
|
| backend: OptimizerBackend = OptimizerBackend.BOTORCH
|
|
|
|
|
| acquisition_type: AcquisitionType = AcquisitionType.EXPECTED_IMPROVEMENT
|
|
|
|
|
| n_initial_samples: int = 10
|
| batch_size: int = 1
|
| max_iterations: int = 50
|
| seed: int = 42
|
|
|
|
|
| use_physics_mean: bool = True
|
| learn_noise: bool = True
|
| noise_variance: float = 0.01
|
|
|
|
|
| physics_model_weight: float = 1.0
|
| physics_constraint_penalty: float = 10.0
|
|
|
|
|
| use_multi_fidelity: bool = False
|
| fidelity_weights: Optional[dict] = None
|
|
|
|
|
| device: str = "cpu"
|
| dtype: str = "float64"
|
|
|
|
|
| @dataclass
|
| class SearchSpaceConfig:
|
| """Configuration for the search/parameter space."""
|
|
|
| normalize_inputs: bool = True
|
| standardize_outputs: bool = True
|
| input_transform: Optional[str] = None
|
| output_transform: Optional[str] = None
|
|
|