Source code for cann.engine.calibration_config

from __future__ import annotations

import ast
from dataclasses import dataclass
from typing import Any, Dict, Literal, Tuple

import numpy as np


[docs] @dataclass class CalibrationConfig: """ Settings for the calibration optimization process. Key fields include ``max_iter``, ``pop_size``, ``strategy``, and inference ``batch_size``. """ optimizer: Literal["de"] = "de" strategy: str = "best1bin" max_iter: int = 2000 pop_size: int = 10 tol: float = 0.01 mutation: float | Tuple[float, float] = (0.5, 1.0) recombination: float = 0.7 init: Literal["latinhypercube", "random"] = "latinhypercube" polish: bool = True batch_size: int = 32768 weight_atm: float = 1.0 seed: int | None = 42
[docs] @classmethod def from_dict(cls, cfg: dict) -> CalibrationConfig: """ Create a CalibrationConfig instance from a dictionary. Args: cfg (dict): Dictionary containing configuration parameters. Returns: CalibrationConfig: Parsed calibration configuration. Notes: If ``mutation`` is provided as a string (e.g. from YAML), it is parsed via :func:`ast.literal_eval` when possible. """ if "mutation" in cfg: mutation = cfg["mutation"] if isinstance(mutation, str): try: mutation = ast.literal_eval(mutation) except (ValueError, SyntaxError): pass if isinstance(mutation, list): mutation = tuple(mutation) cfg["mutation"] = mutation return cls(**cfg)
[docs] @dataclass class CalibrationResult: """ Result of the calibration optimization process after optimization. Fields include ``optimal_parameters``, ``final_loss``, convergence diagnostics, and optional optimizer diagnostics. """ optimal_parameters: np.ndarray final_loss: float num_iterations: int num_function_evals: int runtime_seconds: float converged: bool diagnostics: Dict[str, Any]