class_docstr: Differential evolution.
  
  Default pop size equal to 30
  We return the mean of the individuals with fitness better than median, which might be stupid sometimes.
  CR =.5, F1=.8, F2=.8, curr-to-best.
  Initial population: pure random.
class_docstr_tok: ["Differential","evolution",".","Default","pop","size","equal","to","30","We","return","the","mean","of","the","individuals","with","fitness","better","than","median",",","which","might","be","stupid","sometimes",".","CR","=.5",",","F1=.8",",","F2=.8",",","curr-to-best",".","Initial","population",":","pure","random","."]
code: def _internal_tell_not_asked(
      self, candidate: p.Parameter, loss: tp.FloatLoss
  ) -> None:
      discardable: tp.Optional[str] = None
      if len(self.population) >= self.llambda:
          if (
              self.num_objectives == 1
          ):  # singleobjective: replace if better
              uid, worst = max(
                  self.population.items(),
                  key=lambda p: base._loss(p[1]),
              )
              if loss < base._loss(worst):
                  discardable = uid
          else:  # multiobjective: replace if in pareto and some parents are not
              pareto_uids = {c.uid for c in self.pareto_front()}
              if candidate.uid in pareto_uids:
                  non_pareto_pop = {
                      c.uid for c in self.population.values()
                  } - pareto_uids
                  if non_pareto_pop:
                      nonpareto = {
                          c.uid: c for c in self.population.values()
                      }[list(non_pareto_pop)[0]]
                      discardable = nonpareto.heritage["lineage"]
      if (
          discardable is not None
      ):  # if we found a point to kick, kick it
          del self.population[discardable]
          self._uid_queue.discard(discardable)
      if (
          len(self.population) < self.llambda
      ):  # if there is space, add the new point
          self.population[candidate.uid] = candidate
          # this candidate lineage is not candidate.uid, but to avoid interfering with other optimizers (eg: PSO)
          # we should not update the lineage (and lineage of children must therefore be enforced manually)
          self._uid_queue.tell(candidate.uid)
  
imports: import warnings
  import numpy
  import nevergrad.common.typing
  from nevergrad.parametrization import parameter
  from .None import metamodel
  from .None import base
  from .None import oneshot
label_desc: Use image node_id 6 for calling the _DE obj's underlying member method code with example usage: obj._internal_tell_not_asked(candidate, loss) without return types