- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 490
Open
Labels
bugSomething isn't workingSomething isn't working
Description
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.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working