class_docstr: Abstract base class for Multi-Objective batch acquisition functions.
  
  NOTE: This does not inherit from `MCAcquisitionFunction` to avoid circular imports.
  
  Args:
      _default_sample_shape: The `sample_shape` for the default sampler.
docstr: Takes in a `batch_shape x q x d` X Tensor of t-batches with `q` `d`-dim
  design points each, and returns a Tensor with shape `batch_shape'`, where
  `batch_shape'` is the broadcasted batch shape of model and input `X`. Should
  utilize the result of `set_X_pending` as needed to account for pending function
  evaluations.
docstr_tok: ["Takes","in","a","`","batch_shape","x","q","x","d","`","X","Tensor","of","t-batches","with","`","q","`","`","d","`","-dim","design","points","each",",","and","returns","a","Tensor","with","shape","`","batch_shape","'","`",",","where","`","batch_shape","'","`","is","the","broadcasted","batch","shape","of","model","and","input","`","X","`",".","Should","utilize","the","result","of","`","set_X_pending","`","as","needed","to","account","for","pending","function","evaluations","."]
code: def forward(self, X: Tensor) -> Tensor:
      r"""Takes in a `batch_shape x q x d` X Tensor of t-batches with `q` `d`-dim
      design points each, and returns a Tensor with shape `batch_shape'`, where
      `batch_shape'` is the broadcasted batch shape of model and input `X`. Should
      utilize the result of `set_X_pending` as needed to account for pending function
      evaluations.
      """
      pass
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  from typing import Callable, List, Optional, Union
  import torch
  from botorch.acquisition.acquisition import AcquisitionFunction, MCSamplerMixin
  from botorch.acquisition.multi_objective.objective import IdentityMCMultiOutputObjective, MCMultiOutputObjective
  from botorch.exceptions.errors import UnsupportedError
  from botorch.models.model import Model
  from botorch.models.transforms.input import InputPerturbation
  from botorch.sampling.base import MCSampler
  from botorch.utils.multi_objective.box_decompositions.non_dominated import NondominatedPartitioning
  from botorch.utils.multi_objective.hypervolume import NoisyExpectedHypervolumeMixin, SubsetIndexCachingMixin
  from botorch.utils.objective import compute_smoothed_feasibility_indicator
  from botorch.utils.transforms import concatenate_pending_points, is_ensemble, match_batch_shape, t_batch_mode_transform
  from torch import Tensor
label_desc: Use image node_id 2 for calling the MultiObjectiveMCAcquisitionFunction obj's underlying member method code with example usage: obj.forward(X) without return types