class Tournament: @staticmethod def select(pop, evaluated_pop, k): winners = [] counter = 0 i = 0 for i in range(0, evaluated_pop.size - k, k): candidate_scores = evaluated_pop[i:i + k] index_best_candidate = np.argmax(candidate_scores) winners.append(pop[i + index_best_candidate]) winners = np.array(winners) return winners class BestSelection: @staticmethod def select(pop, evaluated_pop, k): winners = [] indexes = evaluated_pop.argsort()[-k:] for i in range(k): winners.append(pop[indexes[i]]) winners = np.array(winners) return winners