function.mo.dtlz1

function.mo.dtlz1(X, n_obj=3)

DTLZ1 multi-objective test function (scalable objectives).

DTLZ1 is a scalable test problem with a linear Pareto front. It has (11^k - 1) local Pareto fronts where k = n - n_obj + 1.

Mathematical formulation

f_i(X) = 0.5 * x1 * … * x_{M-i} * [1 + g(X)] for i = 1, …, M-1 f_M(X) = 0.5 * [1 - x_{M-1}] * [1 + g(X)] g(X) = 100 * [k + sum((x_i - 0.5)^2 - cos(20π(x_i - 0.5)) for i in X_M)]

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. required
n_obj int Number of objectives. Defaults to 3. Must be at least 2 and at most n_features. 3

Returns

Name Type Description
np.ndarray np.ndarray: Objective values with shape (n_samples, n_obj).

Raises

Name Type Description
ValueError If n_obj is invalid or X has insufficient dimensions.

Note

  • Number of objectives: Scalable (typically 3)
  • Typical number of variables: n_obj + k - 1 (often k = 5, so n = 7 for 3 objectives)
  • Search domain: [0, 1]^n
  • Pareto front: Linear hyperplane
  • Characteristics: Multimodal, many local fronts

Examples

>>> from spotoptim.function.mo import dtlz1
>>> import numpy as np
>>> X = np.array([0.5, 0.5, 0.5, 0.5, 0.5])
>>> result = dtlz1(X, n_obj=3)
>>> result.shape
(1, 3)

References

Deb, K., Thiele, L., Laumanns, M., & Zitzler, E. (2005). “Scalable test problems for evolutionary multiobjective optimization.” In Evolutionary multiobjective optimization (pp. 105-145). Springer.