code: def search(self, nth_process, p_bar):
      for optimizer_setup in self.optimizer_setup_l:
          hyper_opt = optimizer_setup["optimizer"]
          duration = optimizer_setup["duration"]
          opt_strat_early_stopping = optimizer_setup["early_stopping"]
  
          if opt_strat_early_stopping:
              early_stopping = opt_strat_early_stopping
          else:
              early_stopping = self.early_stopping
  
          n_iter = round(self.n_iter * duration / self.duration_sum)
  
          # initialize
          if self.best_para is not None:
              initialize = {}
              if "warm_start" in initialize:
                  initialize["warm_start"].append(self.best_para)
              else:
                  initialize["warm_start"] = [self.best_para]
          else:
              initialize = dict(self.initialize)
  
          # memory_warm_start
          if self.search_data is not None:
              memory_warm_start = self.search_data
          else:
              memory_warm_start = self.memory_warm_start
  
          # warm_start_smbo
          if (
              hyper_opt.optimizer_class.optimizer_type == "sequential"
              and self.search_data is not None
          ):
              hyper_opt.opt_params["warm_start_smbo"] = self.search_data
  
          hyper_opt.setup_search(
              objective_function=self.objective_function,
              s_space=self.s_space,
              n_iter=n_iter,
              initialize=initialize,
              constraints=self.constraints,
              pass_through=self.pass_through,
              callbacks=self.callbacks,
              catch=self.catch,
              max_score=self.max_score,
              early_stopping=early_stopping,
              random_state=self.random_state,
              memory=self.memory,
              memory_warm_start=memory_warm_start,
              verbosity=self.verbosity,
          )
  
          hyper_opt.search(nth_process, p_bar)
  
          self._add_result_attributes(
              hyper_opt.best_para,
              hyper_opt.best_score,
              hyper_opt.best_since_iter,
              hyper_opt.eval_times,
              hyper_opt.iter_times,
              hyper_opt.search_data,
              hyper_opt.gfo_optimizer.random_seed,
          )
  
file_path: Hyperactive/hyperactive/optimizers/strategies/optimization_strategy.py
imports: from .optimizer_attributes import OptimizerAttributes
label_desc: Use image node_id 5 for calling the BaseOptimizationStrategy obj's underlying member method code with example usage: obj.search(nth_process, p_bar) without return types