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_candidate(
      self, candidate: p.Parameter, loss: tp.FloatLoss
  ) -> None:
      uid = candidate.heritage["lineage"]
      if (
          uid not in self.population
      ):  # parent was removed, revert to tell_not_asked
          self._internal_tell_not_asked(candidate, loss)
          return
      self._uid_queue.tell(
          uid
      )  # only add to queue if not a "tell_not_asked" (from a removed parent)
      parent = self.population[uid]
      mo_adapt = (
          self._config.multiobjective_adaptation
          and self.num_objectives > 1
      )
      if mo_adapt:
          if self.objective_weights is None:
              self.objective_weights = np.ones(self.num_objectives)
          else:
              assert len(self.objective_weights) == self.num_objectives
      mo_adapt &= (
          candidate._losses is not None
      )  # can happen with bad constraints
      if not mo_adapt and loss <= base._loss(parent):
          self.population[uid] = candidate
      elif mo_adapt and (
          parent._losses is None
          or np.average(
              candidate.losses < parent.losses,
              weights=self.objective_weights,
          )
          > self._rng.rand()
      ):
          # multiobjective case, with adaptation,
          # randomly replaces the parent depending on the number of better losses
          self.population[uid] = candidate
      elif self._config.propagate_heritage and loss <= float("inf"):
          self.population[uid].heritage.update(candidate.heritage)
  
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 5 for calling the _DE obj's underlying member method code with example usage: obj._internal_tell_candidate(candidate, loss) without return types