code: def generate_parameters(self, parameter_id):
          
          if len(self.samples_x) < self.cold_start_num:
              init_parameter = _rand_init(self.x_bounds, self.x_types, 1)[0]
              results = self._pack_output(init_parameter)
          else:
              self.minimize_starting_points = _rand_init(self.x_bounds, self.x_types, \
                                                         self.selection_num_starting_points)
              results = self._selection(self.samples_x, self.samples_y_aggregation, self.samples_y,
                                        self.x_bounds, self.x_types,
                                        threshold_samplessize_resampling=(None if self.no_resampling is True else 50),
                                        no_candidates=self.no_candidates,
                                        minimize_starting_points=self.minimize_starting_points,
                                        minimize_constraints_fun=self.minimize_constraints_fun)
  
          logger.info("Generate paramageters:\n" + str(results))
          return results
docs: Generate next parameter for trial
          If the number of trial result is lower than cold start number,
          metis will first random generate some parameters.
          Otherwise, metis will choose the parameters by the Gussian Process Model and the Gussian Mixture Model.
  
          Parameters
          ----------
          parameter_id : int
  
          Returns
          -------
          result : dict