class_docstr: A simple exponential schedule which decreases or increases over time from an initial to a final value
docstr: :param initial_value: the initial value
  :param final_value: the final value
  :param decay_coefficient: the exponential decay coefficient
docstr_tok: [":","param","initial_value",":","the","initial","value",":","param","final_value",":","the","final","value",":","param","decay_coefficient",":","the","exponential","decay","coefficient"]
code: def __init__(
      self,
      initial_value: float,
      final_value: float,
      decay_coefficient: float,
  ):
      """
      :param initial_value: the initial value
      :param final_value: the final value
      :param decay_coefficient: the exponential decay coefficient
      """
      super().__init__(initial_value)
      self.initial_value = initial_value
      self.final_value = final_value
      self.decay_coefficient = decay_coefficient
      self.current_step = 0
      self.current_value = self.initial_value
      if decay_coefficient < 1 and final_value > initial_value:
          raise ValueError(
              "The final value should be lower than the initial value when the decay coefficient < 1"
          )
      if decay_coefficient > 1 and initial_value > final_value:
          raise ValueError(
              "The final value should be higher than the initial value when the decay coefficient > 1"
          )
  
imports: from typing import List, Tuple
  import numpy
  from rl_coach.core_types import EnvironmentSteps
label_desc: Use image node_id 1 to create a new ExponentialSchedule object from inherited base classes: Schedule with example: obj = ExponentialSchedule(initial_value, final_value, decay_coefficient)