def pareto_front(moea):
    """
    Method that allows to extract the values of the individuals from a multi-objective genetic algorithm
    of the last generation.

    Parameters
    ----------
    :param moea: beagle.Algorithm
        Multi-objective genetic algorithm.

    Returns
    -------
    :return tuple
        (Indices of individuals in the population, Values of individuals on the non-dominated front)
    """

    last_generation = max(list(moea.report._report.keys()))
    populations = list(moea.report._report[last_generation].keys())

    front = {population: [] for population in populations}
    indices = {population: [] for population in populations}

    for population in populations:
        for i, individual in enumerate(moea.report._report[last_generation][population]):
            if individual.fitness[0].rank == 0 and not list(individual.values) in front[population]:
                front[population].append(list(individual.values))
                indices[population].append(i)

    return indices, front