function.mo.kursawe

function.mo.kursawe(X)

Kursawe multi-objective test function (2 objectives, minimization).

The Kursawe function is a classic bi-objective minimization benchmark with a non-convex, disconnected Pareto front, often used to test an optimizer’s ability to maintain diversity and avoid getting trapped in local fronts.

Mathematical formulation

f1(X) = sum(-10 * exp(-0.2 * sqrt(x_i^2 + x_{i+1}^2)) for i=1 to n-1) f2(X) = sum(|x_i|^0.8 + 5 * sin(x_i^3) for i=1 to n)

Parameters

Name Type Description Default
X array - like Input points with shape (n_samples, n_features) or (n_features,). Can be a 1D array for a single point or 2D array for multiple points. Must have at least 2 dimensions. required

Returns

Name Type Description
np.ndarray np.ndarray: Objective values with shape (n_samples, 2) where: - Column 0: f1 values - Column 1: f2 values

Raises

Name Type Description
ValueError If X has fewer than 2 dimensions.

Note

  • Number of objectives: 2
  • Typical number of variables: 3
  • Search domain: [-5, 5]^n
  • Pareto front: Disconnected
  • Characteristics: Non-convex, disconnected, multimodal

Examples

>>> from spotoptim.function.mo import kursawe
>>> import numpy as np
>>> X = np.array([0.0, 0.0, 0.0])
>>> result = kursawe(X)
>>> result.shape
(1, 2)
>>> X = np.array([[0.0, 0.0, 0.0], [1.0, 1.0, 1.0]])
>>> result = kursawe(X)
>>> result.shape
(2, 2)

References

Kursawe, F. (1991). “A variant of evolution strategies for vector optimization.” In International Conference on Parallel Problem Solving from Nature (pp. 193-197). Springer.