class_docstr: Class for an objective composed of a multiple component objectives.
  
  The Acquisition function determines how the objectives are weighted.
  
  Attributes:
      objectives: List of objectives.
class_docstr_tok: ["Class","for","an","objective","composed","of","a","multiple","component","objectives",".","The","Acquisition","function","determines","how","the","objectives","are","weighted",".","Attributes",":","objectives",":","List","of","objectives","."]
docstr: Create a new objective.
  
  Args:
      objectives: The list of objectives to be jointly optimized.
docstr_tok: ["Create","a","new","objective",".","Args",":","objectives",":","The","list","of","objectives","to","be","jointly","optimized","."]
code: def __init__(
      self,
      objectives: Optional[List[Objective]] = None,
      **extra_kwargs: Any,  # Here to satisfy serialization.
  ) -> None:
      """Create a new objective.
  
      Args:
          objectives: The list of objectives to be jointly optimized.
  
      """
      # Support backwards compatibility for old API in which
      # MultiObjective constructor accepted `metrics` and `minimize`
      # rather than `objectives`
      if objectives is None:
          if "metrics" not in extra_kwargs:
              raise ValueError(
                  "Must either specify `objectives` or `metrics` "
                  "as input to `MultiObjective` constructor."
              )
          metrics = extra_kwargs["metrics"]
          minimize = extra_kwargs.get("minimize", False)
          warnings.warn(
              "Passing `metrics` and `minimize` as input to the `MultiObjective` "
              "constructor will soon be deprecated. Instead, pass a list of "
              "`objectives`. This will become an error in the future.",
              DeprecationWarning,
          )
          objectives = []
          for metric in metrics:
              lower_is_better = metric.lower_is_better or False
              _minimize = (
                  not lower_is_better if minimize else lower_is_better
              )
              objectives.append(
                  Objective(metric=metric, minimize=_minimize)
              )
  
      # pyre-fixme[4]: Attribute must be annotated.
      self._objectives = not_none(objectives)
  
      # For now, assume all objectives are weighted equally.
      # This might be used in the future to change emphasis on the
      # relative focus of the exploration during the optimization.
      self.weights = [1.0 for _ in range(len(objectives))]
  
imports: from __future__ import annotations
  import warnings
  from logging import Logger
  from typing import Any, Iterable, List, Optional, Tuple
  from ax.core.metric import Metric
  from ax.utils.common.base import SortableBase
  from ax.utils.common.logger import get_logger
  from ax.utils.common.typeutils import not_none
label_desc: Use image node_id 1 to create a new MultiObjective object from inherited base classes: Objective with example: obj = MultiObjective(objectives)