def lambda_plus_mu_elimination(
        offspring: list, population: list, lambda_: int):
    """ Performs the (λ+μ)-elimination step of the evolutionary algorithm

    Args:
        offspring (list): List of the offspring
        population (list): List of the individuals in a population
        lambda_ (int): Number of top lambda_ candidates that will be retained

    Returns:
        new_combined: Top lambda_ candidates that are retained

    """
    # combine population and offspring
    combined = population + offspring

    # sort new population
    combined = sorted(combined, key=lambda k: k.fitness, reverse=False)

    # pick top lambda candidates
    combined = combined[:lambda_]

    return combined