class_docstr: HelicalValley objective function.
  
  This class defines the HelicalValley [1]_ global optimization problem. This
  is a multimodal minimization problem defined as follows:
  
  .. math::
  
      f_{\text{HelicalValley}}({x}) = 100{[z-10\Psi(x_1,x_2)]^2
      +(\sqrt{x_1^2+x_2^2}-1)^2}+x_3^2
  
  
  Where, in this exercise:
  
  .. math::
  
      2\pi\Psi(x,y) =  \begin{cases} \arctan(y/x) & \textrm{for} x > 0 \\
      \pi + \arctan(y/x) & \textrm{for } x < 0 \end{cases}
  
  with :math:`x_i \in [-100, 100]` for :math:`i = 1, 2, 3`.
  
  *Global optimum*: :math:`f(x) = 0` for :math:`x = [1, 0, 0]`
  
  .. [1] Fletcher, R. & Powell, M. A Rapidly Convergent Descent Method for
  Minimization, Computer Journal, 1963, 62, 163-168
  
  TODO: Jamil equation is different to original reference. The above paper
  can be obtained from
  http://galton.uchicago.edu/~lekheng/courses/302/classics/
  fletcher-powell.pdf
class_docstr_tok: ["HelicalValley","objective","function",".","This","class","defines","the","HelicalValley","[","1","]","_","global","optimization","problem",".","This","is","a","multimodal","minimization","problem","defined","as","follows",":","..","math",":",":","f_","{","\\text","{","HelicalValley","}","}","(","{","x","}",")","=","100","{","[","z-10\\Psi","(","x_1",",","x_2",")","]","^2","+","(","\\sqrt","{","x_1^2+x_2^2","}","-1",")","^2","}","+x_3^2","Where",",","in","this","exercise",":","..","math",":",":","2\\pi\\Psi","(","x",",","y",")","=","\\begin","{","cases","}","\\arctan","(","y\/x",")","&","\\textrm","{","for","}","x",">","0","\\\\","\\pi","+","\\arctan","(","y\/x",")","&","\\textrm","{","for","}","x","<","0","\\end","{","cases","}","with",":","math",":","`","x_i","\\in","[","-100",",","100","]","`","for",":","math",":","`","i","=","1",",","2",",","3","`",".","*","Global","optimum","*",":",":","math",":","`","f","(","x",")","=","0","`","for",":","math",":","`","x","=","[","1",",","0",",","0","]","`","..","[","1","]","Fletcher",",","R.","&","Powell",",","M.","A","Rapidly","Convergent","Descent","Method","for","Minimization",",","Computer","Journal",",","1963",",","62",",","163-168","TODO",":","Jamil","equation","is","different","to","original","reference",".","The","above","paper","can","be","obtained","from","http",":","\/\/galton.uchicago.edu\/~lekheng\/courses\/302\/classics\/","fletcher-powell.pdf"]
code: def __init__(self, dimensions=3):
      Benchmark.__init__(self, dimensions)
  
      self._bounds = list(zip([-10.0] * self.N, [10.0] * self.N))
  
      self.global_optimum = [[1.0, 0.0, 0.0]]
      self.fglob = 0.0
  
imports: import numpy
  from numpy import abs, arctan2, asarray, cos, exp, arange, pi, sin, sqrt, sum
  from .go_benchmark import Benchmark
label_desc: Use image node_id 1 to create a new HelicalValley object from inherited base classes: Benchmark with example: obj = HelicalValley(dimensions)