class_docstr: An exploration strategy based on the Ornstein-Uhlenbeck process.
  
  The process is governed by the following stochastic differential equation.
  
  .. math::
     dx_t = -\theta(\mu - x_t)dt + \sigma \sqrt{dt} \mathcal{N}(\mathbb{0}, \mathbb{1})  # noqa: E501
  
  Args:
      env_spec (EnvSpec): Environment to explore.
      policy (garage.Policy): Policy to wrap.
      mu (float): :math:`\mu` parameter of this OU process. This is the drift
          component.
      sigma (float): :math:`\sigma > 0` parameter of this OU process. This is
          the coefficient for the Wiener process component. Must be greater
          than zero.
      theta (float): :math:`\theta > 0` parameter of this OU process. Must be
          greater than zero.
      dt (float): Time-step quantum :math:`dt > 0` of this OU process. Must
          be greater than zero.
      x0 (float): Initial state :math:`x_0` of this OU process.
code: def __init__(
      self,
      env_spec,
      policy,
      *,
      mu=0,
      sigma=0.3,
      theta=0.15,
      dt=1e-2,
      x0=None,
  ):
      super().__init__(policy)
      self._env_spec = env_spec
      self._action_space = env_spec.action_space
      self._action_dim = self._action_space.flat_dim
      self._mu = mu
      self._sigma = sigma
      self._theta = theta
      self._dt = dt
      self._x0 = (
          x0
          if x0 is not None
          else self._mu * np.zeros(self._action_dim)
      )
      self._state = self._x0
  
file_path: garage/src/garage/np/exploration_policies/add_ornstein_uhlenbeck_noise.py
imports: import numpy
  from garage.np.exploration_policies.exploration_policy import ExplorationPolicy
label_desc: Use image node_id 1 to create a new AddOrnsteinUhlenbeckNoise object from inherited base classes: ExplorationPolicy with example: obj = AddOrnsteinUhlenbeckNoise(env_spec, policy)