code: def setup_search(
      self,
      objective_function,
      s_space,
      n_iter,
      initialize,
      constraints,
      pass_through,
      callbacks,
      catch,
      max_score,
      early_stopping,
      random_state,
      memory,
      memory_warm_start,
      verbosity,
  ):
      self.objective_function = objective_function
      self.s_space = s_space
      self.n_iter = n_iter
  
      self.initialize = initialize
      self.constraints = constraints
      self.pass_through = pass_through
      self.callbacks = callbacks
      self.catch = catch
      self.max_score = max_score
      self.early_stopping = early_stopping
      self.random_state = random_state
      self.memory = memory
      self.memory_warm_start = memory_warm_start
      self.verbosity = verbosity
  
      if "progress_bar" in self.verbosity:
          self.verbosity = ["progress_bar"]
      else:
          self.verbosity = []
  
file_path: Hyperactive/hyperactive/optimizers/hyper_optimizer.py
imports: import numpy
  from .objective_function import ObjectiveFunction
  from .hyper_gradient_conv import HyperGradientConv
  from .optimizer_attributes import OptimizerAttributes
  from .constraint import Constraint
label_desc: Use image node_id 2 for calling the HyperOptimizer obj's underlying member method code with example usage: obj.setup_search(objective_function, s_space, n_iter, initialize, constraints, pass_through, callbacks, catch, max_score, early_stopping, random_state, memory, memory_warm_start, verbosity) without return types