Source code for smac.runhistory.dataclasses

from __future__ import annotations

from typing import Any

from dataclasses import dataclass, field

from ConfigSpace import Configuration

from smac.runhistory.enumerations import StatusType

__copyright__ = "Copyright 2022, automl.org"
__license__ = "3-clause BSD"


[docs]@dataclass(frozen=True) class InstanceSeedKey: """Key for instance and seed. Parameters ---------- instance : str | None, defaults to None seed : int | None, defaults to None """ instance: str | None = None seed: int | None = None
[docs]@dataclass(frozen=True) class InstanceSeedBudgetKey: """Key for instance, seed and budget. Parameters ---------- instance : str | None, defaults to None seed : int | None, defaults to None budget : float | None, defaults to None """ instance: str | None = None seed: int | None = None budget: float | None = None def __lt__(self, other: InstanceSeedBudgetKey) -> bool: if self.budget is not None and other.budget is not None: return self.budget < other.budget if self.instance is not None and other.instance is not None: return self.instance < other.instance if self.seed is not None and other.seed is not None: return self.seed < other.seed raise RuntimeError("Could not compare InstanceSeedBudgetKey.")
[docs]@dataclass(frozen=True) class TrialKey: """Key of a trial. Parameters ---------- config_id : int instance : str | None, defaults to None seed : int | None, defaults to None budget : float | None, defaults to None """ config_id: int instance: str | None = None seed: int | None = None budget: float | None = None
[docs]@dataclass(frozen=True) class TrialValue: """Values of a trial. Parameters ---------- cost : float | list[float] time : float, defaults to 0.0 status : StatusType, defaults to StatusType.SUCCESS starttime : float, defaults to 0.0 endtime : float, defaults to 0.0 additional_info : dict[str, Any], defaults to {} """ cost: float | list[float] time: float = 0.0 status: StatusType = StatusType.SUCCESS starttime: float = 0.0 endtime: float = 0.0 additional_info: dict[str, Any] = field(default_factory=dict)
[docs]@dataclass(frozen=True) class TrialInfo: """Information about a trial. Parameters ---------- config : Configuration instance : str | None, defaults to None seed : int | None, defaults to None budget : float | None, defaults to None source : int | None, defaults to 0 Source is used in the intensifier to indicate from which worker the trial was coming from. """ config: Configuration instance: str | None = None seed: int | None = None budget: float | None = None source: int = 0
[docs]@dataclass class TrajectoryItem: """Item of a trajectory.""" incumbent: Configuration | dict[str, Any] cost: float | list[float] budget: float | None walltime_used: float num_trial: int def __post_init__(self) -> None: # Transform configuration to dict if isinstance(self.incumbent, Configuration): self.incumbent = self.incumbent.get_dictionary()