Source code for pyvbmc.acquisition_functions.acq_fcn
import sys
import gpyreg as gpr
import numpy as np
from pyvbmc.function_logger import FunctionLogger
from pyvbmc.variational_posterior import VariationalPosterior
from .abstract_acq_fcn import AbstractAcqFcn
[docs]
class AcqFcn(AbstractAcqFcn):
"""
Acquisition function for prospective uncertainty search.
"""
def _compute_acquisition_function(
self,
Xs: np.ndarray,
vp: VariationalPosterior,
gp: gpr.GP,
function_logger: FunctionLogger,
optim_state: dict,
f_mu: np.ndarray,
f_s2: np.ndarray,
f_bar: np.ndarray,
var_tot: np.ndarray,
):
"""
Compute the value of the acquisition function.
"""
# Xs is in *transformed* coordinates
# Probability density of variational posterior at test points
realmin = sys.float_info.min
p = np.ravel(np.maximum(vp.pdf(Xs, orig_flag=False), realmin))
# Prospective uncertainty search
z = function_logger.y_max
acq = -var_tot * np.exp(f_bar - z) * p
return acq