benchmarkfcns.lunacekbirastrigin

benchmarkfcns.lunacekbirastrigin(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 Lunacek Bi-Rastrigin benchmark function. SCORES = lunacekbirastrigin(X) computes the value of the Lunacek Bi-Rastrigin function at point X. lunacekbirastrigin accepts a matrix of size M-by-N and returns a vetor 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: (mu0, mu0, …, mu0) where mu0 = 2.5

  • Number of dimensions: n

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

  • Modality: multimodal and deceptive (two main basins)

  • Separability: non-separable

Mathematical Definition

\[\begin{split}\mu_0 = 2.5, \quad s = 1 - \frac{1}{2\sqrt{n+20}-8.2}, \quad \mu_1 = -\sqrt{\frac{\mu_0^2-1}{s}} \\\end{split}\]

f(mathbf{x}) = minleft(sum_{i=1}^n (x_i - mu_0)^2, dn + s sum_{i=1}^n (x_i - mu_1)^2right) + 10 sum_{i=1}^n (1 - cos(2pi(x_i - mu_0)))

Visualization