source: framspy/evolalg/selection/tournament.py @ 1139

Last change on this file since 1139 was 1139, checked in by Maciej Komosinski, 3 years ago

Added --debug mode that prints names of steps; final multiple evaluation now evaluates genotypes in hall of fame instead of the last population

File size: 653 bytes
Line 
1from evolalg.base.individual import Individual
2from typing import List
3import random
4
5from evolalg.base.step import Step
6from evolalg.selection.selection import Selection
7
8
9class TournamentSelection(Selection):
10    def __init__(self, tournament_size: int, fit_attr="fitness", copy=False, *args, **kwargs):
11        super(TournamentSelection, self).__init__(copy, *args, **kwargs)
12        self.tournament_size = tournament_size
13        self.fit_attr = fit_attr
14
15    def select_next(self, population):
16        selected = [random.choice(population) for i in range(self.tournament_size)]
17        return max(selected, key=lambda x: getattr(x, self.fit_attr))
Note: See TracBrowser for help on using the repository browser.