docstr: Test whether lr_schedule will anneal lr to 0
docstr_tok: ["Test","whether","lr_schedule","will","anneal","lr","to","0"]
code: def test_ddppo_schedule(self):
      """Test whether lr_schedule will anneal lr to 0"""
      config = DDPPOConfig()
      config.resources(num_gpus_per_worker=0)
      config.training(lr_schedule=[[0, config.lr], [1000, 0.0]])
  
      num_iterations = 10
  
      for _ in framework_iterator(config, "torch"):
          algo = config.build(env="CartPole-v1")
          lr = -100.0
          for _ in range(num_iterations):
              result = algo.train()
              if result["info"][LEARNER_INFO]:
                  lr = result["info"][LEARNER_INFO][DEFAULT_POLICY_ID][
                      LEARNER_STATS_KEY
                  ]["cur_lr"]
          algo.stop()
          assert lr == 0.0, "lr should anneal to 0.0"
  
file_path: ray/rllib_contrib/ddppo/tests/test_ddppo.py
imports: import unittest
  import pytest
  from rllib_ddppo.ddppo import DDPPOConfig
  import ray
  from ray.rllib.policy.sample_batch import DEFAULT_POLICY_ID
  from ray.rllib.utils.metrics.learner_info import LEARNER_INFO, LEARNER_STATS_KEY
  from ray.rllib.utils.test_utils import check, check_compute_single_action, check_train_results, framework_iterator
label_desc: Use image node_id 4 for calling the TestDDPPO obj's underlying member method code with example usage: obj.test_ddppo_schedule() without return types