class_docstr: AbstractEnsembleSolver base class for mystic optimizers that are called within
  a parallel map.  This allows pseudo-global coverage of parameter space using
  non-global optimizers.
      
class_docstr_tok: ["AbstractEnsembleSolver","base","class","for","mystic","optimizers","that","are","called","within","a","parallel","map",".","This","allows","pseudo-global","coverage","of","parameter","space","using","non-global","optimizers","."]
docstr: update _bestSolver from _allSolvers
docstr_tok: ["update","_bestSolver","from","_allSolvers"]
code: def __update_bestSolver(self):
      """update _bestSolver from _allSolvers"""
      if self._bestSolver is None:
          self._bestSolver = self._allSolvers[0]
      bestpath = besteval = None
      # get the results with the lowest energy
      for solver in self._allSolvers[:]:  # XXX: slice needed?
          if solver is None:
              continue
          energy = getattr(
              self._bestSolver, "bestEnergy", self.bestEnergy
          )
          if solver.bestEnergy <= energy:
              self._bestSolver = solver
              bestpath = solver._stepmon
              besteval = solver._evalmon
      return bestpath, besteval
  
imports: from mystic.monitors import Null
  from mystic.abstract_map_solver import AbstractMapSolver
  from mystic.tools import wrap_function
  from functools import reduce
label_desc: Use image node_id 21 for calling the AbstractEnsembleSolver obj's underlying member method code with example usage: obj.__update_bestSolver() and returns: bestpath,  besteval