class_docstr: Container for inputs to `optimize_acqf`.
  
  See docstring for `optimize_acqf` for explanation of parameters.
code: def __post_init__(self) -> None:
      if self.inequality_constraints is None and not (
          self.bounds.ndim == 2 and self.bounds.shape[0] == 2
      ):
          raise ValueError(
              "bounds should be a `2 x d` tensor, current shape: "
              f"{list(self.bounds.shape)}."
          )
  
      d = self.bounds.shape[1]
      if self.batch_initial_conditions is not None:
          batch_initial_conditions_shape = (
              self.batch_initial_conditions.shape
          )
          if len(batch_initial_conditions_shape) not in (2, 3):
              raise ValueError(
                  "batch_initial_conditions must be 2-dimensional or "
                  "3-dimensional. Its shape is "
                  f"{batch_initial_conditions_shape}."
              )
          if batch_initial_conditions_shape[-1] != d:
              raise ValueError(
                  f"batch_initial_conditions.shape[-1] must be {d}. The "
                  f"shape is {batch_initial_conditions_shape}."
              )
  
      elif self.ic_generator is None:
          if self.nonlinear_inequality_constraints is not None:
              raise RuntimeError(
                  "`ic_generator` must be given if "
                  "there are non-linear inequality constraints."
              )
          if self.raw_samples is None:
              raise ValueError(
                  "Must specify `raw_samples` when "
                  "`batch_initial_conditions` is None`."
              )
  
imports: from __future__ import annotations
  import dataclasses
  import warnings
  from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  import torch
  from botorch.acquisition.acquisition import AcquisitionFunction, OneShotAcquisitionFunction
  from botorch.acquisition.knowledge_gradient import qKnowledgeGradient
  from botorch.acquisition.multi_objective.hypervolume_knowledge_gradient import qHypervolumeKnowledgeGradient
  from botorch.exceptions import InputDataError, UnsupportedError
  from botorch.exceptions.warnings import OptimizationWarning
  from botorch.generation.gen import gen_candidates_scipy, TGenCandidates
  from botorch.logging import logger
  from botorch.optim.initializers import gen_batch_initial_conditions, gen_one_shot_hvkg_initial_conditions, gen_one_shot_kg_initial_conditions, TGenInitialConditions
  from botorch.optim.stopping import ExpMAStoppingCriterion
  from botorch.optim.utils import _filter_kwargs
  from torch import Tensor
label_desc: Use image node_id 2 for calling the OptimizeAcqfInputs obj's underlying member method code with example usage: obj.__post_init__() without return types