def dominance_degree_non_dominated_sort(
    f_scores: np.ndarray, strategy: Literal["efficient", "fast"] = "efficient"
) -> List[List[int]]:
    """
    dominance_degree_non_dominated_sort performs the non-dominating sort with the specified algorithm

    Parameters
    ----------
    f_scores : np.ndarray
        The N x M matrix of N (population size) objective function values for M objectives
    strategy : Literal["efficient", "fast"], optional
        The dominance degree algorithm to use, by default "efficient"

    Returns
    -------
    List[List[int]]
        A list of members of each Pareto front. The index in the outer most list corresponds to the level in the Pareto front
        while the value in the inner-most list is the id of the member of the population belonging to that front.

    Raises
    ------
    ValueError
        If an invalid strategy is specified
    """
    if strategy == "efficient":
        return dda_ens(f_scores)
    if strategy == "fast":
        return dda_ns(f_scores)
    raise ValueError("Invalid search strategy")

    dominance_degree_non_dominated_sort performs the non-dominating sort with the specified algorithm

    Parameters
    ----------
    f_scores : np.ndarray
        The N x M matrix of N (population size) objective function values for M objectives
    strategy : Literal["efficient", "fast"], optional
        The dominance degree algorithm to use, by default "efficient"

    Returns
    -------
    List[List[int]]
        A list of members of each Pareto front. The index in the outer most list corresponds to the level in the Pareto front
        while the value in the inner-most list is the id of the member of the population belonging to that front.

    Raises
    ------
    ValueError
        If an invalid strategy is specified
    
pymoo/util/nds/dominance_degree_non_dominated_sort.py