code: def _exploit(self, trial_executor, trial, trial_to_clone):
          
  
          trial_state = self._trial_state[trial]
          new_state = self._trial_state[trial_to_clone]
          if not new_state.last_checkpoint:
              logger.info("[pbt]: no checkpoint for trial."
                          " Skip exploit for Trial {}".format(trial))
              return
          new_config = explore(trial_to_clone.config, self._hyperparam_mutations,
                               self._resample_probability,
                               self._custom_explore_fn)
          logger.info("[exploit] transferring weights from trial "
                      "{} (score {}) -> {} (score {})".format(
                          trial_to_clone, new_state.last_score, trial,
                          trial_state.last_score))
  
          if self._log_config:
              self._log_config_on_step(trial_state, new_state, trial,
                                       trial_to_clone, new_config)
  
          new_tag = make_experiment_tag(trial_state.orig_tag, new_config,
                                        self._hyperparam_mutations)
          reset_successful = trial_executor.reset_trial(trial, new_config,
                                                        new_tag)
          if reset_successful:
              trial_executor.restore(
                  trial, Checkpoint.from_object(new_state.last_checkpoint))
          else:
              trial_executor.stop_trial(trial, stop_logger=False)
              trial.config = new_config
              trial.experiment_tag = new_tag
              trial_executor.start_trial(
                  trial, Checkpoint.from_object(new_state.last_checkpoint))
  
          self._num_perturbations += 1
          # Transfer over the last perturbation time as well
          trial_state.last_perturbation_time = new_state.last_perturbation_time
docs: Transfers perturbed state from trial_to_clone -> trial.
  
          If specified, also logs the updated hyperparam state.