class_docstr: Callable for pruning archives in the optimizer class.
  See Optimizer.pruning attribute, called at each "tell".
  
  Parameters
  ----------
  min_len: int
      minimum length of the pruned archive.
  max_len: int
      length at which pruning is activated (maximum allowed length for the archive).
  
  Note
  ----
  For each of the 3 criteria (optimistic, pessimistic and average), the min_len best (lowest)
  points will be kept, which can lead to at most 3 * min_len points.
docstr: Very conservative pruning
  - keep at least 100 elements, or 7 times num_workers, whatever is biggest
  - keep at least 3 x min_len, or up to 10 x min_len if it does not exceed 1gb of data
  
  Parameters
  ----------
  num_workers: int
      number of evaluations which will be run in parallel at once
  dimension: int
      dimension of the optimization space
docstr_tok: ["Very","conservative","pruning","-","keep","at","least","100","elements",",","or","7","times","num_workers",",","whatever","is","biggest","-","keep","at","least","3","x","min_len",",","or","up","to","10","x","min_len","if","it","does","not","exceed","1gb","of","data","Parameters","--","--","--","--","--","num_workers",":","int","number","of","evaluations","which","will","be","run","in","parallel","at","once","dimension",":","int","dimension","of","the","optimization","space"]
code: def sensible_default(
      cls, num_workers: int, dimension: int
  ) -> "Pruning":
      """Very conservative pruning
      - keep at least 100 elements, or 7 times num_workers, whatever is biggest
      - keep at least 3 x min_len, or up to 10 x min_len if it does not exceed 1gb of data
  
      Parameters
      ----------
      num_workers: int
          number of evaluations which will be run in parallel at once
      dimension: int
          dimension of the optimization space
      """
      # safer to keep at least 7 time the workers
      min_len = max(100, 7 * num_workers)
      max_len_1gb = 1024**3 // (
          dimension * 8 * 2
      )  # stored twice: as key and as Parameter
      max_len = max(3 * min_len, min(10 * min_len, max_len_1gb))
      return cls(min_len, max_len)
  
imports: import math
  import operator
  import numpy
  from nevergrad.parametrization import parameter
  from nevergrad.parametrization.utils import float_penalty
  import nevergrad.common.typing
  from nevergrad.common.tools import OrderedSet
label_desc: Use image node_id 4 for calling the Pruning obj's underlying member method code with example usage: obj.sensible_default(cls, num_workers, dimension) and returns: cls