File indexing completed on 2026-08-12 08:24:56
0001 """Optimizer configuration models.
0002
0003 Defines the canonical top-level ``optimizer`` section used by full AID2E
0004 configuration files. Problem objectives and problem/design constraints live in
0005 the ``problem`` section; optimizer configuration is limited to backend
0006 selection and backend-specific parameters.
0007 """
0008
0009 from __future__ import annotations
0010
0011 from typing import Any, Dict, Optional
0012
0013 from pydantic import BaseModel, ConfigDict, Field
0014
0015 from .optimization_registry import get
0016
0017
0018 class OptimizerConfiguration(BaseModel):
0019 """Canonical optimizer section model."""
0020
0021 model_config = ConfigDict(extra="forbid")
0022
0023 name: str = Field(..., description="Optimizer/backend name, for example 'ax'.")
0024 type: str = Field(..., description="Optimizer family, for example 'bayesian'.")
0025 parameters: Dict[str, Any] = Field(
0026 default_factory=dict,
0027 description="Optimizer runtime parameters and backend-specific settings.",
0028 )
0029
0030 def parse_algorithm_params(self) -> Optional[BaseModel]:
0031 """Parse registered backend-specific parameters if a model exists."""
0032 model = get(self.name)
0033 if model:
0034 return model(**(self.parameters or {}))
0035 return None