Source code for probnum.quad.solvers.acquisition_functions._acquisition_function

"""Abstract base class for BQ acquisition functions."""

from __future__ import annotations

import abc
from typing import Optional, Tuple

import numpy as np

from probnum.quad.solvers._bq_state import BQState


[docs]class AcquisitionFunction(abc.ABC): """An abstract class for an acquisition function for Bayesian quadrature.""" @property @abc.abstractmethod def has_gradients(self) -> bool: """Whether the acquisition function exposes gradients.""" raise NotImplementedError
[docs] @abc.abstractmethod def __call__( self, x: np.ndarray, bq_state: BQState ) -> Tuple[np.ndarray, Optional[np.ndarray]]: """Evaluates the acquisition function and optionally its gradients. Parameters ---------- x *shape=(batch_size, input_dim)* -- The nodes where the acquisition function is being evaluated. bq_state State of the BQ belief. Returns ------- acquisition_values : *shape=(batch_size, )* -- The acquisition values at nodes ``x``. acquisition_gradients : *shape=(batch_size, input_dim)* -- The corresponding gradients (optional). """ raise NotImplementedError