class_docstr: Estimation of Multivariate Normal Algorithm (EMNA) as described 
  by Algorithm 1 in: 
  
  Fabien Teytaud and Olivier Teytaud. 2009. 
  Why one must use reweighting in estimation of distribution algorithms. 
  In Proceedings of the 11th Annual conference on Genetic and 
  evolutionary computation (GECCO '09). ACM, New York, NY, USA, 453-460.
code: def update(self, population):
      # Sort individuals so the best is first
      sorted_pop = sorted(
          population, key=attrgetter("fitness"), reverse=True
      )
  
      # Compute the average of the mu best individuals
      z = sorted_pop[: self.mu] - self.centroid
      avg = numpy.mean(z, axis=0)
  
      # Adjust variance of the distribution
      self.sigma = numpy.sqrt(
          numpy.sum(numpy.sum((z - avg) ** 2, axis=1))
          / (self.mu * self.dim)
      )
      self.centroid = self.centroid + avg
  
file_path: deap/examples/eda/emna.py
imports: import random
  import numpy
  from operator import attrgetter
  from deap import algorithms
  from deap import base
  from deap import benchmarks
  from deap import creator
  from deap import tools
label_desc: Use image node_id 3 for calling the EMNA obj's underlying member method code with example usage: obj.update(population) without return types