Bases: BaseModel
Orchestrates parameter space search.
Drives the optimizer suggest/observe loop, delegating evaluation
to the Evaluator which bridges to gds-sim.
Source code in packages/gds-psuu/gds_psuu/sweep.py
| class Sweep(BaseModel):
"""Orchestrates parameter space search.
Drives the optimizer suggest/observe loop, delegating evaluation
to the Evaluator which bridges to gds-sim.
"""
model_config = ConfigDict(arbitrary_types_allowed=True, frozen=True)
model: Model
space: ParameterSpace
kpis: list[KPI]
optimizer: Optimizer
objective: Objective | None = None
timesteps: int = 100
runs: int = 1
def run(self) -> SweepResults:
"""Execute the sweep and return results."""
kpi_names = [k.name for k in self.kpis]
self.optimizer.setup(self.space, kpi_names)
evaluator = Evaluator(
base_model=self.model,
kpis=list(self.kpis),
timesteps=self.timesteps,
runs=self.runs,
)
evaluations: list[EvaluationResult] = []
while not self.optimizer.is_exhausted():
params = self.optimizer.suggest()
result = evaluator.evaluate(params)
self.optimizer.observe(params, result.scores)
evaluations.append(result)
return SweepResults(
evaluations=evaluations,
kpi_names=kpi_names,
optimizer_name=type(self.optimizer).__name__,
)
|
run()
Execute the sweep and return results.
Source code in packages/gds-psuu/gds_psuu/sweep.py
| def run(self) -> SweepResults:
"""Execute the sweep and return results."""
kpi_names = [k.name for k in self.kpis]
self.optimizer.setup(self.space, kpi_names)
evaluator = Evaluator(
base_model=self.model,
kpis=list(self.kpis),
timesteps=self.timesteps,
runs=self.runs,
)
evaluations: list[EvaluationResult] = []
while not self.optimizer.is_exhausted():
params = self.optimizer.suggest()
result = evaluator.evaluate(params)
self.optimizer.observe(params, result.scores)
evaluations.append(result)
return SweepResults(
evaluations=evaluations,
kpi_names=kpi_names,
optimizer_name=type(self.optimizer).__name__,
)
|