class_docstr: A class for partitioning the non-dominated space into hyper-cells.
  
  Note: this assumes maximization. Internally, it multiplies outcomes by -1 and
  performs the decomposition under minimization. TODO: use maximization
  internally as well.
  
  Note: it is only feasible to use this algorithm to compute an exact
  decomposition of the non-dominated space for `m<5` objectives (alpha=0.0).
  
  The alpha parameter can be increased to obtain an approximate partitioning
  faster. The `alpha` is a fraction of the total hypervolume encapsuling the
  entire Pareto set. When a hypercell's volume divided by the total hypervolume
  is less than `alpha`, we discard the hypercell. See Figure 2 in
  [Couckuyt2012]_ for a visual representation.
  
  This PyTorch implementation of the binary partitioning algorithm ([Couckuyt2012]_)
  is adapted from numpy/tensorflow implementation at:
  https://github.com/GPflow/GPflowOpt/blob/master/gpflowopt/pareto.py.
  
  TODO: replace this with a more efficient decomposition. E.g.
  https://link.springer.com/content/pdf/10.1007/s10898-019-00798-7.pdf
docstr: Get indices of augmented Pareto front.
docstr_tok: ["Get","indices","of","augmented","Pareto","front","."]
code: def _get_augmented_pareto_front_indices(self) -> Tensor:
      r"""Get indices of augmented Pareto front."""
      pf_idx = torch.argsort(self._neg_pareto_Y, dim=-2)
      return torch.cat(
          [
              torch.zeros(
                  *self.batch_shape,
                  1,
                  self.num_outcomes,
                  dtype=torch.long,
                  device=self._neg_Y.device,
              ),
              # Add 1 because index zero is used for the ideal point
              pf_idx + 1,
              torch.full(
                  torch.Size(
                      [
                          *self.batch_shape,
                          1,
                          self.num_outcomes,
                      ]
                  ),
                  self._neg_pareto_Y.shape[-2] + 1,
                  dtype=torch.long,
                  device=self._neg_Y.device,
              ),
          ],
          dim=-2,
      )
  
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 4 for calling the NondominatedPartitioning obj's underlying member method code with example usage: obj._get_augmented_pareto_front_indices() and returns: torch