I just started to implement Tournament selection with duplicates and used one-max to do a test drive. On a population size of 100 and k=3 I recognized the algorithm getting slow. The reason was easy to spot: Population size grows exponentially.
So I wondered, why does the population grow at all?
The grow is caused by having duplicate cromosomes in the list of parents we get from tournament selection. When put into a Set, duplicates are dismissed, so less than n different cromosomes where chosen. So there will be more than (population_size - n) leftovers.
When we generate the parents, we allow duplicate parents, that will be n. So, population grows by the number of duplicate entries.
So for tournament selection with duplicates, is this expected behaviour or is it due to our implementation? How is the population size controlled?