class_docstr: The acquisition function for Max-value Entropy Search.
  
  This acquisition function computes the mutual information of max values and
  a candidate point X. See [Wang2017mves]_ for a detailed discussion.
  
  The model must be single-outcome. The batch case `q > 1` is supported
  through cyclic optimization and fantasies.
  
  Example:
      >>> model = SingleTaskGP(train_X, train_Y)
      >>> candidate_set = torch.rand(1000, bounds.size(1))
      >>> candidate_set = bounds[0] + (bounds[1] - bounds[0]) * candidate_set
      >>> MES = qMaxValueEntropy(model, candidate_set)
      >>> mes = MES(test_X)
docstr: Set pending points.
  
  Informs the acquisition function about pending design points,
  fantasizes the model on the pending points and draws max-value samples
  from the fantasized model posterior.
  
  Args:
      X_pending: `m x d` Tensor with `m` `d`-dim design points that have
          been submitted for evaluation but have not yet been evaluated.
docstr_tok: ["Set","pending","points",".","Informs","the","acquisition","function","about","pending","design","points",",","fantasizes","the","model","on","the","pending","points","and","draws","max-value","samples","from","the","fantasized","model","posterior",".","Args",":","X_pending",":","`","m","x","d","`","Tensor","with","`","m","`","`","d","`","-dim","design","points","that","have","been","submitted","for","evaluation","but","have","not","yet","been","evaluated","."]
code: def set_X_pending(self, X_pending: Optional[Tensor] = None) -> None:
      r"""Set pending points.
  
      Informs the acquisition function about pending design points,
      fantasizes the model on the pending points and draws max-value samples
      from the fantasized model posterior.
  
      Args:
          X_pending: `m x d` Tensor with `m` `d`-dim design points that have
              been submitted for evaluation but have not yet been evaluated.
      """
      try:
          init_model = self._init_model
      except AttributeError:
          # Short-circuit (this allows calling the super constructor)
          return
      if X_pending is not None:
          # fantasize the model and use this as the new model
          self.model = init_model.fantasize(
              X=X_pending,
              sampler=self.fantasies_sampler,
          )
      else:
          self.model = init_model
      super().set_X_pending(X_pending)
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  from copy import deepcopy
  from math import log
  from typing import Any, Callable, Optional
  import numpy
  import torch
  from botorch.acquisition.acquisition import AcquisitionFunction, MCSamplerMixin
  from botorch.acquisition.cost_aware import CostAwareUtility, InverseCostWeightedUtility
  from botorch.acquisition.objective import PosteriorTransform
  from botorch.exceptions.errors import UnsupportedError
  from botorch.models.cost import AffineFidelityCostModel
  from botorch.models.model import Model
  from botorch.models.utils import check_no_nans
  from botorch.sampling.normal import SobolQMCNormalSampler
  from botorch.utils.transforms import match_batch_shape, t_batch_mode_transform
  from linear_operator.functions import inv_quad
  from linear_operator.utils.cholesky import psd_safe_cholesky
  from scipy.optimize import brentq
  from scipy.stats import norm
  from torch import Tensor
label_desc: Use image node_id 2 for calling the qMaxValueEntropy obj's underlying member method code with example usage: obj.set_X_pending(X_pending) without return types