benchmarkfcns.corana

benchmarkfcns.corana(arg0: Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]', 'flags.c_contiguous']) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']

Computes the value of the Corana benchmark function. SCORES = corana(X) computes the value of the Corana function at point X. corana accepts a matrix of size M-by-N and returns a vector SCORES of size M-by-1 in which each row contains the function value for the corresponding row of X. Properties:

  • Global minimum: 0

  • Location of global minimum: (0, 0, …, 0)

  • Number of dimensions: n

  • Recommended domain: [-500, 500]^n

  • Number of local minima: massive

  • Number of global minima: 1

  • Convexity: non-convex

  • Separability: separable

  • Modality: multimodal

  • Differentiability: non-differentiable (staircase landscape)

Mathematical Definition

\[\begin{split}f(\mathbf{x}) = \sum_{i=1}^{n} \begin{cases} 0.15 \cdot (z_i - 0.05 \cdot \text{sgn}(z_i))^2 \cdot d_i & \text{if } |x_i - z_i| < 0.05 \\ d_i \cdot x_i^2 & \text{otherwise} \end{cases} \\\end{split}\]

text{where } z_i = 0.2 cdot lfloor |x_i / 0.2| + 0.49 rfloor cdot text{sgn}(x_i)

Visualization