code: def update_search_space(self, search_space):
          
          if not self.update_ss_done:
              self.categorical_dict = generate_scenario(search_space)
              if self.categorical_dict is None:
                  raise RuntimeError('categorical dict is not correctly returned after parsing search space.')
              self.optimizer = self._main_cli()
              self.smbo_solver = self.optimizer.solver
              self.loguniform_key = {key for key in search_space.keys() if search_space[key]['_type'] == 'loguniform'}
              self.update_ss_done = True
          else:
              self.logger.warning('update search space is not supported.')
docs: TODO: this is urgly, we put all the initialization work in this method, because initialization relies
          on search space, also because update_search_space is called at the beginning.
          NOTE: updating search space is not supported.
  
          Parameters
          ----------
          search_space:
              search space