Mathematical Definition

\[f(x) = \sum_{i=1}^{10} \left( e^{-t_i x_1} - 5 e^{-t_i x_2} - \left(e^{-t_i} - 5 e^{-10 t_i}\right) \right)^2\]

where $t_i = 0.1 \cdot i$.

Biggs EXP02 is a well-known nonlinear least squares benchmark problem used primarily in numerical optimization to test the efficiency and robustness of various algorithms, such as the Levenberg-Marquardt or Gauss-Newton methods. It simulates a “sum of exponentials” fitting problem. These are notoriously tricky because they can be “ill-conditioned”—meaning small changes in the parameters can lead to very similar curves, making it hard for an optimizer to find the exact bottom of the “valley.”

The function belongs to a family of problems (Biggs EXP2 through EXP6) originally proposed by M.C. Biggs in the 1970s to push the limits of optimization software.

Plots

Biggs EXP02 Function

Description and Features

  • The function is continuous.
  • The function is non-convex.
  • The function is defined on 2-dimensional space.
  • The function is multimodal.
  • The function is differentiable.
  • The function is non-separable.
  • The function is non-scalable.

Input Domain

The function can be defined on any input domain but it is usually evaluated on $x_1, x_2 \in [0, 20]$.

Global Minima

The function has one global minimum at: $f(\textbf{x}^{\ast})=0$ at $\textbf{x}^{\ast} = (1, 10)$.

Implementation

Python

For Python, the function is implemented in the benchmarkfcns package, which can be installed from command line with pip install benchmarkfcns.

from benchmarkfcns import biggsexp02

print(biggsexp02([[0, 0],
                      [1, 1]]))

MATLAB

An implementation of the Biggs EXP02 Function with MATLAB is provided below.

% Computes the value of the Biggs EXP02 function.
% SCORES = BIGGSEXP02FCN(X) computes the value of the Biggs EXP02
% function at point X. BIGGSEXP02FCN 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.
%
% Author: Mazhar Ansari Ardeh
% Please forward any comments or bug reports to mazhar.ansari.ardeh at
% Google's e-mail service or feel free to kindly modify the repository.
function scores = biggsexp02fcn(x)
    i = (1:10)';
    ti = 0.1 * i; % Column vector (10x1)
    yi = exp(-ti) - 5 * exp(-10 * ti); % Column vector (10x1)

    x1 = x(:, 1)';
    x2 = x(:, 2)';

    term1 = exp(-ti * x1);
    term2 = 5 * exp(-ti * x2);

    residuals_sq = (term1 - term2 - yi).^2;

    scores = sum(residuals_sq, 1)';
end

The function can be represented in Latex as follows:

f(x) = \sum_{i=1}^{10} \left( e^{-t_i x_1} - 5 e^{-t_i x_2} - \left(e^{-t_i} - 5 e^{-10 t_i}\right) \right)^2

References:

  • Biggs, M. C. (1971). “Notes on the Numerical Optimisation Centre’s nonlinear least-squares algorithm”. Technical Report No. 17, Numerical Optimisation Centre, Hatfield Polytechnic, Hatfield, UK
  • Jamil, M., & Yang, X. S. (2013). “A literature survey of benchmark functions for global optimization problems”. International Journal of Mathematical Modelling and Numerical Optimisation, 4(2), 150–194.
  • Bartholomew-Biggs, M. (2008). Nonlinear Optimization with Engineering Applications. Springer Science & Business Media