class_docstr: Class determine the main operations for parameters search
  like finding all changing parameters.
  
  Args:
      prefix: prefix to determine special keys like "`prefix`_range", "`prefix`_bool", "`prefix`_choice"
      seed: random seed for initialization
      **kwargs: basic config with parameters
  
  Attributes:
      basic_config: dictionary with initial config with possible values of searched parameters
      prefix: prefix to determine special keys like "`prefix`_range", "`prefix`_bool", "`prefix`_choice"
      paths_to_params: list of lists of keys and/or integers (for list)
              with relative paths to searched parameters
      n_params: number of searched parameters
      eps: threshold value
docstr: Initialize evolution with random population
docstr_tok: ["Initialize","evolution","with","random","population"]
code: def __init__(self, prefix="search", seed: int = None, **kwargs):
      """
      Initialize evolution with random population
      """
  
      self.basic_config = deepcopy(kwargs)
      self.prefix = prefix
  
      self.paths_to_params = []
      for search_type in [
          prefix + "_range",
          prefix + "_choice",
          prefix + "_bool",
      ]:
          for path_ in self.find_model_path(
              self.basic_config, search_type
          ):
              self.paths_to_params.append(path_)
  
      self.n_params = len(self.paths_to_params)
  
      self.eps = 1e-6
  
      if seed is None:
          pass
      else:
          np.random.seed(seed)
          random.seed(seed)
  
file_path: DeepPavlov/deeppavlov/core/common/params_search.py
imports: import random
  from copy import deepcopy
  from logging import getLogger
  from typing import List, Generator, Any, Tuple
  import numpy
  from deeppavlov.core.common.registry import register
label_desc: Use image node_id 1 to create a new ParamsSearch object  with example: obj = ParamsSearch(prefix, seed)