code: def __init__(
      self,
      kind: str,
      dimension: int = 10,
      noise_kind: str = "GaussianNoise",
      noise_scale: float = 1,
  ) -> None:
      self.kind = kind
      self.param_dim = dimension
      self.noise_kind = noise_kind
      assert self.kind in OlympusSurface.SURFACE_KINDS
      assert self.noise_kind in [
          "GaussianNoise",
          "UniformNoise",
          "GammaNoise",
      ]
      self.noise_scale = noise_scale
      self.surface = partial(self._simulate_surface, noise=True)
      self.surface_without_noise = partial(
          self._simulate_surface, noise=False
      )
      parametrization = p.Array(shape=(dimension,))
      parametrization.function.deterministic = False
      super().__init__(self.surface, parametrization)
      self.shift = self.parametrization.random_state.normal(
          size=self.dimension
      )
  
file_path: nevergrad/nevergrad/functions/olympussurfaces/core.py
imports: import numpy
  from functools import partial
  from nevergrad.parametrization import parameter
  from ..base import ExperimentFunction
  import nevergrad
label_desc: Use image node_id 1 to create a new OlympusSurface object from inherited base classes: ExperimentFunction with example: obj = OlympusSurface(kind, dimension, noise_kind, noise_scale)