class_docstr: Wrapper for the surrogate model to predict multiple objectives.
  
  Parameters
  ----------
  models : AbstractModel | list[AbstractModel]
      Which model should be used. If it is a list, then it must provide as many models as objectives.
      If it is a single model only, the model is used for all objectives.
  objectives : list[str]
      Which objectives should be used.
  seed : int
class_docstr_tok: ["Wrapper","for","the","surrogate","model","to","predict","multiple","objectives",".","Parameters","--","--","--","--","--","models",":","AbstractModel","|","list","[","AbstractModel","]","Which","model","should","be","used",".","If","it","is","a","list",",","then","it","must","provide","as","many","models","as","objectives",".","If","it","is","a","single","model","only",",","the","model","is","used","for","all","objectives",".","objectives",":","list","[","str","]","Which","objectives","should","be","used",".","seed",":","int"]
code: def _train(self: Self, X: np.ndarray, Y: np.ndarray) -> Self:
      if len(self._models) == 0:
          raise ValueError("The list of surrogate models is empty.")
  
      for i, model in enumerate(self._models):
          model.train(X, Y[:, i])
  
      return self
  
file_path: SMAC3/smac/model/multi_objective_model.py
imports: from __future__ import annotations
  from typing import TypeVar
  import numpy
  from smac.model.abstract_model import AbstractModel
label_desc: Use image node_id 4 for calling the MultiObjectiveModel obj's underlying member method code with example usage: obj._train(X, Y) and returns: self