class_docstr: Class to manage a scheduled (framework-dependent) tensor variable.
  
  Uses the PiecewiseSchedule (for maximum configuration flexibility)
docstr: Performs checking of a certain schedule configuration.
  
  The first entry in `value_or_schedule` (if it's not a fixed value) must have a
  timestep of 0.
  
  Args:
      fixed_value_or_schedule: A fixed, constant value (in case no schedule should
          be used) or a schedule configuration in the format of
          [[timestep, value], [timestep, value], ...]
          Intermediary timesteps will be assigned to linerarly interpolated
          values. A schedule config's first entry must
          start with timestep 0, i.e.: [[0, initial_value], [...]].
      setting_name: The property name of the schedule setting (within a config),
          e.g. `lr` or `entropy_coeff`.
      description: A full text description of the property that's being scheduled,
          e.g. `learning rate`.
  
  Raises:
      ValueError: In case, errors are found in the schedule's format.
docstr_tok: ["Performs","checking","of","a","certain","schedule","configuration",".","The","first","entry","in","`","value_or_schedule","`","(","if","it","'s","not","a","fixed","value",")","must","have","a","timestep","of","0",".","Args",":","fixed_value_or_schedule",":","A","fixed",",","constant","value","(","in","case","no","schedule","should","be","used",")","or","a","schedule","configuration","in","the","format","of","[","[","timestep",",","value","]",",","[","timestep",",","value","]",",","...","]","Intermediary","timesteps","will","be","assigned","to","linerarly","interpolated","values",".","A","schedule","config","'s","first","entry","must","start","with","timestep","0",",","i.e",".",":","[","[","0",",","initial_value","]",",","[","...","]","]",".","setting_name",":","The","property","name","of","the","schedule","setting","(","within","a","config",")",",","e.g",".","`","lr","`","or","`","entropy_coeff","`",".","description",":","A","full","text","description","of","the","property","that","'s","being","scheduled",",","e.g",".","`","learning","rate","`",".","Raises",":","ValueError",":","In","case",",","errors","are","found","in","the","schedule","'s","format","."]
code: def validate(
      *,
      fixed_value_or_schedule: LearningRateOrSchedule,
      setting_name: str,
      description: str,
  ) -> None:
      """Performs checking of a certain schedule configuration.
  
      The first entry in `value_or_schedule` (if it's not a fixed value) must have a
      timestep of 0.
  
      Args:
          fixed_value_or_schedule: A fixed, constant value (in case no schedule should
              be used) or a schedule configuration in the format of
              [[timestep, value], [timestep, value], ...]
              Intermediary timesteps will be assigned to linerarly interpolated
              values. A schedule config's first entry must
              start with timestep 0, i.e.: [[0, initial_value], [...]].
          setting_name: The property name of the schedule setting (within a config),
              e.g. `lr` or `entropy_coeff`.
          description: A full text description of the property that's being scheduled,
              e.g. `learning rate`.
  
      Raises:
          ValueError: In case, errors are found in the schedule's format.
      """
      if (
          isinstance(fixed_value_or_schedule, (int, float))
          or fixed_value_or_schedule is None
      ):
          return
  
      if not isinstance(fixed_value_or_schedule, (list, tuple)) or (
          len(fixed_value_or_schedule) < 2
      ):
          raise ValueError(
              f"Invalid `{setting_name}` ({fixed_value_or_schedule}) specified! "
              f"Must be a list of at least 2 tuples, each of the form "
              f"(`timestep`, `{description} to reach`), e.g. "
              "`[(0, 0.001), (1e6, 0.0001), (2e6, 0.00005)]`."
          )
      elif fixed_value_or_schedule[0][0] != 0:
          raise ValueError(
              f"When providing a `{setting_name}`, the first timestep must be 0 "
              f"and the corresponding lr value is the initial {description}! You "
              f"provided ts={fixed_value_or_schedule[0][0]} {description}="
              f"{fixed_value_or_schedule[0][1]}."
          )
  
file_path: ray/python/ray/rllib/utils/schedules/scheduler.py
imports: from typing import Optional
  from ray.rllib.utils.framework import try_import_tf, try_import_torch
  from ray.rllib.utils.schedules.piecewise_schedule import PiecewiseSchedule
  from ray.rllib.utils.typing import LearningRateOrSchedule, TensorType
label_desc: Use image node_id 2 for calling the Scheduler obj's underlying member method code with example usage: obj.validate() without return types