class_docstr: The acquisition function for MESMO.
  
  This acquisition function computes the mutual information of
  Pareto frontier and a candidate point. See [Belakaria2019]_ for
  a detailed discussion.
  
  q > 1 is supported through cyclic optimization and fantasies.
  
  Noisy observations are support by computing information gain with
  observation noise as in Appendix C in [Takeno2020mfmves]_.
  
  Note: this only supports maximization.
  
  Attributes:
      _default_sample_shape: The `sample_shape` for the default sampler.
  
  Example:
      >>> model = SingleTaskGP(train_X, train_Y)
      >>> MESMO = qMultiObjectiveMaxValueEntropy(model, sample_pfs)
      >>> mesmo = MESMO(test_X)
class_docstr_tok: ["The","acquisition","function","for","MESMO",".","This","acquisition","function","computes","the","mutual","information","of","Pareto","frontier","and","a","candidate","point",".","See","[","Belakaria2019","]","_","for","a","detailed","discussion",".","q",">","1","is","supported","through","cyclic","optimization","and","fantasies",".","Noisy","observations","are","support","by","computing","information","gain","with","observation","noise","as","in","Appendix","C","in","[","Takeno2020mfmves","]","_",".","Note",":","this","only","supports","maximization",".","Attributes",":","_default_sample_shape",":","The","`","sample_shape","`","for","the","default","sampler",".","Example",":",">",">",">","model","=","SingleTaskGP","(","train_X",",","train_Y",")",">",">",">","MESMO","=","qMultiObjectiveMaxValueEntropy","(","model",",","sample_pfs",")",">",">",">","mesmo","=","MESMO","(","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.
      """
      MultiObjectiveMCAcquisitionFunction.set_X_pending(
          self, X_pending=X_pending
      )
      if X_pending is not None:
          # fantasize the model
          fantasy_model = self._init_model.fantasize(
              X=X_pending,
              sampler=self.fantasies_sampler,
          )
          self.mo_model = fantasy_model
          # convert model to batched single outcome model.
          self.model = batched_multi_output_to_single_output(
              batch_mo_model=self.mo_model
          )
          self._sample_max_values()
      else:
          # This is mainly for setting the model to the original model
          # after the sequential optimization at q > 1
          self.mo_model = self._init_model
          self.model = batched_multi_output_to_single_output(
              batch_mo_model=self.mo_model
          )
          self._sample_max_values()
  
imports: from __future__ import annotations
  from math import pi
  from typing import Any, Callable, Optional, Tuple, Union
  import torch
  from botorch.acquisition.max_value_entropy_search import qMaxValueEntropy
  from botorch.acquisition.multi_objective.joint_entropy_search import LowerBoundMultiObjectiveEntropySearch
  from botorch.acquisition.multi_objective.monte_carlo import MultiObjectiveMCAcquisitionFunction
  from botorch.models.converter import batched_multi_output_to_single_output, model_list_to_batched
  from botorch.models.model import Model
  from botorch.models.model_list_gp_regression import ModelListGP
  from botorch.posteriors.gpytorch import GPyTorchPosterior
  from botorch.sampling.base import MCSampler
  from botorch.sampling.normal import SobolQMCNormalSampler
  from botorch.utils.transforms import concatenate_pending_points, t_batch_mode_transform
  from torch import Tensor
label_desc: Use image node_id 2 for calling the qMultiObjectiveMaxValueEntropy obj's underlying member method code with example usage: obj.set_X_pending(X_pending) without return types