class_docstr: Base class for SOOSurrogateBenchmarkProblem and MOOSurrogateBenchmarkProblem.
  
  Allows for lazy creation of objects needed to construct a `runner`,
  including a surrogate and datasets.
class_docstr_tok: ["Base","class","for","SOOSurrogateBenchmarkProblem","and","MOOSurrogateBenchmarkProblem",".","Allows","for","lazy","creation","of","objects","needed","to","construct","a","`","runner","`",",","including","a","surrogate","and","datasets","."]
code: def __init__(
      self,
      *,
      name: str,
      search_space: SearchSpace,
      optimization_config: OptimizationConfig,
      num_trials: int,
      infer_noise: bool,
      metric_names: List[str],
      get_surrogate_and_datasets: Optional[
          Callable[[], Tuple[Surrogate, List[SupervisedDataset]]]
      ] = None,
      tracking_metrics: Optional[List[Metric]] = None,
      _runner: Optional[Runner] = None,
  ) -> None:
      if get_surrogate_and_datasets is None and _runner is None:
          raise ValueError(
              "Either `get_surrogate_and_datasets` or `_runner` required."
          )
      self.name = name
      self.search_space = search_space
      self.optimization_config = optimization_config
      self.num_trials = num_trials
      self.infer_noise = infer_noise
      self.metric_names = metric_names
      self.get_surrogate_and_datasets = get_surrogate_and_datasets
      self.tracking_metrics: List[Metric] = (
          [] if tracking_metrics is None else tracking_metrics
      )
      self._runner = _runner
  
imports: from typing import Any, Callable, Dict, Iterable, List, Optional, Set, Tuple
  import pandas
  import torch
  from ax.benchmark.benchmark_problem import BenchmarkProblemBase
  from ax.core.base_trial import BaseTrial, TrialStatus
  from ax.core.data import Data
  from ax.core.metric import Metric, MetricFetchE, MetricFetchResult
  from ax.core.observation import ObservationFeatures
  from ax.core.optimization_config import MultiObjectiveOptimizationConfig, OptimizationConfig
  from ax.core.parameter import RangeParameter
  from ax.core.runner import Runner
  from ax.core.search_space import SearchSpace
  from ax.core.types import TParameterization
  from ax.modelbridge.transforms.int_to_float import IntToFloat
  from ax.modelbridge.transforms.log import Log
  from ax.models.torch.botorch_modular.surrogate import Surrogate
  from ax.utils.common.base import Base
  from ax.utils.common.equality import equality_typechecker
  from ax.utils.common.result import Err, Ok
  from ax.utils.common.serialization import TClassDecoderRegistry, TDecoderRegistry
  from ax.utils.common.typeutils import not_none
  from botorch.utils.datasets import SupervisedDataset
label_desc: Use image node_id 1 to create a new SurrogateBenchmarkProblemBase object from inherited base classes: Base, BenchmarkProblemBase with example: obj = SurrogateBenchmarkProblemBase()