Selection
The selection of parents for the next generation is a vital part of the genetic algorithm this library provides the following selection methods to do such:
Roulette Wheel Selection
Tournament Selection
Rank Selection
Boltzmann Selection
The methods are implemented by functions generally structured as the following
def selection_method(fx, population, probabiity, fitness, **kwargs):
# Calcuate the fitness value by calling the fitness function
y = fx(population)
f = fitness(y)
# Determine the probability of selection for each individual
p = probability(f, **kwargs)
# Select the individuals
selected = np.random.choice(population, size=len(population), p=p)
return selected, f, p, y
Note
- The selection method needs to return 4 values:
The selected individuals
The fitness values of the selected individuals
The probability of selection of the selected individuals
The fitness values of the population
for which the first one is important to the functioning of the genetic algorithm, the other three are for the user to use for debugging/logging purposes.
Roulette Wheel Selection
The roulette wheel selection method is the most common selection method used in genetic algorithms. It is based on the idea that the probability of selection of an individual is proportional to its fitness value. The fitness values are normalized to a range of [0, 1] and the individuals are selected based on the probability of selection of each individual.
So that the mathmatical formula for the probability of selection of an individual is