hunk.code_window:     def info_string(self):
           num_connected_nodes = len(
               [node for node in self.ip_to_nodes.values() if node.in_cluster])
           num_pending_nodes = len(self.ip_to_nodes) - num_connected_nodes
           return f"""[t={self.virtual_time}]
       Connected nodes: {num_connected_nodes}
       Pending nodes: {num_pending_nodes}
       Remaining requests: {len(self.work_queue)}
           """
   SAMPLE_CLUSTER_CONFIG = copy.deepcopy(MULTI_WORKER_CLUSTER)
   SAMPLE_CLUSTER_CONFIG["min_workers"] = 0
  
hunk.labels: keep keep keep keep replace replace replace replace replace keep keep keep keep
hunk.after_edit:         return (f"[t={self.virtual_time}] "
                   f"Connected: {num_connected_nodes}, "
                   f"Pending: {num_pending_nodes}, "
                   f"Remaining: {len(self.work_queue)}")
  
hunk.file_path: python/ray/tests/test_autoscaling_policy.py
hunk.type: replace
file: # Runs on a single g3.16xl node
  # See https://github.com/ray-project/rl-experiments for results
  atari-ppo:
      env:
          grid_search:
              - BreakoutNoFrameskip-v4
              - BeamRiderNoFrameskip-v4
              - QbertNoFrameskip-v4
              - SpaceInvadersNoFrameskip-v4
      run: PPO
      config:
          # Works for both torch and tf.
          framework: tf
          lambda: 0.95
          kl_coeff: 0.5
          clip_rewards: True
          clip_param: 0.1
          vf_clip_param: 10.0
          entropy_coeff: 0.01
          train_batch_size: 5000
          rollout_fragment_length: 100
          sgd_minibatch_size: 500
          num_sgd_iter: 10
          num_workers: 10
          num_envs_per_worker: 5
          batch_mode: truncate_episodes
          observation_filter: NoFilter
          vf_share_layers: true
          num_gpus: 1
  