class_docstr: Abstract class for Exploit in :py:class:`orion.algo.pbt.pbt.PBT`
  
  The exploit class is responsible for deciding whether the Population Based Training algorithm
  should continue training a trial configuration at next fidelity level or whether it should fork
  from another trial configuration.
  
  This class is expected to be stateless and serve as a configurable callable object.
class_docstr_tok: ["Abstract","class","for","Exploit","in",":","py",":","class",":","`","orion.algo.pbt.pbt.PBT","`","The","exploit","class","is","responsible","for","deciding","whether","the","Population","Based","Training","algorithm","should","continue","training","a","trial","configuration","at","next","fidelity","level","or","whether","it","should","fork","from","another","trial","configuration",".","This","class","is","expected","to","be","stateless","and","serve","as","a","configurable","callable","object","."]
docstr: Execute exploit
  
  The method receives the current trial under examination and all lineages of
  population based training. It must then decide whether the trial should be promoted
  (continue with a higher fidelity) or if another trial should be forked instead.
  
  
  Parameters
  ----------
  rng: numpy.random.Generator
      A random number generator. It is not contained in ``BaseExploit`` because the exploit
      class must be stateless.
  trial: Trial
      The :py:class:`orion.core.worker.trial.Trial` that is currently under examination.
  lineages: Lineages
      All :py:class:`orion.algo.pbt.pbt.Lineages` created by the population based training
      algorithm that is using this exploit class.
  
  Returns
  -------
  ``None``
      The exploit class signals that there are not enough completed trials in lineages to make
      a decision for current trial.
  ``Trial``
      If the returned trial is the same as the one received as argument, it means that
      population based training should continue with same parameters.
      If another trial from the lineages is returned, it means that population based training
      should try to explore new parameters.
docstr_tok: ["Execute","exploit","The","method","receives","the","current","trial","under","examination","and","all","lineages","of","population","based","training",".","It","must","then","decide","whether","the","trial","should","be","promoted","(","continue","with","a","higher","fidelity",")","or","if","another","trial","should","be","forked","instead",".","Parameters","--","--","--","--","--","rng",":","numpy.random.Generator","A","random","number","generator",".","It","is","not","contained","in","``","BaseExploit","``","because","the","exploit","class","must","be","stateless",".","trial",":","Trial","The",":","py",":","class",":","`","orion.core.worker.trial.Trial","`","that","is","currently","under","examination",".","lineages",":","Lineages","All",":","py",":","class",":","`","orion.algo.pbt.pbt.Lineages","`","created","by","the","population","based","training","algorithm","that","is","using","this","exploit","class",".","Returns","--","--","--","-","``","None","``","The","exploit","class","signals","that","there","are","not","enough","completed","trials","in","lineages","to","make","a","decision","for","current","trial",".","``","Trial","``","If","the","returned","trial","is","the","same","as","the","one","received","as","argument",",","it","means","that","population","based","training","should","continue","with","same","parameters",".","If","another","trial","from","the","lineages","is","returned",",","it","means","that","population","based","training","should","try","to","explore","new","parameters","."]
code: def __call__(self, rng, trial, lineages):
      """Execute exploit
  
      The method receives the current trial under examination and all lineages of
      population based training. It must then decide whether the trial should be promoted
      (continue with a higher fidelity) or if another trial should be forked instead.
  
  
      Parameters
      ----------
      rng: numpy.random.Generator
          A random number generator. It is not contained in ``BaseExploit`` because the exploit
          class must be stateless.
      trial: Trial
          The :py:class:`orion.core.worker.trial.Trial` that is currently under examination.
      lineages: Lineages
          All :py:class:`orion.algo.pbt.pbt.Lineages` created by the population based training
          algorithm that is using this exploit class.
  
      Returns
      -------
      ``None``
          The exploit class signals that there are not enough completed trials in lineages to make
          a decision for current trial.
      ``Trial``
          If the returned trial is the same as the one received as argument, it means that
          population based training should continue with same parameters.
          If another trial from the lineages is returned, it means that population based training
          should try to explore new parameters.
  
      """
  
imports: import logging
  import numpy
  from orion.core.utils import GenericFactory
label_desc: Use image node_id 1 for calling the BaseExploit obj's underlying member method code with example usage: obj.__call__(rng, trial, lineages) without return types