| """Factory function to create optimizer backends.""" | |
| from physics_informed_bo.config import OptimizationConfig, OptimizerBackend | |
| from physics_informed_bo.optimizers.base_optimizer import BaseOptimizer | |
| from physics_informed_bo.optimizers.botorch_optimizer import BoTorchOptimizer | |
| from physics_informed_bo.optimizers.ax_optimizer import AXOptimizer | |
| from physics_informed_bo.optimizers.bofire_optimizer import BoFireOptimizer | |
| def create_optimizer(config: OptimizationConfig) -> BaseOptimizer: | |
| """Create an optimizer backend based on the configuration. | |
| Args: | |
| config: Optimization configuration specifying the backend. | |
| Returns: | |
| An initialized optimizer backend. | |
| """ | |
| if config.backend == OptimizerBackend.BOTORCH: | |
| return BoTorchOptimizer(config) | |
| elif config.backend == OptimizerBackend.AX: | |
| return AXOptimizer(config) | |
| elif config.backend == OptimizerBackend.BOFIRE: | |
| return BoFireOptimizer(config) | |
| else: | |
| raise ValueError(f"Unsupported backend: {config.backend}") | |