class_docstr: Whitley objective function.
  
  This class defines the Whitley [1]_ global optimization problem. This
  is a multimodal minimization problem defined as follows:
  
  .. math::
  
      f_{\text{Whitley}}(x) = \sum_{i=1}^n \sum_{j=1}^n
                              \left[\frac{(100(x_i^2-x_j)^2
                              + (1-x_j)^2)^2}{4000} - \cos(100(x_i^2-x_j)^2
                              + (1-x_j)^2)+1 \right]
  
  
  Here, :math:`n` represents the number of dimensions and
  :math:`x_i \in [-10.24, 10.24]` for :math:`i = 1, ..., n`.
  
  *Global optimum*: :math:`f(x) = 0` for :math:`x_i = 1` for
  :math:`i = 1, ..., n`
  
  .. [1] Gavana, A. Global Optimization Benchmarks and AMPGO retrieved 2015
  
  TODO Jamil#167 has '+ 1' inside the cos term, when it should be outside it.
code: def __init__(self, dimensions=2):
      Benchmark.__init__(self, dimensions)
  
      self._bounds = list(zip([-10.24] * self.N, [10.24] * self.N))
      self.custom_bounds = ([-1, 2], [-1, 2])
  
      self.global_optimum = [[1.0 for _ in range(self.N)]]
      self.fglob = 0.0
      self.change_dimensionality = True
  
imports: from numpy import atleast_2d, arange, sum, cos, exp, pi
  from .go_benchmark import Benchmark
label_desc: Use image node_id 1 to create a new Whitley object from inherited base classes: Benchmark with example: obj = Whitley(dimensions)