class_docstr: Unimodal Normal Distribution Crossover used by :class:`~optuna.samplers.NSGAIISampler`.
  
  Generates child individuals from the three parents
  using a multivariate normal distribution.
  
  - `H. Kita, I. Ono and S. Kobayashi,
    Multi-parental extension of the unimodal normal distribution crossover
    for real-coded genetic algorithms,
    Proceedings of the 1999 Congress on Evolutionary Computation-CEC99
    (Cat. No. 99TH8406), 1999, pp. 1581-1588 Vol. 2
    <https://ieeexplore.ieee.org/document/782672>`_
  
  Args:
      sigma_xi:
          Parametrizes normal distribution from which ``xi`` is drawn.
      sigma_eta:
          Parametrizes normal distribution from which ``etas`` are drawn.
          If not specified, defaults to ``0.35 / sqrt(len(search_space))``.
code: def _orthonormal_basis_vector_to_psl(
      self, parents_params: np.ndarray, n: int
  ) -> np.ndarray:
      # Compute orthogonal basis vectors for the subspace orthogonal to psl.
      e_12 = UNDXCrossover._normalized_x1_to_x2(
          parents_params
      )  # Normalized vector from x1 to x2.
      basis_matrix = np.identity(n)
  
      if np.count_nonzero(e_12) != 0:
          basis_matrix[0] = e_12
  
      basis_matrix_t = basis_matrix.T
      Q, _ = np.linalg.qr(basis_matrix_t)
  
      return Q.T[1:]
  
file_path: optuna/optuna/samplers/nsgaii/_crossovers/_undx.py
imports: from typing import Optional
  import numpy
  from optuna._experimental import experimental_class
  from optuna.samplers.nsgaii._crossovers._base import BaseCrossover
  from optuna.study import Study
label_desc: Use image node_id 3 for calling the UNDXCrossover obj's underlying member method code with example usage: obj._orthonormal_basis_vector_to_psl(parents_params, n) and returns: Q