class_docstr: Differential Evolution optimization.
      
class_docstr_tok: ["Differential","Evolution","optimization","."]
docstr: Takes two initial inputs: 
      dim  -- dimensionality of the problem
      NP   -- size of the trial solution population. [requires: NP >= 4]
  
  All important class members are inherited from AbstractSolver.
          
docstr_tok: ["Takes","two","initial","inputs",":","dim","--","dimensionality","of","the","problem","NP","--","size","of","the","trial","solution","population",".","[","requires",":","NP",">","=","4","]","All","important","class","members","are","inherited","from","AbstractSolver","."]
code: def __init__(self, dim, NP=4):
      """
      Takes two initial inputs:
          dim  -- dimensionality of the problem
          NP   -- size of the trial solution population. [requires: NP >= 4]
  
      All important class members are inherited from AbstractSolver.
      """
      NP = max(NP, dim, 4)  # XXX: raise Error if npop <= 4?
      AbstractSolver.__init__(self, dim, npop=NP)
      self.genealogy = [[] for j in range(NP)]
      self.scale = 0.8
      self.probability = 0.9
      self.strategy = "Best1Bin"
      ftol = 5e-3
      from mystic.termination import VTRChangeOverGeneration
  
      self._termination = VTRChangeOverGeneration(ftol)
  
imports: from mystic.tools import wrap_function, unpair, isiterable
  from mystic.tools import wrap_bounds, wrap_penalty, reduced
  from mystic.abstract_solver import AbstractSolver
  from mystic.abstract_map_solver import AbstractMapSolver
  from numpy import asfarray, ravel
  from collections.abc import Callable
label_desc: Use image node_id 1 to create a new DifferentialEvolutionSolver object from inherited base classes: AbstractSolver with example: obj = DifferentialEvolutionSolver(dim, NP)