Skip to content

API Reference¤

Function Registry¤

Centralized access to the benchmark functions and their metadata.

  • bbob_jax.registry: Randomized variants of each function. Call with x and key to get a reproducible stochastic instance (random shifts/rotations and fopt).
  • bbob_jax.registry_original: Deterministic baseline variants (no random shift/rotation, no output offset). Useful for debugging and reference.
  • bbob_jax.function_characteristics: Loss-landscape properties per function (e.g., separability, conditioning, modality) to filter or group benchmarks.

bbob_jax.registry = {'attractive_sector': Partial(<function _make_with_mat at 0x7c040cb43a60>, fn=<function attractive_sector at 0x7c040cb407c0>, alpha=10.0, order='QLR'), 'bent_cigar': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function bent_cigar at 0x7c040cb40c20>), 'discuss': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function discuss at 0x7c040cb40b80>), 'ellipsoid': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function ellipsoid at 0x7c040cb40ae0>), 'ellipsoid_seperable': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function ellipsoid_seperable at 0x7c040cafba60>), 'gallagher_21_peaks': Partial(<function _make_gallagher_randomized at 0x7c040cb43f60>, fn=<function gallagher_21_peaks at 0x7c040cb41620>, num_peaks=21, w_divisor=19, alpha_first=1000000.0, y_minval=-4.9, y_maxval=4.9), 'gallagher_101_peaks': Partial(<function _make_gallagher_randomized at 0x7c040cb43f60>, fn=<function gallagher_101_peaks at 0x7c040cb41580>, num_peaks=101, w_divisor=99, alpha_first=1000.0, y_minval=-5.0, y_maxval=5.0), 'griewank_rosenbrock_f8f2': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function griewank_rosenbrock_f8f2 at 0x7c040cb413a0>), 'katsuura': Partial(<function _make_with_mat at 0x7c040cb43a60>, fn=<function katsuura at 0x7c040cb41760>, alpha=100.0, order='QLR'), 'linear_slope': Partial(<function _make_linear_slope at 0x7c040cb43ba0>, fn=<function linear_slope at 0x7c040cb40720>), 'lunacek_bi_rastrigin': Partial(<function _make_lunacek_randomized at 0x7c040cb43e20>, fn=<function lunacek_bi_rastrigin at 0x7c040cb41800>), 'rastrigin': Partial(<function _make_with_mat at 0x7c040cb43a60>, fn=<function rastrigin at 0x7c040cb40f40>, alpha=10.0, order='RLQ'), 'rastrigin_seperable': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function rastrigin_seperable at 0x7c040cb405e0>), 'rosenbrock': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function rosenbrock at 0x7c040cb409a0>), 'rosenbrock_rotated': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function rosenbrock_rotated at 0x7c040cb40a40>), 'schaffer_f7_condition_10': Partial(<function _make_with_mat at 0x7c040cb43a60>, fn=<function schaffer_f7_condition_10 at 0x7c040cb411c0>, alpha=10.0, order='LQ'), 'schaffer_f7_condition_1000': Partial(<function _make_with_mat at 0x7c040cb43a60>, fn=<function schaffer_f7_condition_1000 at 0x7c040cb41300>, alpha=1000.0, order='LQ'), 'schwefel_xsinx': Partial(<function _make_schwefel at 0x7c040cb43ce0>, fn=<function schwefel_xsinx at 0x7c040cb41440>), 'sharp_ridge': Partial(<function _make_with_mat at 0x7c040cb43a60>, fn=<function sharp_ridge at 0x7c040cb40d60>, alpha=10.0, order='QLR'), 'skew_rastrigin_bueche': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function skew_rastrigin_bueche at 0x7c040cb40680>), 'sphere': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function sphere at 0x7c041988b600>), 'step_ellipsoid': Partial(<function _make_with_mat at 0x7c040cb43a60>, fn=<function step_ellipsoid at 0x7c040cb40900>, alpha=10.0, order='LR'), 'sum_of_different_powers': Partial(<function make_randomized at 0x7c040cb439c0>, fn=<function sum_of_different_powers at 0x7c040cb40e00>), 'weierstrass': Partial(<function _make_with_mat at 0x7c040cb43a60>, fn=<function weierstrass at 0x7c040cb41080>, alpha=0.01, order='RLQ')} module-attribute ¤

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)

bbob_jax.registry_original = {'attractive_sector': Partial(<function _make_with_mat_deterministic at 0x7c040cb43b00>, fn=<function attractive_sector at 0x7c040cb407c0>, alpha=10.0, order='QLR'), 'bent_cigar': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function bent_cigar at 0x7c040cb40c20>), 'discuss': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function discuss at 0x7c040cb40b80>), 'ellipsoid': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function ellipsoid at 0x7c040cb40ae0>), 'ellipsoid_seperable': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function ellipsoid_seperable at 0x7c040cafba60>), 'gallagher_21_peaks': Partial(<function _make_gallagher_deterministic at 0x7c040cb60040>, fn=<function gallagher_21_peaks at 0x7c040cb41620>, num_peaks=21, w_divisor=19, alpha_first=1000000.0, y_minval=-4.9, y_maxval=4.9), 'gallagher_101_peaks': Partial(<function _make_gallagher_deterministic at 0x7c040cb60040>, fn=<function gallagher_101_peaks at 0x7c040cb41580>, num_peaks=101, w_divisor=99, alpha_first=1000.0, y_minval=-5.0, y_maxval=5.0), 'griewank_rosenbrock_f8f2': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function griewank_rosenbrock_f8f2 at 0x7c040cb413a0>), 'katsuura': Partial(<function _make_with_mat_deterministic at 0x7c040cb43b00>, fn=<function katsuura at 0x7c040cb41760>, alpha=100.0, order='QLR'), 'linear_slope': Partial(<function _make_linear_slope_deterministic at 0x7c040cb43c40>, fn=<function linear_slope at 0x7c040cb40720>), 'lunacek_bi_rastrigin': Partial(<function _make_lunacek_deterministic at 0x7c040cb43ec0>, fn=<function lunacek_bi_rastrigin at 0x7c040cb41800>), 'rastrigin': Partial(<function _make_with_mat_deterministic at 0x7c040cb43b00>, fn=<function rastrigin at 0x7c040cb40f40>, alpha=10.0, order='RLQ'), 'rastrigin_seperable': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function rastrigin_seperable at 0x7c040cb405e0>), 'rosenbrock': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function rosenbrock at 0x7c040cb409a0>), 'rosenbrock_rotated': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function rosenbrock_rotated at 0x7c040cb40a40>), 'schaffer_f7_condition_10': Partial(<function _make_with_mat_deterministic at 0x7c040cb43b00>, fn=<function schaffer_f7_condition_10 at 0x7c040cb411c0>, alpha=10.0, order='LQ'), 'schaffer_f7_condition_1000': Partial(<function _make_with_mat_deterministic at 0x7c040cb43b00>, fn=<function schaffer_f7_condition_1000 at 0x7c040cb41300>, alpha=1000.0, order='LQ'), 'schwefel_xsinx': Partial(<function _make_schwefel_deterministic at 0x7c040cb43d80>, fn=<function schwefel_xsinx at 0x7c040cb41440>), 'sharp_ridge': Partial(<function _make_with_mat_deterministic at 0x7c040cb43b00>, fn=<function sharp_ridge at 0x7c040cb40d60>, alpha=10.0, order='QLR'), 'skew_rastrigin_bueche': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function skew_rastrigin_bueche at 0x7c040cb40680>), 'sphere': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function sphere at 0x7c041988b600>), 'step_ellipsoid': Partial(<function _make_with_mat_deterministic at 0x7c040cb43b00>, fn=<function step_ellipsoid at 0x7c040cb40900>, alpha=10.0, order='LR'), 'sum_of_different_powers': Partial(<function make_determinstic at 0x7c040cb43920>, fn=<function sum_of_different_powers at 0x7c040cb40e00>), 'weierstrass': Partial(<function _make_with_mat_deterministic at 0x7c040cb43b00>, fn=<function weierstrass at 0x7c040cb41080>, alpha=0.01, order='RLQ')} module-attribute ¤

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)

bbob_jax.function_characteristics = defaultdict(<class 'dict'>, {'sphere': {'separable': True, 'unimodal': True}, 'ellipsoid_seperable': {'separable': True, 'unimodal': True}, 'rastrigin_seperable': {'separable': True, 'unimodal': True}, 'skew_rastrigin_bueche': {'separable': True, 'unimodal': True}, 'linear_slope': {'separable': True, 'unimodal': True}, 'attractive_sector': {'separable': False, 'unimodal': True}, 'step_ellipsoid': {'separable': False, 'unimodal': True}, 'rosenbrock': {'separable': False, 'unimodal': True}, 'rosenbrock_rotated': {'separable': False, 'unimodal': True}, 'ellipsoid': {'separable': False, 'unimodal': True}, 'discuss': {'separable': False, 'unimodal': True}, 'bent_cigar': {'separable': False, 'unimodal': True}, 'sharp_ridge': {'separable': False, 'unimodal': True}, 'sum_of_different_powers': {'separable': False, 'unimodal': True}, 'rastrigin': {'separable': False, 'unimodal': False}, 'weierstrass': {'separable': False, 'unimodal': False}, 'schaffer_f7_condition_10': {'separable': False, 'unimodal': False}, 'schaffer_f7_condition_1000': {'separable': False, 'unimodal': False}, 'griewank_rosenbrock_f8f2': {'separable': False, 'unimodal': False}, 'schwefel_xsinx': {'separable': False, 'unimodal': False}, 'gallagher_101_peaks': {'separable': False, 'unimodal': False}, 'gallagher_21_peaks': {'separable': False, 'unimodal': False}, 'katsuura': {'separable': False, 'unimodal': False}, 'lunacek_bi_rastrigin': {'separable': False, 'unimodal': False}}) module-attribute ¤

defaultdict(default_factory=None, /, [...]) --> dict with default factory

The default factory is called without arguments to produce a new value when a key is not present, in getitem only. A defaultdict compares equal to a dict with the same items. All remaining arguments are treated the same as if they were passed to the dict constructor, including keyword arguments.

Plotting Utilities¤

Helpers to quickly visualize functions in 2D and 3D. These utilities evaluate a provided benchmark function over a grid and render either a heatmap or a surface plot.

  • plot_2d: Renders a log-normalized heatmap of the function landscape.
  • plot_3d: Renders a 3D surface; z-values are sym-log normalized for readability.

bbob_jax.plotting.plot_2d(fn: Callable, key: typing.Union[jaxtyping.Key[Array, ''], jaxtyping.UInt32[Array, 2]], bounds: tuple[float, float] = (-5.0, 5.0), px: int = 300, ax: typing.Optional[matplotlib.axes._axes.Axes] = None, log_norm: bool = True) -> tuple[matplotlib.figure.Figure, matplotlib.axes._axes.Axes] ¤

Plot a 2D heatmap of a BBOB function.

Creates a 2D visualization of the function landscape using imshow.

Parameters:

Name Type Description Default
fn Callable

BBOB function to plot. Should accept (x, key) parameters.

required
key Union

JAX random key for function evaluation.

required
bounds tuple[float, float]

Min and max values for both x and y axes, by default (-5.0, 5.0).

(-5.0, 5.0)
px int

Number of pixels per axis (resolution), by default 300.

300
ax Optional[Axes]

Matplotlib axes to plot on. If None, creates new figure, by default None.

None
log_norm bool

Whether to use logarithmic normalization for colors, by default True.

True

Returns:

Type Description
tuple[Figure, Axes]

Figure and axes objects containing the plot.

bbob_jax.plotting.plot_3d(fn: Callable, key: typing.Union[jaxtyping.Key[Array, ''], jaxtyping.UInt32[Array, 2]], bounds: tuple[float, float] = (-5.0, 5.0), px: int = 300, ax: typing.Optional[matplotlib.axes._axes.Axes] = None) -> tuple[matplotlib.figure.Figure, matplotlib.axes._axes.Axes] ¤

Plot a 3D surface of a BBOB function.

Creates a 3D visualization of the function landscape with shifted z-values for better visualization.

Parameters:

Name Type Description Default
fn Callable

BBOB function to plot. Should accept (x, key) parameters.

required
key Union

JAX random key for function evaluation.

required
bounds tuple[float, float]

Min and max values for both x and y axes, by default (-5.0, 5.0).

(-5.0, 5.0)
px int

Number of pixels per axis (resolution), by default 300.

300
ax Optional[Axes]

Matplotlib 3D axes to plot on. If None, creates new figure, by default None.

None

Returns:

Type Description
tuple[Figure, Axes]

Figure and 3D axes objects containing the plot.

CEC 2005 Registry¤

Centralized access to the CEC 2005 benchmark functions and their metadata.

  • bbob_jax.cec2005_registry: Randomized variants of each CEC 2005 function. Parameters (shift vectors, rotation matrices) are generated from seeds rather than loaded from the official CEC 2005 data files — results will not match published CEC 2005 benchmarking results.
  • bbob_jax.cec2005_registry_original: Deterministic baseline variants (no random shift/rotation, no output offset). Useful for debugging and reference.
  • bbob_jax.cec2005_function_characteristics: Properties per function (unimodal/multimodal/composition/rotated flags, plus noise_omitted and structure_modified flags where the JAX implementation deviates from the official spec).

bbob_jax.cec2005_registry = {'f1': Partial(<function make_randomized_cec2005 at 0x7c040cb60180>, fn=<function f1 at 0x7c040cb419e0>, num_components=1, minval=-100.0, maxval=100.0), 'f2': Partial(<function make_randomized_cec2005 at 0x7c040cb60180>, fn=<function f2 at 0x7c040cb41a80>, num_components=1, minval=-100.0, maxval=100.0), 'f3': Partial(<function make_randomized_cec2005 at 0x7c040cb60180>, fn=<function f3 at 0x7c040cb41b20>, num_components=1, minval=-100.0, maxval=100.0), 'f4': Partial(<function make_randomized_cec2005 at 0x7c040cb60180>, fn=<function f4 at 0x7c040cb41c60>, num_components=1, minval=-100.0, maxval=100.0), 'f5': Partial(<function _make_randomized_cec2005_f5 at 0x7c040cb60360>, fn=<function f5 at 0x7c040cb41d00>, num_components=1), 'f6': Partial(<function make_randomized_cec2005 at 0x7c040cb60180>, fn=<function f6 at 0x7c040cb41da0>, num_components=1, minval=-100.0, maxval=100.0), 'f7': Partial(<function _make_randomized_cec2005_f7 at 0x7c040cb60540>, fn=<function f7 at 0x7c040cb41e40>, num_components=1), 'f8': Partial(<function _make_randomized_cec2005_f8 at 0x7c040cb60400>, fn=<function f8 at 0x7c040cb41ee0>, num_components=1), 'f9': Partial(<function make_randomized_cec2005 at 0x7c040cb60180>, fn=<function f9 at 0x7c040cb41f80>, num_components=1, minval=-5.0, maxval=5.0), 'f10': Partial(<function _make_randomized_cec2005_conditioned_single at 0x7c040cb60680>, fn=<function f10 at 0x7c040cb42020>, minval=-5.0, maxval=5.0, condition_number=2.0), 'f11': Partial(<function _make_randomized_cec2005_conditioned_single at 0x7c040cb60680>, fn=<function f11 at 0x7c040cb420c0>, minval=-0.5, maxval=0.5, condition_number=5.0), 'f12': Partial(<function _make_randomized_cec2005_f12 at 0x7c040cb604a0>, fn=<function f12 at 0x7c040cb42160>, num_components=1), 'f13': Partial(<function make_randomized_cec2005 at 0x7c040cb60180>, fn=<function f13 at 0x7c040cb42200>, num_components=1, minval=-3.0, maxval=1.0), 'f14': Partial(<function _make_randomized_cec2005_conditioned_single at 0x7c040cb60680>, fn=<function f14 at 0x7c040cb422a0>, minval=-100.0, maxval=100.0, condition_number=3.0), 'f15': Partial(<function _add_f_max at 0x7c040cb60860>, base_factory=<function make_randomized_cec2005 at 0x7c040cb60180>, comp_fns_builder=<function _composition1_fns at 0x7c040cb42980>, comp_lambda=(1, 1, 10, 10, 0.08333333333333333, 0.08333333333333333, 0.15625, 0.15625, 0.05, 0.05), fn=<function f15 at 0x7c040cb42ac0>, num_components=10, minval=-5.0, maxval=5.0), 'f16': Partial(<function _add_f_max at 0x7c040cb60860>, base_factory=<function make_randomized_cec2005_conditioned at 0x7c040cb60220>, comp_fns_builder=<function _composition1_fns at 0x7c040cb42980>, comp_lambda=(1, 1, 10, 10, 0.08333333333333333, 0.08333333333333333, 0.15625, 0.15625, 0.05, 0.05), fn=<function f16 at 0x7c040cb42c00>, num_components=10, minval=-5.0, maxval=5.0, condition_numbers=(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0)), 'f17': Partial(<function _add_f_max at 0x7c040cb60860>, base_factory=<function make_randomized_cec2005 at 0x7c040cb60180>, comp_fns_builder=<function _composition1_fns at 0x7c040cb42980>, comp_lambda=(1, 1, 10, 10, 0.08333333333333333, 0.08333333333333333, 0.15625, 0.15625, 0.05, 0.05), fn=<function f17 at 0x7c040cb42ca0>, num_components=10, minval=-5.0, maxval=5.0), 'f18': Partial(<function _add_f_max at 0x7c040cb60860>, base_factory=<function _make_randomized_cec2005_f18_family at 0x7c040cb60720>, comp_fns_builder=<function _composition2_fns at 0x7c040cb42d40>, comp_lambda=(0.3125, 0.15625, 2, 1, 0.1, 0.05, 20, 10, 0.16666666666666666, 0.08333333333333333), fn=<function f18 at 0x7c040cb42e80>, num_components=10), 'f19': Partial(<function _add_f_max at 0x7c040cb60860>, base_factory=<function _make_randomized_cec2005_f18_family at 0x7c040cb60720>, comp_fns_builder=<function _composition2_fns at 0x7c040cb42d40>, comp_lambda=(0.015625, 0.15625, 2, 1, 0.1, 0.05, 20, 10, 0.16666666666666666, 0.08333333333333333), fn=<function f19 at 0x7c040cb42fc0>, num_components=10), 'f20': Partial(<function _add_f_max at 0x7c040cb60860>, base_factory=<function _make_randomized_cec2005_f20 at 0x7c040cb607c0>, comp_fns_builder=<function _composition2_fns at 0x7c040cb42d40>, comp_lambda=(0.3125, 0.15625, 2, 1, 0.1, 0.05, 20, 10, 0.16666666666666666, 0.08333333333333333), fn=<function f20 at 0x7c040cb43100>, num_components=10), 'f21': Partial(<function _add_f_max at 0x7c040cb60860>, base_factory=<function make_randomized_cec2005_conditioned at 0x7c040cb60220>, comp_fns_builder=<function _composition3_fns at 0x7c040cb431a0>, comp_lambda=(0.25, 0.05, 5, 1, 5, 1, 50, 10, 0.125, 0.025), fn=<function f21 at 0x7c040cb43380>, num_components=10, minval=-5.0, maxval=5.0, condition_numbers=(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)), 'f22': Partial(<function _add_f_max at 0x7c040cb60860>, base_factory=<function make_randomized_cec2005_conditioned at 0x7c040cb60220>, comp_fns_builder=<function _composition3_fns at 0x7c040cb431a0>, comp_lambda=(0.25, 0.05, 5, 1, 5, 1, 50, 10, 0.125, 0.025), fn=<function f22 at 0x7c040cb434c0>, num_components=10, minval=-5.0, maxval=5.0, condition_numbers=(10.0, 20.0, 50.0, 100.0, 200.0, 1000.0, 2000.0, 3000.0, 4000.0, 5000.0)), 'f23': Partial(<function _add_f_max at 0x7c040cb60860>, base_factory=<function make_randomized_cec2005_conditioned at 0x7c040cb60220>, comp_fns_builder=<function _composition3_fns at 0x7c040cb431a0>, comp_lambda=(0.25, 0.05, 5, 1, 5, 1, 50, 10, 0.125, 0.025), fn=<function f23 at 0x7c040cb43600>, num_components=10, minval=-5.0, maxval=5.0, condition_numbers=(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)), 'f24': Partial(<function make_randomized_cec2005_conditioned at 0x7c040cb60220>, fn=<function f24 at 0x7c040cb436a0>, num_components=10, minval=-5.0, maxval=5.0, condition_numbers=(100.0, 50.0, 30.0, 10.0, 5.0, 5.0, 4.0, 3.0, 2.0, 2.0)), 'f25': Partial(<function make_randomized_cec2005_conditioned at 0x7c040cb60220>, fn=<function f25 at 0x7c040cb43740>, num_components=10, minval=-5.0, maxval=5.0, condition_numbers=(100.0, 50.0, 30.0, 10.0, 5.0, 5.0, 4.0, 3.0, 2.0, 2.0))} module-attribute ¤

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)

bbob_jax.cec2005_registry_original = {'f1': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f1 at 0x7c040cb419e0>, num_components=1), 'f2': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f2 at 0x7c040cb41a80>, num_components=1), 'f3': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f3 at 0x7c040cb41b20>, num_components=1), 'f4': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f4 at 0x7c040cb41c60>, num_components=1), 'f5': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f5 at 0x7c040cb41d00>, num_components=1), 'f6': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f6 at 0x7c040cb41da0>, num_components=1), 'f7': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f7 at 0x7c040cb41e40>, num_components=1), 'f8': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f8 at 0x7c040cb41ee0>, num_components=1), 'f9': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f9 at 0x7c040cb41f80>, num_components=1), 'f10': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f10 at 0x7c040cb42020>, num_components=1), 'f11': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f11 at 0x7c040cb420c0>, num_components=1), 'f12': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f12 at 0x7c040cb42160>, num_components=1), 'f13': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f13 at 0x7c040cb42200>, num_components=1), 'f14': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f14 at 0x7c040cb422a0>, num_components=1), 'f15': Partial(<function _add_f_max_deterministic at 0x7c040cb609a0>, comp_fns_builder=<function _composition1_fns at 0x7c040cb42980>, comp_lambda=(1, 1, 10, 10, 0.08333333333333333, 0.08333333333333333, 0.15625, 0.15625, 0.05, 0.05), fn=<function f15 at 0x7c040cb42ac0>, num_components=10), 'f16': Partial(<function _add_f_max_deterministic at 0x7c040cb609a0>, comp_fns_builder=<function _composition1_fns at 0x7c040cb42980>, comp_lambda=(1, 1, 10, 10, 0.08333333333333333, 0.08333333333333333, 0.15625, 0.15625, 0.05, 0.05), fn=<function f16 at 0x7c040cb42c00>, num_components=10), 'f17': Partial(<function _add_f_max_deterministic at 0x7c040cb609a0>, comp_fns_builder=<function _composition1_fns at 0x7c040cb42980>, comp_lambda=(1, 1, 10, 10, 0.08333333333333333, 0.08333333333333333, 0.15625, 0.15625, 0.05, 0.05), fn=<function f17 at 0x7c040cb42ca0>, num_components=10), 'f18': Partial(<function _add_f_max_deterministic at 0x7c040cb609a0>, comp_fns_builder=<function _composition2_fns at 0x7c040cb42d40>, comp_lambda=(0.3125, 0.15625, 2, 1, 0.1, 0.05, 20, 10, 0.16666666666666666, 0.08333333333333333), fn=<function f18 at 0x7c040cb42e80>, num_components=10), 'f19': Partial(<function _add_f_max_deterministic at 0x7c040cb609a0>, comp_fns_builder=<function _composition2_fns at 0x7c040cb42d40>, comp_lambda=(0.015625, 0.15625, 2, 1, 0.1, 0.05, 20, 10, 0.16666666666666666, 0.08333333333333333), fn=<function f19 at 0x7c040cb42fc0>, num_components=10), 'f20': Partial(<function _add_f_max_deterministic at 0x7c040cb609a0>, comp_fns_builder=<function _composition2_fns at 0x7c040cb42d40>, comp_lambda=(0.3125, 0.15625, 2, 1, 0.1, 0.05, 20, 10, 0.16666666666666666, 0.08333333333333333), fn=<function f20 at 0x7c040cb43100>, num_components=10), 'f21': Partial(<function _add_f_max_deterministic at 0x7c040cb609a0>, comp_fns_builder=<function _composition3_fns at 0x7c040cb431a0>, comp_lambda=(0.25, 0.05, 5, 1, 5, 1, 50, 10, 0.125, 0.025), fn=<function f21 at 0x7c040cb43380>, num_components=10), 'f22': Partial(<function _add_f_max_deterministic at 0x7c040cb609a0>, comp_fns_builder=<function _composition3_fns at 0x7c040cb431a0>, comp_lambda=(0.25, 0.05, 5, 1, 5, 1, 50, 10, 0.125, 0.025), fn=<function f22 at 0x7c040cb434c0>, num_components=10), 'f23': Partial(<function _add_f_max_deterministic at 0x7c040cb609a0>, comp_fns_builder=<function _composition3_fns at 0x7c040cb431a0>, comp_lambda=(0.25, 0.05, 5, 1, 5, 1, 50, 10, 0.125, 0.025), fn=<function f23 at 0x7c040cb43600>, num_components=10), 'f24': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f24 at 0x7c040cb436a0>, num_components=10), 'f25': Partial(<function make_deterministic_cec2005 at 0x7c040cb602c0>, fn=<function f25 at 0x7c040cb43740>, num_components=10)} module-attribute ¤

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)

bbob_jax.cec2005_function_characteristics = defaultdict(<class 'dict'>, {'f1': {'unimodal': True, 'multimodal': False, 'composition': False, 'rotated': False, 'noise': False, 'structure_modified': False}, 'f2': {'unimodal': True, 'multimodal': False, 'composition': False, 'rotated': False, 'noise': False, 'structure_modified': False}, 'f3': {'unimodal': True, 'multimodal': False, 'composition': False, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f4': {'unimodal': True, 'multimodal': False, 'composition': False, 'rotated': False, 'noise': True, 'structure_modified': False}, 'f5': {'unimodal': True, 'multimodal': False, 'composition': False, 'rotated': False, 'noise': False, 'structure_modified': False}, 'f6': {'unimodal': False, 'multimodal': True, 'composition': False, 'rotated': False, 'noise': False, 'structure_modified': False}, 'f7': {'unimodal': False, 'multimodal': True, 'composition': False, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f8': {'unimodal': False, 'multimodal': True, 'composition': False, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f9': {'unimodal': False, 'multimodal': True, 'composition': False, 'rotated': False, 'noise': False, 'structure_modified': False}, 'f10': {'unimodal': False, 'multimodal': True, 'composition': False, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f11': {'unimodal': False, 'multimodal': True, 'composition': False, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f12': {'unimodal': False, 'multimodal': True, 'composition': False, 'rotated': False, 'noise': False, 'structure_modified': False}, 'f13': {'unimodal': False, 'multimodal': True, 'composition': False, 'rotated': False, 'noise': False, 'structure_modified': False}, 'f14': {'unimodal': False, 'multimodal': True, 'composition': False, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f15': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': False, 'noise': False, 'structure_modified': False}, 'f16': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f17': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': True, 'structure_modified': False}, 'f18': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f19': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f20': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f21': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f22': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': False, 'structure_modified': False}, 'f23': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': False, 'structure_modified': True}, 'f24': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': True, 'structure_modified': True}, 'f25': {'unimodal': False, 'multimodal': True, 'composition': True, 'rotated': True, 'noise': True, 'structure_modified': True}}) module-attribute ¤

defaultdict(default_factory=None, /, [...]) --> dict with default factory

The default factory is called without arguments to produce a new value when a key is not present, in getitem only. A defaultdict compares equal to a dict with the same items. All remaining arguments are treated the same as if they were passed to the dict constructor, including keyword arguments.

CEC 2005 Functions¤

Individual CEC 2005 benchmark function APIs (F1–F25). Access via the registries is recommended; the registry supplies internal parameters so the user-facing call is just fn(x).

Note: Parameters are generated from seeds rather than loaded from the official CEC 2005 data files. Functions F4 and F17 have Gaussian noise omitted for jax.grad compatibility. Function F23 has its rounding step removed. See cec2005_function_characteristics for per-function flags.

bbob_jax._src.cec2005.f1(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Sphere function (F1).

Simple unimodal function with global optimum at x_opt.

F1 3D surface F1 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix (unused).

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f2(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Schwefel's Problem 1.2 (F2).

Unimodal function with non-separable variables via cumulative sum.

F2 3D surface F2 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix (unused).

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f3(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Rotated High Conditioned Elliptic function (F3).

Unimodal function with high conditioning and rotation applied.

F3 3D surface F3 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f4(x: Array, key: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Schwefel 1.2 with Noise (F4).

Applies multiplicative Gaussian noise: f(x) * (1 + 0.4 * N(0,1)).

F4 3D surface F4 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
key Array

JAX PRNGKey for stochastic noise.

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix (unused).

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f5(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Schwefel's Problem 2.6 with Global Optimum on Bounds (F5).

Non-differentiable function based on the Chebyshev norm. R is repurposed as the A matrix (n x n). In the official CEC 2005 spec, x_opt has components clamped to ±5; here x_opt is sampled from [-100, 100] as parameters are seed-generated rather than loaded from official data files.

F5 3D surface F5 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Repurposed as the A matrix (n x n); b = A @ x_opt is computed internally.

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f6(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Rosenbrock's function (F6).

Multimodal function with a narrow curved valley. Input is shifted by x - x_opt + 1 to place the valley at x_opt.

F6 3D surface F6 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix (unused).

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f7(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Rotated Griewank's without Bounds (F7).

Multimodal function with many regularly distributed local optima.

F7 3D surface F7 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f8(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Rotated Ackley's with Global Optimum on Bounds (F8).

Multimodal function with many local optima and a nearly flat outer region.

F8 3D surface F8 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f9(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Rastrigin's function (F9).

Highly multimodal function with many local optima arranged in a grid. Variables are not rotated.

F9 3D surface F9 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix (unused).

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f10(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Rotated Rastrigin's function (F10).

Highly multimodal function with many local optima and rotation applied.

F10 3D surface F10 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f11(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Rotated Weierstrass function (F11).

Continuous but differentiable only finitely many times. Highly multimodal.

F11 3D surface F11 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f12(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Schwefel's Problem 2.13 (F12).

Unimodal function defined via inner-product matrices. R is repurposed as the 'a' matrix (n x n), Q as the 'b' matrix (n x n), and x_opt stores the alpha vector (optimal solution).

F12 3D surface F12 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Alpha vector (optimal solution angles).

required
f_opt Array

Optimal function value offset.

required
R Array

Repurposed as the 'a' matrix (n x n).

required
Q Array

Repurposed as the 'b' matrix (n x n).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f13(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Expanded Extended Griewank's plus Rosenbrock's F8F2 (F13).

Applies a 1D Griewank function to consecutive Rosenbrock values cyclically. R and Q are unused.

F13 3D surface F13 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix (unused).

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f14(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Shifted Rotated Expanded Scaffer's F6 (F14).

Applies Scaffer's F6 to consecutive pairs cyclically after rotation.

F14 3D surface F14 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix (unused).

required

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f15(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Hybrid Composition Function 1 (F15).

Ten mixed components (Rastrigin, Weierstrass, Griewank, Ackley, Sphere) without rotation (identity matrices). sigma=[1]*10.

F15 3D surface F15 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix stack (overridden with identity).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f16(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Rotated Hybrid Composition Function 1 (F16).

Same as F15 but with rotation matrices (condition number 2).

F16 3D surface F16 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f17(x: Array, key: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Rotated Hybrid Composition Function 1 with Noise (F17).

Applies multiplicative absolute Gaussian noise to the base F16 result: f(x) * (1 + 0.4 * |N(0,1)|).

F17 3D surface F17 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
key Array

JAX PRNGKey for stochastic noise.

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f18(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Rotated Hybrid Composition Function 2 (F18).

Ten mixed components (Ackley, Rastrigin, Sphere, Weierstrass, Griewank). o10 = [0,...,0] sets a local optimum at origin.

F18 3D surface F18 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f19(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Rotated Hybrid Composition Function 2, Narrow Basin (F19).

Same as F18 but with sigma[0]=0.1 and lambda[0] scaled by 0.1.

F19 3D surface F19 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f20(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Hybrid Composition 2 with Global Optimum on Bounds (F20).

Same as F18. x_opt[0] has even-indexed dims (1-based) set to 5 by the registry factory.

F20 3D surface F20 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f21(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Rotated Hybrid Composition Function 3 (F21).

Ten mixed components (Scaffer's F6, Rastrigin, F8F2, Weierstrass, Griewank).

F21 3D surface F21 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f22(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Rotated Hybrid Composition 3, High Condition Number (F22).

Same as F21 but the factory supplies high-condition-number matrices [10, 20, 50, 100, 200, 1000, 2000, 3000, 4000, 5000].

F22 3D surface F22 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f23(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Non-Continuous Rotated Hybrid Composition Function 3 (F23).

Same as F21 but with soft rounding applied to x before evaluation. Uses softjax for jax.grad compatibility.

Notes

The soft rounding approximation shifts the effective minimum away from the theoretical optimum. At x_opt, the function value differs from f_opt by ~1e-2 across all tested dimensions.

F23 3D surface F23 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f24(x: Array, key: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Rotated Hybrid Composition Function 4 (F24).

Ten different components including non-continuous variants. Rotation matrices with condition numbers [100, 50, 30, 10, 5, 5, 4, 3, 2, 2] are supplied by the factory. The 10th component (noisy sphere) applies multiplicative absolute Gaussian noise: sphere(z) * (1 + 0.01 * |N(0,1)|).

F24 3D surface F24 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
key Array

JAX PRNGKey for stochastic noise in the noisy sphere component.

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax._src.cec2005.f25(x: Array, key: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _f_max: jax.Array | None = None) -> Array ¤

Rotated Hybrid Composition Function 4 without Bounds (F25).

Identical to F24. In the paper, this function differs only by the initialization range. The implementation keeps the same function formula while not constraining component optima to the initialization interval.

F25 3D surface F25 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
key Array

JAX PRNGKey for stochastic noise (forwarded to F24).

required
x_opt Array

Matrix of component optima of shape (10, ndim).

required
f_opt Array

Optimal function value offset.

required
R Array

Stack of rotation matrices of shape (10, ndim, ndim).

required
Q Array

Unused.

required
_f_max Array

Precomputed reference normalization values for composition components, of shape (num_components,).

None

Returns:

Type Description
Array

Function value(s).

BBOB Functions¤

Individual benchmark function APIs. Public call pattern is via the root package (e.g., bbob_jax.sphere). When used through the registries, call as fn(x, key=...); the registry supplies internal shift/rotation parameters so you only provide the decision vector x (shape (..., dim)) and an optional PRNG key.

bbob_jax.sphere(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Sphere function (F1).

Simple unimodal function with global optimum at origin.

Sphere function 3D surface Sphere function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.ellipsoid_seperable(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Separable ellipsoid function (F2).

Unimodal function with high conditioning. Variables are independent.

Ellipsoid seperable function 3D surface Ellipsoid seperable function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.rastrigin_seperable(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Separable Rastrigin function (F3).

Highly multimodal function with many local optima. Variables are independent.

Rastrigin seperable function 3D surface Rastrigin seperable function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.skew_rastrigin_bueche(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Skewed Rastrigin-Bueche function (F4).

Multimodal function with asymmetric conditioning and skewed search space.

Skew rastrigin bueche function 3D surface Skew rastrigin bueche function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.linear_slope(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _ls_x_opt: jax.Array | None = None, _ls_s: jax.Array | None = None) -> Array ¤

Linear slope function (F5).

Simple linear function with a single optimum at the boundary.

Linear slope function 3D surface Linear slope function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_ls_x_opt Array

Precomputed optimal point override (derived from Q).

None
_ls_s Array

Precomputed slope vector.

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.attractive_sector(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _mat: jax.Array | None = None) -> Array ¤

Attractive sector function (F6).

Unimodal function with smooth but highly asymmetric landscape.

Attractive sector function 3D surface Attractive sector function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_mat Array

Precomputed transformation matrix (Q @ lambda @ R).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.step_ellipsoid(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _mat: jax.Array | None = None) -> Array ¤

Step ellipsoid function (F7).

Unimodal function with plateau-like regions and discontinuities.

Step ellipsoid function 3D surface Step ellipsoid function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_mat Array

Precomputed transformation matrix (lambda @ R).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.rosenbrock(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Rosenbrock function (F8).

Classic benchmark with narrow valley leading to the optimum.

Rosenbrock function 3D surface Rosenbrock function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.rosenbrock_rotated(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Rosenbrock function, rotated (F9).

Rotated version of the Rosenbrock function with increased difficulty.

Rosenbrock rotated function 3D surface Rosenbrock rotated function 2D surface

Note

The true minimizer is not at x_opt but at x_opt + (0.5 / zmax) * ones @ R.T where zmax = max(1, sqrt(ndim) / 8). For some rotation matrices this point can fall outside the standard [-5, 5] bounds.

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.ellipsoid(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Ellipsoid function (F10).

Unimodal function with high conditioning, rotated.

Ellipsoid function 3D surface Ellipsoid function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.discuss(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Discus function (F11).

Unimodal function with one direction having much higher sensitivity.

Discuss function 3D surface Discuss function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.bent_cigar(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Bent cigar function (F12).

Unimodal function with a ridge, creating a cigar-like shape.

Bent cigar function 3D surface Bent cigar function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.sharp_ridge(x: Array, x_opt: Array, R: Array, Q: Array, f_opt: Array, _mat: jax.Array | None = None) -> Array ¤

Sharp ridge function (F13).

Unimodal function with a sharp ridge, difficult to follow.

Sharp ridge function 3D surface Sharp ridge function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
f_opt Array

Optimal function value offset.

required
_mat Array

Precomputed transformation matrix (Q @ lambda @ R).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.sum_of_different_powers(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Sum of different powers function (F14).

Unimodal function with different sensitivities across dimensions.

Sum of different powers function 3D surface Sum of different powers function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.rastrigin(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _mat: jax.Array | None = None) -> Array ¤

Rastrigin function (F15).

Highly multimodal function with many regularly distributed local optima.

Rastrigin function 3D surface Rastrigin function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_mat Array

Precomputed transformation matrix (R @ lambda @ Q).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.weierstrass(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _mat: jax.Array | None = None) -> Array ¤

Weierstrass function (F16).

Highly multimodal function with small peaks everywhere, continuous but non-differentiable.

Weierstrass function 3D surface Weierstrass function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_mat Array

Precomputed transformation matrix (R @ lambda @ Q).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.schaffer_f7_condition_10(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _mat: jax.Array | None = None) -> Array ¤

Schaffer F7 function with conditioning 10 (F17).

Multimodal function with asymmetric, moderately conditioned landscape.

Schaffer f7 condition 10 function 3D surface Schaffer f7 condition 10 function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_mat Array

Precomputed transformation matrix (lambda @ Q).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.schaffer_f7_condition_1000(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _mat: jax.Array | None = None) -> Array ¤

Schaffer F7 function with conditioning 1000 (F18).

Multimodal function with asymmetric, highly conditioned landscape.

Schaffer f7 condition 1000 function 3D surface Schaffer f7 condition 1000 function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_mat Array

Precomputed transformation matrix (lambda @ Q).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.griewank_rosenbrock_f8f2(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array) -> Array ¤

Griewank-Rosenbrock F8F2 function (F19).

Multimodal function combining Rosenbrock's narrow valley with Griewank's modulation.

Griewank rosenbrock f8f2 function 3D surface Griewank rosenbrock f8f2 function 2D surface

Note

The true minimizer is not at x_opt but at x_opt + (0.5 / zmax) * R.T @ ones where zmax = max(1, sqrt(ndim) / 8). For some rotation matrices this point can fall outside the standard [-5, 5] bounds.

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required

Returns:

Type Description
Array

Function value(s).

bbob_jax.schwefel_xsinx(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _sw_ones: jax.Array | None = None, _sw_x_opt_shape: jax.Array | None = None, _sw_lamb: jax.Array | None = None, _sw_f_ref: jax.Array | None = None) -> Array ¤

Schwefel x*sin(x) function (F20).

Multimodal function with many local optima and a global optimum far from origin.

Schwefel xsinx function 3D surface Schwefel xsinx function 2D surface

Note

The zero-offset constant (≈4.1898) is computed dynamically from the internal x_opt_shape rather than hardcoded as a precision-specific literal. This ensures exact cancellation at the optimum at whichever precision JAX is configured for (float32 or float64), avoiding the ~5e-7 residual a hardcoded float64 literal would leave behind under x32, and the equivalent precision mismatch under x64.

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_sw_ones Array

Precomputed Bernoulli sign vector (derived from Q).

None
_sw_x_opt_shape Array

Precomputed optimal shape vector.

None
_sw_lamb Array

Precomputed conditioning matrix (lambda).

None
_sw_f_ref Array

Precomputed reference function value for zero-offset.

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.gallagher_101_peaks(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _gal_w: jax.Array | None = None, _gal_y: jax.Array | None = None, _gal_c_diags: jax.Array | None = None) -> Array ¤

Gallagher 101 peaks function (F21).

Multimodal function with 101 optima of different heights.

Gallagher 101 peaks function 3D surface Gallagher 101 peaks function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_gal_w Array

Precomputed peak weight vector of shape (101,).

None
_gal_y Array

Precomputed peak location matrix of shape (101, ndim).

None
_gal_c_diags Array

Precomputed conditioning diagonal vectors of shape (101, ndim).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.gallagher_21_peaks(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _gal_w: jax.Array | None = None, _gal_y: jax.Array | None = None, _gal_c_diags: jax.Array | None = None) -> Array ¤

Gallagher 21 peaks function (F22).

Multimodal function with 21 optima of different heights.

Gallagher 21 peaks function 3D surface Gallagher 21 peaks function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_gal_w Array

Precomputed peak weight vector of shape (21,).

None
_gal_y Array

Precomputed peak location matrix of shape (21, ndim).

None
_gal_c_diags Array

Precomputed conditioning diagonal vectors of shape (21, ndim).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.katsuura(x: Array, x_opt: Array, f_opt: Array, R: Array, Q: Array, _mat: jax.Array | None = None) -> Array ¤

Katsuura function (F23).

Highly multimodal function with many small local optima, rugged landscape.

Katsuura function 3D surface Katsuura function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
f_opt Array

Optimal function value offset.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
_mat Array

Precomputed transformation matrix (Q @ lambda @ R).

None

Returns:

Type Description
Array

Function value(s).

bbob_jax.lunacek_bi_rastrigin(x: Array, x_opt: Array, R: Array, Q: Array, f_opt: Array, _mat: jax.Array | None = None, _x_opt_shape: jax.Array | None = None, _s: jax.Array | None = None, _mu1: jax.Array | None = None) -> Array ¤

Lunacek bi-Rastrigin function (F24).

Highly multimodal function with two funnels and many local optima.

Lunacek bi rastrigin function 3D surface Lunacek bi rastrigin function 2D surface

Parameters:

Name Type Description Default
x Array

Input array of shape (..., ndim).

required
x_opt Array

Optimal point.

required
R Array

Rotation matrix.

required
Q Array

Second rotation matrix.

required
f_opt Array

Optimal function value offset.

required
_mat Array

Precomputed transformation matrix (Q @ lambda @ R).

None
_x_opt_shape Array

Precomputed optimal shape vector (derived from Q).

None
_s Array

Precomputed conditioning parameter.

None
_mu1 Array

Precomputed second funnel center.

None

Returns:

Type Description
Array

Function value(s).