AckleyFunction#
- class AckleyFunction(A: float = 20, angle: float = 6.283185307179586, objective: str = 'minimize', modifiers: List[BaseModifier] | None = None, memory: bool = False, collect_data: bool = True, callbacks: Callable | List[Callable] | None = None, catch_errors: Dict[type, float] | None = None)[source]#
Ackley two-dimensional test function.
A non-convex function used as a performance test problem for optimization algorithms. It has a nearly flat outer region with a large hole at the center, making it challenging for optimization methods.
The function is defined as:
\[f(x, y) = -A \exp\left[-0.2\sqrt{0.5(x^2+y^2)}\right] - \exp\left[0.5(\cos \omega x + \cos \omega y)\right] + e + A\]where \(A = 20\) and \(\omega = 2\pi\) by default.
The global minimum is \(f(0, 0) = 0\).
- Parameters:
References
Examples
>>> from surfaces.test_functions import AckleyFunction >>> func = AckleyFunction() >>> result = func({"x0": 0.0, "x1": 0.0}) >>> abs(result) < 1e-10 True
- __call__(params: Dict[str, Any] | ndarray | list | tuple | None = None, **kwargs)[source]#
Evaluate the objective function.
- Args:
params: Parameter values as dict, array, list, or tuple **kwargs: Parameters as keyword arguments (only with dict input)
- Returns:
The objective function value
- batch(X: ArrayLike) ArrayLike[source]#
Evaluate multiple parameter sets in a single call.
- Parameters:
X (ArrayLike) – 2D array of shape (n_points, n_dim) where each row is a parameter set.
- Returns:
1D array of shape (n_points,) with evaluation results.
- Return type:
ArrayLike
- Raises:
NotImplementedError – If the function does not implement _batch_objective.
ValueError – If X has wrong number of dimensions or wrong n_dim.
- pure(params: Dict[str, Any] | ndarray | list | tuple | None = None, **kwargs)[source]#
Evaluate the function without modifiers.
Returns the true (deterministic) function value, bypassing any configured modifiers. Does not update search_data, n_evaluations, or callbacks. Ignores memory caching.