code: def generate_parameters(self, parameter_id):
          
          if not self.population:
              raise RuntimeError('The population is empty')
          pos = -1
          for i in range(len(self.population)):
              if self.population[i].result is None:
                  pos = i
                  break
          if pos != -1:
              indiv = copy.deepcopy(self.population[pos])
              self.population.pop(pos)
              total_config = indiv.config
          else:
              random.shuffle(self.population)
              if self.population[0].result < self.population[1].result:
                  self.population[0] = self.population[1]
  
              # mutation
              space = json2space(self.searchspace_json,
                                 self.population[0].config)
              is_rand = dict()
              mutation_pos = space[random.randint(0, len(space)-1)]
              for i in range(len(self.space)):
                  is_rand[self.space[i]] = (self.space[i] == mutation_pos)
              config = json2paramater(
                  self.searchspace_json, is_rand, self.random_state, self.population[0].config)
              self.population.pop(1)
              # remove "_index" from config and save params-id
  
              total_config = config
          self.total_data[parameter_id] = total_config
          config = _split_index(total_config)
          return config
docs: Returns a dict of trial (hyper-)parameters, as a serializable object.
  
          Parameters
          ----------
          parameter_id : int
      
          Returns
          -------
          config : dict