class_docstr: Zimmerman objective function.
  
  This class defines the Zimmerman [1]_ global optimization problem. This
  is a multimodal minimization problem defined as follows:
  
  .. math::
  
      f_{\text{Zimmerman}}(x) = \max \left[Zh1(x), Zp(Zh2(x))
                                \textrm{sgn}(Zh2(x)), Zp(Zh3(x))
                                \textrm{sgn}(Zh3(x)),
                                Zp(-x_1)\textrm{sgn}(x_1),
                                Zp(-x_2)\textrm{sgn}(x_2) \right]
  
  
  Where, in this exercise:
  
  .. math::
  
      \begin{cases}
      Zh1(x) = 9 - x_1 - x_2 \\
      Zh2(x) = (x_1 - 3)^2 + (x_2 - 2)^2 \\
      Zh3(x) = x_1x_2 - 14 \\
      Zp(t) = 100(1 + t)
      \end{cases}
  
  
  Where :math:`x` is a vector and :math:`t` is a scalar.
  
  Here, :math:`x_i \in [0, 100]` for :math:`i = 1, 2`.
  
  *Global optimum*: :math:`f(x) = 0` for :math:`x = [7, 2]`
  
  .. [1] Gavana, A. Global Optimization Benchmarks and AMPGO retrieved 2015
  
  TODO implementation from Gavana
code: def __init__(self, dimensions=2):
      Benchmark.__init__(self, dimensions)
  
      self._bounds = list(zip([0.0] * self.N, [100.0] * self.N))
      self.custom_bounds = ([0.0, 8.0], [0.0, 8.0])
  
      self.global_optimum = [[7.0, 2.0]]
      self.fglob = 0.0
  
imports: from numpy import abs, sum, sign, arange
  from .go_benchmark import Benchmark
label_desc: Use image node_id 1 to create a new Zimmerman object from inherited base classes: Benchmark with example: obj = Zimmerman(dimensions)