class_docstr: A Runner for evaluation Botorch BaseTestProblems.
  Given a trial the Runner will evaluate the BaseTestProblem.forward method for each
  arm in the trial, as well as return some metadata about the underlying Botorch
  problem such as the noise_std. We compute the full result on the Runner (as opposed
  to the Metric as is typical in synthetic test problems) because the BoTorch problem
  computes all metrics in one stacked tensor in the MOO case, and we wish to avoid
  recomputation per metric.
class_docstr_tok: ["A","Runner","for","evaluation","Botorch","BaseTestProblems",".","Given","a","trial","the","Runner","will","evaluate","the","BaseTestProblem.forward","method","for","each","arm","in","the","trial",",","as","well","as","return","some","metadata","about","the","underlying","Botorch","problem","such","as","the","noise_std",".","We","compute","the","full","result","on","the","Runner","(","as","opposed","to","the","Metric","as","is","typical","in","synthetic","test","problems",")","because","the","BoTorch","problem","computes","all","metrics","in","one","stacked","tensor","in","the","MOO","case",",","and","we","wish","to","avoid","recomputation","per","metric","."]
docstr: Initialize the test problem runner.
  
  Args:
      test_problem_class: The BoTorch test problem class.
      test_problem_kwargs: The keyword arguments used for initializing the
          test problem.
      modified_bounds: The bounds that are used by the Ax search space
          while optimizing the problem. If different from the bounds of the
          test problem, we project the parameters into the test problem
          bounds before evaluating the test problem.
          For example, if the test problem is defined on [0, 1] but the Ax
          search space is integers in [0, 10], an Ax parameter value of
          5 will correspond to 0.5 while evaluating the test problem.
          If modified bounds are not provided, the test problem will be
          evaluated using the raw parameter values.
docstr_tok: ["Initialize","the","test","problem","runner",".","Args",":","test_problem_class",":","The","BoTorch","test","problem","class",".","test_problem_kwargs",":","The","keyword","arguments","used","for","initializing","the","test","problem",".","modified_bounds",":","The","bounds","that","are","used","by","the","Ax","search","space","while","optimizing","the","problem",".","If","different","from","the","bounds","of","the","test","problem",",","we","project","the","parameters","into","the","test","problem","bounds","before","evaluating","the","test","problem",".","For","example",",","if","the","test","problem","is","defined","on","[","0",",","1","]","but","the","Ax","search","space","is","integers","in","[","0",",","10","]",",","an","Ax","parameter","value","of","5","will","correspond","to","0.5","while","evaluating","the","test","problem",".","If","modified","bounds","are","not","provided",",","the","test","problem","will","be","evaluated","using","the","raw","parameter","values","."]
code: def __init__(
      self,
      test_problem_class: Type[BaseTestProblem],
      test_problem_kwargs: Dict[str, Any],
      modified_bounds: Optional[List[Tuple[float, float]]] = None,
  ) -> None:
      """Initialize the test problem runner.
  
      Args:
          test_problem_class: The BoTorch test problem class.
          test_problem_kwargs: The keyword arguments used for initializing the
              test problem.
          modified_bounds: The bounds that are used by the Ax search space
              while optimizing the problem. If different from the bounds of the
              test problem, we project the parameters into the test problem
              bounds before evaluating the test problem.
              For example, if the test problem is defined on [0, 1] but the Ax
              search space is integers in [0, 10], an Ax parameter value of
              5 will correspond to 0.5 while evaluating the test problem.
              If modified bounds are not provided, the test problem will be
              evaluated using the raw parameter values.
      """
  
      self._test_problem_class = test_problem_class
      self._test_problem_kwargs = test_problem_kwargs
  
      # pyre-fixme [45]: Invalid class instantiation
      self.test_problem = test_problem_class(**test_problem_kwargs).to(
          dtype=torch.double
      )
      self._is_constrained = isinstance(
          self.test_problem, ConstrainedBaseTestProblem
      )
      self._modified_bounds = modified_bounds
  
imports: import importlib
  from typing import Any, Dict, Iterable, List, Optional, Set, Tuple, Type
  import torch
  from ax.core.base_trial import BaseTrial, TrialStatus
  from ax.core.runner import Runner
  from ax.utils.common.base import Base
  from ax.utils.common.equality import equality_typechecker
  from ax.utils.common.serialization import TClassDecoderRegistry, TDecoderRegistry
  from ax.utils.common.typeutils import checked_cast
  from botorch.test_functions.base import BaseTestProblem, ConstrainedBaseTestProblem
  from botorch.utils.transforms import normalize, unnormalize
  from torch import Tensor
label_desc: Use image node_id 1 to create a new BotorchTestProblemRunner object from inherited base classes: Runner with example: obj = BotorchTestProblemRunner(test_problem_class, test_problem_kwargs, modified_bounds)