docstr: Create a new parameter value as a random mixture of some of the best
  trials and sampling from original distribution.
  
  Return:
      dict: parameter values dictionary
docstr_tok: ["Create","a","new","parameter","value","as","a","random","mixture","of","some","of","the","best","trials","and","sampling","from","original","distribution",".","Return",":","dict",":","parameter","values","dictionary"]
code: def get_suggestion(self, parameters, results, lower_is_better):
      """
      Create a new parameter value as a random mixture of some of the best
      trials and sampling from original distribution.
  
      Return:
          dict: parameter values dictionary
      """
      if self.max_num_trials and self.count >= self.max_num_trials:
          return None
      # Choose 2 of the top trials and get their parameter values
      trial_1_params = self._get_candidate(
          parameters, results, lower_is_better
      )
      trial_2_params = self._get_candidate(
          parameters, results, lower_is_better
      )
      params_values_for_next_trial = {}
      for param_name in trial_1_params.keys():
          param_origin = (
              sherpa_rng.random_sample()
          )  # randomly choose where to get the value from
          if param_origin < self.mutation_rate:  # Use mutation
              for parameter_object in parameters:
                  if param_name == parameter_object.name:
                      params_values_for_next_trial[
                          param_name
                      ] = parameter_object.sample()
          elif (
              self.mutation_rate <= param_origin
              and param_origin
              < self.mutation_rate + (1 - self.mutation_rate) / 2
          ):
              params_values_for_next_trial[param_name] = trial_1_params[
                  param_name
              ]
          else:
              params_values_for_next_trial[param_name] = trial_2_params[
                  param_name
              ]
      self.count += 1
      return params_values_for_next_trial
  
imports: import os
  import random
  import numpy
  import logging
  import sherpa
  import pandas
  import sklearn.gaussian_process
  from sherpa.core import Choice, Continuous, Discrete, Ordinal, AlgorithmState
  from sherpa.core import rng
  import sklearn.model_selection
  import collections
label_desc: Use image node_id 2 for calling the Genetic obj's underlying member method code with example usage: obj.get_suggestion(parameters, results, lower_is_better) and returns: params_values_for_next_trial, None