File indexing completed on 2026-04-28 07:12:52
0001 """Optimization configuration models."""
0002
0003 from typing import Dict, Optional, List, Any
0004 from pydantic import BaseModel, Field
0005 from .optimization_registry import get_algorithm_config_model
0006
0007
0008 class OptimizerConfig(BaseModel):
0009 """Configuration for the optimizer algorithm."""
0010 name: str
0011 type: str
0012
0013
0014 parameters: Dict[str, Any] = Field(default_factory=dict)
0015
0016
0017 class OptimizationConfiguration(BaseModel):
0018 """Complete optimization configuration."""
0019 name: str
0020 description: Optional[str] = ""
0021
0022
0023 optimizer: OptimizerConfig
0024
0025
0026 objectives: List[str] = Field(default_factory=list)
0027
0028
0029 constraints: List[str] = Field(default_factory=list)
0030
0031
0032 n_iterations: int = 100
0033 n_initial_samples: int = 10
0034 parallel_evaluations: int = 1
0035
0036 def parse_algorithm_params(self) -> Optional[BaseModel]:
0037 """
0038 If an algorithm-specific config model is registered under `optimizer.name`,
0039 parse and return a validated model instance for `optimizer.parameters`.
0040 Returns None if no model is registered.
0041 """
0042 Model = get_algorithm_config_model(self.optimizer.name)
0043 if Model:
0044 return Model(**(self.optimizer.parameters or {}))
0045 return None