code: def add_search(
      self,
      objective_function: callable,
      search_space: Dict[str, list],
      n_iter: int,
      search_id=None,
      optimizer: Union[str, Type[RandomSearchOptimizer]] = "default",
      n_jobs: int = 1,
      initialize: Dict[str, int] = {
          "grid": 4,
          "random": 2,
          "vertices": 4,
      },
      constraints: List[callable] = None,
      pass_through: Dict = None,
      callbacks: Dict[str, callable] = None,
      catch: Dict = None,
      max_score: float = None,
      early_stopping: Dict = None,
      random_state: int = None,
      memory: Union[str, bool] = "share",
      memory_warm_start: pd.DataFrame = None,
  ):
      self.check_list(search_space)
  
      if constraints is None:
          constraints = []
      if pass_through is None:
          pass_through = {}
      if callbacks is None:
          callbacks = {}
      if catch is None:
          catch = {}
      if early_stopping is None:
          early_stopping = {}
  
      optimizer = self._default_opt(optimizer)
      search_id = self._default_search_id(search_id, objective_function)
      s_space = SearchSpace(search_space)
  
      optimizer.setup_search(
          objective_function=objective_function,
          s_space=s_space,
          n_iter=n_iter,
          initialize=initialize,
          constraints=constraints,
          pass_through=pass_through,
          callbacks=callbacks,
          catch=catch,
          max_score=max_score,
          early_stopping=early_stopping,
          random_state=random_state,
          memory=memory,
          memory_warm_start=memory_warm_start,
          verbosity=self.verbosity,
      )
  
      if memory == "share":
          self._create_shared_memory(optimizer)
  
      if n_jobs == -1:
          n_jobs = mp.cpu_count()
  
      for _ in range(n_jobs):
          nth_process = len(self.opt_pros)
          self.opt_pros[nth_process] = optimizer
  
imports: import copy
  import multiprocessing
  import pandas
  from typing import Union, List, Dict, Type
  from .optimizers import RandomSearchOptimizer
  from .run_search import run_search
  from .results import Results
  from .print_results import PrintResults
  from .search_space import SearchSpace
label_desc: Use image node_id 6 for calling the Hyperactive obj's underlying member method code with example usage: obj.add_search(objective_function, search_space, n_iter, search_id, optimizer, n_jobs, initialize, constraints, pass_through, callbacks, catch, max_score, early_stopping, random_state, memory, memory_warm_start) without return types