docstr:         run n_iterations of SuccessiveHalving
  
  Parameters
  ----------
  n_iterations: int
          number of iterations to be performed in this run
  min_n_workers: int
          minimum number of workers before starting the run
docstr_tok: ["run","n_iterations","of","SuccessiveHalving","Parameters","--","--","--","--","--","n_iterations",":","int","number","of","iterations","to","be","performed","in","this","run","min_n_workers",":","int","minimum","number","of","workers","before","starting","the","run"]
code: def run(
      self,
      n_iterations=1,
      min_n_workers=1,
      iteration_kwargs={},
  ):
      """
              run n_iterations of SuccessiveHalving
  
      Parameters
      ----------
      n_iterations: int
              number of iterations to be performed in this run
      min_n_workers: int
              minimum number of workers before starting the run
      """
  
      self.wait_for_workers(min_n_workers)
  
      iteration_kwargs.update({"result_logger": self.result_logger})
  
      if self.time_ref is None:
          self.time_ref = time.time()
          self.config["time_ref"] = self.time_ref
  
          self.logger.info(
              "HBMASTER: starting run at %s" % (str(self.time_ref))
          )
  
      self.thread_cond.acquire()
      while True:
          self._queue_wait()
  
          next_run = None
          # find a new run to schedule
          for i in self.active_iterations():
              next_run = self.iterations[i].get_next_run()
              if not next_run is None:
                  break
  
          if not next_run is None:
              self.logger.debug(
                  "HBMASTER: schedule new run for iteration %i" % i
              )
              self._submit_job(*next_run)
              continue
          else:
              if (
                  n_iterations > 0
              ):  # we might be able to start the next iteration
                  self.iterations.append(
                      self.get_next_iteration(
                          len(self.iterations), iteration_kwargs
                      )
                  )
                  n_iterations -= 1
                  continue
  
          # at this point there is no imediate run that can be scheduled,
          # so wait for some job to finish if there are active iterations
          if self.active_iterations():
              self.thread_cond.wait()
          else:
              break
  
      self.thread_cond.release()
  
      for i in self.warmstart_iteration:
          i.fix_timestamps(self.time_ref)
  
      ws_data = [i.data for i in self.warmstart_iteration]
  
      return Result(
          [copy.deepcopy(i.data) for i in self.iterations] + ws_data,
          self.config,
      )
  
imports: import os
  import threading
  import time
  import math
  import pdb
  import copy
  import logging
  import numpy
  from hpbandster.core.dispatcher import Dispatcher
  from hpbandster.core.result import Result
  from hpbandster.core.base_iteration import WarmStartIteration
label_desc: Use image node_id 5 for calling the Master obj's underlying member method code with example usage: obj.run(n_iterations, min_n_workers, iteration_kwargs) and returns: Result