class_docstr: Compute the integrated acquisition function by marginalizing over model hyperparameters
  
  See "Practical Bayesian Optimization of Machine Learning Algorithms" by Jasper Snoek et al.
  (https://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf)
  for further details.
  
  Parameters
  ----------
  acquisition_function : AbstractAcquisitionFunction
      Acquisition function to be integrated.
  
  Attributes
  ----------
  _acquisition_function : AbstractAcquisitionFunction
      Acquisition function to be integrated.
  _functions: list[AbstractAcquisitionFunction]
      Holds n (n = number of models) copies of the acquisition function.
  _eta : float
      Current incumbent function value.
class_docstr_tok: ["Compute","the","integrated","acquisition","function","by","marginalizing","over","model","hyperparameters","See","``","Practical","Bayesian","Optimization","of","Machine","Learning","Algorithms","''","by","Jasper","Snoek","et","al",".","(","https",":","\/\/papers.nips.cc\/paper\/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf",")","for","further","details",".","Parameters","--","--","--","--","--","acquisition_function",":","AbstractAcquisitionFunction","Acquisition","function","to","be","integrated",".","Attributes","--","--","--","--","--","_acquisition_function",":","AbstractAcquisitionFunction","Acquisition","function","to","be","integrated",".","_functions",":","list","[","AbstractAcquisitionFunction","]","Holds","n","(","n","=","number","of","models",")","copies","of","the","acquisition","function",".","_eta",":","float","Current","incumbent","function","value","."]
docstr: Update the acquisition functions values.
  
  This method will be called if the model is updated. For example, entropy search uses it to update its
  approximation of P(x=x_min) and EI uses it to update the current fmin.
  
  This implementation creates an acquisition function object for each model to integrate over and sets the
  respective attributes for each acquisition function object.
  
  Parameters
  ----------
  kwargs : Any
      Keyword arguments for the model.
  
  Raises
  ------
  ValueError
      If the number of models is zero.
docstr_tok: ["Update","the","acquisition","functions","values",".","This","method","will","be","called","if","the","model","is","updated",".","For","example",",","entropy","search","uses","it","to","update","its","approximation","of","P","(","x=x_min",")","and","EI","uses","it","to","update","the","current","fmin",".","This","implementation","creates","an","acquisition","function","object","for","each","model","to","integrate","over","and","sets","the","respective","attributes","for","each","acquisition","function","object",".","Parameters","--","--","--","--","--","kwargs",":","Any","Keyword","arguments","for","the","model",".","Raises","--","--","--","ValueError","If","the","number","of","models","is","zero","."]
code: def _update(self, **kwargs: Any) -> None:
      """Update the acquisition functions values.
  
      This method will be called if the model is updated. For example, entropy search uses it to update its
      approximation of P(x=x_min) and EI uses it to update the current fmin.
  
      This implementation creates an acquisition function object for each model to integrate over and sets the
      respective attributes for each acquisition function object.
  
      Parameters
      ----------
      kwargs : Any
          Keyword arguments for the model.
  
      Raises
      ------
      ValueError
          If the number of models is zero.
      """
      model = self.model
      models: list[AbstractModel] | None = None
      if hasattr(model, "models"):
          models = model.models  # type: ignore
  
      if models is None or len(models) == 0:
          raise ValueError(
              "IntegratedAcquisitionFunction requires at least one model to integrate!"
          )
  
      if len(self._functions) == 0 or len(self._functions) != len(
          models
      ):
          self._functions = [
              copy.deepcopy(self._acquisition_function) for _ in models
          ]
  
      for submodel, func in zip(models, self._functions):
          func.update(model=submodel, **kwargs)
  
file_path: SMAC3/smac/acquisition/function/integrated_acquisition_function.py
imports: from __future__ import annotations
  from typing import Any
  import copy
  import numpy
  from smac.acquisition.function.abstract_acquisition_function import AbstractAcquisitionFunction
  from smac.model.abstract_model import AbstractModel
  from smac.utils.logging import get_logger
label_desc: Use image node_id 4 for calling the IntegratedAcquisitionFunction obj's underlying member method code with example usage: obj._update() without return types