class_docstr: AMGM objective function.
  
  The AMGM (Arithmetic Mean - Geometric Mean Equality) global optimization
  problem is a multimodal minimization problem defined as follows
  
  .. math::
  
      f_{\text{AMGM}}(x) = \left ( \frac{1}{n} \sum_{i=1}^{n} x_i -
       \sqrt[n]{ \prod_{i=1}^{n} x_i} \right )^2
  
  
  Here, :math:`n` represents the number of dimensions and :math:`x_i \in
  [0, 10]` for :math:`i = 1, ..., n`.
  
  *Global optimum*: :math:`f(x) = 0` for :math:`x_1 = x_2 = ... = x_n` for
  :math:`i = 1, ..., n`
  
  .. [1] Gavana, A. Global Optimization Benchmarks and AMPGO, retrieved 2015
  
  TODO: eqn 7 in [1]_ has the wrong global minimum value.
code: def fun(self, x, *args):
      self.nfev += 1
  
      f1 = sum(x)
      f2 = prod(x)
      f1 = f1 / self.N
      f2 = f2 ** (1.0 / self.N)
      f = (f1 - f2) ** 2
  
      return f
  
imports: from numpy import abs, cos, exp, pi, prod, sin, sqrt, sum
  from .go_benchmark import Benchmark
label_desc: Use image node_id 2 for calling the AMGM obj's underlying member method code with example usage: obj.fun(x) and returns: f