Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NSGA tournament sorting only compares two solutions each round #316

Open
noahBax opened this issue Mar 5, 2025 · 0 comments
Open

NSGA tournament sorting only compares two solutions each round #316

noahBax opened this issue Mar 5, 2025 · 0 comments

Comments

@noahBax
Copy link

noahBax commented Mar 5, 2025

Looking at the code for tournament_selection_nsga2 in parent_selection.py only the first two solutions in each round of selection are ever compared.

pareto_fronts, solutions_fronts_indices = self.non_dominated_sorting(fitness)
self.pareto_fronts = pareto_fronts.copy()

# Randomly generate pairs of indices to apply for NSGA-II tournament selection for selecting the parents solutions.
rand_indices = numpy.random.randint(low=0.0, 
                                    high=len(solutions_fronts_indices), 
                                    size=(num_parents, self.K_tournament))

for parent_num in range(num_parents):
    # Return the indices of the current 2 solutions.
    current_indices = rand_indices[parent_num]
    # Return the front index of the 2 solutions.
    parent_fronts_indices = solutions_fronts_indices[current_indices]

    if parent_fronts_indices[0] < parent_fronts_indices[1]:
        # If the first solution is in a lower pareto front than the second, then select it.
        selected_parent_idx = current_indices[0]
    elif parent_fronts_indices[0] > parent_fronts_indices[1]:
        # If the second solution is in a lower pareto front than the first, then select it.
        selected_parent_idx = current_indices[1]
    else:
        # The 2 solutions are in the same pareto front.
        # The selection is made using the crowding distance.
    ...

K_tournament solution indexes are selected with randint though. This also happens for crowding distance as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant