class_docstr: A class for partitioning the non-dominated space into hyper-cells.
  
  Note: this assumes maximization. Internally, it multiplies by -1 and performs
  the decomposition under minimization.
  
  This class is far more efficient than NondominatedPartitioning for exact box
  partitionings
  
  This class uses the two-step approach similar to that in [Yang2019]_, where:
      a) first, Alg 1 from [Lacour17]_ is used to find the local lower bounds
          for the maximization problem
      b) second, the local lower bounds are used as the Pareto frontier for the
          minimization problem, and [Lacour17]_ is applied again to partition
          the space dominated by that Pareto frontier.
docstr: Initialize FastNondominatedPartitioning.
  
  Args:
      ref_point: A `m`-dim tensor containing the reference point.
      Y: A `(batch_shape) x n x m`-dim tensor.
  
  Example:
      >>> bd = FastNondominatedPartitioning(ref_point, Y=Y1)
docstr_tok: ["Initialize","FastNondominatedPartitioning",".","Args",":","ref_point",":","A","`","m","`","-dim","tensor","containing","the","reference","point",".","Y",":","A","`","(","batch_shape",")","x","n","x","m","`","-dim","tensor",".","Example",":",">",">",">","bd","=","FastNondominatedPartitioning","(","ref_point",",","Y=Y1",")"]
code: def __init__(
      self,
      ref_point: Tensor,
      Y: Optional[Tensor] = None,
  ) -> None:
      """Initialize FastNondominatedPartitioning.
  
      Args:
          ref_point: A `m`-dim tensor containing the reference point.
          Y: A `(batch_shape) x n x m`-dim tensor.
  
      Example:
          >>> bd = FastNondominatedPartitioning(ref_point, Y=Y1)
      """
      super().__init__(ref_point=ref_point, Y=Y)
  
imports: from __future__ import annotations
  from typing import Optional
  import torch
  from botorch.utils.multi_objective.box_decompositions.box_decomposition import BoxDecomposition, FastPartitioning
  from botorch.utils.multi_objective.box_decompositions.utils import _expand_ref_point, compute_non_dominated_hypercell_bounds_2d, get_partition_bounds, update_local_upper_bounds_incremental
  from torch import Tensor
label_desc: Use image node_id 1 to create a new FastNondominatedPartitioning object from inherited base classes: FastPartitioning with example: obj = FastNondominatedPartitioning(ref_point, Y)