Selection operators

Parent selection operators (a.k.a. selectors) in EvoLP are based on fitness and are used to select individuals for crossover. The selectors always return indices so that individuals can be selected from the population later.

All of these methods perform a single operation, as in a steady-state algorithm. Each selector returns two parent indices.

For generational algorithms, you need to repeat the selection $n$ times; once per each individual in the population.

All operators are derived from the EvoLP.ParentSelector abstract type, which is itself derived from the EvoLP.Selector abstract super type. Some of the selectors have parameters you can adjust.

Choosing a selection operator

Deprecated from EvoLP 1.4

All selection operators have been renamed to selectors since EvoLP 1.4. The old names will be deprecated in a future major release. Be sure to check the new type ontology.

EvoLP provides many built-in selectors.

Performing the selection

After "instantiating" a selection method, you can use the select function on an array of fitnesses y to obtain 2 parents' indices (that you will need to slice from the population in your algorithm later.)

EvoLP.selectFunction
select(t::TournamentSelector, y)

Select two parents which are the winners from two random tournaments of size t.T.

source
select(t::TruncationSelector, y)

Select two random parents out from the top t.k in the population.

source
select(::RouletteWheelSelector, y)

Select two random parents with probability proportional to their fitness.

source
select(::RankBasedSelector, y)

Select two random parents with probability proportional to their ranks.

source